That leaves human consumers shortchanged. I would like to advocate here the shift away from trying to please the machinery, and to focus our efforts toward trying to please humans. After all, humans are the most expensive resource in this age of knowledge-based economy.
What do Humans Need from Software?Basically, what we need from software boils down to two things:
- An answer to some question
- Processing some information
How to get an Answer from Software?When you approach a software product with the desire to obtain an answer from it, you are basically doing one of the following two things:
- You have good reasons to believe that the answer is 'in there'
- You are 'fishing for results'
In the second case, you may not be sure that the answer even exists, let alone that you've come to the right place. But you're fishing for it anyway.
How to get Software to Process some Information?A software product may not only contain the ability to answer pointed questions, it could also be capable of transforming the information. If we compare a software product with a human servant for a minute, we could say that, just as a human servant can assist someone in obtaining something (such as a glass of water, or an instruction on how to get to the nearest pharmacy), software can do the same type of service. But in addition to that, just as a human servant can modify the existing resource and turn it into something else (like, use wheat flour, yeast, salt and water and bake a loaf of bread), so can a software product modify the existing information and turn it into something else (like, use the supplied information about the customer and the product to create an order to be shipped).
In order to enable software to perform such transformations, we need to make sure that the following three capabilities are present:
- Create new information
- Modify existing information
- Delete existing information
Take the Rails RIDERails is the best-of-breed technology that offers this kind of simplistic approach to software development today. It is based on the idea that any desired software behavior could be modeled on the principles of irreducibly simple fourfold behavior:
Once we acclimatize ourselves to viewing software modeling that way, we are capable of expressing our intentions to Rails without worrying about how will these intentions be implemented under the hood.
Such arrangement finally opens the door for us to start worrying about the human side of the experience, and to stop fretting over the machine side of the equation.