Junior devs are a radically different value proposition than senior devs. You have to turn them into good developers, they will all look like garbage on paper if you are expecting someone who can walk in and do the job. Curiosity, tenacity, demonstrable coding experience (even if it's side projects), and interests/hobbies outside of tech seem to be the best predictors for us in hiring juniors.
What I want to see in junior developers is simply enthusiasm for programming and their ability to learn. Both are easy to spot by having a nice conversation with them and maybe pairing with them for a few hours.
> we had so many applicants (400+) that it was a tough challenge discerning the best candidates
You just want good candidates that fit your company. Then you /make/ them the best by teaching and mentoring them.
> I would like to hire senior developers instead, but they are too expensive for my budget
Sorry to say it but this sounds not like a good place for junior developers. You can't just put them in a senior position and expect results for cheaper payroll costs. They need to learn (experienced developers need to learn too, but juniors even more so).
Junior devs can also be great for sticking on smaller\simpler\more rote things that might be boring for a senior developer, but for a junior is new territory. Depending on the size\complexity of your codebase, a senior will take lot of time to actually be useful anyhow.
The problem with hiring junior developers is risk. They could be junior because of incompetence or wrong attitude opposed to just lacking necessary experience. When hiring a junior you are hedging either competence or experience against expenses and hoping for potential. Potential is the magical ingredient and its hard to recognize before hiring somebody, which is why this is risky.
Conversely hiring really good seniors saves the company money even if a good senior is really expensive. A good senior can probably do the work of 4 junior developers while also introducing code that demands less maintenance into the future, which pay dividends over time.
What I see from some juniors who spoil it for everybody else is immaturity and unrealistic expectations. A hiring company is there to provide you compensation for work. They aren't there to satisfy some emotional fantasy or other self-serving justification.
Because there is greater risk in hiring juniors demand for juniors is lower and there are more juniors competing for those fewer positions.
---
With all of that said above, the goal isn't to get a better junior job, but rather become a senior. Here is how I did it.
First of all I didn't want to be a developer. Travelocity couldn't hire competent front-end developers. It's like they didn't exist. The company saw potential in me and involuntarily relocated me into a developer position. If I wanted to stay employed I had to figure it out. I sucked really bad a first and felt like I was struggling in a vacuum.
After about a year of this my military job needed me to perform security assessments in Afghanistan. You have a tremendous amount of available time on military deployments. Just before deploying I started a personal project, which I continue to work on today nearly a decade later. This little code beautification project kept me busy and it forced me into deep learning of complex algorithms.
When you are deployed in a combat zone you have to be self-sufficient. You don't often have internet. At the time I was writing code on a small netbook with 16gb total storage, because it was durable and portable. I didn't carry around a bunch of unnecessary tooling. You simply learn to do more with less.
Once I got back to Travelocity I discovered I had surpassed some of my peers in problem solving and code proficiency. I was coding all the time even when I didn't have to. I had found every little bit of proficiency I had gained in personal practice allowed me to work faster which then allowed me to become that much more proficient like an accelerating force.
The primary distinguishing factor between seniors and juniors to me is self-sufficiency, predictability, and simplicity. I find juniors tend to spend most of their time living in frameworks, dependency nonsense, tooling, and configurations. These external things distract from predictability and simplicity. They certainly don't benefit self-sufficiency.
For juniors I look for some background in the area I'm hiring in with some success in that area.
Mainly, though, I look for enthusiasm and eagerness to learn, the ability to communicate clearly, and intelligence. I also look for a balance of self-determination and the willingness to work through a problem on their own but also enough sense to know when and how the to ask the right questions when needed. Finally, honesty. If they've fluffed up their resume that is a red flag.
You are not going to be hiring senior level developers who've misclassified themselves. Juniors are going to take work; there is no avoiding that. Adjust your expectations to that reality and you will have a better chance of pulling in an employee that will do well for you over time.
1. Bullshit. Juniors are mostly blank slates and anyone who hires a junior can train. But you can't fix a liar.
2. Potential. The variance for a junior is a lot higher than a senior. It's sometimes a bit of lottery.
So I do indeed look for people who can be amazing over people who can get the job done. A chess game would be a hint of amazing. Many great devs started with a game.
I hired one junior because she made a crappy robot. It didn't matter that the robot was crappy. It mattered a lot more that robots aren't a software developer "thing". The first page of her resume was typical, but the crappy robots on the second page onwards were interesting. She turned out to be an excellent programmer and I paid her about 30% more than the usual, but alas we couldn't afford her for long.
What's interesting was that nobody else gave her an interview, so from a statistical view, she did poorly. But she got some above average jobs from it later so ultimately she succeeded.
There's a lot of dumb "rules" around applying for jobs, but I'd say it's a lot like dating. Don't dress for who you expect to meet. Dress for who you want to meet.
I agree with almost everything in the article. A lot of companies should try to get better at training junior developers.
Some junior developers might also want to rethink their salary requirements and need to only work with fun stuff. If the salaries are almost the same as a senior you have to get as good very quickly. And you should probably expect to do some boring stuff, especially early on in your career.
The gulf between a senior dev and the average junior is akin to the gulf between a senior dev and the average window washer. The gap is too wide between juniors and seniors.
Plus the market is flooded with junior devs. At this moment it's tough -- but not too tough -- to hire a senior dev. But juniors are a dime a dozen.
As a junior developer and new graduate actively looking for a job a question came to my mind , why would companies hire junior developers , instead of senior and more advanced developers , of course there is the long term investment and the lower salary that junior gets compare to seniors , but is there any other reasons , that companies hiring junior developers get ?
I was not aware of an argument against hiring junior developers. It seems to me that companies find it way more desirable to hire recent CS graduates rather than a developer with extensive experience.
The problem I see with the article that it confuses experience with talent. Or at least ignores talent. Referring to your example, it just may so happen that the right Junior Developer has the skill sets to immediately tackle the difficult 20% with little or no mentoring. To me, this is the big reason for hiring junior programmers: their ability to quickly infuse the organisation with new ideas and talent and in the process raise productivity.
Companies want to hire junior developers because they can pay them half of what they pay senior developers. But they also want the junior developers to have the same experience ...
Hiring junior devs is not a problem, everybody understands that they can deliver some serious stuff in 2-3 years. My experience was with senior/lead developers. There are so many things should match to hire such people. Some examples. A one guy refused the offer because he did not want to relocate, another guy was turned down because of his political views (due to war), most people could not pass technical interview. The # of candidates topped 100+ for this position.
We have no issue whatsoever hiring juniors (we hire about as many as mid-levels), but we don't have to settle for someone who doesn't have internships or projects and the openings can be closed in 2 weeks so it seems like nobody is hiring, but actually the bar has risen (and there are plenty of candidates who clear the bar).
Some companies tend to hire only junior devs for junior positions. The argument is that, once hired, senior people complain about being paid lower than a less experienced dev. Some management does not want to deal with that. I know it sounds stupid, but that is what I've heard from some of my seniors.
One thing about junior devs is the level of skill varies greatly. Where I work there's a guy who is nominally a junior dev, but he already knows everything the senior devs are expected to do. If he was an average guy there'd be a lot more handholding, but somehow with barely any hiring process (he was a friend of a friend) we lucked out. I'm wondering whether management will be smart and pay him like a senior dev so he doesn't leave as soon as he finds out he could be making a few hundred grand instead of a few tens.
One major downside of this kind of variation is managers think they can somehow repeat the trick. If we just make the hiring process hard enough and shove enough candidates through, we can pan for those elusive 10x guys. It also makes people think that 10x guys are a thing like a gold nugget in the river, rather than the outcome of a long process of maturation in an appropriate environment.
Two reasons come in my mind:
1. Some junior developers are just really good and learn fast compared to an average developer.
2. A junior developer has the energy and drive being new to the field. They are willing to do many things for the sake of learning which the senior developer is already jaded by.
Spot on, I see many wide eyed junior developers thinking just becse they can code they can be the next startup enterprenuer with their side project and show what they can do at their current job. With a bit of experience they soon realise just because you can code doesn't mean it's good code nor does it mean it will satisfy the user requirements. Luckily most juniors I have dealt with respect their seniors and take advice, there are a few who quite frankly haven't got a clue but make out they know what they are doing.
reply