IT Recruiters shoot with shotguns
It seems life is ironic and, as it is said in Spanish, it gives bread to those who have no teeth. What I mean is that when someone is starting as a junior software developer (or software engineer, I’m not totally sure what’s the real difference) it is an obstacle race to get that job or gig that will provide experience, knowledge and will grow the abilities of the professional one aspires to be. Endless interviews where you are asked, as if you were in the university, to implement a sorting algorithm in a whiteboard, or develop the code for a solution of, more often than not, an academic problem. And then, one day, you make the final leap. It is not really clear if it is when you pass the 5 years barrier, so you can put the “senior” next to your title, or if it’s when you actually had enough experience to be considered as such. In any case, when that happens, suddenly you are a sweet candy for recruiters that want you to join their amazing company, or their client’s incredible new project.
Shotguns loaded and ready
It can be a consequence of the market’s dynamic, where there are way more openings than people with experience, interest or capabilities to do it. And companies, as well as recruiters, prefer to find a senior developer than a junior, as it simplifies everything: you don’t need to put so much effort in formation or in telling the developer how to do things. You just have to tell them what you need and they could, in theory at least, crank out something usable. But I think they lost control over this, and I have my own theory of why is that.
So let’s start with this version of “first world’s problem”: recruiters don’t stop writing to senior devs offering them the best job position they could ever find. Not a big problem, all things considered. It is always advisable to have some options aligned in case something goes south with your actual job. The problem I see is that these recruiters specialized in IT, that should be doing a pre-screening to filter out the most suitable candidates available for a given position, are using a fucking shotgun to select candidates. Meaning they DO NOT filter shit.
And I believe that is the problem senior developers complain about. It is not very annoying that recruiters keep offering you new positions, but it is annoying when they are sending you generic text saying that based on your profile, you are a perfect candidate for a position that is everything but. Are you a C++ developer with 5+ years of experience? Don’t be surprised to receive a message offering you a JavaScript and Python position. Do you happen to have in your LinkedIn some toy projects in Arduino? You’ll get an offer for IOT development to develop an RTOS for industrial projects. Have a background in the backend (like the hardcore backend, pipelines, parallel computing, system development, etc)? You will get offers where you are told to be the perfect candidate to work on Django framework for a website.
And don’t get me wrong. I think it is sweet to being offered the chance to move to a different path in your career. It can be refreshing time to time, if you feel like it. The problem comes when you agree to send your CV to start the interview process. Usually it comes with a call with the recruiter that will start asking the general questions about your experience, expectations, work ethics... Probably also about salary expectations (that you should avoid answering, as a general rule). They seem to be knowledgeable to some degree. But the call usually takes 30 minutes or more of your time. And then, after the recruiter send your CV to the company, you get a response from the same recruiter telling you that your profile, obviously, is not a good fit for the position. The same recruiter tells you that you need more experience for that position! As if you asked in the first place to get in the process!
That is not very professional. And there are some other things that are even more infuriating. It seems to be a trend in some recruiting company now that recruiters will add you on LinkedIn with a generic message telling you they have potential customers that you could be a good fit for. But when you add them in the network, they never answer you again. Why? Well, they are inflating their connections in LinkedIn so they can sell themselves to other companies that are looking for that service. So now you are the product more so than before. A commodity they just want to have for improving their chances to get a job… themselves.
My opinion is that they know nothing regarding technology. And probably don’t care because they are salesmen. But the real problem is the incentives. I am not completely sure how the incentives work, but I am pretty sure they get paid not just when someone is hired, but by the amount of new candidates they provide. So they use a shotgun to get those. You can not blame them completely, they’re just doing what they have to to get by. Even if sometimes they bother you or even abuse of your time as if it were not very valuable. I mean, for them is not, obviously.
So what’s the problem or how could this be improved? Well, I believe one thing is that finding new candidates is a tedious and time consuming task, so no wonder companies prefer to pay some “bots” to do the initial screening, even if the results are less than good, at least they do some filtering and find people who is willing to consider a new job. Then someone from the engineering team can do a better filtering based on qualifications and knowledge so you reduce your effort. It would be a bad idea to waste engineer hours to find candidates open for a job change, so I guess in terms of money it is cheaper to hire such a HR firms even if you just get 1 potential candidate per batch provided by the recruiter.
However it is still annoying for the engineer that ends up wasting time. So here comes the basic strategy I found to be useful. First, each time I get a connection request from a recruiter, some vague talk about a potential position really fitting my experience and all, I do not accept, but I write to get more accurate description about the language and technologies involved. That filters out all those that are just looking to increase their statistics in LinkedIn because they never answer back. From those that answer back, I ask for a description of the job and company and from that I can decide what to do next. I know, I know, it is not an amazing plan. Simple as a hammer. But it works.
And if you are not open to new possibilities (although as a general rule I would recommend that.. this is a jungle and you are replaceable), the plan is easier: do not answer.
A deeper problem
I don’t want to blame recruiters only. The problem is deeper than that. The same companies are crazy. What I mean is that the same IT companies are fine with this because they usually prefer to have cogs that can be swapped around. Also the reality is that in a lot of companies, technical decisions are not always made based on technical reasons. I’ve seen a lot of craziness as deciding to change the language used and the tech stack because the one actually in use is not cool enough and the trendy fashion is to use functional programming, so “we have to rewrite everything in Scala and Spark”. Of course they don’t tell you that way, because the tech leaders are leaders for a reason: they know how to sell well-wrapped crap. So they explain that the present technology in use, the codebase that is working well and stable is “not an strategic technology”. So try to counter-argue that… you cannot, because there is no clear argument there. What’s an strategic technology? Who knows. But it is a bad thing, of course, because “we have to be strategic” if we want to succeed.
It’s the same thing as with the Agile cult. We have to be agile, because the opposite means being rigid, sluggish and dull. And we do not want to be that. It is the perfect trap.
But you may wonder: well, at some point those recruiters, those tech gurus with such a funny ideas will be exposed. When shit hit the fan, they will be fired and all, right? Well, yeah, kind of. Reality is that they are “let go” (rant_on:
man, USA way of talking is amazing, how they avoid direct language :rant_off
) and “we are grateful for the great contributions this individual made to the company” and all that. And the NDAs in place make sure the next company that hires that “genius” will not know that the result of the genius’ work was burned out developers, waste of tons of money and a system that is, in the best case, equally functional as the previous one. Thanks to the developers that ended up frustrated.
But it is not just about that. It seems to me, the problem goes deeper into the rabbit hole. The only data I have is my personal experience, so it is anecdotal evidence at best. But it may be an interesting anecdote. I received recently a request for connection in LinkedIn from one recruiter. The first message was confusing as she just described how amazing was the company she represented, the cool technologies they use, like Goland, Kubernettes, Docker, AWS (which are not fringe technologies nowadays, but the bread and butter of most of companies) and how the challenging problems and new technologies are “our daily bread”. But she didn’t mention anything about open positions or anything about my profile or anything that indicated I was a potential candidate. She finished with a question “Interested in discussing more?”. Well, I didn’t know what we were discussing!
So I asked her if she was looking for candidates or she was looking for customers. Yes, candidates it is. I guess she was aware of the problem I am talking about here and tried to get an edge over her competition. 8 out of 10 for ingenuity.
At this point she asked me if I wanted to try the recruitment process with them. I knew the company as I did the process for C++ months before with another recruiter there. And it required a LOT of time investment with more than one technical and cognitive tests to do. Considering I didn’t do the process to the end, but I had to spend around 4 hours, it was a long process in any case. So why would I decide to invest such an amount of time for free when my profile was not a good match? As I mentioned her at this point, my knowledge of Golang can be resumed as: I know it exists and it was created in Google… I guess. And I also asked her how come she decided to contact me when in my profile you can clearly see that my expertise is mainly C/C++, Python, Linux… but no Golang at all. I never tried to learn the basics, so it didn’t make sense, I told her. Well, here comes the shocking thing:
“As long as you are opened to try new things, it definitely does. We are maybe a bit different in what we do and how we hire. It happened that we hired a Java developer to write in C++, and for the project with K8s extension we are willing to hire any backend engineer who has interest in Kubernetes and cloud in general.” (Redacted for anonymity reasons).
Yes, you read it. They were proud to say that they hired a senior Java developer for a C++ position. I can understand it happens very often that a senior developer have to deal with other languages and technologies out of his knowledge or expertise. But she was saying that the position was for C++… and they hired a Java developer. It doesn’t sound too bad maybe, because if you know one, you can read or understand the other to some degree. But you cannot know enough about how they work. Just the memory management model is pretty different and that can create some headaches, problems and pain. They are willing to take anyone with experience in whatever and put that person in whatever project they need, like a Lego block. Honestly, don’t they know this is a really bad idea? I can understand the needs of a company, trying to avoid to depend too much on just one developer for their operations or business, single point of failure and all that. But this? They only care that you like technology and they teach you the rest. So the experience obtained after years working in some language they teach you that in the on-boarding process… I don’t know, it sounded a bit crazy for me and I wrote off that company from my list of places I would be interested in joining.
I tried to be nice, so this is what I answered: “Well, I don't think that is a good approach for me, as being a generalist is not an optimal strategy. And having devs working in technologies that they are not experts can create a technical debt that I prefer not to deal with. Thank you for the offer anyway.”
Maybe I overreacted. Getting into a new technology is always cool. In this line of work, it is usual to being asked to investigate the viability of some new language, framework or technology for a new project. And that is interesting and part of the job, I think. But a company that directly apply that idea for any new hire is not a place I would like to be. It feels like they don’t have a clear idea what they are doing. Or better yet, they know what they want, but they don’t know how to arrive there. That means that you cannot trust those who will tell you what to do and what tools to apply, because if they don’t get this basic idea, that expertise in one technology don’t translate instantly to another, how would they get more complex things related to efficiency, scalability, etc? How would you be sure that they would not decide to do some crazy stuff just because they heard the new No-SQL DB is amazing and have to be used everywhere? Or that this new language is super cool and only great companies use it, just because they read that in some article in Medium?
I don’t know, sometimes I think it is something wrong in me. Maybe I am too much full of myself (even if I know I am not a top developer at all) and these things get to me more than they should. But I cannot stop thinking that this is really broken. And shotguns are not the worst problem in the industry.