Let’s stop calling it software engineering
Much of the language of software creation is based on the manufacturing metaphor. We “plan” software. We “engineer” software. We “assemble” software. The implication is that creating software is rote work that can be done by factory workers on an assembly line.
The assembly line is a technique for building the exact same thing thousands or millions of times. It’s assembling the same parts in the same way following a single method. As we’ve seen in the automotive industry and others, an automated manufacturing process can be executed by robots.
In my experience, creating software isn’t rote; it requires thought. Creating software is more like authoring than manufacturing.
And authoring software isn’t rote work to be done by robots.
You can see examples of companies who take a manufacturing approach when you look at the hundreds of weather apps available for your phone. Most weather apps just format the default weather information they’ve pulled from the weather service’s standard API. In general, they are uninspired; they aren’t insightful nor are they much fun to use. And so we stop using them.
Now look at Yahoo’s Weather app. It integrates local weather with local photos from Flickr. It’s beautiful as well as insightful. It’s something you want to show to friends.
As with authoring books, managers can try to control the creative process with documents and schedules and plans. But an author sometimes gets writer’s block. An author sometimes gets distracted or tired. And an author sometimes needs to use his creativity or judgment.
The more context a product leader can provide—the people who will use the product and the problems they face—the more the team can use their creativity and judgment to solve the problem in an innovative way.
Creating software can’t be done by robots. Let’s stop calling it software engineering or software development. Let’s start calling it software creation. We’re creating something that has never before existed. And robots can’t do that.