Most Influential Books On My Career - Part 1
Posted by Charlie Recksieck
Software Developer Edition
There are plenty of great must-read lists for business and software out there. It's easy to Google and you've likely read a lot of them.
I won't pretend that I've read all of the nearly 200 books that you'll see popup as essential reading for software, math and business. I just wanted to share what books I've read that have meant the most to me professionally and embedded concepts which I use all the time. Hopefully, you'll find a new suggestion here that might resonate and be of use.
* Code Complete by Steve McConnell
I bought this book as soon as I was hired at my first software job. To anybody just getting started in software development, I think this is a must read. Yes, it's long, clocking in at 900 pages. In a way, that in itself is a great test - if you don't have the interest or attention to detail to put up with how much is in this book, then maybe you shouldn't be in software! But don't let that scare you. It's well organized and so cleanly written that you will be able to get plenty out of this even if you don't devour every word. McConnell wrote this in the early 90s and the predominant approach to software projects at the time was the Waterfall methodology, so Agile enthusiasts sometimes thumb their nose at it as outdated, but don't let them dissuade you from reading this. This is THE seminal book for developers.
* Clean Code by Robert Martin
Once you've read Code Complete, then you should be in the market for the perfect, newer companion piece that is Clean Code. Whatever you miss in McConnell’s bible above as far as newer Agile software methodologies go, you'll pick up perfectly here. Probably gives you more of a roadmap for how to actually plan a project than Code Complete. And Martin is kind of the oracle in software development for the past 10-15 years, seeing as he is the principal architect of The Agile Manifesto. And take a look at other books from Robert Martin, The Clean Coder is a good next book.
* The Pragmatic Programmer by Andrew Hunt & David Thomas
So many of the most revered software development books focus on overarching theories or systems. The Pragmatic Programmer is more of a collection of a ton of small, useful tips and plenty of great analogies. Or think of it as great bathroom reading for the nerd in your life.
* Refactoring: Improving the Design of Existing Code by Martin Fowler
What's more difficult to do: 1) Build code from scratch from the ground up or to 2) Fix existing code? I think if you survey 20 developers, you'd get at least 20 votes for #2. But instead of just giving generic advice, this classic from Martin Fowler offers specific techniques (e.g. "split phase" refactoring - which I actually did for a client just an hour ago). I've got a huge rebuild of existing software for a new client we're going to start in a month; I intend to re-read this one before starting in on the gap analysis. Great, practical advice for the dirtiest part of software: brownfield projects.
* Head First Design Patterns: A Brain-Friendly Guide by Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson
Object-oriented programming has been around for decades now and the watchword is to make contained, "modular" code. For my money, this book is the best description for how to break up your code into the proper-sized pieces. Totally dovetails with our philosophy here of making reusable canned functions that you can use in most of your disparate projects. We all intend to write code like this more in theory than in practice sometimes, so even if you're a longtime developer, reading this will give you a good kick in the butt to take the time to do what you know is right.
Part 2 coming next week which will feature more general purpose, less software-heavy recommendations.