I have noticed that the complexity of the programming profession has exploded over the years. As developers, we go to great lengths to learn programming languages, tools, and workflows, which end up changing underneath our feet. We create programs, which only survive by hijacking the end-user’s attention via dopaminergic reward pathways in the brain, and then we collect their usage habits and sell the data to businesses that want to control our market decisions for their profit. It is time we put an end to this. We need to scrap the current way software is marketed and created and focus our energy on creating software that is respectful of cognitive principles and our time here on earth. Our greatest assets in life are our brains, so software that spends our attention for us and abuses our brains’ memory spans is very disrespectful.
Our software should be designed to be compatible with basic human psychology. End-user tools should be minimally invasive on our attention, and developer workflows should have as low cognitive overhead as possible. Programmers are also users, so the software development process should respect cognitive limitations of developers. In programming, the most valuable resource is the programmer’s time and creativity—not the computer’s processing time. Because current software ignores these basic precepts about the limits of cognition, we find ourselves constantly having to waste time “keeping up with the Kardashians” and responding to signals from the outside world.
This is why I ask, are we programming the computers, or are they programming us?
To simplify the software engineering profession, we must learn how to reduce complexity and control chaos.
To that end, I am developing several projects to replace technologies that have become infected with complexity, such as the Linux kernel, the web development process, the problem with using programming languages, and file and storage management. These outdated technologies are central to decades of development, and as such, the complexity that infects them affects every technology that is built on top of them. I will be replacing these concepts that have been forced on users and accepted as facts of life.
The problem with complexity is reduced to a uniqueness problem. Things that behave similarly should not be presented in vastly different ways or have vastly different implementations. As we all know, rules are meant to be broken, but the rules exist to provide a convenient place for our minds to store memories.
To begin in this area, I am developing a file system to replace the hierarchical organization structure used on virtually every operating system and hard drive since the 1970s. I also intend to move the desktop computing experience forward, breaking it out of the confines of tradition and integrating the full potential of recent technological advances, including touch screens and low power e-Ink displays. To that end, I am developing a human-computer interface to extend and replace the mouse and keyboard, which have prevented the desktop experience from moving forward for nearly 50 years.