No Java shop worth its salt gives a flying duck if you know Java's syntax. They care if you understand how to build systems. Caching, queuing, service to service communication, algorithms, performance, debugging etc. If you learnt that stuff in Go instead of Java, who cares? Yes, the job reqs and lazy recruiters will come at you with a list of keywords, but that's usually not what the hiring manager truly cares about.
How many Java developers would come in knowing how to use LINQ efficiently and know the difference between
customers.Where(c => c.Age > 65).ToList()
And
customers.ToList().Where(c => c.Age > 65)
when using Entity Framework or the Mongo linq driver? They would both give you the same result but one is much more efficient.
You can’t imagine the number of times I’ve seen people use a Func<T,bool> instead of an Expression<Func<T,bool>> and wonder why their code is so slow in production.
How many Java developers would migrate toward log4net because they have heard of log4j instead of using the much better Serilog?
How many would come in knowing how to efficiently use ASP.Net Core and plug things in the pipeline?
Knowing the language is the easy part. Knowing the frameworks and the ecosystem takes time.
No one would hopefully ever say a Windows system admin could function at the same level with Linux as someone who had Linux experience.
That’s just like the “AWS Architects” who translate all of their knowledge of on prem deployments to AWS without knowing AWS best practices and wondering why the same infrastructure costs more.
I’ve been a hiring “manager” - more like the architect. I’ve got deadlines and deliverables. Why am I going to hire a Go developer when I can find perfectly competent C# developers that have the skill set I need? Why would I learn Go knowing that the local market wants C#, Java, and Node developers?
The competent developer with knowledge of systems know that the first step when using any form of ORM or sql generation tool is to figure out how to look at generated queries.
Also in that particular example, you're dealing with a reasonably common concept across all languages (generators). While LINQ works by letting you introspect the AST and its a reasonably unique concept, when looking at the snippets here it actually doesn't matter if you don't know that: in basically any data structure manipulation code, doing a data structure conversion followed by a predicate operation is almost always a mistake, because the whole point of "toSomething()" functions is to go from the specialized domain into the language's generic's constructs. LINQ is a particularly accessible implementation of concepts that are age old. The Rx family of tools (which do exist in java) follow similar semantics, and then most ecosystems have very similar constructs even outside of RxWhatever.
Those fundamentals won't let you figure out edge cases, but they're pretty easy to pick up once you get it. The system building aspect is what takes a lot of experience to catch. Other examples would involve how to debug a server's memory dump: it's very different between C++ and .NET, but very few people know how to do it in EITHER environments, while anyone who knows how to do it in one can pick it up in another by skimming a blog post in the middle of an outage.
Probably a reason why people should learn Category Theory too. Not quite the same thing, but it would help people make more solid assumptions.
At least, that's been my experience working in both Canada and in the US, and I've never been close to Silicon Valley (or the west coast for that matter, so if its true there, I stand corrected).
Whats harder is finding a job you'll love with great career advancement opportunities, using the tech stack you like, with a manager you "click" with, and where you're appreciated.
What does “career advancement” look like to someone who doesn’t care about management? Career advancement for me means keeping up with the most marketable tech stack and getting paid as much as I can in my local market and still staying hands on.
“The tech stack I like” is whatever stack pays the most and has a reasonable amount of opportunities. By definition, a popular tech stack will have plenty of openings where you can stay current.
I choose to work for small companies with highly technical managers. A small company can’t afford to silo you. As far as “clicking with the manager” that kind of just happens with more technical managers when they trust your judgement. The only “appreciation” I need is to be paid market rates based on my skill set. I’ve had managers “appreciate me” verbally but didn’t push for the salary I wanted - I left.
I’ve been offered signing bonuses by recruiters who really wanted to get thier cut of my first years salary. I’ve turned them down. Out of my three requirements for a job - right technology, right environment, and money. Money is the least important as long as I’m making the median for my market/skill set.
The interesting openings are through direct connections and referrals.
I can sit back, tell recruiters I’m looking for a salary that pays no less than $X and sit back. It’s never taken me more than a month from the time I’ve started looking to having another job.
If they truly have a shortage of workers they are going to either reduce the stringency of their requirements, raise wages to entice workers to come to them instead of competitior's, or train employees. The SF area does some of the wage raising, when they aren't colluding with each other to keep wages down, but the rest of the country seems content to just complain about a lack of qualified people without doing anything to change their situation
I network like crazy - with people who know where the jobs are.
Leads: 16
Position filled: 4
Phone Screens: 9
I didn’t like tech stack: 2
Didn’t have qualifications and didn’t apply: 1
In person interviews: 4
Offers: 4
Rejections: 0 - I took myself out of the running after accepting an offer.
I actually had 6 phone screens in one day from different companies.
Notice that out of the 16 “leads” none of my resumes disappeared down a black hole. I always knew where I was in the process and I knew that someone in the position to hire me was considering my resume.
Also, I don’t contribute my 100% non failure rate to being a special snowflake. I was able to discuss each lead with a recruiter and had inside knowledge of what the hiring manager was looking for.
I’ve worked with recruiters to hire people. The good ones form a professional relationship with the hiring company.
Back in 2012, I left a job with nothing in the pipeline for a new job. I called one of the recruiters I had been working with and within 4 days I had an offer making $10K more with what was then a Fortune 10 company.
My last job search last year took 7 days from the time I started looking to getting an offer with the salary, (slightly higher), the technology stack, the location, and the company size I wanted. The pickings do of course get a lot slimmer though the higher your salary requirements.
Additionally look at all the work you've put in. "Networking like crazy" as you say. This obviously had benefits for you and is probably worth it for the vast majority of engineers. However, why is this amount of work necessary to find a job in an industry that constantly complains about a shortage of engineers? It seems like they're crying wolf when they say there's a shortage but the hiring process gets more insane every year
Getting a job is easy. I used to work with a guy who had (severe) mental issues, did significant drugs (enough to pass out in front of everyone on the job because over overdoses), couldn't code for crap, sexually harassed every person with breasts in the office (long story on how he got hired in the first place). When they threatened to fire him, he quit, and had a well paying job 3 weeks later.
Whats harder is finding a job you'll love with great career advancement opportunities, using the tech stack you like, with a manager you "click" with, and where you're appreciated. This is where networking starts to matter. Job boards and (non-internal) recruiters are automatically biased against this: most of the jobs that fit the above criteria are filled by insiders before they ever need to be advertised. There are exceptions (its a crap shot if someone knows someone qualified to pick up that director/VP position), but there is a bias. I've worked for about 15-16 companies, from tiny 3 people startups to some of the largest companies in the world, and I've (almost) never seen the best positions advertised, except when large companies are growing and hiring hundreds of engineers at a time, and for very niche roles or roles where the company did not have the expertise to train (eg: the first site reliability engineer hire at a company).
Then you also have the cost of job advertisement. Recruiters often take 10, 20 or 30% cut, which can translate to tens of thousands of dollar or more. If you bypass and go straight to the company, and a friend refers you, not only will you usually skip the stupid phone screen and maybe a phase of the process, but guess where some of the money they save will go? Your first year's sign on bonus!
The Fortune 10 company having a fast hiring process was dumb luck.
The department I got hired in was originally a small startup that had been acquired by the larger company. The hiring manager was the founder of the original company. At the time, they hadn't been fully integrated with the company as a whole.
As far as the results not being typical, I've had a former coworker who was laid off that contacted me because they call me the "job whisperer". I put him in contact with three of my recruiters and he also had a job within three weeks working for a large well known company. I did help him with his resume.
As far as why I had so many leads, I attribute that to aggressively learning only what the market cares about, and at the time, my salary requirements were right in the median for what the market was paying for senior developers (and still $10K more than I was making).[1]
I've since changed jobs again, but the learn things->change jobs -> make more money process stops being as affective and gets slower once your salary requirements go up.
[1] I stayed at one job way too long and became an "Expert Beginner". My skillset and salary suffered the consequences. 10 years, 5 jobs, and a lot of studying later, I'm just now at the median salary for an "architect" and still have some gaps I want to fill in my skillset.
Networking like crazy" as you say. This obviously had benefits for you and is probably worth it for the vast majority of engineers. However, why is this amount of work necessary to find a job in an industry that constantly complains about a shortage of engineers? It seems like they're crying wolf when they say there's a shortage but the hiring process gets more insane every year
Out of all of the interviews I've done, I don't think any have been "insane". My technical interview at $largecompany consisted of a pair programming exercise correcting a program and making the unit tests pass. All of my other interviews have been the standard "explain your projects", talking and demonstrating architecture and best practices. I didn't have any programming work for my last two sets of interviews.
But with so many "developers" out thier who can't implement FizzBuzz, you have to be careful.
These same companies are ones I see talking about shortages of engineers