But I’ve seen “ok” programmers perform “adequately” (the project got made to acceptable level) but also seen better programmers work 5x faster (without working 5x the hours, or even more hours at all), be able to mostly self-manage, not need constant qa support to make sure the tickets they set to “done” are actually done and able to solve problems creatively (and not need me to untangle the git repository for them if something goes wrong).
They don’t need brains the size of a mountain but a good/great programmer makes a huge difference (even if enough management can make mediocre programmers work out) even on projects that to me seem technically pedestrian.
It still won’t have a 100% success rate, the best you can do is hire people you/someone you trust in the team have worked with before and know is good.
They get a timeframe and have to quickly elaborate on their process, what they got done and what they didn't get done.
There are drastic differences between candidates. Some barely manage the task or are satisfied as soon as it works. Some over engineer to no end and reason about all the bells and whistles and others write abstracted code without overdoing it, add some tests and rudimentary docs.
The way people approach this simple task and what their threshold for 'solving' it is has told me more about people than any difficult interview question.
That is - an “ok” developer that performs “adequately” is not actually sufficient and it’s have to be specific circumstances for me to compromise on keeping them (e.g. I can’t find anyone better, but historically this hasn’t been the case).
Also, you may not keep, but there are million of other managers who will be happy to have someone reliable even at x0.9 performance.
I’ve learned from experience that it’s not worth compromising on a mediocre developer (even if in some situations I’d have to). Better take the short-term hit of trying to find someone good.
Also the 5x ones would mostly not be genius level, just actually motivated and talented. I think a lot of people that can do well are stuck in jobs that aren’t a good fit for them.
It actually was. You said so yourself:
> perform “adequately” (the project got made to acceptable level)
You need to figure out whether you're talking about someone who is acceptable or not.
Again it depends if you have an alternative, in my experience I always had it was just sometimes costly/inopportune/a pain in the ass in the short term to find someone better. Long term it was always better (I never regretted firing someone too quickly but often regretted firing someone too late).
I was also always worried about team morale but every time a low performer was fired it actually improved morale.
In this scenario, the 5x engineer (who probably isn't getting paid 5x) will do 30% better than their peers. Unlikely that you would fire the most productive engineer on the team. Moreover with better peers, 5x engineer will be inspired to rise to the challenge.
I just think that it’s not really a benefit for the better engineer to underperform either, I know I’ve always found doing well at work (which was usually more my subjective feeling about myself than anything some else told me) less stressful than doing badly (and not any less work than pretending to be busy but not working).
Being a programmer myself I also know what you can roughly get done (I still program maybe 30-40% of my working hours these days). It could be that someone I hire is magnificently productive (relative to myself/my experience elsewhere in the last 15-20 years) and is managing to hit that while also doing other things, if that’s the case good for them.
Anyway part of what makes someone a good fit is that they want to do well and find the work interesting and fulfilling. We work 4 day weeks so they still have time for other projects in their free time (and I know most/all of them have such projects).
Sometimes, the LAMP stack will do.