A lot of people have expended a lot of words asking what software development is metaphorically. Are we construction workers? Are we factory workers? Are we gardeners? Are we architects? Lets look at what we know.
Where is the value in software? The value that is produced is in the data that our users want to see on their machines. So, value == data + presentation.
What makes the value? The application provides data generation and presentation, so the application is ultimately the value generator.
What is the relationship between the software developer and the application? The software developer creates detailed instructions for the application on how to generate value, determines and monitors metrics to see how well the application is generating value, and makes decisions based on those things.
What does this mean? What other occupation does things like making metrics, monitoring them, and using them improving value production through things like documentation and instruction? There is an answer to this that should be immediately understandable to non-technical people. Software development is a type of management. The “workers” are the processes running on computers.
Imagine a factory that has all the management go on a retreat. The workers will continue to make product for some amount of time until a failure happens that is not accounted for previously. Perhaps no workers were informed of how to hire a technician to fix a critical machine.
The same is true in software. If a development team leaves one day, the application will continue to provide value until it fails in a way that was unaccounted for.
Why does this matter? For one thing, I think this has implications on how a business needs to grade software developers.
What would you grade a manager on and how would that map to software? I think the most obvious thing would be the application metrics. How many requests are getting served? How long does it take a user to get what they want?
What are we grading developers on now that do not make sense to grade managers on? Do we grade managers on how many instructions they give to workers? Is it a good idea to grade them on lines added to the employee handbook?
What else does this metaphor help with? Are there types of software development that don't fit into this metaphor?
Top comments (0)