10 Programming Proverbs Every Developer Should Know
kevinwilliampang.com
kevinwilliampang.com
However, the modules are set up so that there is a clean separation between them, with all interaction being through well defined API's. In fact, each hacker typically uses their own server unless/until efficiency constraints force us to do otherwise. So far it's worked well. If one person goes away, the project can continue until they come back or one of the others can learn/duplicate their module.
This allows us to dramatically increase prototyping speed, but may not be sustainable as project size increases.
I'm fairly inexperienced, so I'd like to know what you guys think about this practice, since it's something I think about a lot.
...but you can't stop people who are just damn good. In fact, often this hampers them - i.e. You're too good at X, so you have to train a whole bunch of people who are bad at it otherwise it's a risk. This is often applied irrespective of the skill/talent of the person involved and the rest of the team respectively.
Sometimes people just are irreplaceable. What you don't want are people who are irreplaceable because of systemic issues.
One danger I have seen manifest itself when splitting code up into well defined areas is that participation in the code base as a whole drops significantly. You might get a few drive-by bugs between areas, but not the kind of serious review you give your own code.
Also, when one person is "responsible" for an area, one area is almost always the limiting factor (for development speed, quality, etc.).
Finally, having clear areas of responsibility like this mean that the manager of the developers can reinforce bad behavior (i.e. this bug is not MY fault, see, it is in HIS area). Then, everyone sits around and complains instead of someone just pitching in and fixing the bug.
Do you do code reviews on each others modules?