I am describing myself as a Futurist. To me, that is a person, who is a catalyst, who encourages and enables change within a project or company in order to stay (or become) more competitive in the drastically changing digital market.
There is this thing called digitisation, that is rooted in the development of the internet and is changing all sorts of industries drastically. Value chains are shortened, access to goods and processes is democratised and we are subjected to more and more cat memes.
But there is something more profound simmering beneath the surface, that only few of us are experiencing right now. In the near future, the way we interact with digital interfaces, the way these interfaces are created and the way we are generating value in the digital world will change so fundamentally, that we have to rethink what an operating system has to do, what a program is and why we (still) need humans for all of this.
Your users are actually consumers
I am not (just) talking about artificial intelligence, neural networks and alike. Let me explain.
As of writing this it is the year 2022. We are generally interfacing with our digital devices in a very limited way. To start things off only few of us handling these devices know how to explicitly make them do, what they intend to. Even fewer would consider themselves programmers. Most of them are what we call users, when in actuality they are consumers. We are mostly consuming media and services, and there is nothing wrong with that.
What’s the problem then? Often, products and services are confusing their understanding of what kind of person they are serving. A consumer wants easy access, low price and high, straight forward value. A user on the other hand, actively engages, seeks a specific utility, is willing to pay a premium if the utility they are seeking is met accurately or exceptionally. The Low-Code or No-Code efforts, that are trending currently are a great example of how to better server “real” users. It is quite obvious, that users and consumers require different treatment. So know if your user is actually a consumer (or vice versa) and adapt your offering accordingly.
Don’ts Do not push jargon on consumers. Do not expect your consumers to learn what you consider revolutionary concepts.
Dos Help consumers to get to the value of your service as easy and fast as possible. Reduce the obligation of the consumer to give anything that is not money.
We are stuck with certain usage patterns
The other limitation we are a victim of is the stagnation of what is generally called user experience. Consider Microsoft Excel of Office 365 in the year 2022. and compare it with Visicalc for the Apple II developed in 1979. The way we interact with a spreadsheet did not change (drastically) in the past 40 years. You think that is an isolated case? Think again about: Word, Photoshop, 3DsMax, Blender, Finder or Explorer, Programming Environments, Terminals. I could go on.
The scary part is this: It is not because they evolved and prevailed as being the best on offer! I know, shocking. It is because of marketing, habits and questionable business decisions, that the way we are interacting with our digital devices has not evolved.
You would think, that a brand new ecosystem, with different input and output capabilities, that is created on a green field could change that. Look at the way Smart Phones work and tell me, where we have evolved. It has become harder to program your device, harder to exchange data between applications, harder to install applications other than those allowed by a central entity. And the usage patterns?
Let me make this more clear.
- We are not generally able to program our devices to do, what we want them to
(even though the devices are more than capable to do it)
- We are not generally able to collaborate on content
(even though we are constantly connected with each other)
- We are not generally able to access all the information easily, that is shared with us
(even though we are constantly online)
This will change in the near future, and here is what it takes:
A means to dynamically apply procedures and algorithms
Solving the above however does not address the fundamental change, that is bound to happen. It would merely fulfil the promise of the current technology. What we need in addition is a means of dynamically incorporating procedures and algorithms as we see fit for purpose in every instant. Let me elaborate.
Provided it is properly trained, AI is generally good in solving very specific tasks. That is the reason why we are not seeing more AI being used in software. In general we have the same problem with any complex algorithm (complex meaning it is depending on a lot of input variable to create a valuable output). The more complex it gets, the less generic the use cases it can be applied to.
Recently the focus of building and training AIs was to show how to apply their understanding to a more broad field of applications. That is a good thing and should be pursued, but does not solve the problem, that an algorithm (including trained AI) is only useful for a very specific subset of situations and therefore its versatility is limited as well.
What is needed is a means to make the application (not training!) of such algorithms as accessible as possible. To give users and programmers an easy to access way of exchanging, tweaking and remixing algorithms, to comment on their usefulness and to bundle (and republish) them into problem solving recipes.
An accessible market place for interoperable algorithms
I am talking about a market place, where it is easy enough to access all sorts of trades and asking them to apply their tools to your workpiece only to then move on to the next craftsmen to advance to the next stage.
This requires two things:
Interoperability The general interfacing of procedures and algorithms is (as of today) not solved. Data structures, that are useful within one application (today) are often not performant or incompatible with others. To solve this, a semantic understanding of data is needed, whereby the data structure can be reconfigured based on the needs of the algorithm currently working on it only to reconfigure it again for the next one. Constant reconfiguration, a semantic understanding of data and last but not least non destructive interaction are the enablers of interoperability between algorithms.
Accessibility To make procedures and algorithms accessible is not trivial either. Questions, that we need to ask ourselves: How do I find those algorithms? How are their use cases described? Are they generally destructive to the data? How do I evaluate or curate the outcome? Can I not just apply, but also train my own algorithm based on my use case?
A lot of questions, that I will pursue to answer in the future. They are however challenging our understanding of what a program is, what a task is, what the operating system has to do well and what role the user and programmer has in all of this.
What this eventually means is that a lot of tedious tasks, that we have to do manually today, can effectively be done by our digital devices. Especially reconfiguring data to make it accessible for a given set of operations (e.g. transforming Spreadsheets, restyling documents, rewriting code in another programming language or manipulating 3D data) will be automated.