We’re always hiring here at OptimalBI. Our new staff have a variety of experience, and a variety of gaps in their knowledge as a result. I recently prepared the following list of my favourite books on programming for one of our new hires.
There are more than a few programmers out there who write code that produces the correct output, and who unfortunately believe that is their objective. I learned otherwise from Steve McConnell’s Code Complete. Producing the correct output is only one of many goals that every piece of code needs to achieve. Code needs to be as simple as possible to understand. Hard to read code takes more time and money to maintain, and defect rates are much higher. I went on to read all of McConnell’s books (All IT professionals should also read Software Project Survival Guide).
I advocate test driven design (TDD). If you’ve tried it and don’t like it, that’s your informed decision. My experience is that once you’ve tried test driven design, you’ll use it everywhere. Beck’s Test Driven Development: by Example shows how and why TDD is done. Test driven design for databases is hard; Guernsey’s Test-Driven Database Development is a must read for anyone who develops with databases.
McConnell writes his programs in the C language, which paints his world in a certain way. Thomas’ and Hunt’s Pragmatic Programmer taught me that what makes sense for strongly-typed languages, like C, can be nonsense for loosely-typed languages. Picking the right tool is a huge part of being a programmer. You need to be proficient in languages with different capabilities in order to pick the right ones.
Martin’s Clean Code teaches the difference between a good line of code and a great line of code. It’s not rocket-science, but simple things like carefully choices for names, short procedures, and a single level of abstraction per procedure make a huge difference.
If you’ve understood these books you can be an exceptionally good programmer.