This article has been originally posted on my blog. If you are interested in receiving my latest articles, please sign up to my newsletter and follow me on Twitter.
Of course, seniors should also read these books, but most probably they already read at least a few of them...
I like reading. I wouldn't say I always liked to, even though I had some peaks already in elementary school when in a short amount of time I read long novels that I found interesting. Later I had such a period during high school too, but between these times I barely read books - I did read a lot of car magazines nonetheless. But since about university second grade I have read a lot and I have bought a lot of books - I've been investing in myself.
When I started to earn a stable revenue I started to buy books every month. Soon I was in the highest tier of the fidelity program of the biggest Hungarian bookselling chain, so I bought even more. I had to get rid of stuff in my room to be able to store the books. Soon it was not enough and I needed a new shelf, my dad crafted one for me.
When I moved into my own flat I had much more space for books, but I started to fill up that space too.
I could read a lot those years while commuting alone, and I always had a book with me. This only changed when I started to commute with my wife, but I sometimes read on the metro the way home next to her, just to calm down. For me, reading books helps to calm down if I am stressed out. Even if it is a technical book.
Ryan Holiday says that if you want to read more, don't think about it as an activity. Consider it as something natural. Like eating and breathing. I completely agree with him. I find time every day to read. Nowadays I don't commute, but before going to bed or right after getting up or during lunch I am sure that anyone can find some time.
Recently I realised that people started to ask me about books, they ask me what I read, and if we talk about any subject, I think about what books I have read about it and what I would recommend.
This gave me the idea of this blog post. If you are a junior developer and you want to take the next step in your career, you don't only need to spend some more years in your daily job (most probably that won't help), but you rather have to push yourself, you have to exercise and you also have to learn.
So I came with a list of 8 books that you should definitely read:
Code Complete by Steve McConnell
One of my managers suggested reading this book when I was a junior and I took a good use of his advice. 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. Probably I would start again with this book.
The Software Craftsman: Professionalism, Pragmatism, Pride by Sandro Mancuso
This book is very different from the previous one. It doesn't focus on how to write good code but gives you a totally another way to look at your profession. Not at your job, at your profession. Software developers are highly educated people exercising a very difficult profession, but still many of us treat themselves as production line workers without 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 (don't mix excellence 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 sharing how to distinguish bad code from good code and how to transform one into the other. Please, you should transform bad code to 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.
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, again this book is more about the human aspects of being a professional programmer. Technical people tend to say that ah, we don't need that, but still, 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 and because they don't know how to deal with old crappy code (old code doesn't necessarily mean shitty code by the way!). Still, if we have a glance at our career or on daily work, we'll spend most of our time maintaining code and hunting bugs introduced by that bastard - that bastard can be you! This book will help you how to deal with old code, how to improve it by refactoring it.
Working Effectively with Legacy Code by Michael Feathers
As I've just said, we spend most of our time 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 to the rot of that code base, you'll have to learn how to actually 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 Complete Software Developer's Career Guide by John Sonmez
For today let's finish with a not-so-much technical book. This one is a terse 800 pages of essentials that you have to know to navigate through your career as a software developer. Should you be at whatever stage of your professional life you can find some important information in this book. In the worst case, you will think about things you already had some ideas about, but now you will actually organize that piece of an idea into knowledge. Don't forget, as a developer just as a human being it is extremely important how you interact with others and that you can learn fast. A dense, but still an enjoyable read.
All right, if you read these 8 books in half a year or year and try to practice the information you read and turn into knowledge you will progress much faster in your career than the rest who make the majority, those who never read any books or just a few in a year.
Feel free to leave some comments about the books you'd suggest.
Top comments (26)
I'll always recommend Code Complete to anyone as probably one of the best books on software development from design through coding. I'm also a fan of the Pragmatic Programmer, Mythical Man Month, and Joel Spolsky's blog.
Those are also very useful books, not to mention Joel's blog!
My short list of book recommendations is: Writing Solid Code, Code Complete, Clean Code, Debugging the Development Process, Succeeding with Agile, Design Patterns, Anti-Patterns.
Some overlap in our lists!
I've got all the other books on your list on my book queue list. Except for two: Sonmez's book, and Mancuso's book. Which I will be adding to my list, thank you!
... DONE ... and now I've got all the rest of your books on my book queue list. :-D
Other books on my book queue list which are not on your list, but maybe should be: Test-Driven Development by Dave Astels, The Pragmatic Programmer by Hunt & Thomas, The Design of Everyday Things by Don Norman.
Thanks for your list, we have some overlap there too :) But just some, so I've also updated my queue! Thanks for your comment!
Thanks for this awesome list definitely adding Clean Code: A Handbook of Agile Software Craftsmanship to reading list.
Also there looked like markdown typo on
Thanks a lot, Omar, for spotting the typo. I've just fixed it!
I agree with you, that's also a great book! Eight books are not a lot in fact, maybe soon, I'll come up with a second set!
I love functional programming and with that said, Head first into design patterns should be a must for anyone. Loved the non-phd approach and just eases your way into great Design Patterns for OOP. :)
BTW, great list :)
Thanks for your comment and the suggestion! I added "Head first into design patters" to my queue.
Speaking of functional programming, I've recently attended a really nice presentation about Haskell by Yann ESPOSITO. He suggested reading Purely functional data structures by Chris Okasaki.
You are right that writing code is essential. But it leads to a question, has someone been written code for 20 years or 20 times 1 year? How do you make sure that the code you write will eventually get better? You must educate yourself somehow. Obviously, there are other ways, like taking courses for example. But it all leads to the same point. You get more knowledge that you can apply later on.
Not the question is, why do you eat? Because you should or because it is fun?
I personally do it for both.
Might as well add Clean Architecture by Uncle Bob, but maybe not for a Junior developer. I have read Clean Code/Clean Coder multiple times plus they look great.
I was actually handed the Refactoring book on my first day of my first professional job.
Great list read all but Growing Object-Oriented Software, Guided by Tests I will definitely give that a read.
Thanks for your comment, Isaiah!
Clean Architecture is great, I read a couple of weeks ago. I agree with you, probably it's the next level. It's a really enjoyable read among programming books.
A great book that I recommend for anyone with a passing interest on how computers work not just programming is Code by Charles Petzold I wish I had found the book much sooner in my CS course as it makes all the CPU architecture concepts so easy to under.
Absolutely agree with this advice. I read 7 books last year and set a challenge to read 30 this year. So far I've already read 10 so I'm way ahead of last year and my challenge goal.
For me I treat it as a regular part of my schedule. Before I go to bed I'll read a few pages instead of checking my phone. First thing I do in the morning is read too. It eventually becomes natural.
That's an awesome challenge, and you're progressing well! Congrats! I'm curious how many you will end up with by the end of this year!
Hehe me to. I hope I can keep up with it.
I will say, if it wasn't for audio books I'd be super behind. Be able to listen to a book while I walk the dog, commute, etc... has been helpful.
I'll recommend here a great book for new programmer that is "The Self-Taught Programmer". This books is best for new learners and programmers.
computingsavvy.com/books/the-self-...
I started reading Code Complete and had a really hard time understanding some of the examples. Keep in mind that juniors today are starting off with JS, Python and Ruby, not V. Basic, C# and Java.
I feel that a book like Practical Object Oriented Design (Ruby, by Sandi Metz) is a great starting point to improve coding style.
I always enjoy a good book recommendation, so thanks a lot for this post!
One question popped into my head, from the reader's perspective more than just the coder's one: what's your position about e-books? I do enjoy having the actual book in my hands while reading it, but being constantly on the road, I've had to rely on e-readers and tablets. However, getting the opinion on the matter from a fellow book lover is very insightful.
Thanks for your comment, Nicolas! I'm glad you liked it!
I completely understand you. In fact, I used to feel like that. I used to buy a few books every month and I avoided e-books most of the time. I liked the touch of paper books, I liked their smell. I still do.
But the moment came when I moved to another country. Then in a couple of years, I changed flats again...
I only read e-books now..., except for the ones I borrow from my company's library. I try to avoid making extra work for myself by buying more paper books :D