Retarded-proof Software

Bassem Elhawary
3 min readApr 14, 2020


Cats are probably the most beautiful yet retarded pets :D

This is a short blog post, basically because I miss blogging and I had a recent idea that’s worth documenting.

I aim as much as possible to make my software products user friendly and easy to use. However, in a recent discussion with one of my colleagues we were talking about a flow that the user has to go through. The flow consists of 2 steps, but the first one of them would require linking out to an external page that we don’t own.

We both think that it’s not an optimal experience, but it has to be like that for a considerable amount of limitations.

We reached the point that users might not perform the second step, and then we tried to optimize the page content to make it very clear that you have to complete 2 steps.

The external destination of step 1 doesn’t give feedback to the page, so we don’t can’t figure out easily if the user completed step 1 or not, unfortunately.

The updated design draft looked like that.

Then was the question

What about users who would perform step 2 without performing step 1 😅?

I had a simple answer, I said that we aren’t retarded-proof. We shouldn’t care about that, especially that step 2 isn’t achievable without completing step 1.

If the user would be retarded enough to see text and a clear visual on the page, which instructs them to do step 1 then step 2, yet still takes step 2 before step 1, then their problem is bigger than what we are trying to fix 😅.

I know that this doesn’t sound optimal, I worked with testing teams that would want to stop a release for that use case, but I still stand firm about this opinion, our software should not be retarded-proof.

Unless it’s a matter of life or death, where users can put themselves or others at risk with an undoable mistake, then we should not care that much about such use cases, our software isn’t retarded-proof 😉

P.s. An exception to all of this would be if your software is mainly aimed to be serving users with real mental disability, then in that case you have to be very careful and design the best experience that fulfills their need.

P.s. The word retarded that I used above means people with healthy minds but inexplicable behavior towards software 🙂



Bassem Elhawary

I’m passionate about working with awesome teams on building kickass products. I write about my learnings & other stuff.