Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

10 Classic Software Development Books for Programmers

DZone's Guide to

10 Classic Software Development Books for Programmers

Take a look at this Bounty post that gives the author's recommendations on 10 books and resources that will make you a better programmer.

· Agile Zone ·
Free Resource

You've been hearing a lot about agile software development, get started with the eBook: Agile Product Development from 321 Gang

I’m sufficiently ancient and creaky that when I started getting into software development, there were very few online resources, and most of my learning was done by poring over books on London’s Circle line. Among others, Scott Myers, Stan Lippman and Don Box kept me company between Edgeware Road and Tower Hill in the late ‘90s (thanks guys!).

Edgeware Road Tube Station. Image by Sunil060902 (Own work) [CC BY-SA 3.0 or GFDL] via Wikimedia Commons

Edgeware Road Tube Station.


Here’s a list of 9 classic development titles, which can often be found floating around in your engineering team’s book collection, or can be picked up second hand at reasonable prices if you aren’t able to buy them new. Most of them took a on a trip on London Underground with me at some point, and I recommend them as a great way to build solid software engineering skills to complement the specific knowledge you need for your particular job. I’ve tried to make the list diverse and keep it sufficiently general. Some of the books contain examples in particular programming languages, but don’t let that put you off, as the general message is still applicable.

I’m bound to have missed a few people’s favourites; please let me know which in the comments, and why you think they should have been included. Note that I’ve linked to Amazon simply to provide further information, but these are not affiliate links, and I am in no way going profit from these recommendations, or be compensated by the authors (beyond the learning they have already imparted to me!).


1. The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas

A set of narratives about software development situations collected in a series of lessons which build into tips. This books will improve your coding habits and outlook as a programmer.

2. Refactoring: Improving the Design of Existing Code by Martin Fowler et al.

How to improve your existing code, or indeed code you inherit from another developer. This book is a classic that I have returned to regularly over the years.

3. Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin

Written by the ever-reliable Uncle Bob, this book simply teaches you how to write good code and how to transform bad code into good code.

4. Testing Computer Software by Cem Kaner, Jack Falk, and Hung Q. Nguyen

A classic book to show how to test computer software under real–world conditions. It is showing its age, so look for the latest edition and skim over the dated examples.

5. The Mythical Man Month by Frederick P. Brooks, Jr. 

This book of collected essays about software project management was first published when I was a toddler, but is still highly relevant (probably more than I am). Recommended for anyone working on or managing a complex project—which is most of us, right?

6. Programming Pearls by Jon Bentley

The book describes some hardcore of programming problems and their solutions and is full of humour, practical programming tips and solid design principles.

7. Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma et al. 

I’m conflicted about this book. It’s a classic and if you plough through, you will certainly be a better engineer for reading it. I never finished it, which I regret, but I personally found studying the pattern on the seat of the train to be more interesting than the turgid prose contained therein.

8. Organizational Patterns of Agile Software Development by James O. Coplien and Neil B. Harrison 

Read this book and then give it to your manager, and ask them to do the same. It describes how to make your company more effective through a set of patterns that are clearly and simply described.

9. The Inmates Are Running the Asylum: Why High-tech Products Drive Us Crazy and How to Restore the Sanity by Alan Cooper

This book is paradoxical in that it has dated yet, at the same time, it remains highly relevant as software usability spirals out of control (frequently by accident, though others suggest it’s a deliberate means to create cycles of social media addiction through user distraction).


My final recommendation is for a collection of online resources rather than a single book title.

10. Safari Books Online

Times change and these days I don’t commute, and I typically graze on blog posts about specific development areas rather than sit down to read a whole book about a subject. However, when I need a book, I head to O’Reilly’s Safari Books Online, which has a wealth of titles that I’d strongly recommend as a resource for any development team or individual who can afford the subscription fee. The Safari Online collection ranges from highly specific to general titles applicable to most software engineers. Besides books, you can access online training and O'Reilly conference videos, with interactive tutorials and learning paths to measure your progress in a subject.


Note, as for my book recommendations above, I am not affiliated in any way with O’Reilly.

Please hit me up in the comments with your book recommendations, both classic and new. Where else do you find the best and most reliable information (apart from DZone of course!)? Which sites and publishers do you tend to prefer?





Download the free agile tools checklist from 321 Gang. This guide will help you choose the right agile tools to position your team for success. 

Topics:
agile development ,best books ,programming & design ,testing ,refactoring ,project management ,problem solving ,best practice ,patterns ,learning & education

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}