There’s a lot of things I enjoy about being involved in the software industry, one which falls into the top 10 is talking shop with other software folk. This reason, and the fact that I’m always looking to improve my own skill set, is why I recently purchased “97 Things Every Programmer Should Know” and “97 Things Every Software Architect Should Know“. This post is a bite-size review of the programming edition of the “97 Things…” texts and I would encourage anyone who is hands-on with code, regardless of the language, framework, or their level of experience, to take the time to read it.
The book was edited by Kevlin Henney who, you guessed it, collated 97 tips from a variety of industry experts – “collective wisdom from the experts” as the byline reads. The topics all center around programming and range from topics on agile thinking, and pair programming to encapsulation and API design.
Each contribution takes up two short pages so the entire book doesn’t take a lot of effort, or time, to consume. There is a decent sized sample on Google Books so you can head over there for a preview … but only after you’ve read this blog first … or else 🙂
I thought I’d start off with a few quotes to give you a feel for what’s contained within:
“With so much to know, so much to do, and so many ways of doing so, no single person or single source can lay claim to the ‘one true way’.” – Kevlin Henney (Preface)
“The bottom line is that beautiful code is simple code. Each individual part is kept simple with simple responsibilities and simple relationships with the other parts of the system.” – Jorn Olmhein (p.11)
“Unless a cost-benefit analysis shows that a new language or framework will result in significant improvements in functionality, maintainability, or productivity, it is best to leave it as it is.” – Rajith Attapattu (p.13)
“You need to keep learning to stay marketable. To play it safe you need to take responsibility for your own education.” – Clint Shank (p.36)
“Sometimes the best thing you can do to solve a problem is to put the mouse down and step away from the keyboard.” – Burk Hufnagel (p.138)
Hopefully these few quotes give you an idea of what to expect from the book. I found each tip was presented in a very logical and potted manner with very few source code samples – so don’t expect a book that’s going to tell you how to apply SRP in Java or implement Code Contracts in an Azure worker role.
The topics cover areas such as professionalism, software developing in the business world, pair programming, code quality, personal limitations, team dynamics, work ethic, resource management, estimations and commitments, testing, sensible coding practices, problem solving methodologies – I could go on but I think you get the gist by now.
Some of 97 tips are obvious, but you can’t expect to have not come across at least a handful of these topics if you’ve spent anytime developing software. With that said, it was reassuring to know that others more experienced than I were reaffirming my views and we’re only taking up a minute of my time to do so – thanks to the 2 page per tip approach.
I wanted to express a quick thanks to Craig Nicol for bringing Kevlin Henney to my attention, and in turn the books he has been involved on. Thank you.