My colleague Ken and I were having one of those eternal-question software management conversations about what Joel Spolsky in the past had called two different developer types: "smart" vs. "smart and get things done". What occurred to me was a thought of how gamers tackle their games.

There are two types of people when it comes to finishing open world games like the Grand Theft Auto series: completionists and speed runners.

Completionists take a "I bought the whole game, I'll play all of it" mindset. They will fulfill all objectives specified by a game level, even secondary or optional ones. They will look for all special items that appear in the game's reward inventory. They will try to eliminate or defeat all villains and bosses, even if there's a way to skip that particular challenge. They'll explore every branch of a story where the character has options to choose a different action. Completionists savor the full game, and will go to great lengths to make sure they've covered every tangible aspect of the game they are playing.

Speed runners, on the other hand, are the people who find the fastest possible way to finish a game. They complete the bare minimum of objectives, choosing "Easy" mode, while they look for shortcuts, or they bypass some opponents, villains, or bosses just to get to the end of the story. After they finish a level or the whole game itself they might find time to come back to levels where their curiosity as to where branching choices or bosses might lead to, or take time to fulfill side quests for special rewards and items. However these are secondary to finishing the game quickly.

The autonomous subway in Suwon South Korea opened and it has a front glass window.  This is a long exposure going through the tunnel.
Photo by Mathew Schwartz / Unsplash

It's quite common for software developers, especially those with obssessive compulsive tendencies, to be completionists when implementing new software products or features. The attention to detail and quality, after all, are traits valued when executing user stories that build up to a specific feature. However, the demands of a fast-paced market and external competition would many times mean that time-to-market and a shorter feedback cycle would be more important than feature-completeness and addressing every single bug and feature and perfecting the product they are working on. In that sense, being speed runners might be more advantageous than being completionists.

And what about technical debt, though? Where does that fit in the picture? Isn't speed running just leaving behind a trail of technical debt? Bypassing bosses, after all, mean that somewhere out there unaddressed problems lurk in the darker levels of your product -- if your software development cycle were a game. I would wager that speed runners do not skip the absolute required bosses to defeat. Skipping these problems and leaving behind technical debt would be akin to using cheat codes to win your game.

So what do you think? Can speed runners be considered "get things done" people while completionists aren't?