24
Five books to help you become a better Software Engineer.
7 Comments · Posted by admin in Misc
I’ve interviewed for several high-level engineering positions over the last 18 years, from Facebook to Google, to Microsoft. I have learned two very important things during the process…
- My wife will simply not move to California – her fear is that it will fall into the Pacific Ocean. Regardless of what I think about this, it simply means no Hot Start-ups in Silicon Valley for me.
- I’ve found that the more expertise and knowledge you have, the higher the chances that offer come through – with that signing bonus!
Looking for a job or not, I feel it’s important not only to to stay on top of the latest technology, but also understand the underlying sciences that allow such things to exist. In order for this to happen, you either need to have someone teach you the foundations or learn them yourself. I’ve managed to accomplish this with a balance of both.
There are two things I do everyday. I trawl iTunes University for Computer Engineering courses I have missed, if I am lucky enough to find one that I’ve missed, or haven’t watched in a while, I’ll download and watch it on my iPhone during my commuting hours. The second, is search Amazon for books that I’ve not read, but that are recommended to me based on my previous purchases.
Here is my ultimate list of books for every “Rock Star” programmer. The list is unsorted, and in no particular order. I’ve only chosen five from the ten I was going to list, reading and understanding these will have the other five books find you in your quest to become the best you can be.
Here are five books you should read, and understand:
1) “Introduction to Algorithms” by Cormen, Leiserson, Rivest, and Stein. This book covers the basis every engineer should know. A lot of the algorithms covered in this book, are possible interview questions. If you don’t have them come up in an interview, they certainly make for a nice toolset of knowledge.
2) “Art of Computer Programming” by Donald E. Knuth. I’ve not read this from cover-to-cover, and in most cases have used it as a reference. This series of books is the most valuable you could have in your book collection. If you reference these, and absorb the information, you will be an asset to anyone whom you work with. Going back and reading over this every few years helps me solve some longer standing problems I’ve faced.
3) “The Pragmatic Programmer” by Hunt and Thomas. This book is one that will surprise you. It’s not the standard rule-set for software engineering books. Contains knowledge, humor, and mass educational goodness!
4) “Concrete Mathematics, a Foundation for Computer Science” by Graham, Knuth and Patashnik. This is the most beautifully written book I’ve read in Computer Science to date. You need to read chapters 1,2,3,5,7 and 9 minimum, not sure what I’d have done in certain situations of my career without the knowledge of this book.
5) “Design Patterns: Elements of Reusable Object-Oriented Software” by Gamma, Helm, Johnson and Vlissides. This book is literally two-pounds valuable knowledge that every Software Engineer needs to grasp, understand and use.
Feel free to leave your comments, book recommendations and thoughts!
Bettering your self. · Computer Software · Interview · RockStar Programmer · Software Engineering

Brad · June 24, 2011 at 11:03 am
I don’t really agree with #2 and #3; I would replace those 2 with:
- Code Complete
- Refactoring: Improving the Design of Existing Code
If we’re talking about being a better software engineer, I think these more practical texts will be helpful for reinforcing best practice.
John · June 24, 2011 at 12:03 pm
I would agree with Brad on Refactoring for sure. It was probably the most important book I consumed on programming.
I’m not sure I agree with Code Complete. I recall that being a fairly long-winded. If you’re in C++, then Effective C++ was probably one of the most enlightening books I ever went though. Whether you’re working in C++ or not, it’s important to have very deep knowledge of at least one programming language.
I remember thinking that The Pragmatic Programmer was pretty basic.
Arun · June 24, 2011 at 12:07 pm
I would add “The Algorithm Design Manual” by Steven Skiena to the list. It has a nice compilation of algorithms and data structures that you should be familiar with so that you know where to look and what to look for when solving tricky problems.
vince · June 24, 2011 at 12:32 pm
I don’t think books paint the whole picture. For me the best thing you can do is read other people’s code. Especially open source.
Peter · June 24, 2011 at 1:29 pm
The problem is not that people will not read these books but rather that they will ONLY read these books. The industry is full of people (no doubt, myself included) that aren’t really “professionals”. It’s great to point out books like these (and indeed they are very good) but it strikes me that, as a profession, software development needs a lot more than a few books to make it respectable or professional.
I do enjoy these lists however and wonder how they will age…
links for 2011-06-27 « Donghai Ma · June 28, 2011 at 12:02 am
[...] Five books to help you become a better Software Engineer. | Blue74 (tags: programming software education books learning) [...]
Snarky · June 30, 2011 at 10:33 pm
Great list. I’ve been reading 7 languages in 7 weeks by Bruce Tate lately. While it’s not as fundamental as some of the books you have listed, I’ve found it to be a real motivator to learn something new and to get me thinking about why different languages exist at all, not to mention what the different focus is for some of them.