How To Make Software Worse
June 23, 2024•1,092 words
As we all know, one of the major problems facing our world today is that we have a lot of software that is just too, too good. It solves more problems than it creates and makes people joyful and content when they use it. To utilize effective synergy to rectify this issue, here is a list of ways we, as a software profession, can make our software worse. I firmly believe that by implementing these ideas, we can finally create software that frustrates its users, disappoints its creators, and generally contributes to the gradual erosion of all that is beautiful and pure in this life.
Make every operation depend on a network call
Did you know that some of your users might not have reliable, consistent, high-speed network bandwidth available at all times? This may sound crazy but it is true, especially if your software runs on a mobile phone or other phone-esque object, like the vast majority of consumer-facing software today. A great way to exploit this opportunity to create annoyance for your users is to make as many actions as possible depend on one (or, even better, many!) API calls. For example, is the user attempting to access a settings page that contains four on/off toggles and one dropdown selector? It would be entirely unreasonable to store a copy of that state locally; instead, you should hang the whole application while several API calls complete (one to get the value of each setting, of course) and then do so again any time they try to make a change. This will ensure your users spend lots of time waiting for your app to respond, which will wear them down over time until they can imagine nothing better in life than waiting 30 seconds for a spinny circle to spin any time they click a button.
Avoid persisting settings
Even better, change settings at random intervals! Do your users have the audacity to think they can turn "Annoying Mode" off and use "Normal Mode" instead? Punish them for that by turning "Annoying Mode" back on at random intervals and forcing them to dig down through the settings menu (which you have, of course, guarded by as many API calls as possible!) to switch back again. When they change a setting in your software on one device, make it sometimes apply across all devices, sometimes only to the device they changed it on, and sometimes just disregard it entirely. Users will grow too comfortable for their, or your, own good if they think that settings can persist in a predictable manner.
Constantly rearrange your interface
Stability makes users happy! Users do not deserve to be happy. They deserve to spend every two weeks learning a different way to get through the dropdown menus from Messages > Compose > Direct Message > Existing Contact > Mom
to People > Mom > Interactions > New Missive
, forever.
Break assumptions about existing software
Remember, your software is special, and your users are a form of life several orders of dignity lower than small worms that crawl through the droppings of larger worms underground. Does CTRL-S
mean "Save" in other, similar, applications? In yours, it should mean "play an obnoxious sound and strobe some graphics". Clicking the back button should take them sideways. Tapping the icon which looks like a little hamburger should, rather than opening the menu, silently undo any actions they've made in the last hour with no way to redo.
Thwart interoperability at every turn
Do not allow data imports or exports. Use proprietary formats for everything. If you can, disable the ability to copy and paste anything into or out of your application. Block screenshots. Any time somebody tries to set up a third-party tool which might make it easier for anyone to connect your application to any other application in the world, annihilate them with the burning fury of a thousand corporate lawyers.
Make logins as difficult and annoying as possible
Then, make them happen as often as you can. Two-factor auth is for wimps. You need to make your users jump through the hoops of three-, four-, even ten- factor auth. Make them verify themselves with the blood of a first-born child. Wipe their session with all local state any time the phase of the moon changes. If they're in the middle of a complex multi-step operation, sign them out with no warning. Bonus points if on logging back in, they're dumped back in the start page of your application, with no way to recover their progress.
Punish the unworthy
Do you want people to make user accounts? The best way to do that is by being as annoying as possible to people without user accounts. Do you want your user accounts to upgrade to paid user accounts? The best way to do that is by blasting free user accounts with a firehose of annoying ads. But don't worry! You can do that to the paid accounts too. After all, if they were suckers enough to pay for something this terrible, they'll put up with anything.
Suppress all error messages
Pretend everything is fine, especially when it obviously is not. This way, you can be like your users' worst ex. Treat any information about any failure anywhere as if it's a high-level business secret--after all, if your users had insight into what might be wrong, they might be able to fix it themselves, and users who can do that are a risk to anyone.
Load as much data as you can
If the user is using your app, they should be happy to download 800 megabytes of data to fill out one form. Especially if 789 of those megabytes are in the form of javascript libraries and css stylesheets that nothing on the form is actually, actively using. This will ensure that actions like "trying to read 4 paragraphs of text" cause maximum slowness and frustration.
Move UI elements around as things slowly load into place
This converts the simple task for a user of "clicking a button" to a fun (for you!) game in which they have to follow the button as it moves around the page. Bonus points if you can trick them into clicking on a banner ad!
If we all do our part, as an industry, maybe we can make software so terrible that people give up on using it entirely. And really, isn't that what "making the world a better place" is all about .... ?