Let's say you have a team with 10 developers. Some of them are great, but a year later you discover that 3 of them are average (they have no talent). They want to change something and learn new things, but still they are slow, make bad decisions and other dev. outperform them.<p>Would you fire them? Would you give them a chance to improve? Other ideas?
at least be humane about it.<p>you don't simply "fire" people for performing below expectations. do the extra legwork, and find a way to get them properly "laid off", ie, "eliminate their positions" -- which shouldn't be too difficult here, as after all you say you'd rather hire more senior people -- so they can (1) get unemployment benefits, (2) roll their insurance off into CORBA if at all possible (or the equivalent of you're not in the U.S.), and (3) have at least a theoretical possibility of rehabilitating themselves and getting another job.<p>"firing" per se is just plain vindictive, and seriously endangers their ability to look out for their physical welfare on the short run, and to right their course (in terms of finding a career that's better suited to them) in the longer run<p>I know that you aren't particularly concerned with their welfare (you sound like you're basically fed up with these people, and couldn't care less). but the bottom line is that you still have to recognize that the company shares at least SOME responsibility for the situation. (after all, who hired them, anyway? was it, umm... you, by chance?)<p>and also, treating people humanely just happens to pay (considerable) dividends. as in, the morale of the rest of the team, your company's reputation (and your own reputation).<p>i've seen the (lingering) after-effects of letting go of people gracefully and magnanimously, and of doing the opposite, many, many times. it's well worth the money to do these things properly (and humanely).
If they're average, not terrible, I'd agree with 37signals - there is no such thing as rockstar people, just rockstar environments.<p>If you're not sure you've built an inspiring, learning environment where everybody feels driven to do their best, are you sure a) it's them, not you? b) anyone you'll hire will do any better?<p>The way you've worded it though, it sounds like they are a bit rubbish. Maybe it's the kindest thing, it's painful all round if they're trying and failing.
"no talent" is "average"? That sounds a bit... well, wrong. Granted, really talented people are orders of magnitude more productive, but "average" means someone that's worse than half of people, but also better than half; more or less.
It really depends. For example, you could have an average developer who has a huge amount of domain knowledge. Their coding skills may be sub-par but that doesn't mean they are not valuable. They may also have strengths in UI, sysadmin,
etc.<p>On the other hand a developer could be average due to lack of experience, which is something that can be remedied by time and training - code reviews can help, as well as a reading list etc. We all have to start somewhere. Give those that show promise - but lack experience - some guidance.<p>It also depends a lot on where you are in the development cycle. Are you mainly doing maintenance work, bug fixes, minor feature additions ? An average team should do fine.<p>Where you don't want mediocre developers is in the early stages of a big project - bad design decisions and poor programming practices can make later development a nightmare.<p>I'm working on such a project right now and it's highly demoralizing - every day I find a new WTF and I just don't have the time to refactor everything - my recommendation at this point is to scrap the lot and start over, but that's not likely to happen. That's the result of mediocre developers in over their heads without a clue, and it can have a huge negative impact on your company's productivity and bottom line.
If you're in a 1st world country you can't just fire people for being average without opening yourself up to a lawsuit. That's why good tech companies develop harrowing interview gauntlets.