I’ve just finished reading Bob Martin’s excellent book The Clean Coder. I see this book as the third “stage” in the spectrum of the software developers skills that I’ve read that have had a real impact on the way I develop software.
The first one that I really got was Code Complete. This book talks about coding at the function / class level – how to arrange your methods, name variables etc. (Clean Code, also by Bob Martin, is another good book in a similar vein). It actually presents its arguments for certain practices with statistical evidence e.g. declare variables just before you use them rather that e.g. at the top of your methods).
The second one, and the one that really, profoundly, changed the way I code and design software is Agile Principles, Patterns and Practices in C#. What a fantastic book this is. Before I read it, I had an understanding of some design patterns, and had commercial experience of working as a consultant for a number of years, but this book really brought into focus how to design software that can deliver what the business currently needs whilst leaving it extensible for the needs of the future – and it does it in a manner that the average techie really “gets”. It also covers an overview of the whole Agile movement and XP practices – the appendix story of how two developers go about developing the same project in differing manners is excellent (and scarily true!).
So if Code Complete covers writing code at the method level, the latter covers writing and designing at the class and component level.
Which brings me to The Clean Coder. It doesn’t talk about code at all – instead, it discusses core behaviours and attitudes of you as an individual. How do you deal with management? How do you deal with customers? Team members? The sort of issues that you have come up against (and will continue to do) time and again in your career. Of course there’s no silver bullet in this book for resolving these issues – but you can see the approaches that you might take in order to get people to treat you as a professional in your field. It’s not the biggest book in the world, but is well worth the read and nicely rounds off the series, from being a good code monkey (Code Complete) to being a professional software developer (The Clean Coder) if you will.
I’d like to think that if you get these three books you’ll be better off than you were before – if you want to get a book to help further your career, I’d really recommend getting one of these.