Menu

Official website

Books for software developers


28 Jun 2006

min read

Software developers' use of books varies widely, which is no surprise, but many programmers never read books of any kind. This is a mistake, because there are books we should all read: a good book is still the best way to quickly get a coherent detailed explanation of a complex topic, and no web site comes close to the books on this page.

Programming

Code CompleteThe Pragmatic ProgrammerEffective Java

Programming books usually teach you a specific programming language's syntax, grammar and idiom or how to implement high-level patterns or low-level algorithms. While there are few helpful books on how to write code, Code Complete provides comprehensive and intelligent coverage of the detailed practicalities of coding, and The Pragmatic Programmer is a very accessible catalogue of Doing It Right. Choosing a programming language is another story. If you happen to have chosen Java then you really need to read Effective Java, which is a rare book that teaches more than just the basics of the language and platform.

Web applications

Envisioning InformationCascading Style Sheets: Designing For The WebDesigning Web UsabilityInformation Architecture for the World Wide Web

Although web applications are just software with a specific graphical user-interface layer, not all web developers really get the differences from native graphical user-interfaces. Envisioning Information will open your eyes to creative use of text and graphics for presenting information, where web applications can do much of what works in print, Cascading Style Sheets: Designing For The Web is the best fluff-free explanation of the core medium - HTML and CSS (I deliberately exclude graphics), Designing Web Usability contains important lessons on how to write web applications that people can successfully use, and Information Architecture for the World Wide Web is an excellent guide to dealing with textual information.

Note: this section is missing a good book for people who do not get hypertext.

Software projects

The Mythical Man MonthPeopleware: Productive Projects and TeamsAgile Software DevelopmentManaging Humans

Software projects are fundamentally hard, because no single project management technique or approach ensures that your team will always deliver all of the features, on time and within budget, while remaining sane and happy. However, The Mythical Man Month explains why this is hard, Peopleware: Productive Projects and Teams explains some of the things to get right, and Agile Software Development describes the theory behind agile approaches such as Scrum and Extreme Programming. Choosing a development method is another story.

More recently, in 2008, the best software management book I have read is Managing Humans which achieves the rare feat of combining advice and insights that I either wish I had read years ago or hope I can understand and apply in the future, with writing that is far more engaging and entertaining than any of the other books mentioned on this page.

Joel Spoelsky has picked out many more excellent books in this category for his training programme.

Interpersonal skills

Games People PlayThe Seven Habits of Highly Effective PeopleEmotional Intelligence: Why It Can Matter More Than IQ

Self-help and pop-pyschology books are mostly commercial trash for the insecure. This is a shame, because professional programmers need to compensate for a bad reputation by being sophisticated at communication between very different types of people, ultimately translating between business customers and a compiler. Despite the tacky language of proactive synergistic mission statements, there are a few books that explain important ideas. This means that you would have to be really stupid to read Games People Play, The Seven Habits of Highly Effective People or Emotional Intelligence: Why It Can Matter More Than IQ without learning something useful about yourself and your relationships with other people. The same may be true of the other mega-bestsellers in this category, in which case it would not really matter which one or two you read.

expand_less