Eleven books to read as a junior developer
I’ve been a passionate reader ever since childhood. Yet my hunger for reading didn’t automatically translate easily to professional books. I remember being interviewed by some online gaming company back in 2013 after working 3 years as a database administrator. I was probably on the final round with the team lead, and he asked me what book on database management I read for the last time.
I was a bit embarrassed to tell him that I hadn’t really read professional books, I tend to read articles. Even that was not true. I read Stack Overflow if I really needed to. Truth be told, I didn’t really need to.
This changed after about being 8 months deep in my first software engineer job. A little after joining the company, I got a new manager, and after a few months, he started to give me advice on how to become better. He told me that I should read some books.
He recommended me to read Code Complete.
I started to read it and it was tough. That was my first book on programming and up to that point, I didn't read (m)any books in English, only in Hungarian.
I progressed little by little. I read every night even during our vacation. I spent most of the 5-and-a-half-hour TGV journey from Antibes to Paris reading that book instead of looking at the landscape or discussing with my wife about the coming week.
While I found it difficult to comprehend all the details, a whole new world opened up to me. In fact, two worlds! One is about better code and the other is about an endless source of knowledge.
After finishing Code Complete, I saw my code through completely different lenses - not only because I got new ones thanks to the French healthcare system! - and the quality of my code started to increase. Let's say that the nature of the comments I received in my pull requests drastically changed to everyone’s satisfaction.
The second book to read didn't come automatically. I still asked for recommendations and I failed to start it right away. But soon, reading technical books became a daily habit.
A life-changing habit.
I started to actively look for books to read, building my own reading lists, taking notes and sharing the best books I encountered.
Rubens, by recommending Code Complete, clearly changed my life.
If you want to climb the dev ladder faster, you cannot neglect reading professional books!
Let me recommend 11 language-agnostic books that you should read to boost your career!
Code Complete by Steve McConnell
As shared above, one of my managers recommended reading this book when I was a junior. What a great piece of advice it was! This book is one of the widely known must-reads of software development. It doesn't just encourage people to continue past the code and fix approach, but it gives a lot of techniques on how to write readable and maintainable code through a lot of examples. If I had to start over my software engineering journey, I would probably start with this book again!
The Software Craftsman: Professionalism, Pragmatism, Pride by Sandro Mancuso
This book is completely different from the previous one. It doesn't focus on how to write good code but gives you a totally different way to look at our profession. Not at our jobs, but at our profession. Software developers are highly educated people exercising a challenging profession, but still, many of us treat ourselves as production line workers without any respect to our profession. Yes, I have used the word profession more than a handful of times in this paragraph. Many developers do not practice professionalism and do not aim for excellence (not to be mixed with perfectionism). This book will teach you how to embrace a powerful mindset that will help you to achieve levels in your career you never thought of. I think this is not just a must-read for any developer, but for non-technical managers too.
Clean Code: A Handbook of Agile Software Craftsmanship
A book by Uncle Bob Martin shares how to distinguish bad code from good code and how to transform one into the other. Please, you should transform bad code into good code, not the other way around. This book has a big focus on how to format your code for maximum readability and how to put unit testing and TDD into place. Some of the advice might have aged, but most are still valid, besides an update is coming!
Growing Object-Oriented Software, Guided by Tests by Steve Freeman
Speaking of unit testing and TDD, this book can be the obvious next step. It guides the reader through the principles of Test Driven Object Oriented Design through the steps of building a bidding application.
The Clean Coder by Uncle Bob Martin
This book of Uncle Bob is less technical. It is more about the human aspects of being a professional programmer. Technical people tend to say that ah, we don't need that, but that’s not true! We don't just interact with machines, but mainly with people. The better we deal with people, including ourselves, the faster we progress in our careers.
Refactoring - Improving the Design of Existing Code by Martin Fowler
A lot - if not most - of the developers prefer to work on new greenfield projects to old code. This is partly because old code can be crappy, besides, many don't know how to deal with legacy code.
Yet, we'll spend most of our time maintaining code and hunting bugs introduced by that bastard - that bastard was often us! This book will help you learn how to deal with old code, how to improve it by refactoring
Working Effectively with Legacy Code by Michael Feathers
As I've just said, we spend most of our time on maintaining old code. Unfortunately, that old code will not have enough tests if any. If you are a professional and you don't want to assist in the rot of that code base, you'll have to learn how to leave the code base cleaner than you found it. This book will help you a lot in getting that knowledge. Don't just read it once, but keep that book close to you when you work on a nasty bugfix.
The Software Engineer's Guidebook by Orosz Gergely
The Software Engineer’s Guidebook is a great asset to any engineer’s library. As a junior or mid-level engineer, I’m sure that you’ll learn about many concepts that can accelerate your growth. Even if you’re a senior you’ll get plenty of value from this book.
It will encourage and help you to own your career. As a first step, it covers different career paths, different kinds of tech companies and how to thrive in those different environments. Then, it shares with you what you need to do as a competent developer who gets things done. In the end, the well-rounded software engineer is in focus, who probably has to code less and collaborate more and more.
System Design Interview: An insider's guide by Alex Xu
This is one of the best books if you plan to apply for any job. It will help you think about technical problems you might have not met so far in your career. It would be quite difficult to come up with good designs at an interview without systematically thinking them through. And here comes the other major value of this book. It gives you a systematic approach to preparing for and tackling such interview questions. The knowledge you get from this book will not help you during the interview stages but throughout your daily job!
Your Code as a Crime Scene by Adam Tornhill
This book introduces concepts from forensic psychology to analyzing legacy code. It uses solely version control data (for most of us it’s git) that normally should be available to you for any project nowadays. If it’s not the case, you have bigger problems than this book can address… You will learn to extract data from git and analyse it with the help of various scripts, and as a result, you’ll find the hotspots of your code, analyze the coupling between different parts of the code and build a knowledge map!
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
As Winston Churchill said, “a nation that forgets its history has no future”. John Kennedy went more broadly when he wrote “without history, we have no future.” But what is our history as developers? What is the history of computer science?
From this book, you’ll know more than you have imagined! It doesn’t only go back to the 1930s, but centuries. It starts laying down the foundations by analyzing the Morse code, the Braille alphabet, the Boolean algebra, and the telegraphs. Code goes beyond just telling our history. What gives particular value to this book is that it doesn’t just share how certain things evolved and got invented, it really tries to include not-so-techy people, the author tried his best to make everyone understand how the computer works.
So why should you read this book? Because it gives you a much deeper understanding and appreciation of our field.