Ever since I had my fun writing edit9, I've been searching for ways to translate the methodology of writing smaller programs to game development. To recap my experience, I enjoyed writing edit9 (a little terminal text editor) because I could get a lot done in a relatively small amount of code. Why is that the case, though? How was this different from my previous work in game development? I think it depends on both project scope and the environment where the program is operating in.
Obviously, writing a text editor for personal use presents a smaller problem to solve than a professional video game because of the corners one can cut when the implementor and user are the same person. I still am not sure why this has to be the case. As software markets have matured, it feels like the floor of "required" features has increased to the point of becoming a serious tax for the lone programmer. That's just a shallow assessment, though. I still feel like there is a way to decisively cut through all of the fluff to produce a beautiful artifact where the development time goes towards features and behavior that actually matter instead of going towards an ever-growing checklist of chores whose absense won't even be noted if value is created elsewhere. In other words, we all have been steeped in discourse that is filled with complaints about software, but what is actually being said in those complaints is that there is not enough magic present in the software. If there was enough magic, then we might hear about how the software is charmingly quirky, aesthetically clean, or austere instead of whatever negative phrase you can think of. I think this is especially true in video games. It is easy to waffle and implement features that don't really matter. Very easy, in fact, because the doing of those things soothes our anxiety about the state of the project.
In hindsight, I trend towards maximalism when I'm feeling insecure. There isn't enough magic, so I start to flail and hope that some spark of life occurs in a primordial soup of features and flourishes. This creates a negative feedback loop until development is abandoned. Writing shorter programs is one way of combating this. Minimalism requires emotional endurance of a different kind but, thankfully, development time decreases when adopting this aesthetic.
Besides limiting scope, one external thing that helped me write edit9 is the fact that I could depend on it being executed within a terminal emulator. Because of this, edit9 did not need to create a window, interpret inputs from the operating system, load fonts, or render text. It really cannot be overstated how beneficial this was! This experience got me more interested in learning about interprocess communication as a way of factoring a large program down into smaller programs. As a result, I am currently working on a program for providing a similar operating environment for video games which I plan to discuss later. From what I've done so far, the technique appears to be working.