Five books to help you become a better Software Engineer.
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!