Hello fellow nerds! Today, I decided I'd give you a book review of a book I think you'll find incredibly useful. The book is called The Complete Software Developer's Career Guide By John Somnez. I've been reading this book for the past month or so and I'm excited to share with you my thoughts and opinions on its contents and how valuable it is. If topics like these interest you, consider subscribing to my newsletter so you don't miss my future blog posts.
What is this book about?
Based on the title, you could probably assume this book is a complete guide on being a software developer (wow John I had no clue). When the title says it's a complete guide, it really means it. In this book, you can find both things you know you need to know and things you didn't know you needed to know. It covers a long range of topics from software development methodologies, types of jobs, marketing yourself as a developer, going up the corporate ladder, negotiating your salary, and much more. As a whole, it has a great mixture of technical knowledge and advice for improving your soft skills.
About the author
One really interesting thing about this book that sets it apart is its author, John Somnez. He certainly isn't the stereotypical nerdy, socially awkward software developer you'd think of. He has a wide variety of experiences from being a career software developer, an entrepreneur, an actor, a model, a freelancer, a speaker at software development conferences, a blogger, a marathon runner, a bodybuilder, and even a dating coach! While some of these experiences seem to be completely irrelevant, they surprisingly give him a unique and useful perspective that you would probably never find anywhere else. He also has a very pragmatic and sometimes inspirational vibe that has rubbed off on me while listening to the audiobook.
By the way, I would highly recommend getting the audio version of this book because it features the author's real voice and additional content he adds on the spot. These sections add a lot of personality and extra insights I wouldn't want you to miss.
Overall, the author has a very interesting character I admire and that inspired me in many areas of my life.
Who is this book for?
This book is meant for anyone pursuing or in the field of software development no matter the skill level. It's separated into 5 sections which are more or less in order of the stages of a career of a software developer. These include: Getting Started as a Software Developer, Getting a Job, What You Need to Know About Software Development, Working as a Developer, and Advancing your Career respectively. Because of this, you could start at the section that would be most applicable to you. The chapters are disjointed from each other so it shouldn't matter where you start anyways. Even still, I decided to listen to this book from start to end because I was interested in what the author had to say.
How the book is formatted
The book is formatted in a fairly engaging way. It gives a lot of good advice on many topics through relatively short chapters. While this book is very long, it's more so because of the sheer amount of topics it goes over. In total, there are 60 chapters, each on different topics (though some similar) with each around 15 to 30 minutes long. The author even states that each chapter was meant to be like its own blog post in a way. As you can imagine then, this book is a lot more breadth-first than depth-first in how it delivers its content. It gives you a great starting point on each of its topics and additional resources to look deeper. Despite this, I still found it gave me great insights and lessons in each of the ideas/scenarios it talked about that didn't feel rushed. With the wide variety of topics covered, you can even use this book as a life manual that you can refer to throughout your life and career as a developer.
The technical content of this book
As mentioned earlier, this book is a great mixture of technical and non-technical content related to being a software developer. While this book isn't meant to teach you deep technical skills in any area, it can certainly help you get a good starting point. In particular, it goes over a general overview of what source control is, the types of source control systems out there, types of testing, test-driven development, unit-testing, web architecture, continuous integration, and more.
Out of all the technical content, I most enjoyed the part on testing and test-driven development. He gave me some great extra insight/perspective on why you should unit-test, the true purpose of it, and much of what you need to understand about testing terminology and practices. Additionally, I found the section on software development methodologies to be quite informative. In this section, the author gives a wide overview of the common software development methodologies you'll see in the industry. He even had experience coaching teams to follow these methodologies and shares his pet peeves when it comes to doing so. Aside from this, he gives some book recommendations at the end for technical books he believes any software developer should read.
The non-technical content of this book
This book also features much of the soft-skills side of being a software developer that you might not have known you needed to know. These include climbing the corporate ladder, speaking at software development conferences, getting job security, dealing with your boss and co-workers, becoming a freelancer, building a business, and more. In particular, I think the chapters on starting a blog and work-life balance are great or maybe among the most applicable to you.
The chapter on work-life balance, my favorite one, preaches you to find a meaningful job that you can enjoy doing. This way you don't confine your life into the limited amounts of time outside of your work and therefore dread most of your life. It encourages you to make the most out of your time at work and enjoy every moment of it as much as you can since dreadfully waiting to go home for the weekend decreases the quality of your life. Overall, I found that chapter to be quite insightful and philosophical making it absolutely a good read.
As for the chapter on starting a blog, I imagine you reading this might have the idea of starting a tech blog in the back of your mind. This chapter gives you insights into why you should build a blog, how to start a blog, and how to grow a successful one. The main message in this chapter is to find a niche for you to stand out as one of the best in and to then consistently put out new content. He argues that he has never seen anyone who puts out consistent content not eventually have some success. Overall, this chapter is a nice starting point if you want to build a successful tech blog and has great advice you should consider.
The overall theme of this book
Before I wrap up this review, I wanted to share what I believe to be the underlying theme of much of the content of this book. Under the surface of much of the advice of this book is one central message: to achieve great things in your career and life as a developer, you need to go above and beyond, be persistent, try extraordinary things, and give great value to others. The section of the book that most emphasizes this is the section on getting a job. In this section, John talks about how the traditional approach of spamming job applications won't be the approach that yields you the greatest results. Instead, he argues to think outside the box, trying extraordinary things to show a potential employer that you can give them way more value than overhead and should therefore be hired. This includes begging to do some dirty work for cheap to prove your tenacity and dedication, networking with employees of companies you are interested in, taking the initiative to improve a company's product yourself, building a strong online presence to bring companies to you, and more. Additionally, in his section on starting a business, John emphasizes that if you want to be successful, you need to give your customers great value, even for free at some point to build trust. Overall, if there is one lesson to be learned from this book, this should be it.
While I could go on and on about how great I think this book is, I should start cutting myself off now before this blog post becomes longer than the book itself. Overall, I would highly recommend giving this book a shot and would say it has great lessons for anyone looking to be or already a software developer. This book can train you not just in how to get the technical knowledge you need but also in developing the intangibles that make a great software developer. Because of this, I believe this book has the potential to make a huge difference in your path to being the best software developer you can be.
If you like what you read, consider subscribing to my newsletter to be notified of new blog posts. Also, check out my programming tutorials here.