We control the user’s interaction style with our system through the provided UI, but what style of interaction will provide our business with more value? Is it CRUD or task oriented?
IT systems are all about providing business value, acting on the organization’s data, They enable employees to perform tasks quicker, They enable managers and analysts to understand what customers want and how to get more business value out of IT.
The birth of CRUD UI
At first, data was handled manually, early IT systems tried making this operation more efficient, They were optimized for data entry, since this was the initial need, and there was lots of paper data we had to enter to the new systems.
This was the birth of the CRUD UI, it replaced manual forms and did it well, at this stage, we got lots of business value from IT.
Ian cooper talks about this in more length.
Getting more value with IT
As time passed by and we kept thinking of ways to get more value with IT, we came to realize we need to change the way users interact with our systems.
We wanted to save more time for the users, be able to analyze what is going on in the business, what are users doing, what do they want to do, how can we use IT to get a competitive advantage by enabling the business to provide new services faster and cheaper.
If we want to be able to analyze how the system is being used, we need a way to capture the users intent when interacting with the system.
If we provide the user with a CRUD UI, the system has no way to understand what the user is doing, what is the reason for changing certain values.
A customer’s address can change for several reasons, the user may correct a spelling error, or the customer might be moving to another address, if the business is a cable company, it is important that we’ll be able to identify this operation.
If we want to enable the business to introduce a new service quickly, we’ll need to introduce a new business process to the users in the most efficient way we can.
Using a CRUD UI means that the business process is placed in the user’s head, or at best, as a document, describing the rules and steps that needs to be taken by the user.
Trying to remember those steps puts a mental burden on the user, it takes more time learning the new process and is error prone.
At this point it was obvious, to be able to understand what the users are doing, we need to change the way they interact with our system, we need to move away from CRUD.
Moving on to task based UI
Using task based UI, we enable the user to perform only the tasks that are relevant to a given state of the process, instead of a generic save task.
This style of interaction enables us to:
- Guide the user through the process, thus lowering the burden of learning it.
- Capture the user’s intention by “forcing” him to perform specific actions and not just update data, remember the ‘change address’ example? A task based UI will include a “Customer Moving” button and some other way of correcting a typo.
Capturing the user’s intent
If we know exactly what the user wants to do, we could use IT to provide more value to the business:
- Process automation – when the users perform a task, the system can perform related tasks automatically, without the user having to remember to do it. Given the ‘change address’ example, if the system knows the customer is moving, it could schedule a technician to install the cable service at the new address, automatically.
- Reports and analysis – if we know what the users did, we know exactly what happened in our business, we could generate the most informative reports that can be. after all, we know exactly what happened.
- Domain driven design – if our domain if complex enough to justify a DDD approach, than a task based UI is pretty much a must, Greg Young has an interesting discussion on the subject.
Arguments against Task based UI
Some say Task based UIs are less flexible the CRUD, with CRUD we could change the business process at any time and not change the software.
Well, they are right!
But… What will provide more value to the business?
Is the ability to change the business process in one second worth more than the time and mistakes saved by guiding the user through the process?
What about reports? Could we analyze what’s going on in the business just by knowing that data has changed?
We should default to Task base UIs, the user experience will be much better, and the system will provide more value to the business..
When something quick and dirty is needed, just go with CRUD.