Limitations make you smarter as a by-product

All the classic, simple, timeless kid’s games have limitations. They are defined by them.

Limitations make the game challenging, intriguing, and actually fun. They follow the mantra “a minute to learn, a lifetime to master.” Kids play them because the barrier to entry is pretty low. Adults play them because they haven’t outgrown the challenge.

More importantly, limitations make you smarter as a by-product. They make you understand a concept better while you’re (tricked into) having fun.

As a child, I was terrible at Rubik’s Cube. It’s because, early on, I learned you could shatter the pieces by slamming it on the floor and then put it back together manually. Even though it got the job done, I’d learned years later that I’d been missing the point. It didn’t make me smarter. Had I tried to do it the real way, I’d force myself to learn about strategy. I’d think about the problem and come closer to a real solution. That’s what this kid did.

Good software, like good games, have limitations too. Alright, these limitations don’t always equate to fun. But, embracing them helps make you smarter. When software is sparse and full of limitations, two great things happen.

  • You can pick up the software right away. It has a low barrier to entry.
  • You start to figure out how to solve your own problems.

With limits, you focus on what you can do, because you know what you can’t shouldn’t do.

People often want limitless software. They want their momentary interjections of “hey why can’t it do this?” to be solved by the programmer. And, that’s sometimes akin to breaking the Rubik’s Cube immediately, without sitting back and thinking about how to solve the problem within constraints.

I’ve been using Ta-Da List for years. I wanted it to be more like a 3-day look-ahead calendar, and with a little thought, I found a nice solution. In fact, I like it more than actually having a real calendar.

There are many constraints in our bug-tracking software, DoneDone, as well. We’ve fixed a few, but, by and large, we write back to our customers with clever workarounds. They’re not always optimal, but they are a solution. As a by-product, they make us better users of our own software.

When you’re using simple software, ask yourself if there’s a way around the problem. Solve the problem within the constraints. It’ll help you become a better software user. Because, you can master software just like you can master a game.

When software gets too complex, you lose the ability to think about the solution. You don’t know what you can or can’t do. Instead of creating solutions out of your known limitations, you sit wondering if that solution lives somewhere in an n-level deep piece of functionality. Complex software wastes your time guessing, not thinking.

So, embrace limited software. It’s something you can master.