I Recommend: Steve Rabin’s Code Optimization DevDeck

As you may have gathered from some of my previous posts I enjoy learning about game development. Game Agent AI Programming, a specialized subject in game programming, led me to an an interesting person (and team) who seek to coalesce industry knowledge into a consumable series of books: the Game AI Pro series. Little did I know the leader of this collective effort would create a fun little study card series that I enjoy to this day: “Steve Rabin’s Code Optimization DevDeck.” In this post I’d like to saw a few good things about the dev deck.

I found the DevDeck when I was checking back in to the Game AI Pro series website. I saw that Steve’s latest project was this devdeck. In Dungeons and Dragons 5E they have cards packs to describe class specific skills, spells and even have equipment and beastiary decks. They’re useful to have during a game session and they’re fun to flip around to discover new things. I haven’t had a “devdeck” for the purpose of programming but can easily imagine the utility. Of course I had to purchase.

I can report that I’ve had this deck since July 2024 and I’ve definitely used them repeatedly. When I first got the deck I skimmed through each of the 144 cards to get an impression of the information, then again to think more deeply and imaginatively about a code scenario that would fit the card. I’d summarize the information as making a developer think about the target hardware they’re creating for, about the process(es) that will ultimately be running for your software, the data your software uses, how “the work” will get done in your program (read: what data structures can you find in your software, what flavors of algorithms define your program(s), and how do those algorithms utilize the data structs), and general advice for a software developer.

There are Exercise cards (135 to 138) that allow for one to meditate more on the cards, such as by sorting the cards a half dozen ways (from deterministic sorts like sort by card category or effort/impact rating to project specific sorts like sort cards by applicability to project), or by picking random cards. They invite the purchaser of the DevDeck to think about the cards in different frames of mind, which help reinforce the transfer of the knowledge these cards represent.

Steve Rabin's Code Optimization DevDeck's Exercise Cards
Exercise Cards

Cards 139 to 143 are what I call “index” cards because they invite the reader to look at other cards. They demonstrate tangible useful advice intended to be transferred.

Steve Rabin's Code Optimization DevDeck's Index Cards
Index Cards

The way I use it is to always have them around. Right now I’m learning more about machine learning (LLMs, transformers, llama & hugging face 🤗) and there are sometimes gaps of time where I’m waiting to download and use a new model (>100MB-500MB) where I can flip through a few of the cards serially (in some sort of sort). When I want to slow a particularly difficult code puzzle solving session down to work something particularly tricky, I can find a few applicable cards to my problem. They’re a fantastic artifact that can let a developer think about the software they’re creating in different frame(s) of mind which seem generally applicable to other developers.

I really enjoy test driven development (TDD) and have thought deeply on the subject. I see TDD as a practice that lets me apply the scientific model to code puzzles in a pragmatic way. I’ve long realized there are different flavors of testing all based on some observable side-effect (e.g. an email or text message sent, a file created, compliance to some law, security characteristics, runs 60+ fps on specific hardware, etc). This DevDeck allows me more fun opportunities to meditate on how code can be measured and optimized, which drive some software performance tests I like to write.

Steve Rabin’s Code Optimization DevDeck been a fun and extremely useful addition to my software engineering toolkit. I highly recommend other developers consider a purchase. If you are serious about the craft of software development then this level of industry proven information would be great to have; which is all to say I see the deck being generally applicable to a wide variety of programmer types.

Have you used this or any other DevDeck in your daily work? Do you have another DevDeck (or physical developer resource) that you find highly useful and would recommend? Are there subjects that you wish you had a DevDeck for that doesn’t currently exist? Let me know in the comments!

P.S. I’m re-reading Joshua Foer’s Moonwalking with Einstein and think it would be a neat programmer party trick to have these cards committed to memory like how a memory athlete would. 🤔 🤩

Leave a comment

Your email address will not be published. Required fields are marked *