I was asked “what books do you consider essential for app making”? Here’s the list. Most of these are not about specific technologies, which are fleeting and teach low-level detail. Those that are tech-specific also contain a good deal of what and why, in addition to the coverage of how.
This post is far from exhaustive.
I would recommend that any engineer who has not yet read it should read Code Complete 2. Then I would ask them the top three things they agreed with and top three they disagreed with, as criticality is the hallmark of a good engineer :-).
Other books I have enjoyed and learned from and I believe others would too:
- Steve Krug, “Don’t make me think!”
- Michael Feathers, “Refactoring” and “Working Effectively with Legacy Code”
- Bruce Tate, “Seven languages in seven weeks”
- Jez Humble and David Farley, “Continuous Delivery”
- Hunt and Thomas, “The Pragmatic Programmer”
- Gerald Weinberg, “The psychology of computer programming”
- David Rice, “Geekonomics”
- Robert M. Pirsig, “Zen and the art of motorcycle maintenance”
- Alan Cooper, “About Face 3”
- Jeff Johnson, “Designing with the mind in mind”
- Fred Brooks, “the design of design”
- Kent Beck, “Test-Driven Development”
- Mike Cohn, “User stories applied”
- Jef Raskin, “The humane interface”
Most app makers are probably doing object-oriented programming. The books that explain the philosophy of this and why it’s important are Meyer’s “Object-oriented software construction” and Cox’s “Object-oriented programming an evolutionary approach”.