Book Review: The Complete Software Developer's Career Guide

The full title of this book is The Complete Software Developer's Career Guide: How to Learn Your Next Programming Language, Ace Your Programming Interview, and Land The Coding Job Of Your Dreams by John Sonmez. The title does a good job of preparing you for the contents of the book. Much like the title, this book is expansive and meandering. As the author winds his way through all facets of a software developer's professional life he dispenses wisdom that makes the journey worth it. At 796 pages, this is no weekend beach read, but John's informal, engaging, and humorous writing style help push the book along without making it feel like a slog.

I picked up the kindle version from Amazon and read it in about a week (though I'm currently on paternity leave and had plenty of time on my hands rocking my baby to sleep). It's included in Kindle Unlimited, so if you have a subscription you can read it for free. It's also available in paperback and as an audiobook. While I read it on my phone, I suspect this would make a good book to listen to.

John markets the book as suitable for everyone from the aspiring developer to the senior developer. He manages to do just that, but there is definitely more useful content for less experienced developer. Certainly a developer at any technical level can potentially benefit from the "soft skills" that John advocates (Soft Skills is the name of John's previously published book). John devotes time to talking about how to learn a programming language, how to find your first programming job, and the types of work software developers do. These sections are clearly labeled and easy to skip if they have no relevance to you. John asserts that these sections are still valuable to senior developers, as they will help with mentoring junior developers, though I am dubious. Nothing is stopping junior developers from reading the sections themselves: no need to get the senior developers involved.

The book describes techniques for marketing yourself for advancement in your career, whether as freelance, inside an organization, or through job hopping. Like a piece of elegant code, John's advice seems obvious after he lays it out. In short, John asserts that to advance professionally you must: attain excellent communication and soft skills, market yourself to your colleagues, market yourself in your industry, and let the opportunities come to you. The book provides helpful detail interspersed with interesting anecdotes to keep you engaged and informed. Gratifyingly, John avoids leaving you hanging with words of wisdom that once read evoke: That's great, now what? John provides specific advice on how to move forward with your career, making this section alone worth grabbing a copy of the book.

Another part that stuck out to me was John's repeated emphasis on Test Driven Development (TDD). John makes a strong and convincing argument for full test coverage of your code and goes into some (language agnostic) detail on how to carry out TDD. Weirdly, John asserts that unit testing is not a form of testing, or is possibly just regression testing, which is not a form of testing. Honestly, I could not follow his argument, but his background in QA clearly was influential in his perspective on the software industry.

John's background plays a big role in the advice he dispenses in this book, and not just in the anecdotes he provides. You get little sense that this book is the result of research in the industry, but is rather based mostly off of John's personal experiences in his career. While John describes his varied professional experiences through his anecdotes, I can't help but worry that John's advice is a form of survivorship bias. John is explaining the techniques that made him successful, but we have no evidence that others haven't followed a similar path and failed. We hear of John's success only because he is successful. I'm certainly not the first to point out the dangers of only looking at success stories for guiding principles.

In total, I think this book is definitely worth reading, especially for more junior developers. John covers a ton of topics and provides solid advice while managing to keep the reader engaged.