Sometimes, I get a lot of pressure from clients to build more and more features. There are plenty of people who speak on the perils of, “The Feature Trap.” I wanted to try and work out my own way of explaining it, and thought I would share where I wound up after thinking about this for a 5 hour car ride home.
Imagine going into a casino to play some table games. There are tables everywhere, and people are sitting down moving their chips back and forth. People seem to be having fun and doing alright for themselves. This part of the metaphor is like realizing there is competition in your space each attracting various customer segments. Anyway, you approach a table, put your chips down and place your bet. Now, this is your first time at this table, playing this game, with these competitors. What kind of bet do you make?
Well, most groups and organizations bet big. Hundreds of thousands or millions of dollars on their first play. The odds are with the house on this bet. The player has no idea how to play the game, has no experience playing it, and there is competition from other players as to who is going to collect winnings. Luck exists at the table as it does in business, but the odds are not favorable on this first bet.
This is where I believe people have a gut instinct that tends to be pretty good. Most people building software like this get a little anxious about their first release, just like the first time they place their bet, and worry that they will lose. Most of the time, we do not want to be making decisions from a place of fear, but in it is worth trying to figure out where the fear comes from so we can better address it.
So in the context of software, when this fear and doubt hit, most of the time we think that if we had more features, or more software to release, we have a better chance of winning the game at the table. Almost as if each feature built is one more game you get to play, and consequently, the more you play the more likely you are that you will win big.
This is insane.
You are still sitting at a table, playing a game you know nothing about, using the same basic strategy and hoping that the odds will just flop to your favor as you keep playing. Either that, or when you are lucky, that luck is disproportionately large compared to all of the losses to that point. Flipping a coin more does not change the probability of you landing on heads more often.
So, building and releasing more features is like playing round after round in a table game that you don’t know how to play. This apparent solution of building more features, comes from a deep fear that you will actually lose the bet that was on the table, and you need more chances to win. More features mean more chances.
Do you think this is how professional gamblers work? They sit down at games they don’t know how to play, placing big bets, and expect to win over time by exhausting the odds of the house? Do you think that they spend time studying the game, the people playing it, and every other facet that exists around it? Do you think that when they bet that they aren’t doing something very specific and intentional and using the results of that bet to adjust their next betting strategy?
Professional gamblers know the odds when they walk up to a table, and they systematically develop strategies to change those odds. They have to observe and learn from every detail around them to continue to evolve their strategies each round.
This is the same way software should be built. The same way that features should be released. By making repeated, small bets, each of which is intended to test a strategy and inform the next.
Imagine if you will, that I said I would back you by giving you a blank check, and 12 months from now I’ll look at how much you spent, and how much you earned. Every thing spent must be paid back in full, and everything past that is yours to keep for a job well done. In that scenario how would you give yourself the best chance of success? Would you bet a million on one game?