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.

Yes.

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 Apr 26

Can you explain to me what's going on in this code?

In trying to understand a Google snippet I had the thought that it might be an ...

READ POST
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
What are your thoughts on multiples package managers?
#discuss
A Web Design Crash Course: From one non-designer to another
#css #design #beginners #webdev
Flip Animation effect using CSS3
#css #html #css3 #design
What are/were your go to resources for learning Ruby and Rails?
#discuss #ruby
What are your favorite terminal apps or scripts, to use for productivity?
#discuss #python #bash #productivity
What is the simplest code to explain a loop?
#basics #anylang #discuss
Software Made Simple
#design #simple #productivity #devtips
Why haven't you gone to a development conference?
#discuss #webdev #conferences