Is it always really that important to have the comparatively best people (however you define and discover that), and not just someone who can do the required jobs well?
Is it always really that important to have the comparatively best people (however you define and discover that), and not just someone who can do the required jobs well?
I guess it depends on what you're going for, but I don't think the "best and brightest" mantra is all its cracked up to be. People can become better and brighter with the right guidance--only hiring the best and brightest and considering it an all or nothing proposition is lazy.
Edit: to be fair, as has been pointed out, there are engineers that are literally 1000x more productive, and they don't cost 1000x as much. That rare bird truly is best and brightest and is worth every penny. Trouble is, it's really tough to tell, and I don't know that the traits to look for are necessarily correlated with credentials typically attributed to "best and brightest". That is, those people don't all work at Facebook et al
Google is more than willing to pay a premium sucking up all the brains in the valley and letting them sit around twiddling thumbs so that competitors don't get to them.
"20% time" could go along way toward solving this at Google though
Are we saying 1000x more productive than top-5-percentile engineers, or 1000x more productive than the worst engineers?
Can't be 1000x more productive building CRUD forms.
Call it 5x if it makes you more comfortable, the basic argument still stands.
In my very humble experience, I have worked alongside several people like this. None of them went to aforementioned 'Top Tier' schools and none of them worked at Google etc. One had an Associates degree in Physics and the other was a college dropout. But could they kick butt and write complex software at the speed of ten men, hell yes.
The bottom 90-99% is incredibly useful. When you're building basic CRUD applications, when you need to write documentation, when you need to build test suites, I could go on. Debugging and bug fixes too.
Let's face it -- in real-life business programming, there's a tremendous amount of "grunt work" that is not particularly intellectual.
Hiring "A players" or the "1%" for that is just silly, wasting both money and talent.
For a startup that can only afford two programmers that wants to do something uniquely different, however, hiring from within the top 1% may be quite essential.
For instance Google Docs still doesn't have decent table editing, header/footer handling or heading numbering, but for some reason they gave all kinds of useless stuff higher priority over the stuff that the users actually need. For instance automatic OCR + translation for scanned PDF docs somehow doesn't seem like the most useful feature for a word processor that is still missing much of the basic functionality.
This is like some old social psych study I read a long time ago (sorry - I can't remember the citation), where men would believe women were more intelligent when they were more attractive.
And you want to have enough top/1%/A-engineers to make sure that this work is done properly. That's where in my oppinion the best talent should be put to use.
And from filling in the blanks in good design, hopefully the 50%/B/average engineers will learn from and become good architects themselves!
And, frankly, this is not restricted to engineering, but also what you'd want to have students learn from their advisors or craftspeople from their masters.
Additionaly it also works the other way round: Given a company with only average people working on projects, I'd expect them to grow and improve at a much, much reduced rate , or maybe even have their work deteriorate because there's no one pointing out bad coding practices, or other engineering methods, creeping in.
Not a chance.
As an example, I've heard it said that with old warplanes dogfighting, most of the planes were up there to let the flying aces work their magic. They distract, engage, and keep the enemy busy, and make it more difficult for the enemy to find and target the great pilots.
Programming isn't exactly like dogfighting, but point being you can often leverage your non-aces to get things done to let the ace focus on other things, or even directly enhance the performance of your ace.
Somehow that reminds me of the smart asses of Enron... http://www.gladwell.com/2002/2002_07_22_a_talent.htm