The 10% Rule

First, throw away 90% of the requirements…

Antoine Valot
Radical UX

--

Software is hard.

It’s squishy, it’s fragile, it’s usually an enormous mess on the inside… and often feels like it on the outside.

Software is not engineering, it’s not building construction, it’s not like hardware… It’s a giant factory built on top of a refinery on top of another giant factory, and on and on. It’s messes all the way down.

Most of the mess is not the useful part.

Life is short.

Your body is squishy, it’s fragile, and it will become an enormous mess on the inside, long before it shows on the outside.

Life is not about working, it’s not about accumulating dollars, it’s not about accumulating stuff. It’s a collection of tears, and laughter, and elations, and embarrassments, and boredom, and joy. It’s messes all the way through.

The messes are the useful part.

If you’re writing software, stop.

You’re wasting your time, you’re wasting your life. Before you write another line of code, you need to stop long enough to make sure the code will matter.

Take a good long hard look at your spec. 90% of it doesn’t matter. <=Tweet this

Throw it away. 90% of your product is stuff that’s there because nobody’s bothered to think of ways to do without it. Stuff that’s in all products, so someone (perhaps it’s you) decided it should be in your product too.

It shouldn’t.

Confirmation dialogs? Don’t code them.

Instead of “Are you sure you want to delete this?”, how about removing the option to delete altogether? Or how about assuming your user is smart enough to know what they want? How about removing the ambiguities that could lead them to make mistakes? How about coding a really awesome undo stack?

Configuration screens? Don’t code them.

Instead of giving your users choices, how about anticipating their needs? How about figuring out which choice will lead to a better experience for them, and making it for them? And if you have different audiences, who’ll want different modes of operation, how about making a simple, focused, optimized app for each of them?

Login systems? Don’t code them.

Instead of making your users exist in your system, how about recognizing their identity where it already is? How about leveraging their phone number, on a mobile app? How about using a common oAuth service? How about making it an email-based service, that requires no login, and no front-end? How about dial-a-service, or SMS? How about foregoing identity altogether, and making your app a public tool, ready to work for whomever picks it up?

GUIs? Don’t code them.

Instead of making your user manipulate controls and open boxes and navigate and manipulate, how about letting them ask questions? How about making your app understand language? Letting users type requests, copy-paste data, forward emails, or even just talk through Siri? How about behaving like a trusted lieutenant, instead of a machine to be operated?

Cut it out. Throw it away. Don’t build it. Don’t ship it. Remove it, and spend all of your coding time making the important parts work better.

It will take just as long, but instead of coding a mess, you’ll build truly useful software. You’ll spend 100% of your time on the 10% of your software that matters. And that means you’ll build software that people want, and buy, and pay for, because it doesn’t waste their time, and their mental energy.

Instead, it gives them more time in their lives for laughter, tears, boredom and joy. More time for the messes that matter.

Please build clean software for our messy lives. We will love you forever.

--

--