Every software development group should have a lead software developer. Someone has got to be in charge of the code. This has to be a highly skilled technical resource that has the responsibility and authority to make descisions about the code base at multiple levels. They need to be able to mentor junior developers, produce seminars, produce quality documentation, run code reviews, produce good quality code themselves, and help others produce good quality code, and that is just for starters. The lead developer should be responsible for the integrity of the system from the code on up. Mind you, this doesn’t mean they have _sole_ responsibility. Others have to be involved in supporting these activities, but the lead developer needs to be one of the main technical focal points for all the other developers.
I’m not talking about the all powerful system architect who sits in his ivory tower, not having coded anything in 20 years and decrees what and how a system should be built. Granted there may be room for someone like this (maybe), but in a lead developer, you need someone who has cut code in the last year. Anything longer than that, and the person is out of touch with the reality of the code, both within their own project and within industry as a whole.
Also, the lead developer should not be a manager. Mixing the roles of lead developer and boss just doesn’t work very well. The lead developer needs to be neutral when it comes to HR matters. Developers have to trust the lead developer so they are able to be openly creative, take calculated technical risks, get technical help and generally learn how to do things they don’t know how to do. If the developers are worried that everything they do is being judged from an HR perspective, then this won’t happen.
Finding someone with all the skills required to be a successful lead developer can be difficult, but the payoff is in the cohesion, consistency and quality of the code produced when there is someone in charge at the code level.