Why did we become programmers? There may be many reasons, but I’ll bet that for most (or all!) developers, it’s because of a love of design and creation, and the joy of seeing something that we’ve built come alive.
For many of us, particularly those who became managers or entrepreneurs, opportunities to code are few and far between. Getting to immerse yourself in a new technology? That’s a too-rare treat, because today’s interlocking and ever-changing platforms, libraries and APIs have turned coding it into a complexity nightmare.
My friend and colleague, Andrew Binstock, expressed those points in his essay for Dr. Dobb’s Journal, “Just Let Me Code!” Many of you may know Andrew as a long-time columnist for SD Times (before he moved over to DDJ) and as the author of the 1995 seminal reference, “Practical Algorithms for Programmers.”
Andrew writes, “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.”
Do you know that wonderful feeling? I certainly do, though I rarely program these days.
Even if you do spend time coding, however, Andrew sighs that not enough of the time is spent in the joy of creation. There is simply too much overhead, he says. “Project overhead, even for simple projects, is so heavy that it’s a wonder anyone can find the time to code, much less derive joy from it. Software development has become a mostly operational activity, rather than a creative one. The fundamental problem here is not the complexity of apps, but the complexity of tools. Tools have gone rather haywire during the last decade chasing shibboleths of scalability, comprehensiveness, performance. Everything except simplicity.”
Andrew’s story points to another well-known programmer frustrated by the complexity: Tim Bray. In his post, “Discouraged Developer,” Tim writes, “…there is a real cost to this continuous widening of the base of knowledge a developer has to have to remain relevant. One of today’s buzzwords is ‘full-stack developer.’ Which sounds good, but there’s a little guy in the back of my mind screaming ‘You mean I have to know Gradle internals and ListView failure modes and NSManagedObject quirks and Ember containers and the Actor model and what interface{} means in Go and Docker support variation in Cloud providers?’ ”
Another frustrated developer, Ed Finkler, says something similar in his post, “The Developer’s Dystopian Future”: “I think about how I used to fill my time with coding. So much coding. I was willing to dive so deep into a library or framework or technology to learn it. My tolerance for learning curves grows smaller every day. New technologies, once exciting for the sake of newness, now seem like hassles. I’m less and less tolerant of hokey marketing filled with superlatives. I value stability and clarity.” Read the whole post; it’s excellent.
Coding used to be fun because it was a pure expression of creativity. Today, not so much.
Do you still get a rush out of coding, or are you overwhelmed by complexity? Write me at alan@camdenassociates.com.