Axioms are self-evident truths. The axioms of Software Development isolate key basics underpinning successful software development. These axioms build on each other. Understanding the first one will aid your understanding of the subsequent ones. This is part of the series on the Axioms of Software Development. If you haven’t read the previous axioms - you can see them here.
It’s my aim that by helping you understand these axioms, I can help you resolve problems associated with coordinating developers, time and resources and ensuring your software project is successful.
6. Ownership & Accountability
Any software project can bog down if the person writing the software is not accountable for the functionality of that software in production.
This is a key factor in getting projects delivered in a timely and economic manner.
It is not in your best interests to have one person write the code and then throw it over the fence to a quality team to see if it works and then over to the operations team who then work out how to get it live. Each step will just report back bugs and incompatibilities and then eventually the first developer gets it back to fix and so on. It’s a highly inefficient use of time for both teams.
The main reason it is inefficient is because of context switching. The developer who wrote it has moved onto the next bug or feature and by the time something comes back, a week or two later, has largely forgotten about all the small little things that had to be taken into consideration to make that feature work.
Tests and documentation can mitigate this, but they are never perfect.
The project flow and assignment of responsibilities by project managers and product owners needs to include that the person writing the code is responsible for running that code in a development or production environment as a fully integrated part of the whole system.
It becomes easier to visualise when we relate this view back to the analogy of building a house in my earlier blog where I outlined the role of a Software Developer. It was there, we realised the software developer role is better associated as the architect and the computer is the builder.
The architect is responsible for all actions to ensure any unforeseen complications are integrated into the project and that the original intended design is achieved. This is not left to the builder or any other parties. The architect is a skilled individual who is experienced at most levels of construction and coordinates the efforts to ensure the original vision becomes a final product that works as an integrated whole.
You want the software developer to own the code they have written, all the way into production.
This creates a huge increase in efficiency.
You are not having to describe things and go back and forth with others.
You are empowering that one developer to take it all the way through to a done and carry that feature all the way through the line.
It also is a great benefit for the developer.
They feel trusted. They feel empowered to fix things. They will originate more if they see something that isn’t right and it just treats everyone in a better state.
The responsibility for the functionality of written software is a pillar of effective software development and, done well, enables faster and more economical development of required features.
Are These Axioms Helping You?
I hope you are getting value from these axioms. Please send me through your feedback and thoughts.