Just Let Me Code!

Managing the complexity of development toolchains -- from SCM, to the build tools, to the testing, to the deployment stack -- now so overwhelms the developer experience, it's hard to get any real programming done.

Like most developers, I got into programming because I like creating stuff. Not just any stuff, but stuff other people find useful. I like the constant problem solving, the use of abstractions that exist for long periods nowhere but in my imagination, and I like seeing the transformation into a living presence. There is a joy in the steady work of creation and in its first successful test run. It is both a sense of building and consuming until at last, at long last, I can test the new feature, verify that it works, and feel the euphoric rush of frenetic little wicker gates opening and closing inside me in a triumphant, momentarily ecstatic pulsing.

All developers know this rush. And, of course, they know the steady pleasure of patient, disciplined, and deliberate work that leads to the moment. These days, however, both the consummating surge of joy and the satisfaction of the preliminary work have become very infrequent experiences.

Both vectors today point in the wrong direction: The daily work is now overwhelmed with non-coding activity. Consequently, the culminating points of joy are ever rarer and much farther apart. So much that what goes between them now feels like drudgery. On private projects, I keep hearing myself spit out between expletives, "I just want to code."

For a long time, I've attributed this frustration to the complexity of today's software. The simple programs of a few hundred lines of C++ long ago disappeared from my experience. What once was the experience of riding a bicycle has become the equivalent of traveling by jumbo jet, replete with the delays, inspections, limitations on personal choices, and sudden, unexplained cancellations -- all at a significantly higher cost. Where is the joy in that?

Prior to joining Dr. Dobb's Journal, Andrew Binstock worked as a technology analyst, as well as a columnist for SD Times, a reviewer for InfoWorld, and the editor of UNIX Review. Before that, he was a senior manager at Price Waterhouse. He began his career in software ... View Full Bio

You've summed it all up very nicely, Charlie. Specially with this bit: " I think the coding ambitions have gotten bigger, and the tools, likewise." The tools evolve as our needs evolve, but sometimes they don't quite catch up with the other.

Although it's an appealing notion, I suspect it was never as simple as 1,2,3 to get a coding project underway, except ones for extremely simple goals. Today you can instantly spin up a virtual machine to develop in and multiple virtual machines in which to stage and test code, no need for the old process of scrounging unused servers around the company. I think the coding ambitions have gotten bigger, and the tools, likewise. The things that got easier have once again been overwhlemed by the expanding goals of the projects.

Tom: Quite agreed. In mobile, especially, the use of packages that can create good cross-platform apps is a huge time and aggravation saver. In this regard, HTML5 is a valid solution. If we could get the testing and deploy parts simplified, we'd be in good shape.

The depth of knowledge needed to create useful apps these days only seems to keep increasing. That's one of the things that has kept me from exploring Web development -- between front-end, back-end, frameworks, and browser dev tools, there's just too much to learn and it's changing too fast to keep up. If I were a professional programmer, that might be less of a problem -- it would be my living. But as a hobbyist, it's too much.

One of the reasons I've stuck with Lua-based Corona SDK for cross-platform mobile development is that ease of use is more important for an amateur than breadth of functionality. Maybe I'll check out Swift at some point but the simplicity of Lua is worth a lot to me. The limitations of a cross-platform framework are sometimes more conducive to project completion than the full range of possibilities that accompany native development.

Among 688 respondents, 46% have deployed mobile apps, with an additional 24% planning to in the next year. Soon all apps will look like mobile apps – and it's past time for those with no plans to get cracking.