Why You Need To Hire Great Developers
benlakey.com
benlakey.com
I've been a software engineering manager for 20+ years.
I've worked with great teams and I've worked with teams where it fell on me to fix a bug because no one else could figure it out.
In my experience, it's more complicated than good developers vs. average developers.
There are best practices that great developers demonstrate. There are great developers who are terrible team players and there are terrible developers who turn out to be great product managers. There are average developers who have a critical ability to keep the team together and to get even more out of the top developers.
In my experience, I prefer the right attitude, the right drive, and a person who is constantly striving to do better.
There's a lot of arrogance in our industry. I'm not sure it's something that we should continue to embrace.
For one thing, the problem is that it's not a simple dichotomy of great developers vs. average developers. I have nothing to back it up, but I'm guessing it's a fairly typical normal distribution of talent… Then, where does "greatness" start? 20x sounds fantastic, but what's the difference between a great developer and a developer that just a bit less good? Will I get a 2x at least?
The other thing that bothers me is that it's a very selfish and elitist idea. I'm pretty sure that most of the great developers didn't start as such. To become "great", they worked and learned from others who were better than them. And they certainly did so by working in teams that accepted a "not-great" developer amongst them. The horror.
If everybody did like you're saying, we'd eventually run out of great developers, because the not-great-by-a-hair would have to work with the terrible horrible average developers and wouldn't progress as they should/could. (except for the rare breed of truly great developers who were better at 14 than most developers will ever be)
edit: in this last paragraph, it sounds like I consider myself a great developer. Let it be known that I think no such thing.
>If after you interview a candidate you find that you aren’t completely sure about them, don’t hire them. If you can’t tell if they are good or not, don’t hire them. If 2 out of 6 people on the interview loop are either ‘no’ or ‘maybe’, don’t hire them. The consequence of letting a bad developer in the door is far greater than maybe missing a good one.
This is exactly what people do, and it's the exact reason why finding great developers is hard. And ironically, this tip is posted under the section "We’re Awful At Distinguishing Great Developers."
Great developers are difficult to spot because they can look like bad developers. Great developers are often honest about what they know and don't know. If you ask if they know mysql, their answer might be that they're very familiar with it, but there's a lot about it they don't know. Great developers can often lack the confidence that average developers exude to make up for their lack of skill. If you ask how to do something, they might express that their way may not be the best. Great developers can be nervous, because they can believe that they may not be as qualified as a company is seeking.
All these signals make people doing the hiring uncertain. To put a filter of "unless 1000% certain, do not hire" just ensures you get someone of, at absolute best, your skill level, and at worst, a fantastic bullshitter.
http://codercake.com/benefits-of-becoming-a-full-stack-devel...
Ok, whatever. Stop talking about it. I think it is probably true that great programmers are order of magnitude BUT please don't flame over that because I don't care.
However, why do most of these CRUD projects think rock stars want to work for them or why do they think they are doing "really important stuff" when they are really just doing CRUD, and in some cases plain old boring CRUD.
Anyway, this whole concept, true or not is just cliche at this point.
They are difficult to retain, They are difficult to be made satisfied, you need to change your company compensation rules to accommodate them and various other problems.
It's much better in my experience to hire a mediocre developer and train him in your domain.
That sounds like a fantastic way to find scads of mediocre developers. Development isn't about language, it's about comprehension.
I guess I'm gonna be a negative Nancy here, but I know some very good developers that don't make anything about themselves public. I expect some of the very best are completely invisible on the internet, at least by their real name, because they're too busy working on things their employers would rather keep as trade secrets.
Also, I'd say that the notions of "10x" or "20x" greater productivity from the best developers are set on the wrong footing entirely. Such ideas presuppose that development is just production work, when in reality it is highly creative. The advantage of good developers isn't just that they do what others would do but more efficiently, the advantage is that they do much more. Often times they expand your business. Quite often the genesis of a multi-million dollar product or services offering doesn't come from the top-down, conceived in management and merely implemented by the rank and file, but instead comes from the bottom-up, from a wacky idea that a developer has and rolls into a tech demo. Without great developers that's the sort of thing you miss out on.
We should get over the "x times more productive" notion altogether. Emphasis should be on doing things right than "fast".