A Reading Guide To Becoming A Better Developer

21 commentsWritten on November 25th, 2009 by
Categories: Code Quality, Opinions

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

  • http://elegantcode.com Jan Van Ryswyck

    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.

    • http://davybrion.com Davy Brion

      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?

  • Jay Turpin

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

  • http://www.tjsolutions.nl Tom de Koning

    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.

  • kilfour

    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

  • http://elegantcode.com Jan Van Ryswyck

    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.

  • http://www.FailBoy.net StevenMcD

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

  • http://hwiechers.blogspot.com hwiechers

    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.

  • http://davybrion.com Davy Brion

    @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).

  • Pingback: This Blog Needs No Name | November | 2009

  • http://fakeslikeUs.com fakeslikeUs

    All these choices are great …

    great for fakes like Us

    trying to get a job

  • http://www.eng-mmf.com M.M.F

    Nice Collection :)
    thanks

  • Pingback: Interesting Finds: 2009 11.23 ~ 11.30 - gOODiDEA.NET

  • Pingback: Weekly Links #81 | GrantPalin.com

  • http://telldontask.wordpress.com jonhilt

    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)

  • Troy

    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.

  • Reasoning

    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.

  • Pingback: Hexanes! » A Reading Guide To Becoming A Better Developer

  • Pingback: 05/01/2010 : Developper skills day | Skill | My Daily Top RSS Selection

  • Pingback: Becoming A Better Developer « James McLeod

  • Pingback: Tips for a good resume | Mind.random()