An IDE modeled on video games

Kragen Javier Sitaker, 2019-04-08 (5 minutes)

I was thinking about the famous Martin Shkreli screencast with Excel where he spends a few minutes working up a basic analysis of a company’s balance sheet. Although in a sense what he’s doing is mostly very simple, the demo is very flashy, and I certainly wouldn’t be able to do it as quickly. He ends up spending an unreasonable amount of time cutting and pasting individual numbers from his browser into Excel.

Then I thought about the kids at my high school who played half an hour of Tetris per day (between classes) during a school year, which worked out to about 90 hours of Tetris practice spaced over most of a year. They reached fairly impressive speeds at Tetris, though one day I was wandering around Kobe and wandered into a video arcade where I saw some random Japanese dude doing Tetris things I had never imagined a human could do. He probably had thousands of hours of Tetris practice spaced over several years.

Typing games can rapidly improve typing speed once you’ve learned the basic touch-typing technique, while day-to-day typing, lacking the same time pressure, usually won’t.

Programming often involves a lot of fiddling with user interfaces that don’t offer a very direct way to get the result you’re looking for, or determine whether you’ve gotten it, even for things that conceptually aren’t very complicated. Some aspects of programming naturally involve deep thought, but others just involve rapid trial and error, and the higher the frequency at which this can be done, the better.

I wonder if you could hack together some kind of IDE that would enable interaction at a video-game pace, with video-game-like smoothness, and a series of exercises that would provide you with incentives to learn to use it smoothly, the way video games first guide you through a tutorial to learn their user interfaces and then use the gameplay to bring you gradually to a near-superhuman level of performance with them. Perhaps it could provide you with responsive interaction options you could use to incrementally approximate the program you wanted, getting rich, instant, and varied feedback on the program you had gotten so far and what the next possible steps would look like.

Some example mechanics:

Topics