Use Good Tools

Building tools on a desk

A quick thought on dev tools, and how they make us all better.

I recently finished reading Blood, Sweat, and Pixels by Jason Schreier, a book that goes behind the scenes on the making of several popular video games released in the last decade. The book was an awesome look at the drama inherent in a massive creative endeavor like making games or movies, and it had some interesting parallels to other fields - including software development.

One of my favorite quotes in the book was specifically insightful, and relatable from my experience writing applications. When discussing the writing of the engine & tooling behind Destiny, one developer said:

“The biggest differentiator between a studio that creates a really high quality game and a studio that doesn’t isn’t the quality of the team, it’s their dev tools. If you can take 50 shots on goal and you’re a pretty shitty hockey player, and I can only take 3 shots on goal and I’m Wayne fucking Gretzky, you’re probably going to do better. That’s what tools are. It’s how fast can you iterate.”

I immediately flashed back to all the dev tools I’ve worked with over the years. How something like moving from Eclipse to Android Studio completely changed the Android Dev experience and made it accessible in a way it wasn’t before. I thought about some of the rockstar devs I worked with who moved mountains to ship good code with bad tools. While that was impressive it hid the fact that, given good tools, maybe everyone on the team could have been putting out similar work.

Invest in good dev tools. Listen to new people who join the team and have complaints about the way that you work. Building or buying better dev tools is a more sustainable way to get more good work out there, because it doesn’t rely on only the “best”, most technical people to make your teams successful. Sure we want devs who can overcome hurdles, but if you rely on only hiring the devs who can survive your bad dev pipeline to ship code, you’re going to have a lot of people not shipping or helping other devs learn to ship within a broken process. Instead of expecting people to reach a certain height to survive and ship good code, raise the floor.