Reading List - Engineering

  1. Tapworthy - Designing Great iPhone Apps

  2. by Josh Clark

    This is the most useful book for making effective software that I have ever read. It covers the same material as Apple's Human Interface Guidelines - demystifying the magic of Apple's designs, explaining why mobile design is different from web or desktop design, how to use and not to use Apple's user interface components, and gaining an in-depth understanding of the design principles that drive successful mobile apps.

    Since this is a full length book though, Clark adds many examples from real world apps, covers additional topics such as ergonomics and icon design, and spends more time delving into why Apple's interface components are the way they are. I especially liked the chapter on ergonomics, which explains how exactly the sizing and positioning of elements should adapt when an interface is used by a mobile user's finger as opposed to a mouse.

  3. Effective UI

  4. by Effective UI

    The title is a misnomer. This book is about much more than user interfaces - it is about success in the entire project development lifecycle - from forming a team to communicating with stakeholders to the process of design and development. With a special emphasis on the importance of design and usability in software engineering.

    This book opened my eyes to the meaning of Agile Development. Particularly the chapter that draws a contrast between bridge building and software engineering, explaining in detail how software engineering is fundamentally different from traditional engineering and thus needs different, more adaptive methods.

  5. Code

  6. by Charles Petzold

    A book on how computers work written from a completely different, completely fundamental perspective. A more appropriate title might have been "A crash course in engineering", or "the evolution of modern technology", or even "the technical background you never got in high school". Essentially, Petzold walks you through how modern PCs evolved from the most primitive forms of nonvocal communication. All the while, you are put into the mindset of an engineer trying to figure out the next step in the evolution, as Petzold walks you through not only the answers, but also the trial and error approaches that lead to them. As a result, you will understand not only how computers and electrical engineering work, but why they evolved the way they did. After reading this book, I was no longer mystified by how my creating some text files and pressing a button in a compiler can lead to getting some other machine to do what I tell it to. As an added bonus, I was able to devise circuit diagrams and also had a very enjoyable time reading it. A definite must-read for electrical engineers, programmers, tinkerers, or anyone who is curious about what goes on under the hood of a computer on a fundamental level.

  7. Don't Make Me Think: A Common Sense Approach to Web Usability

  8. by Steve Krug

    There are more detailed web design and usability books available, yet somehow this one is the one from which I have learned the most. The author takes a practical and broad-minded approach by explaining how to conduct usability tests and naming a few design tasks that people often overlook in their projects, among many other things. The book is loaded with relevant real world examples and analyses of sites before and after undergoing usability testing, as well as showing excerpts of actual discussions with users during usability tests.

  9. Clean Code: A Handbook of Agile Software Craftsmanship

  10. by Robert C. Martin

    To me this book is the definitive guide on how to write quality code. It covers a wide variety of topics from minutiae like using (or not using) whitespace deliberately to increase legibility, to high level architectural concepts such as code cohesion.

  11. The Pragmatic Programmer

  12. by Andrew Hunt and David Thomas

    Staying true to the book's title, the authors describe a variety of specific yet general purpose techniques that will help any programmer increase his overall productivity.

  13. The Mythical Man Month

  14. by Frederick P. Brooks

    A historical account of exactly why adding more engineers to a late project makes it even later. This is a classic book for explaining the complexities of managing IT projects.

  15. ASP.Net 2.0 Website Programming: Problem - Design - Solution

  16. by Marco Bellinaso

    As some people have pointed out before me, this book is more real world than the real world. Here is an entire book devoted exclusively to a single project. Bellinaso walks you through step by step as he designs and implements all the features of a professional grade web site - designing the layout, implementing features like user accounts, articles, forums, and shopping, and finally personalizing, localizing, and deploying the site. The entire way, Bellinaso sets the quality bar uncompromisingly high, never cutting any corners to meet deadlines, which is why his site is even more real than a real real-world project. Best of all, Bellinaso explains much more than just his final code, walking you through his answers by explaining design decisions, evaluating alternative solutions, and highlighting evolutions in the .NET framework by pointing out how much more work would have been involved by using older technologies.

  17. Machine Learning

  18. by Tom M. Mitchell

    A dense tome of knowledge on the art of adaptive artificial intelligence compressed into a book about the size of a notepad. This book is remarkable in how it can cover complex topics briefly while still being intuitive and without hiding technical details. This book clearly avoids the 'I'm so smart I can make simple things sound extremely complicated' tone that plagues many academic books. Instead, Tom Mitchell adopts a much more useful 'I'm so smart I can explain an extremely complicated subject matter in an intuitive way without skipping any of the technical details' tone.

    Honorable Mention

    The Software Craftsman, CSS2 Instant Results, Code Complete, Bulletproof Web Design, Database Management Systems

Back to books