Throughout your programming career you will do a lot of reading. You’ll read code that you’ve written, code that others have written, and documentation.
When you’re not coding you’ll be reading lots of blogs and tutorials, especially early in your career when you’re learning the fundamentals of programming and how to construct programs that do what you want. Most of this information is freely available online, others you may have to pay for. While these can be great resources when learning, in my experience no blog or tutorial will come close to the quality of information you will find in a good book. Paying for a good book is well worth the cost. The amount of knowledge you can learn from some books will pay off tenfold throughout the course of your career. Here is a collection of books I recommend that focus on career advice and best practices for the soft skills side of your programming career. Regardless of which language or technology stack you work in, these books offer tips, techniques, and best practices that anyone can apply to their work.
I finally got around to buying and reading this book after having it on my list for years, and I regret not reading it sooner. The book covers all areas of software development from how to define requirements before the project starts to writing testable, modular code. I had always heard it’s a book that every software engineer should read and I think it presents advice that is applicable to anyone that writes code professionally from beginners to expert programmers.
This is another book that I believe every programmer should read in their career. The earlier on in your career the better. The focus of this newsletter has always been around the soft skills side of software development and and this book offers advice covering various aspects of your career. The book will help you determine which career path you want to take when it comes to specializing your skills in a specific technology or generalizing across a number of useful technologies.
It presents advice on interviewing, productivity, marketing yourself, physical and mental health, and even financial advice specific to software engineers. There’s more to your career than just writing code, and this book will help you navigate your career while you’re away from the keyboard.
This book puts a focus on project management for software engineering projects. It provides a number of short essays that are easy to digest and understand, with some software engineering facts thrown in. You’ll learn about the importance of communication and the nature of human beings when it comes to project management. This is another excellent book that offers timeless advice that any software engineer will find useful.
And here some technical books that I’ve found useful in my career. These are good to have on hand and can be used as references if I need to lookup specific topics.
This is book that every programmer should have on their bookshelf. The four authors (Gang of Four) literally wrote the book on design patters. Any object oriented software system has roots that reach back to patters outlined in this book. You’ll learn about commonly used patterns such as the singleton and factory patters, and learn about lesser known patters such as the strategy and memento patterns. The examples are in either Smalltalk or C++, but don’t let that scare you. They are presented in a way that is easy to understand and apply to whatever programming language you prefer.
While this is a very long book, it is packed with tons of guidelines and best practices for crafting quality software. McConnel covers topics such as constructing classes, using data structures and control flow structures, debugging code, and refactoring. The book is well-written and in a format where you can skip around and use it as a reference. There’s no need to read it front to back. The book offers lots of techniques for managing complexity which is a valuable skill that every software engineer should spend time learning.
Clean Code provides readers with tools and techniques for “cleaning code” as you make changes to your codebase. The book provides lots of code examples and the author challenges you to think about what is right and wrong about each code sample. Readers will gain an understand about how to tell the difference between good code and bad code, how to create good names, functions, and classes, and how to format code for maximum readability.