The Joy Of Working Alone
The speed at which a software feature is delivered can be measured by the amount of work an individual can do cutting through the vertical of the stack.
The details and the foundation compromise each other. When people work on their own corner, a lot of extra communication is required to accomplish a task. Negotiating back and forth every little detail takes a lot of time ends up making everyone equally miserable and agree on anything just to move on.
“If you have had told me that you needed it that way I could have organized myself better”.
“If you have had told me that this meant so much work I could have easily worked around it.”
If I am responsible for the foundation only then I have to make sure that other people that will look at the foundation don’t think I’m stupid.
If I am responsible for the details only then I have to make sure that other people that will look at the details don’t think I’m stupid.
These concerns are real and reasonable. Any one of us will always try to their best to protect their corner even at the expense of the whole because that is what those who review us will be reviewing us on.
The extra time spent on communication and negotiating this and that will either impact the quality of the end result or delay it. The review of each person’s work won’t reflect the quality of the end product either.
To make things worse, everyone’s work is more defensive than it should be. At each step this question pops-up: “What if they need this or that and haven’t said anything?”. Running the risk to under build or to over build in order to have a justification when judgement comes.
Of course there are parts of any software project that either require so much domain knowledge that there are dedicated team members working on that. Yet the beauty of software is that you can always encapsulate things behind a beautiful, easy to use API that anyone can use.
Most side projects are a form of escapism from this situation. Even if there is no economic incentive to build the project. Even if the project will never see the daylight. It doesn’t matter.
The joy of working on a thing from start to finish, the thinking and tinkering that goes into the process, the ability to easily course correct as you go instead of having to make far fetched predictions, the freedom to explore because there is no one who will raise their eyebrows. To be reviewed on the quality of the decisions made for the whole and this and that tiny things.
It is this feeling that makes one to take initiative, make decisions and build things. To care about things. To change one perspective from my function, my module to our feature, our product. This is how software ships fast.
How much of a single feature can a coder in your team deliver?