In an industrial society, workers perform rote tasks that are interchangeable with others, so the faster a worker accomplishes his task the better a worker he is. That being the case, it’s not difficult to understand why so many industrial workers have been replaced by robots.
But information workers are different. What we do requires, but does not necessarily reward, creativity.
Speeding up one task, such as writing code (a local optimization), doesn’t necessarily mean it serves the project. Rushing through coding causes mistakes that ultimately slow the project down even more. Defining the right things to do and the meaning of quality is far more subtle in the virtual realm.
Measuring developers by the number of lines of code they write in a month tends to incentivize them to write that much code, no more and no less. And the “no less” half of that equation de-incentivizes them to use code already written in a repository. So not only is that developer’s productivity capped at the high end, a valuable resource is going unused at the cost of efficiency.
But what if a project begins with the positive expectation that developers are skilled professionals who take pride in the quality and efficiency of their work, and managers lead by encouraging input into both process and product? What if we tried to understand creativity and its role in software development?
“Creativity is a central source of meaning in our lives,” wrote Mihaly Csikszentmihalyi in “The Creative Personality” (Psychology Today). “Most of the things that are interesting, important, and human are the result of creativity. What makes us different from apesour language, values, artistic expression, scientific understanding, and technologyis the result of individual ingenuity that was recognized, rewarded, and transmitted through learning.”
Software developers love a good challenge. We love figuring things out, and we’re drawn to this profession for just that reason. Putting unnecessary boundaries on our problem-solving ability like demanding a certain number of lines of code per day or over-incentivizing or de-incentivizing use of code libraries, has a dampening effect on the one thing we need most:
We need to think through a problem, find the right path through a feature, and discover not just the fastest way to deliver the basic functionality the requirements call for, but create software that exceeds our customers’ expectations.
Only a creative software developer can do that, and the only requirement necessary is respect for what a smart, committed developer can bring to the table.