When Democratization Isn’t A Good Thing

The PC era has a lot to answer for

I care about style and elegance. You might call me a snob. I prefer to think I’m human-oriented.

I want everybody to have the power computers offer, but I don’t think we should make everyone into a programmer to achieve that. “Democratization of programming” is a positive-sounding term that actually means making humans do grunt work that computers ought to do themselves.

Hooray that everybody can write JavaScript! But have you seen what people have to write? If, twenty years ago, I’d have known the common currency of programming was more confusing and less elegant than what I was learning in the early-90's, I’d maybe have become the frustrated novelist I always threatened to be.

Without the network to offer scale, programming in the PC era had to become accessible at the edges. This has meant a lot of ugly stuff, perhaps best exemplified by Visual Basic, and it set a culture we’re still to escape from. For better or worse, new programmers came up via PCs, and absorbed that programming style. Today we see it manifested in fragile layers of imperfect libraries and APIs that programmers must assemble to get anything done. Everyday programming is a mind-numbing activity of cut-and-paste, putting one concrete block on top of another.

This model fails on two counts. Firstly, it’s ugly and brittle, which anyone who has seen programming inside of a corporation knows. Second, it fails my “are computers helping us?” test. Computer science long ago reached a point where we can tell a computer what we want it to do, rather than how to do it, step-by-step, but this knowledge and research has remained largely unexplored.

But there’s hope, as programming is changing once again.

The cloud era is transforming everything.

For the computer user, things are looking up. We can now scale the efforts of a smaller number of really smart programmers to make computing power accessible to everybody. Large amounts of data and AI techniques means it’s increasingly feasible for us as users to tell a computer what, not how.

For the programmer, the problems are becoming more interesting again. Increasingly with both small scale sensor and mobile devices, and large scale big data, we need to “hit the metal” once more. That is, writing software that works with the hardware it runs on. Understanding the relationship between hardware and software is vital for performance. And new relevance is being found for the useful tools computer science hath wrought, among them more declarative styles of programming: computers themselves can reason about their own programs.

There’s never been more potential for computing to help everyone on the planet, but “democratized programming” in the PC-style era is on the way out. And that’s a good thing.