One way of organizing technical work on projects is to have a tech lead who architects the solution and divvies out the work. This is a high risk model often found on classic waterfall projects. Often the tech lead saves all the complex or interesting parts of the code and has the rest of the developers do the GUI or some supposedly less complex area of the code. This leads to:
- Less than motivated developers since they know they’re not trusted with the ‘real’ coding.
- No real way to speed up the project since things can only go as fast as the tech lead.
- Little mentoring since the tech lead is to busy coding to get others up to speed.
- At the end of the project very little improvement of the team for the next project.
I’ve seen this hierarchical model fail many times. The only time it appears to work when the project is small enough that the tech lead can pull off the superman role and code practically the whole app on their own. While common on waterfall projects, I’ve even seen this on Agile projects where the lead developer asks for less developers on the project because they don’t have enough coding tasks they want to give up.