Tech companies say they can’t find good employees – companies may be the problem
wsj.com
wsj.com
[1] https://news.mlh.io/introducing-the-mlh-fellowship-externshi...
[2] A close friend who was formerly employed by MLH
It hasn't quite happened yet, but the chance of IT going the way of factory workers in the future seems quite high. It's labor intensive but much of it can be done anywhere in the world. If you are lucky, you can be a liaison between management and constantly shifting overseas techies.
This is certainly not for lack of trying. Outsourcing was much more common 10-20 years ago than it is today but a combination of wage growth in outsourced countries and terrible quality has just about seen the end of the practice.
Also, most employees have to buy their own notebook computers, so you see Windows thickies from the 90s.
Source: worked in Tokyo doing field work for 2 months at a major corporation.
So what does the (private industry) career path for a CS graduate look like? Or do all the folks who want to study something computer-related end up as EEs?
I'm not sure they are even higher at SCE (Playstation), Nintendo, Bandai or Sega; but at least the people at those companies look happy and like they are having some fun. Actually, happier than the people working at the AAA houses in the USA.
From what I've read the more traditional Japanese way to think about it is that you want to get onto the management track ASAP if you've got any sense.
Note the complete change in software development process towards something resembling an assembly line.
Then all you have to do is screen a little, to make sure you don't hire one of the 199 out of 200 applicants that can't program. [0]
For new grads, it's possible to significantly reduce the noise by going to a CS program you trust and getting graduates from there to interview.
[0] https://blog.codinghorror.com/why-cant-programmers-program/
FAANG companies and many companies are okay with generalists (eg. can code on a whiteboard), but if you're looking for specialist expertise (eg. computer vision, control engineering, operations research) it's a lot trickier and not always only a matter of compensation.
It's not tricky at all. Those are chicken/egg jobs - can't get the job without experience; can't get the experience without the job. Hire some people and train them. They won't all work out, but the ones that do will be worth it.
For smaller companies, any given hire has an outsized impact, there's a more limited budget for hiring, there might not be the resources available to train a new hire from scratch for hard to train skills, and there might not be enough "bench space" for people that don't pan out.
Many companies don't really need this kind of specialist expertise though. I wouldn't be surprised if hiring is much harder in the robotics industry than in, say, consumer mobile app development.
In my experience in startups, the executive suite is full of people who imagine themselves a future Gates/Jobs/Musk/etc... Well, being that successful is hard.
So prioritize finding intrinsically motivated learners instead of specific skills, and make sure you have a budget for any learning resources (books, courses, etc.) they would need to make rapid progress.
Also, make sure that writing/improving documentation to help the next hire is one of their main responsibilities (this demonstrates what they are learning, gives senior folks the opportunity to correct mistakes & misunderstandings, selects for good communication skills, improves your onboarding, etc.)
Or do people think to themselves, "Well, I'm not qualified to do a job that's paying 40% above market. They want someone serious."
I mean, just look at the "entry level" positions that want 5 years experience in 5 different technologies with a laundry list of required talents.
It's the opposite.
The quality of the resumes simply went up. Sure there are more of them to filter out but the great ones stand out.
I had the opposite experience back in 2015. We tried to find (locally) a C programmer with good understanding of Linux and network protocols, and offered approximately what we thought to be a fair market salary. The initial attempt has attracted various people like fresh graduates, and also (strangely) a disproportionate amount of bank employees - not sure why, our application has nothing to do with finances. We could not find a candidate that was good enough, but there were several who "almost" did it.
So the financial director approved republishing the vacancy with slightly modified requirements and 2x the salary. Result: all we got was some former developers, now managers. And the flow of talented students has completely stopped. We were able to fill that vacancy by re-offering it to a person who clearly had the relevant skills but applied to a different position. When asked why he didn't apply as a C programmer, high salary and consequently an expectation of very high demands were explicitly named as a demotivating factor.
The industry expects a constant supply of senior experienced devs but completely avoids any sort of training and development. It can somewhat work if you're in a mainstream field but it won't for anything specialized, which C is in my area.
College hiring is cyclical and the earlier you get to campus, the better. If you re-advertise the same position, especially after you interviewed a few fresh grads from the same university (who will talk to one another) and flunked them all, it's not surprising nobody bothered to apply.
Also, keep in mind that it's not uncommon for college students to be offered full time position during their last internship (so 1+ year before they graduate). So by the time you try to hire new grads, some of the best are effectively already out of your local market.
Keep in mind that this is a learned response (although imposter syndrome accounts for some of it) that you have to deliberately defuse in your job listing.
Phrasing such as "The following is a list of nice-to-have skills. We do not expect candidates to have experience with all, or even most, of them." will help. You should also make it clear if you prefer candidates that have broad+shallow experience in more of the listed areas or narrow+deep in very few (or even just one), assuming you have a preference. If not, make sure you say that too.
Another thing is stating that you are looking for people with demonstrable learning skills rather than specific pre-existing knowledge.
If you don't make this sort of thing as explicit as possible, potential candidates will mostly assume that your position conforms to their past experience (which is mostly bad).
So much for improving your tactics in the job-posting approach. You should also examine shifting strategies to other channels such as job fairs to get candidates before they give up on the local job market, or referral bounties (which can get you good candidates that aren't actively looking), or even getting local media coverage by sending out press releases (I recommend the excellent book 'Bulletproof News Releases'). Heck, geotargeted Google ads might even work if you can figure out appropriate search terms.
I've seen interviewers pose problems that took the likes of Dijkstra and Knuth years to solve the first time, yet somehow they expect candidates to solve two of them in 45 minutes. Unless you are actually Dijkstra reborn or Knuth you're unlikely to solve a problem of this type quickly unless you've seen it, or something very close to it, before.
So it's essentially selecting for some combination of how recently you took an algorithms course or qualifying exam, how comprehensive that course of study was, how much experience and success you have had in "programming" (aka algorithm puzzle) competitions, how much grinding you've done on hackerrank/leetcode/etc., and pure luck.
That being said, I suppose much of the content of medical boards or the bar exam has little to do with the actual practice of medicine or law, so I guess computing is not alone in terms of annoying hoops it makes people jump through. I just wish that algorithms qualifying exams were a standard thing that you could pass outside of a job interview and be done with, rather than something you have to suffer through repeatedly.
I'm stuck in my job like you mention. But this sticking also prevents me from changing jobs within the industry.
It might be a bigger investment, but has a higher median return.
It may be a week for you, but is that indicative of the average experience? It's kind of like how all the silicon valley people on here post their massive salaries as if it was normal. Many of us in other areas don't even have access to those high paying job opportunities. So what's the point of studying for something that isn't even available in that locale.
You can argue that crappy code academy schools don't teach right, but personally even the most average college will have a decent curriculum into CS fundamentals.
It is on you to make a use to it. I personally learned most practical things by myself, but college gave me a huge jump start into the fundamentals. What you do with them is up to you.
I have 15+ years of experience. Built novel computer vision algorithms, entirely new barcode solutions. Built more 10 games in 5 different engines, so on and on. Yet I fail on interviews.
Honestly, we are all nerds who like to think deeply about problems. I think the job requires to do so as well. Yet, all these interviews are asking memorised, quick-shot answers.
But I gave up. I started practising for interviews on HackerRank.... Because I want to move to US, from Europe.
Universities have departments full of grad students and postdocs that can code and analyze data: programming and ML are increasingly common tools in neuroscience, biology, psychology and a number of other fields. However, these people are mostly invisible to tech recruiters. I hear from one or two a year and I think that's on the high end for my neuro department (having a CS degree also helps).
It might take some work to find a way to make academic achievements 'legible' to industry, or to sell industry jobs to people, but whoever figures it out (besides Insight) is going to make a mint.
But that's not realistic because the combinations they want are too specific. A person having a thousand college degrees won't fit the way companies frame their expectations.
Note that I'm mostly talking about non-IT companies hiring IT workers. An IT-centric company like Google or Microsoft may take a different angle.
Companies will try everything,I mean everything you can think of, except increasing wages or training people.
You can't take tales of woe over skilled worker shortages at face value.
I'm hoping that the site can serve as a feedback mechanism to the industry at large regarding interview and employment practices that we Software Developers feel to be counterproductive.
Not sure that layer after layer of tests would necessarily be better than Wonderlic plus a short interview in person to get a read on personality fit.
tldr; More students solved the problem when there was no proctor in the room. The effect was especially pronounced with women.
Been through a few 'adversarial' interview processes - if that is what it is like to work with you then no thank you.
I don't want to report to someone in another city that I never even see.
I wouldn't say I've ever 'thrown' an interview (save maybe once), but I've certainly 'gotten through' a few after I started to wonder if I'd made a huge mistake showing up today.
With that aside, my broader thoughts on tech interview processes: Companies want an interview process that are,
- Successfully distinguishes between people that have the knowledge and abilities required to perform the job.
- Has systems on accountability, consistency.
- Is relatively easy to train employees to administer the interview.
- Has a relatively low time-commitment for everyone involved, both interviewer and candidate.
In reality, though, there are tradeoffs between each of these points. For instance, using a set question bank improves consistency and accountability. Rubrics can be more explicitly defined, and bias limited. But it means candidates can google for questions beforehand. This was a salient issue when I worked at Dropbox, there were only about a dozen technical. interview questions for a 2,500+ person company. Having developers come up with their own unique question helps mitigate this, but reduces accountability.
Likewise, I've had some novel interview processes that more closely approximate real working conditions. One company's interview was conducted over git-hub. It was asynchronous, with tasks spread out over a week. After building the first solution, the interview came back with further feature requests and comments on the first iteration. This tested the candidate's ability to refactor existing solutions to meet changing tasks, and the ability to integrate feedback. These are things that are rarely captured by whiteboard interviews, but are arguably some of the more important skills in software development. But on the flip side, it was much more time-consuming in aggregate than 4 hour-long interviews.
No one interview process has all the advantages. I think a lot of companies settle into a pattern of 1 or 2 remote technical screens followed by a circuit 3-4 hour-long interviews because it's logistically robust. It's a format candidates are familiar with. It's easy to train new employees to conduct these interviews, and there's broad enough set of people participating that one biased signal isn't going to be decisive.
> Companies could also drop problem-solving tests as currently offered and instead ask candidates to spend five minutes explaining how they would perform a particular job-related task, Dr. Parnin says. Focusing on communication skills in this way, Dr. Parnin says, can reveal how a candidate thinks.
But do we want to hire the candidate that can talk about high level ideas for five minutes in a convincing manner, but can't code Fizz Buzz? Or a binary search? I get that some people might stumble due to pressure, but at the end of the day if you need some mechanism to determine if the candidate has the required skills or not. And administering a test is an effective way of doing this.
This isn't the first time articles like these have been written. X group is disadvantaged by problem-solving tests, so don't use said tests. But how then do you determine whether or not the candidate has the required skills? Usually whatever supplants the technical interviews are also subject to unfairness: referrals, recruiting alumni from specific universities or companies. While far from perfect, I still have trouble seeing what could replace problem-based tasks as a means of demonstrating skills.
These you can afford to do if you are Google. If you aren't, candidate sort the places they want to work at in descending order. By the time they get to that take-home, they might already be further along the interview stages at better companies.
But you're absolutely correct that the more time-consuming the interview process is for the candidate, the more likely they'll interview somewhere else. In fact, that's exactly what I did: I received an offer partway through this git-based interview process, and the offer was good enough that I didn't see value in completing it.
Aside from that, I really don't have time for these elaborate interviews if I'm already in a job, companies that do this are limiting their potential candidates to the unemployed.
And sometimes there's a reason folks are unemployed...
What are the required skills, and how long will they be the required skills?
I've yet to have a job where I was doing the exact things they hired me for 6-12 months later. Things change constantly, why isn't "dealing with change" a highly-ranked skill for job candidates?
Even if it takes me up to 8 hours to do the work at home, I think I'd rather do that. I feel like I'm pretty good at application security and programming, but I struggle to think on my feet when someone is grilling me with a job on the line. As soon as the interview is over, I get a huge case of staircase wit and think of all the better answers I could have given for each question. Even something as simple as "What's CSRF?", I could write pages about. But at a job interview? I have a hard time coming up with more than two-sentence answers.
Same thing with coding. I've written programs using breadth-first search, depth-first search, quicksort, binary searching, etc. Ask me to do it in a job interview and suddenly I'll forget the syntax for `if`.
Though FWIW, I haven't had a take-home interview test. Maybe I'd feel differently if I was actually given one.
Look at how many malicious entities use spurious job postings to farm resumes and other kinds of data. You think there aren't unscrupulous companies out there extracting free labor from their "interviews"?
If the employer is very reputable, you might be able to feel safe undertaking this kind of interview. But when you are applying to a shady tech start-up (and they are all shady, and they're where most of the jobs are), there is no way to know whether the job actually exists.