Skip to main content

Books That Have Influenced Me and Why

A mantra that I often repeat to myself is, "Don't abandon the behaviors and habits that made you successful." I believe this trap is actually much easier to fall into than most people realize.

You can sometimes observe it in the context of a professional sporting event such as American football. One team might dominate the game, playing exceptionally well for the first three quarters. Then, as they sit with a comfortable lead, you see a shift in their strategy. They start to play more conservatively, running the ball more often than they had. Their defense shifts to a "prevent" formation, designed to emphasize stopping any big plays by the other team while putting less pressure on the short game.

The leading team often looks awkward in this mode. They have switched their perspective from that of pursuing victory to that of avoiding defeat. They have stopped executing in the way that gained them the lead in the first place. I have seen more than one game ultimately lost by a team that most likely could have won had they not abandoned the tactics that made them successful earlier in the game.

Thus, I tell myself to stick with what has worked for me even as my situation changes. One of the behaviors that I believe has greatly helped me achieve what success I have in my career is reading books. I have learned a tremendous amount from reading, much of which would have taken me far longer to have learned by other means, much more of which I would probably never have learned otherwise. I want to share some of the books that I think have been most seminal in my career development.

Charlie "Tremendous" Jones has said, "You will be the same person in five years as you are today, except for the people you meet and the books you read." Stagnating to such a degree is a fate to be avoided. To that end, here are some books that might help you be a better person in the future than you are right now.

Clean Code by Robert C. Martin, a.k.a. Uncle Bob

Bob Martin does not mince words. If you want a book that will challenge everything you believe about what constitutes good code and good coding practices, this is it. Martin's views are extreme, and he doesn't justify all of them. However, enough of his ideas are explained well such that you can get a very good idea of the goals he has in mind.

The bottom line is that a given line of code is almost always read many more times that it is written, so it makes a lot of sense to emphasize convenience for the reader over convenience for the author of the code. Thus, we should strive to take the time and expend the effort to make our code highly readable. By doing so, we will reap the rewards of having much more understandable and maintainable code. How do you create highly readable code? This book will teach you in great detail.

The Clean Coder by Robert C. Martin, a.k.a. Uncle Bob

While the title almost implies it is a sequel to Clean Code, this book tackles a distinct subject. At its core, it's about professional conduct. The Clean Coder answers such questions as what is a professional? and what constitutes professional behavior for a software developer? It has many good examples that illustrate how a professional should behave in various circumstances. It's also takes a board perspective, covering topics from how and when to say "No" to suggestions on how much caffeine one should consume when working.

The Pragmatic Programmer by Andy Hunt and Dave Thomas

This book covers the basic skill set that every software developer should have. It's an industry version of Software Development 101 rather than the academic version that many of us are first exposed to. That means, as the title implies, it is short on theory and long on practices and paradigms that have been executed successfully by many software developers for decades. It is an excellent book of best principles and practices.

Code Complete by Steve McConnell

I feel compelled to insert the caveat here that I have not yet finished reading this book. It is a tome in excess of 800 pages. However, I have read more than half, and what I have read has convinced me that every software developer should have this book in his or her library and refer to it regularly. McConnell's simultaneous breadth and depth is remarkable. He covers everything from reviewing requirements and architectural specifications to developer testing and everything you could think of in between. There are pages dedicated to the topic of creating if statements. More pages dedicated to teaching effective techniques for positioning variable declarations and uses within a routine.

In addition to the exceptional level of detail, one thing that really makes McConnell's book stand out is the amount of data he presents to justify the techniques he recommends. It is clear he performed extensive research in creating this handbook for developers, and he provides many interesting, sometimes surprising, statistics to explain why certain practices are superior to others.

Given how detailed this book is, one might naturally expect it to be somewhat dry. While perhaps it can be at times, McConnell demonstrates his writing talent by injecting a bit of humor here or there when you least expect it. The language and tone he employs make the book very approachable; I have found myself much more engrossed by his writing than I would have expected from reading what is essentially a handbook.

Soft Skills by John Sonmez

Unlike the titles mentioned above, Soft Skills isn't really about techniques for performing one's work as a software developer. Instead, it covers nearly every other topic a software developer might need to know something about in order to live a happy, productive life. The book discusses everything from searching for jobs and negotiating salaries to getting and remaining physically fit and managing your finances. It even delves into topics concerning your love life.

Prior to reading this book, I hardly would have given much thought to negotiating a job offer. I have since found out from personal experience how surprisingly easy it can be to get a better offer thanks to the advice in this book. I have enjoyed significant benefit from employing some of Sonmez's productivity techniques as well. His discourse on fitness helped me get into much better shape.

It's true that much of this advice could be gained from other sources, perhaps from those more expert in each of the respective subjects. However, the beauty of Soft Skills is that Sonmez employs his talent of breaking everything down into simple terms and laying out techniques that anyone can follow. He also writes from the perspective of a professional software developer, so it should strike close to home for many reading the book.

The Total Money Makeover by Dave Ramsey

This title veers so sharply away from the other books recommended here that I almost didn't include it. However, I strongly believe The Total Money Makeover could be of significant benefit to many software developers. Software developers tend to have incomes that are much higher than average. However, I have seen and heard of far too many cases of software developers making very good money and managing it very poorly. With the amount of money we make, we should generally be able to live very comfortably; there's no reason to have financial problems.

This book will give you the techniques that will lead you into a financially prosperous life and guard you from common pitfalls and the eventual curveballs that life will throw at you.

Nothing Like a Good Book

Well, there you have it: a list of some of the books that I have found to be most helpful in my career. I hope they enrich your work and your life as much as they have mine.


Popular posts from this blog

When All Else Fails, Use the GUI

In this blog post, I show you how I automated entering credit card transactions in QuickBooks using the PyAutoGUI package for Python. Automating routine tasks is a great way to save yourself a lot of time. Whenever I spend a significant amount of time doing a partiuclar task on a computer, I ask myself if there is a way to automate it. Generally, as long as the input to the task is located on the computer, the answer is yes. The kinds of tasks that evade automation are those that have some kind of physical medium as an imput. While there are technologies that could help automate those tasks, it is much more complicated and difficult to do so. For tasks that can be automated, my favorite language for doing so is Python. Python has a wonderfully readable, expressive syntax, and there are an astoundingly large number of libraries and packages available that make the job of automating jobs much easier. One of my favorite simple examples of how Python saved me a lot of time is when I

Yet Another Post About Text Editors

Here's a debate that will never end as long as people are writing code: which text editor is superior? While there is one that I regularly use, I really think the answer to this question is none of them. They all have their strengths and limitations. It often comes personal preference, convenience and the nature of the tasks you typically need to accomplish. What is less often discussed is why we should even bother with using a text editor at all. What is a Text Editor? I'm going to back up a bit though. Let's first ask: what is a text editor? A text editor is a program with the primary function of editing and manipulating characters on a screen and writing them to and reading them from files. While text editors are very commonly used in software development, they are not restricted to that purpose. Anyone who has any textual content to write or edit can potentially benefit from using a text editor. Text editors generally don't provide much in the way of visual form