As techies we tend to suffer from a fair bit of professional tunnel vision. Like Neo, often all we see is the code. However there’s an entire world on the other side of the digital rain. A world of managers and users and TPS reports.
In order to do our jobs better we need to take the time to understand some of the other human and business elements with which we must interact. There are many ways to do this but one of the easiest and most efficient is diving into a few choice books.
There are, quite literally [pun intended], countless books which you could pick up to further this education and many of them are very good…if you’re already a business and management wonk. If you’re a hardworking geek who’s just looking to get informed, get a different perspective and use it to do better work then you don’t have time to waste with buzzwords and business jargon.
Lucky for you I’m here with the red pill.
The books below have all proved invaluable to me in my years in software engineering. Most of them are not only easy to read they’re also enjoyable as well, providing an astounding amount of information in a way which isn’t going to send you screaming back to the Matrix.
There is undoubtedly some form of management in place on your project|team|life. You can’t (and probably shouldn’t) avoid it, so you’d best learn to understand it better. It’s not a matter of “know your enemy” since, believe it or not, management is on your side. It’s more a matter of knowing how to understand a different dialect and point of view.
- The Practice of Management by Peter Drucker
This is where it all started. Peter Drucker is the Father of Modern Management and this is the book which earned him that title. Since it was originally published in 1954 you’ll find that many of its stories are dated and border on quaint. That said, it’s still stunningly applicable to modern businesses and organizations. I recommend you read the entire thing, but if you just want to sample the contents then have a look at the outline I created when I first read it. (No, I don’t usually do that for books; that’s how special this one is.)
- Land the Tech Job You Love by Andy Lester
I know what you’re thinking: “VM, have you thrown a rod? Why is this in the Management section?” Well, lemme tell ya: I’ve yet to find many books which do as good of a job of presenting what’s going through the mind of a hiring tech manager as this one. Andy doesn’t just tell you what to do to land a good tech job. He also tells you why you should do those things. As a tech manager myself I absolutely love the approach which Andy has taken here and wish more applicants had read this book and had the perspective which it provides. I feel so strongly about this that I’ve given away four copies of this book over the past few years and fully intend to give away more. (Full disclosure: Andy is a friend of mine but I had read/loved his book before the friendship.)
Business and Process
Even if you’re working on an open source project there’s still a lot of process and business logic which needs to come into play. Sometimes you can survive without knowing these details. Sometimes you can use a framework without reading the documentation, but you’re setting yourself up for a world of hurt if you do. The same stands for process and business logic. You at least have to skim the documentation to understand the framework within which you’re operating.
- Rework by Jason Fried and David Heinemeier Hansson
I don’t care who you are. I don’t care what company or organization you work for. Read This Book. It’s probably the quickest read in this list but it’s also one of the most thought provoking. Rework is a collection of essays based upon posts on Signal vs. Noise, the 37signals blog. Each essay states the 37signals answer to a particular question or need. Since these answers are coming from a 37signals perspective it’s possible (likely) that they won’t apply to your company|organization|project. That’s fine. It’s not important that their answers work for you. What’s important is that you think about the problems they faced and come up with your own answers.
- Process Improvement Essentials by James R. Persse, PhD
I’m only halfway through this book and I’m already finding it to be incredibly useful. While I currently have no intentions of implementing CMMI, Six Sigma or any other formal process it’s very thought provoking to read about the problems which these methodologies were created to solve and consider the different ways they could be approached in a software development team. This is another one of those books which is really good for getting the wheels turning, even if you don’t end up rolling down the same path as it takes.
- Getting Things Done: The Art of Stress-Free Productivity by David Allen
“GTD? Really? Way to be original.” Yeah, OK, so maybe this one is becoming cliché at this point. I mean, everyone in tech knows about GTD by this point, right? Sure, maybe they do. Still, I’ve read this book three times and get something new out of it each time and not just for my own personal productivity processes. Reading GTD presents me with yet another opportunity to look at the big picture for everything in my life and that includes how my company, team and projects are functioning. While I don’t subscribe to or apply the entire GTD method I still highly value how it helps me step back and think about why I and my team are doing what we are.
User-centric software development is a big thing for me. I mean, if what you’re working on doesn’t have users then…uh…why the hell are you doing it? Software without users is just a technical étude. If you’re not listening to your users then, I’m sorry, but your project will fail. Maybe not today and maybe not dramatically but it will fail nevertheless.
John McCarthy once said:
Program designers have a tendency to think of the users as idiots who need to be controlled. They should rather think of their program as a servant, whose master, the user, should be able to control it.
The books below help to shift away from this controlling mindset into a more productive one of cooperation and assistance.
- Delivering Happiness by Tony Hsieh
Tony Hsieh is not a writer, he’s an entrepreneur. This book reads like it was written by one of your coworkers while you two were sitting at the pub. It’s conversational, anecdotal and entirely infectious in its enthusiasm for building one of the most successful and user-centric companies on the internet, Zappos. Tony takes you through the entire roller coaster ride which was the evolution of Zappos, including the decision to focus entirely upon customer satisfaction. It’s incredibly interesting reading out the philosophical and business reasons for making this move. It’s also very inspiring to see the open and honest manner with which Tony handles the discussion.
- Design of Everyday Things by Donald Norman
While Design of Everyday Things has nothing whatsoever to do with software design, after reading it you’ll find that it has absolutely everything to do with software design. You will never look at a set of instructions, a UI widget, an API the same way again. You will also never again feel like a moron for pulling instead of pushing when trying to walk through a door (&!%#@* inaccurate affordances).
Be it API documentation, a commit log message or a lengthy soapbox session on the listserv, communication is a critical skill for techies. And one which is lamentably neglected. For this section I have but one suggestion…
- The Elements of Style by William Strunk, Jr. and E. B. White
I don’t care whether you’re a grammar snob or not (I am), you need to know what’s contained in this book. Feel free to break the rules if you need or want but please do us all the favor of knowing that there are rules before you do so. Seriously. I mean, there’s a reason why this book has been in continuous publication since 1918: it’s English as she is spoke. Knowledge of what’s contained between its covers ensures you’ll be better equipped to communicate with everyone with whom you interact, from CEO to six year-old nephew. Improved communication skills will get you as far in this world as being able to make Ruby on Rails sit up and beg. The combination of the two? You’d be a force with which to be reckoned.
There certainly are other books which I could add to this list, but these are the eight which are currently at the top of my list. Have any you think should be here? Put ’em in the comments!