When you have at least two developers working on one project, you should have a leader – an individual responsible for whatever will come from development process. Project functionality, project quality, project completeness and I don’t treat these factors only as a function of code. You can have perfectly functional, complete code with extraordinary quality, but unless it satisfies customers’ needs it’ll be nothing more than a perfect example how to spectacularly waste a time.
Thinking about development phase in a software creation process, you can imagine several different tasks that should be completed depending on a project size, a team size, given amount of time etc. Even if you think about development in a big scale project, with a design team, a quality assurance team, project, product and program management, still you can have perfectly developed something different than you wanted to. Someone just has to be responsible – leader of a development team, a lead developer or whatever you call it.
Why don’t just leave the team with a design document and trust that they’ll do it right? If you allowed it, you’d probably find the part of project made as easy as possible (of course from developer’s point of view), the part made as a developer always had been doing that, and the part made in a way, that would allow a developer to learn something new. Certainly not something that would stick together and not something your client would like to buy. Developers tend to do their work in a way they like, not a way it should be done. That’s another reason you should have the lead developer, the one you’ll punish for your failure. OK, just joking.
The lead developer should be someone who feels customer needs, someone who can put himself in customer shoes, yet he feels all the technical details and constraints of the project. Yes, it’s hard to find this sort of developer, but the bigger your project is, the more important for you is to have one.
Software development process isn’t like democracy. Imagine, you allow your developers to vote how the particular function should be implemented. Yikes, I don’t want to see what they would have developed. However, much worse is anarchy. In democracy at least a majority manages (better or worse), in anarchy everyone works like they want, and most likely no one cares about what customers would like to have (and buy). What more – you’d probably get a pack of components that just don’t fit. A regime that’s left is authoritarian, and this one is the best for software development. That’s why the best developers should be from Russia. Well, some of them actually are. Ideally, when a dictator er… the lead developer listens to ideas from his team, but he should be able to override his teammates’ decisions.
The quality of your project depends (among others of course) on the quality of your lead developer. So you’d better have a good one.