Skip to content

Instantly share code, notes, and snippets.

@vrinek
Last active February 10, 2024 20:21
Show Gist options
  • Star 71 You must be signed in to star a gist
  • Fork 17 You must be signed in to fork a gist
  • Save vrinek/bda51f6fc8b22b5df301 to your computer and use it in GitHub Desktop.
Save vrinek/bda51f6fc8b22b5df301 to your computer and use it in GitHub Desktop.
Blizzard Software Engineering Reading

Blizzard Software Engineering Reading

by Jay Baxter (circa 2009)

Associate developer

"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."

Programming: Principles and Practice Using C++

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."

C++ Primer Plus (5th Edition)

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)."

C++ Projects: Programming with Text-Based Games

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)."

Beginning Game Programming

by Michael Morrison

Beginning Game Programming

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."

The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)

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."

Programming Pearls (2nd Edition)

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."

Mid-level developer

"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."

The Pragmatic Programmer: From Journeyman to Master

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."

Object-Oriented Programming in C++

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)."

Thinking in C++: Introduction to Standard C++, Volume One (2nd Edition) (Vol 1)

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."

Thinking in C++, Volume 2: Practical Programming

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."

Head First Design Patterns

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."

User Interface Design for Programmers

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."

Code Reading: The Open Source Perspective (v. 1)

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."

Senior developer

"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)."

Head First Software Development

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."

The Practice of Programming (Addison-Wesley Professional Computing Series)

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."

Agile Software Development, Principles, Patterns, and Practices

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."

Clean Code: A Handbook of Agile Software Craftsmanship

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."

C++ Gotchas: Avoiding Common Problems in Coding and Design

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++"."

Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition)

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."

TCP/IP Illustrated, Vol. 1: The Protocols (Addison-Wesley Professional Computing Series)

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."

Refactoring: Improving the Design of Existing Code

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."

Secure Coding in C and C++

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."

The Software Development Edge: Essays on Managing Successful Projects

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."

The Passionate Programmer: Creating a Remarkable Career in Software Development (Pragmatic Life)

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."

Facts and Fallacies of Software Engineering

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."

Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly))

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."

C++ Templates: The Complete Guide

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."

The C++ Standard Library: A Tutorial and Reference

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."

Herb Schildt's C++ Programming Cookbook

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."

Algorithms in a Nutshell (In a Nutshell (O'Reilly))

by Gary Pollice

"This is a useful reference material for basic algorithms."

Coders at Work: Reflections on the Craft of Programming

by Peter Seibel

@rizsyed1
Copy link

Hey - any chance you could update this list @vrinek?

A fair few seem out of date

@vrinek
Copy link
Author

vrinek commented Aug 10, 2021

Hey - any chance you could update this list @vrinek?

A fair few seem out of date

I am not the original author of this. Also no idea where I found it initially.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment