Computation is amazing, but sometimes making computations is not. I started programming over 20 years ago, studied it in school, worked as a software engineer, and even attended a few programming retreats at the Recurse Center (which I thoroughly enjoyed and recommend). Despite choosing to spend all this time working with computation, I’ve found the process of programming more frustrating than enjoyable all too often. What kept me interested were the things you could create, the end program, a modern day magic in many ways only bounded by your imagination, and a medium for building the perfect tool.
But maybe things can be better. The introduction of the GUI and the mouse made interacting with computers a lot more fun. In “Benefits of the Graphical User Interface”, Chris Adams writes “If viewing family photos, watching videos, or reading the news on a home computer meant having to memorize sometimes long or complex command inputs, not many people would find that to be a relaxing way to spend their time.” Virtual and augmented reality might bring similar benefits with 3D spatial user interfaces and hand tracked controls.
But do these benefits apply to programming? We still mostly program with static text even with the advent of the GUI and Adams ends his essay describing programmers as an edge case where the speed vs accessibility trade-off reverses and CLIs are more valued than GUIs. This speed benefit hinges on the programmer knowing the commands by memory, but for me memory is one of the most limiting factors to having an enjoyable programming experience. Whether its remembering commmands or program state or where a program is in its execution there are too many times critical information is out of grasp and having to retrieve it interrupts a flow state. This in turn makes programming feel like driving in stop and go traffic rather than a smooth ride from idea to implementation. Maybe the extra space provided by a 3D environment is enough to make accessible the information needed when creating a program. Maybe it’s the right system for creating a learnable programming environment.