Whenever I hear a recruiter or a manager refer to a software developer as a “resource,” I cringe. People are not resources.
Unlike assembly line workers, software developers don’t perform rote tasks, and therefore they are not interchangeable, nor are they scalable.
In his book The Mythical Man Month, Frederick P. Brooks, Jr. writes “The bearing of the child takes nine months no matter how many women are assigned.” Clearly there are certain tasks that cannot easily be deconstructed, and this is true for most tasks in software development.
Developing enterprise software is fundamentally a social activity. It requires a great deal of communication, even on projects with one developer. That developer’s primary focus is to communicate their intent through the code that they’re writing.
The challenges we face and the things we do day to day are often very different from each other. Sure we wiggle our fingers and type in the same characters every day, but what we make the computer do is often very different from day to day and requires different problem solving skills that hopefully keep us constantly learning and growing.
This is very different from the kind of manufacturing mentality from the Industrial Revolution where people work in assembly lines and are just as interchangeable as the parts they’ve assembled.
This was done for economic reasons and the idea was to make every task so simple that anyone could do it. Because assembly line work didn’t require any special skills, it became a commodity that drove down the price of manufactured goods.
But software development isn’t like manufacturing. Assembling code is not nearly as clean and simple as assembling Lego blocks to build a toy structure. Software is messy and the tools, the language of code, are still not yet well understood.