MeatballWiki | RecentChanges | Random Page | Indices | Categories

Computer science systems are symbol manipulation engines. Internally, they manage decisions and actions and behaviour by creating labels and symbols and codes, and then performing operations on them, to create some new mapping of symbols.

While that may be how computer systems are architected fundamentally, humans operate not quite the same. Even though humans are also symbol manipulators, they have a much wider range of sensing, understanding, and operating in the world.

Even taken as a given that a human and a computer are both operating symbols in a given system, ThePsychologyOfEverydayThings? points out there is a GulfOfEvaluation? and a GulfOfExecution?. The symbols a computer uses are not the same that a human uses to evaluate and decide.

Nevertheless, a common design AntiPattern is to expose the underlying system design to the end user to manipulate directly to control the software system.

For instance, a system can make the users operate using the index instead of the object. You can ask end users to manipulate some esoteric 'systemese' database IDs or SKUs or ISBNs instead of records or products or books. While getting users to manipulate system codes is faster to build, the SystemCode is the language of the computer, not the end user.

Does this achieve the JobToBeDone? from the end user's point of view? Most end users do not care at all how the system does the job. They have an objective or task in mind, and they want the shortest and simplest path from their minds to the end result as possible.

Therefore, whenever you expose the underlying engineering to the end user, stop and rethink and ask the end user, "Tell me a story of how you would solve the problem?"

However, there are some people who enjoy seeing the underlying plumbing, like the PostModern architectural design that exposed infrastructure. (cf. https://en.wikipedia.org/wiki/High-tech_architecture) This can be fun and have a beauty unto itself. This can even work with computers. Just take the example of CodeWars? exposes how VideoGame?s are fundamentally running on TuringMachine?s. This choices aide the narrative of the experience, but are more meta-commentaries on the experience than normative.

SystemCodes can also become intrinsic to the hypermedium like WikiSyntax exposing <b>bold</b> HTML tags for bold or even markup like '''bold''' which reveal there's a transformer under the hood; or EditCategories; or HashTag?s; or AtMention?s. In some of these cases, the exposure of the underlying system is entirely an artifact of a weak user interface (e.g. WikiSyntax markup); in others, it is a negotiation of language between the end user and the computer (AtMention?s).

In these situations, the value of exposing SystemCodes is debatable. It can be powerful like the creation of HashTag?s and StockTwit?s and CategoriesAndTags? which were user-generated practices using features of the underlying medium. Likely the best answer is to not engineer SystemCodes into your CollaborativeHypermedium but instead allow the design to come BottomUp? from the users actual behaviour.

CategoryAntiPattern? CategoryDesign?


MeatballWiki | RecentChanges | Random Page | Indices | Categories
Edit text of this page | View other revisions