|
|
|
|
|
by thetmkay
3282 days ago
|
|
Could you explain how you get around the knowledge silo problem? Fungibility across the team is useful for resource allocation and can prevent bottlenecks - for example if a part of the codebase is higher priority or someone is ill or on holiday. Loose partitioning seems like it would work if either: 1. the partitions were similar/simple enough for other members to grok easily
2. the documentation and code sharing were thorough and extensive I don't know how feasible it is to rely on (1) and (2) seems like it would cost an investment in time that would subtract from the efficiency gains of partioning. If it is (2) what are the exact reqs/mechanics for docs/PRs that seem to have worked? I'm especially curious as "how to structure development teams" is something I am beginning to actively learn about. |
|
IMHO, you can't. Imagine either extreme. In one case, everything is so well documented and test, and every developer has all of the necessary domain knowledge for every problem. In the other case, everyone is hyper specialized, and hasn't the foggiest idea what's happening on the other side of the interface they're calling.
The reality is, some people like small, diverse problems, and want to make small-ish changes over a big codebase. Some people like big, deep, gnarly problems. Furthermore most people vary from week in their productivity and quality.
It's a puzzle. each person is a tile, and you have to cover the whole problem with tiles. As people produce solutions, you have to consider, how much of the codebase could be handled by your most jr developer. Does the code need to be so simple anyone can work on it? Generally, yes, but not universally. There can be some scary parts of the code where, perhaps only half the team can be trusted to mess with it. The thing that sucks, is when you have a scary corner of the code that only one person can handle.
Both extremes suck. Be judicious about how much scary code you're willing to tolerate. All i can really offer is hand wavy advice. I don't have a formula, and i kind of think a formula can't exist, because there are so many constantly changing factors. Time pressure, turnover, inconsistency, changing needs, there's just a ton.
Trying to match people with stuff they like to work on, and not being afraid to pull people back when they start getting a little too clever seems like the best heuristic.