The efficiency of creativity
Software development is, in some sense, all about efficiency. Except when computers are used for entertainment (gaming, for example), pretty much their entire reason for existence is to make certain tasks more efficient. When we write software, we’re generally doing so with the purpose of automating, or simplifying some task that in some way, a human, or other less-efficient machine might be doing.
Certain types of developers dedicate large parts of their careers to making the development of software more efficient. People who write tools for developers, like IDEs, are a great example. But so is anyone who works to speed up a test suite, or build a static analysis tool.
But improving the efficiency of software development can only go so far. I believe there is a fundamental limit to the efficiency gains to be had. There’s a core, creative essence of software development—the part done by human brains—which cannot be optimized away, or made more efficient. This is similar to the established concept of essential versus accidental complexity. Slow test suites are accidental complexity. The truly creative task of software development is essential. And this cannot be made efficient.
To quote Jerry Seinfeld on the creative process:
If you’re efficient, you’re doing it the wrong way. The right way is the hard way.