by Jay Baxter (circa 2009)
"This list is for people who want to become Associate Software Engineers at Blizzard. An associate should have skills at the level indicated by these books. Note that this is almost completely focused on C++ programming. This list is incomplete. I need a book on how to become a professional. I've listed several books that give examples of professional behavior, but not one on the actual training."
by Bjarne Stroustrup
"Work through this book. Despite the author, this is an beginner book. Well, it's an "advanced beginner" book, but it's far more in-depth than other beginner books. This book teaches you programming, and uses C++ to do it."
by Stephen Prata
"Work through this book. This is also a beginner book. The Stroustrup book is more in depth, the Prata one is a little easier to get into (the writing tone is open and light-hearted, whereas Stroustrup is a bit more academic)."
by Michael Dawson
"Read all this book. This is a project book - it's a set of simple text-based games that illustrate lots of C++ programming practices and techniques. It's meant to be used along side a C++ text (like the Stroustrup and Prata books)."
by Michael Morrison
by Jonathan S. Harbour
"Lots of projects with source code, and the texts explains how to write them. It's a great way to learn by example. Note that these books are NOT the same book as Morrison's, despite the title."
by Frederick P. Brooks Jr.
"Read all of this book. The classic software engineering book. It's a quick read, and it has stood the test of time (written over 25 years ago). This is about a week of reading."
Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity
by Joel Spolsky
"Read all of this book. This is a collection of essays written by Joel over the course of a few years. Read them, they will give you insight into how good programmers think. Note that Joel Spolsky is often wrong on details (no one is perfect) but he nails the essence quite often. This is about a week of reading."
by Jon Louis Bentley
"Optional. This is a great book with a lot of insight on programming problems and how to solve them. This will take about a month to work through. This is a bit more advanced than the rest of the books above."
"This list is for people who want to become Mid-level Software Engineers at Blizzard. A mid-level engineer should have skills at the level indicated by these books. This is a big list. It's about a year of reading (kind where you read for several hours a day, every day). This list is roughly in the order they should be read. I also put notes as to what the book is for."
by Andrew Hunt
"I expect an engineer to have a firm grasp of everything in this book before they make mid-level. Probably take about a week to read through the first time, then another week to re-read and think about it."
by Nicolai M. Josuttis
"This is an excellent book on intermediate C++ programming. I do expect mid-level programmers to know everything in this book. Note: you can read the Eckel's two-volume set listed below instead; the two are roughly equivalent. This is probably three months of reading and working (you will write lots of little programs while reading this book, or you're not using it correctly)."
by Bruce Eckel
"Read all of both books. Good two-volume set on intermediate C++ programming. I do expect mid-level programmers to know everything in this book. Note: you can read the book by Josuttis instead of this set. This is about 3 to 5 months of reading and working."
by Bruce Eckel
"Read all of both books. Good two-volume set on intermediate C++ programming. I do expect mid-level programmers to know everything in this book. Note: you can read the book by Josuttis instead of this set. This is about 3 to 5 months of reading and working."
by Eric Freeman
"Read all of this book. This is a very easy to read introduction to design patterns. It looks goofy, but it's a good book. This is 1-2 weeks of reading."
by Joel Spolsky
"Read all of this book. Very quick read. Decent collection of design heuristics for doing user interface programming. This is about three days of reading."
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems
by David J. Agans
"Read all of this book. A entertaining and useful book on how to debug better. This is about two weeks of reading."
by Diomidis Spinellis
"This book teaches you how to read code correctly. Highly recommended. It's all on open-source projects, because that's what the author could lay his hands on. This is about two months of reading if you read the whole thing."
TCP/IP Sockets in C, Second Edition: Practical Guide for Programmers (Morgan Kaufmann Practical Guides)
by Michael J. Donahoo
"Optional. This is a short but sweet introduction to network programming with sockets. This is about a week of reading and programming."
"This list is for people who want to become a Senior Software Engineer. I expect a senior to have all the skills indicated by these books (as well as all the skills indicated by the associate and mid-level lists). This is now a more general software engineering list, you'll note. There is so much for a mid-level to learn to become a senior, and yet I don't want 50 books on the list. I want a list where ALL gets read. This list is very much a work in progress. It's also a longer list - it's a three-year reading list (assuming you just got promoted to mid-level, it will take you about three years of dedicated work to make senior)."
by Dan Pilone
"This book is an easy-to-read overview of the entire software development process, as it is currently understood. This is not an in-depth book. It's your freshman introduction to what you've been doing for the past few years. This book will take a few days to a few weeks to read, depending on what you already know."
by Brian W. Kernighan
"An introduction to programming by two of the big names in the programming field. Should be a quick read for a mid-level software engineer."
by Robert C. Martin
"This is an important book. Read all of it carefully. There will be a quiz. This book will take you several months. This book is rare: engagingly written, easy to read, and foundational. This is the Java and C++ version of the book. A somewhat updated version is titled Agile Principles, Patterns and Practices in C#; mostly the same but for .NET."
by Robert C. Martin
"This book seems like a low-end book, but it is not. It's actually a companion book to Agile Software Development: Principles, Patterns and Practices. Bob Martin calls this book the prequel, but you won't get the full value of this book without knowing the other book. The first half can be read in days; the second half of the book will take weeks, if you do it right."
by Stephen C. Dewhurst
"Moving past the basics of being a C++ programmer, you will need to move past the memorization of things to do or not to do, and into the realm of understanding what creates problems or what creates good design or implementation. This is a gentle introduction to that world, couched in the form of "problems you will encounter while programming in C++"."
by Alan Shalloway
"This is a better book for design patterns than the Gang of Four book. That's heretical, I know. The original Design Patterns book was very valuable, but it's out of date. This book is more balanced and rounded."
by W. Richard Stevens
"This is at once a both very pragmatic and very thorough book. It is a complete grounding on TCP/IP programming. It contains dozens of short illustrative programs, and at the same time goes into the depths of both the TCP/IP stack and network programming in general. This will give you a thorough grounding in network programming."
by Kent Beck
"This is the seminal book on code refactoring. It is still a very worthwhile book to read, although I expect at some point a newer book to supplant it (much like the original Design Patterns book has been replaced). Read this book, understand it, and use it."
by Robert C. Seacord
"This book is a good introduction towards thinking of the security ramifications of programming. I disagree with many practices in the book. it's a good example of taking things too far (e.g. Microsoft's library decisions in '03-'07). It is a great object lesson in good and bad practices, although I'm sure the author did not intend the negative parts."
by Joe Marasco
"This is a well-written book about the practice of software engineering. It's about the engineering portion, and more towards the soft side of that. It's a very valuable book, aimed at your thinking process."
by Chad Fowler
"Why are you doing what you are doing? What are you doing? I'm referring to the big picture questions that shape your career. This book is useful in that it can help you articulate this to yourself. At this point in your career, you should be devoted to it, because you're about to spend a huge amount of time in improving it. Be certain of what you need to do, it's your life."
by Robert L. Glass
"This is a clear, easy-to-read guide through the pitfalls of programming. The book's value is its succinctness. The challenge is to yourself: you will read it, agree, and then set it aside. That would be a grave disservice, because there's a disconnect between our desired behavior and what we actually do. Read this book and use it. Upper-division version of The Pragmatic Programmer."
by Elliote Harold
"As you approach senior, you will spend more and more of your time learning both theory and practice. This book is an excellent start to that; its 20 chapters cover a number of great approaches or techniques that different programs have created."
by David Vandevoorde
"Portions of the book are advanced enough that it serves best as a reference for the mid-level software engineer, rather than as a textbook. Use it to answer questions that you have when you are working on templates. Or take this statement as a challenge and read the whole thing."
by Nicolai M. Josuttis
"This is currently the most useful tutorial and reference for the C++ Standard Library. I don't expect you to read the entire book. Regardless whether you actually use the C++ Standard Library or (or some other), the first five chapters will give you solid grounding in generic libraries. Chapters 8 and 9 are also particularly useful for anyone."
by Herbert Schildt
"Despite being called a cookbook, it is not truly that - you won't open up to a specific page and read it and use it. Its value is in the large number of examples of techniques, it's a slightly more gentle introduction to programming with generic algorithms. Chapter 4 is the best chapter in the book."
by Gary Pollice
"This is a useful reference material for basic algorithms."
by Peter Seibel