i don’t think you’re wrong, i just think you may have lost sight of some external factors. in 1995, the market was naturally filled with folks interested in computers more organically. now, software writing is the modern “factory floor” worker bee position. interestingly, a huge part of the field can’t accept that we aren’t especially unique or smart, just able to tell a computer how to process inputs. we take this need to feel as if we are a part of the intellectual class, based on a rose colored glasses view of a time 20 to 30 years ago when the only people that worked on software were all staff+ enigneers. then we create this perverse concept of a “real” engineer, and that engineer is just way more willing to aquiesce to _any_ thing you do, and therefore is a “team player”.
telling someone to interview for two hours, having them decide that of all the offers of interviews they had yours was least interesting with the highest barrier to entry, and you deciding they were at fault isn’t going to help you deal with the modern realities of software, and how far we’ve come for our idealized version of where we came from
> telling someone to interview for two hours, having them decide that of all the offers of interviews they had yours was least interesting with the highest barrier to entry, and you deciding they were at fault isn’t going to help you deal with the modern realities of software
But that is not my goal.
My goal is hire as good developers as I can retain.
I don't care about people bitching and moaning that the process is too arduous. Actually, I am happy about it because I can efficiently swipe left on them. If somebody does not care enough to work for us to put in couple of hours of work then they are very likely not a good candidate anyway.
And if they have to apply to a huge number of companies to get a job there is probably some problem with them. I mean... a lot of companies are happy to put a warm body in a chair. If you can't find a job as a developer in this economy then you have to take a serious look at what you are doing wrong.
> I don't care about people bitching and moaning that the process is too arduous. Actually, I am happy about it because I can efficiently swipe left on them.
And that’s how you know there isn’t really a shortage of developers.
My wife works in a field with a real shortage. When she gets interviewed, they fly her out and spend 2 days showing her around, taking her out, and trying to convince her to work for them.
Does your wife belong to some kind of professional guild?
You'll find most other high qualification professions require a body to certify them, conduct examinations, disqualify them for poor outcomes, organise ongoing training and so on. And most importantly (for guild members), limit numbers and ensure the government makes it illegal to conduct activities unless you are a guild member.
Developing has none of this - it's the unwashed masses. You get the full bell curve from useless CS graduate to genius high school dropout all applying for the same job, and everything in-between.
> When she gets interviewed, they fly her out and spend 2 days showing her around, taking her out, and trying to convince her to work for them.
This exact scenario has happened around a half dozen times for me as a software engineer over the past twenty years. Basically any time I’m considering a company based in another US state, they fly me out for interviews, at least take me to dinner (if not some larger group outing), and then have someone show me around the city the next day trying to convince me to move there.
I’ve flown out or drove long distance for many software developer interviews and I’ve never had anyone “show me around” the city. Although they’re usually fine providing an extra hotel night so I have time to do so myself. Sadly it feels like post pandemic the on-site interview (at least for software engineers) may be a thing of the past.
There is a shortage of actual developers. But there is no shortage of people who don't care about what they are doing or whether they can do it at all.
When you are looking through piles of thousands of people, you are looking for ways to pare it down so that you are left at every step with higher concentration of the first group. Because spending same amount of effort on everybody is not a viable strategy.
> There is a shortage of actual developers. But there is no shortage of people who don't care about what they are doing or whether they can do it at all.
In nearly 20 years of doing this I’ve have never had one of these dreaded fake developers make it through the resume screen, initial phone call, and a conversation with an engineer.
And if I did, we’d just fire them as soon as it was clear they lied about their ability.
I have had plenty of the other extreme, very technically proficient developers who turned out to be terrible employees for other reasons.
My initial point is that if you can afford to make your screening process arduous enough that you’re turning away otherwise qualified people because they don’t want to work for you bad enough to jump through your hoops, then there’s not a shortage.
If there was really a shortage, you’d do what every other industry does. Hire based on resume, and fire the fakers.
> In nearly 20 years of doing this I’ve have never had one of these dreaded fake developers make it through the resume screen, initial phone call, and a conversation with an engineer....And if I did, we’d just fire them as soon as it was clear they lied about their ability.
I've spent most of the last 25 years working independently. A large number of the 'fakers' (or just... currently-low-skilled) don't apply to large companies with screening processes. They build custom one-off software/websites/etc for small businesses. Those small business people have no ability to judge skills or quality. Some of the tech folks doing that may, at some point, try to apply 'up' in to larger companies, moving away from independent/freelance, and some of those may get weeded out.
Your goal is to enable your business to make more money, that requires hiring enough competent people that can do the work that needs to be done, to make that money.
Sometimes that work is really not especially interesting, or challenging. Nobody is going to love it, or be passionate about it, and it really doesn't require a person to be more than average in terms of skill, because it's just not that technically difficult.
And that sometimes is the majority of all salaried work, so statistically speaking, that's probably also you and your company.
Why pretend to be a unicorn and only insist on hiring passionate self motivated people who will be a bad fit anyway, and be bored after two weeks.
The hiring process is not for stroking the egos of middle managers who want to feel special.
I am not pretending to be unicorn by keeping high hiring standards.
It is a reflection on our strategy. Our strategy is that, long term, is better to have smaller, tight knit community of highly intelligent, capable and motivated people than try to throw masses of lower paid employees at the problem.
We are fighting complexity and having large team of constantly rotating people that never seem to bear responsibility for their decisions is one of the worst things you can do.
I prefer to spend more time on hiring, find people I am satisfied with and then pay them well so that they are not looking to change their job in two years as most IT seems to be doing nowadays. Retention is a hugely underestimated success factor.
Highly intelligent, (technically) capable and motivated people are probably not in any way correlated with the amount of complexity you are needing to fight with. And if it is, it's most likely negative.
Lack of intelligence is probably not your problem, the computer genius who swoops in and saves the day only exists in movies. You are probably in a much bigger need of accountable management who actually structures the work and aligns the team by making decisions.
There are plenty of reliable, mature, productive people with great team work and communication skills, who will get rejected because they say that they are actually passionate about playing guitar, not programming, and because they can't solve esoteric programming problems on whiteboards.
Your hiring process is not optimised to further business goals, it's optimised for acting out the big bang theory in the workplace.
Yeah, I'm speaking in general terms of the software industry, and common hiring processes, which according to your comments you seem to fit into pretty well.
I don't mean to criticise you but rather suggest that the hiring process should focus less on intelligence and coding skills, and try to hire people that have intellect. That can pair judgement with intelligence. That can relate decisions to goals beyond their own personal preferences.
I have too many bad experiences with highly intelligent, but myopic and immature software developers who are left to "self organise" and just end up being lose cannons of raw intelligence, that does much more harm than good.
Software development, is more an organisational problem than a technical one.
The organisation itself is already so vastly complex that no human being can comprehend it, and that's why you have a hierarchy of information and specialisation of roles. Even if your system by some miracle has zero accidental complexity, it's still going to overwhelm even the most intelligent person, just by the amount of essential complexity. So you will need an organisation of hierarchy and/or specialisation to manage this. And the biggest determining factor for how successful you are, is this organisation and how it works as a whole, rather than any individuals superior capacity.
I just think it's a really bad idea to try to hire "extra smart" people to try to solve these issues, because it won't work.
I think you have some good understanding of parts of the problem but the ease with which you generalise is dangerous.
Getting from "I have too many bad experiences with highly intelligent, but myopic and immature software developers" to "I just think it's a really bad idea to try to hire 'extra smart' people (..) because it won't work" is pretty poor logic.
I think much better and productive statement would be "Hiring intelligent people is not enough to solve the problem."
It is much more productive because from there you can go to actually discussing what else is needed to make good use of highly intelligent people.
What I'm trying to say is: it's a bad idea to hire extra smart individual contributors as a solution to managing complexity, because nobody is smart enough. The cult of genius makes the workplace dysfunctional and inefficient.
That extra intelligence is mostly irrelevant, and sometimes negative.
Managing complexity is done with hierarchy, specialisation and careful organisation of work from accountable managers. You want this organisation to work well, and then you want to hire people who can do an acceptable job and function well within that organisation. And if you are still finding yourself in a chaos of unmanageable complexity, the organisation of the team is to blame.
The hierarchy, specialisation and organisation of the work is not done well enough, and must be fixed. You don't need more horsepower when the steering of your car has broken, that's just going to get you in the ditch faster.
>If somebody does not care enough to work for us to put in couple of hours of work then they are very likely not a good candidate anyway.
[emphasis mine]
You compensate candidates for their time? I certainly assume you are compensated to interview incoming candidates, but its unusual for the candidate to be compensated (though not unheard of).
I agree with a lot of what you're saying, but I also get the impression having not been on the other side of the process recently has biased your viewpoint significantly. Please correct me if I'm wrong in my assumptions / impressions.
Interviewing is a mutual process. The company invests time and resources into finding employees and candidates invest time and resources into finding a good place for them to work.
I see no reason to compensate the candidate for the time they spend on interviewing and when companies do this I see it as a desperate marketing gimmick.
Now, I assume all is done honestly. I put up an honest job offer, I explain the interviewing process upfront, I try not to waste candidate's time and certainly I do not ask people to do any take home exercises.
And since I started to do all interviewing remotely there is even less cost to the candidate -- basically they only need to spend couple of hours on interview alone and no travel.
I also try to put largest filters at the beginning of the process so that if you pass first interview it means you are likely on a good path to get the job. This works both ways, incidentally -- as I would prefer to spend more time with candidates that are promising.
Do you interview one single person at a time for the job?
That's what has killed my desire for interviews with certain companies at times when they bring up long interviews as the next steps.
If I have a company say "the next round will be 3 hours of interviews, we're going to wrap up this round on all candidates then move on" I will 100% drop the interview process and not move forward.
On the other hand, if a company tells me "the next round will be 3 hours of interviews, you're currently the only candidate we are interviewing for this role" or "we're interviewing multiple people but have multiple roles open" I will gladly continue the process. (This is a question I always ask in interviews.)
It essentially comes down to "why waste my time continuing with a company when the end result could be 'oh we found someone that we feel is slightly better than you, but you're our backup'".
Have I given up on some jobs that would be cool? Yep, but I'm not going to waste my time with a company if they use a shotgun interview approach that will take my time and essentially turn it into a lottery system for them to pick from.
But programming is special! The same approaches to hiring used for accountants or electricians couldn't possibly work! Don't you know programming is like painting? That's why we make people regurgitate algorithms they memorized in a high-pressure situation, while pretending they didn't memorize them. It's just like painting. eyeroll
Yeah, people kinda forget that not every job is the same.
You can pretty much easily test if you have enough knowledge to be a good accountant or if you can play the violin well. There are couple smaller issues. Having knowledge will not tell you if they are hard working a knowing how to play violin well will not tell you if they will do well with orchestra and large audience. But in general you can do a testing period and be done with it.
With developers... the main issue is that it is super difficult to judge how good a developer is and that is IMO mostly because there is a huge delay between making a decision and suffering consequences of the decision and then it is frequently difficult to tell how the consequences are connected to the decisions and what were the alternatives.
And a lot of it is just opinions, so even if you hire a better developer you get into territory of trying to figure out whose opinion is right (probably the higher paid one? maybe?)
And so when I hire developers I am trying to look at various other things that I hope are proxies for what I really need. So maybe I will try to look whether they have good judgement in general, how they dealt with difficult situations in the past. Maybe get to know them a little bit as a person.
Which you don't have to do with an accountant or violinist.
telling someone to interview for two hours, having them decide that of all the offers of interviews they had yours was least interesting with the highest barrier to entry, and you deciding they were at fault isn’t going to help you deal with the modern realities of software, and how far we’ve come for our idealized version of where we came from