The Inquisitive Coder – Davy Brion's Blog

Trying to walk that thin line between intelligence and ignorance

A Reading Guide To Becoming A Better Developer

Posted by Davy Brion on November 25th, 2009

I’ve stated previously that reading software development books is a good way of investing in your skills and your career. But which ones should you read? And in what order should they be read? I’ve compiled a list of books that i think can truly increase your skills substantially. I’ve put them in the order in which i believe they will have the most effect, and grouped them in 3 ’stages’. I primarily have young developers who are just getting started as professional developers in mind with this list, but it should be just as useful to developers who’ve been around for a while and simply want to improve.

The first thing that you should focus on is improving your ability to write clean, unambiguous, maintainable code. The following books should greatly help you with that:

  1. Test-Driven Development (Kent Beck)
  2. Refactoring (Martin Fowler)
  3. Implementation Patterns (Kent Beck)
  4. Code Complete: 2nd Edition (Steve McConnell)
  5. Working Effectively With Legacy Code (Michael Feathers)
  6. Clean Code (Robert C. Martin)

The order of this stage might surprise some people, but i’m willing to bet that this is the most efficient order to reading those books.

After you’ve learned how to write great code, you should really start focusing on clean design and architecture. That’s not to say that you should focus solely on design and architecture, but the more you know about it, the better off you will be:

  1. Design Patterns (Gang Of Four)
  2. Patterns Of Enterprise Application Architecture (Martin Fowler)
  3. Domain-Driven Design (Eric Evans)
  4. Enterprise Integration Patterns (Gregor Hohpe, Bobby Woolf)
  5. Release It! Design and deploy production-ready software (Michael T. Nygard)
  6. 97 Things Every Software Architect Should Know (edited by Richard Monson-Haefel)

This stage probably deserves a bit of clarification as some of the books listed in this part might be somewhat ‘controversial’. If you read and learned from the books in the first stage, then you should be capable of putting everything you read in the second stage in perspective. You will have learned that you shouldn’t just apply as many patterns as possible, but it’s certainly a good thing to know about their existence.

Finally, you need to learn about working in a team environment and understanding team dynamics. The following books aren’t about working in teams specifically, but contain a tremendous amount of wisdom and insight that will definitely help you when it comes to working in a professional team environment:

  1. Extreme Programming Explained, Second Edition (Kent Beck)
  2. The Art Of Agile Development (James Shore & Shane Warden)
  3. The Mythical Man-Month, 20th Anniversary Edition (Frederick P. Brooks)

This one probably needs a bit of clarification as well. I’m not saying that you should do Extreme Programming. But it certainly won’t hurt you to learn about it, and at least try to apply the practices that you believe in when it makes sense to do so. You don’t really need to apply them all (though you will get bonus points from the cool kids if you do so, or at least pretend to), but there are a few of them that everyone really should do regardless of which agile variant you subscribe to.

So there you have it… try those books out in that order, and don’t forget to thank me later :P

21 Responses to “A Reading Guide To Becoming A Better Developer”

  1. Jan Van Ryswyck Says:

    I would add Agile Principles, Patterns, and Practices in C# somewhere in the list as well. Probably the only book that nicely covers the SOLID principles.

  2. Jay Turpin Says:

    And don’t forget The Pragmatic Programmer by Dave Thomas/Andy Hunt and Code as Design by Jack Reeves

  3. Tom de Koning Says:

    Well..

    Got 13 out of 15, on my way so to speak :)

    I miss Agile principles as well and a bit of the following:
    Software Project Survival Guide
    Analysis patterns
    The Passionate Programmer
    Javascript, the good parts. I’m not that much into referring to a language book as one of my favorites, but this one is particularly good written.

  4. Davy Brion Says:

    i’m sorry, but i really can’t recommend Agile Principles, Patterns and Practices… the part about the SOLID principles is _very_ good, but IMO, it’s the only part of the book that’s worth reading… I really feel that Clean Code is a much more valuable contribution from Uncle Bob

    and how can you honestly recommend a book that contains sample code like this?

  5. kilfour Says:

    On the ones, I’ve read, and I don’t score a 13/15, I fully agree.
    I reckon this is going to be one of these posts where people are going to try to out do eachother, so, conforming to expectations :
    ‘Refactoring to Patterns’ by Joshua Kerievsky

  6. Jan Van Ryswyck Says:

    Not all code samples in the PoEAA or EIP book aren’t that good either, but these books does get their point across. I personally learned a lot of things while reading this book, that’s why I mentioned it.

  7. StevenMcD Says:

    Looks like a great list, don’t think I have any of those. Time to buy some more books :)

  8. hwiechers Says:

    Why is Test-Driven Development the first book? Wouldn’t it be better to have the more general books like Code Complete and Refactoring early on and the more TDD/agile specific ones later?

    A great list regardless.

  9. Davy Brion Says:

    @Hwiechers

    According to the rules, you can’t do refactoring without tests to verify that the behavior remains the same ;)

    As for Code Complete, i originally had that listed as the very first one. I moved it down a bit because the parts about writing actual code don’t really stress the importance of TDD and refactoring enough (IMO).

  10. This Blog Needs No Name | November | 2009 Says:

    [...] A Reading Guide To Becoming A Better Developer – [...]

  11. fakeslikeUs Says:

    All these choices are great …

    great for fakes like Us

    trying to get a job

  12. M.M.F Says:

    Nice Collection :)
    thanks

  13. Interesting Finds: 2009 11.23 ~ 11.30 - gOODiDEA.NET Says:

    [...] A Reading Guide To Becoming A Better Developer [...]

  14. Weekly Links #81 | GrantPalin.com Says:

    [...] A Reading Guide To Becoming A Better Developer A good roundup of a variety of software development books. Some I’ve read already, some are already on the reading list, and some just got added to the reading list. [...]

  15. jonhilt Says:

    For getting design patterns into your head I can highly recommend “Head First Design Patterns” (Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra – O’Reilly Media)

  16. Troy Says:

    I think a major oversite is data structures and algorithms book
    like Introduction to Algorithms. Choosing good data structures clarifies your code/program as Fred Brooks and others have noted. Fundamentals are important beyond and above language/paradigm.

  17. Reasoning Says:

    These are good books but, I can’t understand why books on Algorithms & Data Structures, books on different programming paradigms such as functional have been left out. There seems to be a definite bias towards OO programming and the Agile/TDD fad.

    A developer should consider reading either Knuth books or Introduction to Algorithms book, while not disregarding other good books available in the category. SICP by Abel, Sussman or How to Design Programs by Felleisen et al. should also have been in top of the list. And a book that can provide basics of computer architecture is always a good thing.

  18. Hexanes! » A Reading Guide To Becoming A Better Developer Says:

    [...] Davy Brion’s Blog… and I totally agree with him lol I’ve stated previously that reading software development [...]

  19. 05/01/2010 : Developper skills day | Skill | My Daily Top RSS Selection Says:

    [...] A Reading Guide To Becoming A Better Developer [...]

  20. Becoming A Better Developer « James McLeod Says:

    [...] sure you take a look at A Reading Guide To Becoming A Better Developer at Davy’s [...]

  21. Tips for a good resume | Mind.random() Says:

    [...] Read a lot of books or atleast the minimum needed, have a pet project (even better, involve in an open source project) and highlight it on your [...]

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>