Monday, March 19, 2018

Seven Books For Advancing Your Soft Skills As A Programmer

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.

The Pragmatic Programmer: From Journeyman to Master

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.

Soft Skills: The software developer's life manual

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.

The Mythical Man-Month: Essays on Software Engineering

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.

Coders at Work: Reflections on the Craft of Programming

Coders at Work provides an in depth look at some of the most influential programmers of our time. You’ll read through 15 interviews with accomplished programmers like Peter Norvig, Donald Knuth (famous CS Professor), and Brendan Eich (creator of Javascript). You’ll learn about a typical day is like for these programmers, along with how they got interested in programming, what interesting problems they enjoy solving, and what they think the future holds. It’s a fascinating look into the minds of some of the giants whose shoulders we stand on.

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.

Design Patterns: Elements of Reusable Object-Oriented Software

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.

Code Complete: A Practical Handbook of Software Construction

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: A Handbook of Agile Software Craftsmanship

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.