When teams and systems start to grow, the obvious choice is to assign ownership of different components to different people: “Component Leads”.
The trouble with this is: what happens when the lead is on holiday? Or ill? Or leaves? It’s time for handover. The typical reaction when someone recieves a handover is: We should have done this sooner. Much sooner. In fact, it should have been a collaborative effort from the start.
Developers generally aren’t so keen on working on “other people’s” code. “Why was it done like that?”. “We should have done it like this”. “It doesnt work on my machine”. “WTF?”.
The team should be responsible for delivering value, not the individual. More collaboration, less silos. It fosters learning, spreads knowledge, and increases resilience.
Suprisingly, a collaborative approach plays well with measuring individual performance but thats the subject of a previous post…
Specialisation has been ingrained in organisations since the industrial revolution. It may be a good fit for factory work, but not for software teams.