What are your opinions of fudgeability in software design?

Alan Cooper writes in "About Face":

The characteristics of manual systems that lets humans perform actions out of sequence or before prerequisites are satisfied is called fudgeability.

One example he mentions is "a transaction that can only complete if the termination date is extended two weeks beyond the official limit. Most companies would rather fudge on the termination date than to see a million dollar deal go up in smoke'

What do you think about software systems being "fudgeable"?

On the one hand I think it can improve the user experience quite a bit, on the other hand we finally have some systems in place that force people to play by the rules and this would make them as bad as the manual version.

Did you find this post useful? Show some love!

Victor makes a good point. I would also throw in that context matters. Sometimes the rules are in place because someone in management has declared "thou shalt do it my way" with no understanding of the actual process. Sometimes the rules are in place because somebody made the date value required in the database so therefore a date must be entered before you can continue even if that date isn't actually necessary. And sometimes you really shouldn't make that withdrawal from that bank account if the balance is 0.

Fudgeability empowers the user with great flexibility. But with powers comes responsibility, which is something that the users don't always realize.

I have seen systems where the flexibility (fudginess?) have been so great that the users ends up breaking the system and some technical staff needs to step in and put things in place.

As with most things in life there must be some sort of balance.

I've been working on a few applications lately that are highly fudgeable. The common theme across all of them is that no-one on the product teams actually understands the real use cases and business rules their users need to adhere to.

As a result, instead of writing rigid and predictable business logic, the teams have opted to let almost anything happen at any time. Leading to an incredible overhead in training their users in what not to do with their system. Failure to adhere to this training can take down the entire application with the click of a few buttons. The best part of this is that given the infinite number of ways that things can be done in these applications, even the teams themselves don't know every combination of clicks and key-presses that can cause catastrophic issues with the application.

Overall, my feeling is that if a system needs to be fudgeable, it's suffering from poor design. If there exists a business rule in an application that folks are consistently working around, then it's not a valid business rule at all and should probably be removed.


I can understand that most software is rather rigid and people are used to their own workflow, which doesn't work with their software.

Sometimes the question is: was the old workflow really good?

Some people don't want to switch to another workflow, even if its superior.

Sometimes it is: were their any rules in place that can't be ignored?

There are laws to obey or business rules the management set in place to move the behavior in a certain direction.

Classic DEV Post from May 18

Why do employers check job candidates' GitHub profiles?

It seems to me like a pretty weak way to get an apples-to-apples impression of ...

Follow @ben to see more of their posts in your feed.
dev.to is now open source!
View Announcement Post View GitHub Repo
K πŸ‘“
Web (React), Mobile (React-Native), Back-End (AWS SAM) Consultant
Trending on dev.to
How old have you been when you started programming and what was your first project?
What part of your first dev job were you least prepared for?
#discuss #career
A Web Design Crash Course: From one non-designer to another
#css #design #beginners #webdev
We Might Face The Crisis of Creative People in Next Few Years as our young generation is stuck in Just Googling Things
#discuss #crisis #humanity
Flip Animation effect using CSS3
#css #html #css3 #design
Should a library log its version number ?
What's the deal with downing PHP development?
How does the web look if everyone owned their own data?