Who Killed the Junior Developer? - <AUTHOR> https://medium.com/@melissamcewen/who-killed-the-junior-developer-33e9da2dc58c <comment><USER4> > we don't hire junior developers because we can't afford to have our senior > developers mentor them.

That feels too dumb to be real (which is exactly why it's probably a real thing).

You don't hire senior devs to code - good junior devs can code not only "just as fast", but probably faster too! You hire senior devs to guide you WHAT and HOW to code. And they can do that so much more effectively if they don't have to actually code all that stuff themselves! "Mentoring" is basically _the_ job you hire a senior dev to do... how can people say with a straight face that they can't afford to let them do it?

I don't view this as "tragedy of the commons" as other people here suggest. I view this as plain human stupidity (which we're all guilty of, sometimes... it's just good to realize when you're being stupid before it seriously hurts you).

<comment><USER5> In my current job, for a tech company with less than 12 people, at least 5 are interns. Two of them were recent hires (January) and before they were onboarded, i had a meeting with my boss and the other senior developer regarding the new interns and my boss stated he didn't want me and other senior dev spending too much time mentoring the interns and that if they couldn't manage by themselves, he would just let them go (one is software dev intern, relocated from Lithuania).

As far as i know, management provided zero training (online courses, conferences, books etc) and the dev intern is receiving 500€/month for 40h work week, which around Amsterdam/Netherlands hardly covers housing expenses in shared accommodation, even though the intern is soon expecting Erasmus support, which will alleviate his situation apparently.

Needless to say i find the situation rather vile independently if it's a common practice or even if non-paid internships are common.

Recently i took the dev intern out for dinner and beers, gave him a few tips on how to improve himself to be ready for a decent job (online courses, writing blog posts etc) and told him he could repay me by paying forward to an intern at his next proper jobs.

As a note, another intern (part time) is also working on his maybe 5 years old laptop that apparently crashes a lot and can hardly run something like Pycharm.

I'm looking for another job :-)

<comment><USER6> The Netherlands is a special place in Software Hell. Where the non-suits are only a cost.

"Devs can't be cheap enough! We can't find decent devs!"

<comment><USER7> That's a silly generalization. I've got a pretty good overview of software development in Western Europe and NL isn't a special place for better or worse compared to the surrounding countries.

If you want to get paid a lot more and you have the right skills the City or Silicon Valley are good options (assuming you are allowed to move there).

<comment><USER6> Perhaps a bit over generalized but I do feel that there's an unusual large gap in salary between suits and devs even when comparing to countries like Germany.

It doesn't need to be a huge tech hub at all. Luckily English resembles Dutch so most Dutch speak it well enough to survive a job abroad.

<comment><USER7> The city-to-city variations in Germany are far larger than the city-to-city variations in NL because of the German history and the presence of Poland. So when you are comparing countries you need to go a bit deeper than that.

I know very well paid developers in NL and very poorly paid ones, it is mostly a matter of knowing what you are worth and refusing to charge less than that. You might find 'your spot' taken by a skilled immigrant but that's a relatively small chance.

I'd hate to have to find a developer job in Spain or Portugal judging by the number of people from there that have moved to either NL or DE. Anything East of the German-Polish border is going to pay a lot worse unless you are willing to move to Finland where there are pockets of start-ups with reasonable compensation.

Dutch developers moving abroad to increase their salary is not a trend as far as I can see.

<comment><USER6> Yet across the Polish border developers are relatively well paid versus the suits and it's actually an attractive profession for people that are career oriented. I always see more women working in IT where the job actually pays well, including the US.

I know well paid developers as well, some niches pay pretty well. SAP for example. Or simply people that have domain knowledge that's irreplaceable and know how to negotiate. But something average like C#, RoR or Node development doesn't really pay well in The Netherlands. It's a decent salary but nothing to brag about.

<comment><USER8> > Yet across the Polish border developers are relatively well paid versus the > suits and it's actually an attractive profession for people that are career > oriented

My take on this: it's so easy for Polish developers to move to and find a job in Western Europe, that local companies have to pay salary that provides at least a roughly comparable living standard (vs the West)- as otherwise talented people would just leave. For "suits", on the other hand, there's far less opportunities abroad, so their wages don't need to track Western standards so much.

This effect is even stronger in Ukraine, where a teacher will be paid $300 (per month) while a dev will make $3000.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> There were never any junior dev jobs. You have always had to lie, cheat, and steal your way into the field. I have a buddy who legit cheated his way to the top Magento certification and now cycles through $150k+ jobs where they keep him on long enough to realize he doesn't have any coding skills then they fire him.

Reason is software is always an ancillary concern to the business. You see this in other fields, like say accounting, but the difference is that accountants leave school fully capable of employment. HR understands how to hire and manage accountants.

But programming is this black box in the corporate world that no one knows how to understand, value, or hire for. This is why every company wants rockstars, they're hoping that someone whose at least confident to present themselves as a rockstar won't be a net negative to the company.

Eventually they'll figure it out, took them a decade to figure out how to manage IT. Then companies will learn that they can't skimp on middle management for software developers. Some companies will need to give software a legit seat at the table and hire upper management. The political cover will allow shops to stabilize and with stabilization, you'll finally start seeing small and midsize organizations open up positions for juniors.

But it'll never happen so long as companies don't take software development seriously by giving them political cover. If you are a software developer nearing the middle or end of your career, you're pulling the ladder up behind you if you don't seriously consider moving into management. It's too important a job to ignore to go chase your dreams.

<comment><USER10> My "standard" team typically has two jr engineers, and two Sr engineers. When we hire Sr engineers we hire people that like to mentor others and see it as part of being Sr. Jr engineers know that in order to become Sr one of the skills they need to master is mentoring.

This is 100% a management issue, and it starts at the hiring filter.

Hiring Jrs btw is its own skill as you are filtering for potential not skill or knowledge. Identifying the person who is passionate about learning, has dedication to the craft and pride in their work, and has a natural talent for software is hard. Figure it out though and you have a competitive advantage for life as a manager.

Also, half of the Jrs we hire are women. We could never do that if we only hired experienced talent. Not enough women even apply for those roles.

<comment><USER11> Then you will need two senior devs. This is because rockstar devs rarely want to mentor junior devs nor attend meetings. Most inventors are not professors.

<comment><USER12> Then they aren't a rockstar. And frankly, I've spent my career cleaning up the obfuscated, badly documented, untested code of "rockstar" devs.

The idea of a "rockstar" you seem to be referring to has, in my experience, been a dev who can go into a corner and pump out high volumes of code with little supervision or collaboration. That's great, except no one else can make sense of the code they pump out, so when it comes time for the next guy to add a feature to the rockstar's mess it takes 2 to 3 times as long as it should.

I've also had to clean up messes by rockstars who made unilateral decisions about incorporating new technologies into a product. Like building out a single part of the product in React with out asking anyone else. You see, the rockstar didn't like meetings and didn't want to make the case to the rest of the team for why we should all learn React and gradually switch over. Instead, he just stuck it into the code. So now, you have a couple of views built as React components, and the rest of the thing is in Backbone. No one else knows React or has time to learn it, cause we're blazing ahead really fast. They just get very confused when they have to change something in those components and it takes them forever. But the rockstar got to have his fun and play with new tech.

This conception of a "rockstar" isn't a great developer... it's a selfish, cocky developer. When you hear "rockstar" dev, you shouldn't hear great performer. You should think of Keith Moon trashing his hotel room and driving his car into the hotel pool.

A great dev knows the value of documenting their code and writing testable code. A great dev knows the value of taking the extra time to make code easily understood and easily modified -- that sweet spot between spaghetti and over engineering. A great dev loves to mentor junior devs, enjoys walking other devs through their code, is happy to discuss design decisions with the team, and willing to admit when maybe their idea isn't the best one.

A great dev doesn't think they are god's gift to code, they are humble enough to understand they are one part of a team. They put the team first and work hard to teach others what they know, while always remembering they don't know everything.

<comment><USER13> That's why I've always told people that I'm a "studio musician" developer. Not a rock star, but a competent professional the studio calls when they need to make a record.

<comment><USER14> That's what I'd been saying for a while -- the best devs are session musicians. They have enough all-around comoetence to deliver what is asked for for that particular recording.

<comment><USER15> Normaly session musicians are better than rock stars James Jameson (funk brothers) was a better bassist than Paul McCartney, and Paul would admit that.

I have worked with a Musician with Phd in music who taught him self coding after an accident broke all the bones in his feet (drink had been taken)

It was fun in the pub when some hit tracks came on he would say ah I think that's one of mine :-)

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> I love mentoring. I always have. I used to help out other kids in my high school programming classes. Despite holding several high-level software development positions, what is the total number of times I've been asked by management to mentor more junior folks?

Zero.

I did it because I love sharing knowledge and I like seeing looks of understanding appear on my colleagues' faces when they "get something" for the first time.

The short-termism that's infested our culture--it seems like _all_ Western culture--is truly sickening. It feels like "Well, I got mine, screw the next generation." This goes way beyond just junior developers.

<comment><USER17> I feel like the current trend of agile development process common in startups now somewhat works against senior devs' interests to mentor junior devs. There simply isn't time allocated for this. Senior devs are held accountable for what they deliver, and doing so on time. This is among other things like code reviewing PRs and attending meetings. For most senior devs working under this circumstance, the best they could do is answer questions of junior devs when they ask them.

I was fortunate enough to be moved into a lead role at the current place after a few months, and expectation of my amount of individual-contribution is set lower than that of other IC members of the team. This has allowed me to spend a little more time on mentoring junior devs. I can see that for other senior devs, it simply isn't realistic to expect them to spend time on mentoring, with the agile schedule. This is how I had felt myself before moving to the team lead role.

<comment><USER18> > I feel like the current trend of agile development process common in > startups now somewhat works against senior devs' interests to mentor junior > devs. There simply isn't time allocated for this.

If you're a senior dev, you should be gaming the system a bit to create the time needed to fulfill your role. Never let the keeners fill your time up to 100%, unless it's truly neccessary. There's always going to be some infrastructure that needs fixing, research that needs doing, refactoring that should happen, etc. And you should always have some slack for mentoring and whiteboard discussions.

I almost always start an agile sprint with a self-generated task or two already in my queue for just this reason.

<comment><USER19> If the system has to be gamed to achieve the best results for your team then the system is flawed.

<comment><USER20> The system is flawed.

<comment><USER21> Perpetually flawed. No matter how much resources you throw at fixing it.

<comment><USER19> There's a huge difference between "no system is perfect" and "the dominant process for development work in our industry completely ignores work that nurtures employees into being better employees."

<comment><USER18> The goal of agile, as implemented in most shops, is to get things done quickly and to establish a reporting cadence with management.

Nurturing employees, and indeed software quality, is the product of company and team culture.

The development process is concrete (and "SMART"), so that's what many managers focus on. The cultural aspects are more nebulous, so they are ignored.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> It is a tragedy of the commons scenario. Everyone wants senior devs, who were at one point junior devs.

No one wants to train junior devs. The OP points out why:

* cheaper to have juniorish work done overseas

* juniorish work is automated away

* juniors on a team slow it down (compared to a team of all seniors)

So everyone competes for the senior talent.

A more sophisticated long term analysis might look at the benefits to senior developers and the hiring pipeline of bringing junior folks in. Again, the OP:

* senior folks get the chance to mentor, exercising a different skillset

* senior folks learn more about the problem domain by having to explain it

I'd add:

* junior folks bring in new ideas/concepts

* some level of loyalty is inspired. If nothing else, a beneficial brand among other new grads.

* the company matures and has to think about career path and retention

* good junior developers can be more "bang for the buck" as they grow. they still need raises, but will be able to do more work per $ than a mid level person might (because of their familiarity with the tooling and the domain)

<comment><USER23> A key point that you're missing is that junior devs are likely to jump ship at least once in their career trajectory before they become senior devs. So yes, junior devs do need to be trained by _someone_ , but if you're going to put in a lot of work and not receive much of the benefit, it's not in your best interest.

There's a variety of reasons for why devs jump ship so often (including compensation), but unless you can tackle that problem first and solve it, it doesn't make sense to jump head-first into expanded junior dev mentorship.

<comment><USER24> Once they're trained up to a point where another company is willing to pay them more for a more senior position, you could give them a raise? Congrats! You trained a junior dev and they turned into a senior dev.

<comment><USER25> This is the answer, but they just won't listen. Management at so many firms have convinced themselves that developers leave because of all these magical reasons that aren't either

1) they're dissatisfied with their pay and you're not listening

2) they're dissatisfied with their working conditions (bullpens or open offices anyone?)

so they'll never keep their best people and they'll never learn.

<comment><USER26> That's because fixing 1 and 2 are really expensive. On top of that, the further removed someone is from the work being done, the more they want people to look "busy".

I got moved from a desk in in a dead end office with to a desk in a bullpen so that I could be "closer to the people who I work with." My performance fell off a cliff. People would stop by all the time to check up on things, there was always a conversation going on. It was incredibly stressful and I slowly burned out trying to maintain my level of productivity.

My boss (the director of the org.) started asking me why I was making mistakes and forgetting deadlines. I told him that it was entirely because of my new desk, and he said he would do what he could to help.

A couple of months go by, and we have another meeting. I say the same thing.

A few more months go by, we have another meeting. I say the same thing. He said he asked people to keep their conversations quieter.

A few more months go by, and we have a meeting, and I tell my boss I'm leaving because I'm burned out, and my desk is the #1 culprit. He and HR were like "you should have let us know before it got to this point."

I don't think there was a chance for them to understand the issue, regardless of how I articulated my concerns. To them, my new desk was an upgrade from the old desk. It was bigger, had lots of drawers, was closer to the "desirable" part of the building.

To me, it meant that everyone had to walk by my desk, and would use the time to chat, and ask questions that would be better handled via email. It was nice being closer to the team, but I had a way different workflow from everyone else. My boss probably thought it was great that everyone could turn around and ask me a question the second they thought of it, but it meant I was getting interrupted 3-4 times an hour, when I used to be able to work for 3 hours straight without seeing anyone.

I've honestly been thinking of calling up my old boss and asking him if he wants to grab a drink to see if he ever wrapped his head around why I left. To this day I'm baffled by the entire situation.

TL;DR: "It is difficult to get a man to understand something, when his salary depends upon his not understanding it!"

<comment><USER27> How is it expensive to solve the bullpen issue? Tell people to STFU or build a wall in the office, or at least put up some dividers. It's not rocket science.

Most CEOs and VPs are idiots, handing money around to each other in a circle jerk of old white guys club, backslapping each other for hiring each other and keeping the hegemony going.

These idiots do not know what they are doing, they have just been conditioned to ooze confidence and ignore critics.

<comment> loup-vaillant I tried, and nearly got fired for this. Well, not _fired_ , but I'm currently a contractor, and was told because of this that I may not become an actual hire. (This has since settled down, but I'm still not hired because of unrelated issues —they're still waiting for a government grant.)

The story is simple: we have a prefab building with 3 stories, a beautiful interior, 52 desks on each floor. All open, but for 2 closed meeting rooms per floor. And the toilet. The desks are arranged close to the window. The centre of the floor holds a couple meeting spaces, and the coffee machine. It was, unsurprisingly, very noisy.

I talked about the issue during a sprint's retrospective, and was told to lay out my proposals to HR. I had plenty, most of which didn't involve actually chopping up the "lovely" open space into actual desks. It was mostly about putting dividing half walls and generally muffling the whole thing, while mostly preserving that "open" look that is so dear to whoever doesn't actually work there (funny how most people who condoned the open plan end up spending most of their time in meetings).

I had indirect feedback later (through my team's product owner). Turned out the head HR was surprised to see me raise the subject—I was the first to do so. So she asked around. The feedback she got was mostly "well, yeah, it's an open plan, but it's okay", which she translated by "there is no problem, it's just a single contractor being difficult". I guess she was oblivious to the biases introduced by her being in a position of power. That nobody will say to her face that the noise is not okay, lest she thinks they can't fit in. (I no longer have that fear, for better or worse.)

I have later learned that a "Life in the Open Plan" group formed because of the noise issue.

<comment><USER28> > I'm currently a contractor, and was told because of this that I may not > become an actual hire

They are never going to hire you. The contract is, in a way, a more airtight way of paying you under the table. Depending on the size of the business, labeling everyone as 1099 can reduce taxes for the business quite a bit. Thing is, though, is that it's illegal. But it's usually up to the worker to report it, so it is extremely under-enforced.

Bottom line is that you're being abused. I encourage you to file Form SS-8 as soon as possible with the IRS and check into your state's labor office to see what they can do.

[https://www.irs.gov/forms-pubs/about-form-ss8](https://www.irs.gov/forms- pubs/about-form-ss8)

Source: I left a contractor role in October after realizing that I was a victim of misclassification.

<comment> loup-vaillant First, I live in France. The practices you speak of are familiar, but legislation may be different. Second, several contractors did got hired before me. Third, the terms of the grant they seek compels them to have very few contractors. They are expected to hire en masse if they get it.

Fourth, my contractor status is actually secondary to me. More important is being allowed to work part time (4 days a week), which I'm currently negotiating.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER29> The problem is squashed salaries. I'll have junior devs or people straight out of code school asking for 75-80% the salary of a solid senior dev. If I have to make a bet on who will be easier to manage and get productive 4 seniors vs 5 juniors for the same total expenditure I'll choose the seniors every time. Even at 2 to 1 I'm taking seniors. Maybe around 3 or 4 to 1 juniors might look better. But that means junior starting salaries around 50k which no one is taking. Salary range is too squashed in the industy.

<comment><USER30> I've noticed this too. There are only a few rational explanations

1\. Senior devs aren't paid enough for the value they bring to the company (or conversely, junior devs are paid too much for that value)

2\. Investing in junior devs gives a good enough ROI that it's worth overpaying them for a few years. That is, after e.g. three years, enough junior devs have stuck around that they've accumulated enough org-specific knowledge and general tech competency to justify their initially high salaries

3\. Senior devs aren't actually that much more productive than junior devs, they just think they are. They also may be averse to doing productive-but- boring work that feels "beneath" them.

4\. New devs are valued for more than just their direct contributions to the software project's code base. For example, they may be valued for their ability to bring fresh perspectives, or for their proximity to formal education and thus their tendency to be knowledgable of relatively cutting- edge tech. I think universities lag behind the vanguard trendsetters by at least 5 years, but there are certainly software companies that are stuck 20 or more years in the past

5\. The job market for developers is irrational with respect to experience and reasoning about it is as worthwhile as reasoning about the true value of Bitcoin.

I think it's a mixture between 1 and 2, with a little bit of each other explanation too. Worth noting is that senior developers at the big tech companies (AmaGooFaceAppleSoft) get paid a lot more than senior devs at most other tech companies, but most of that compensation is in stock. Full monetary comp (not counting benefits and perks) for a fresh grad might be about $150k/year, but senior developers with >5 years experience are making closer to $250k/year or more

<comment><USER31> I think #2 is just dead wrong. The easiest way to change your status - <USER2> that's income or losing your junior title - is to move jobs. I think the real reason we see so few junior devs now is they just aren't good for the companies paying them. Why invest in a junior developer when almost certainly they will (and should!) leave your company to get more money and different experiences.

<comment><USER32> reevaluate what they're being paid and promote them from junior to senior and pay them.

</comment></comment></comment></comment><comment><USER33> The growth of undergrand CS program enrollment is pretty insane, same with bootcamps. Lots of these people have no real interest in the positions outside of pay, which is fine for most careers. But in tech we put a lot of value on self learning and interest.

I've definitely seen the number of new grad applicants and bootcamp grad applicants at least quadruple in the past few years.

Most of these can make an Angular app or write an algorithm on a whiteboard but know nothing outside of what was taught in the school/bootcamp.

I find these types really hard to work with, because software is evolving ever so fast and requires such rapid uptake of knowledge that those who aren't self motivated require a lot of reinforcement and have drastically reduced productivity on the job.

<comment><USER34> That's something I have noticed too. In the 90s most people I worked with were genuinely interested in the work and often came from very eclectic backgrounds. Almost nobody had a CS degree. Now it seems a lot of people go into programming because it pays well and looks like a good career but they don't really care for tech. I definitely found the industry more fun in the 90s but that may just be the fact it's becoming a mature industry.

<comment><USER35> I don't think someone necessarily has to live and breathe code to be good at their job. That kind of focus is hard to maintain forever. When I was new I was constantly reading programming books and now, like, I'm still interested, but other things are going on in my life that also need my attention, you know?

<comment><USER36> You can lead a horse to the water but you can't make him drink.

It's completely okay to "just" do your job professionally. However, skill development, transfer of skills to junior developers and mentoring is a different issue - if you want to learn from me, you have to _want_ to learn; if you're just here for the paycheck, then I'm not going to go out of my way to educate you even if (which is the case for many junior developers) you're unable to actually do your tasks properly on your own without this help.

People with the desire and capacity to learn go over the "junior" phase very quickly (over a short internship or already during college) and become able to do decent work on their own; but those who don't and _really_ need an actual prolonged "junior developer" role on the team... there's no incentive for the employer to do that, and there's no incentive for the colleagues to spend their effort if it seems wasted on someone who's not into it.

<comment><USER37> This. Mentoring should just be pointing people in a direction and occasional code review. Go do this (for a few days). Let's see what you did. This is good, this should be that, name your variables better, etc.

If you let juniors figure it out the hard way, they will learn better, or they will fail. If they fail to learn by themselves, they will never become senior.*

*Shitty code bases should be given a lot of leeway on the learning curve.

<comment><USER38> > Mentoring should just be pointing people in a direction and occasional code > review. Go do this (for a few days). Let's see what you did.

That's one (totally fine) way of mentoring, but it's by no means the only one.

A lot depends on the work environment and the relationship. I work with a couple junior engineers that are also friends, and in addition to "pointing people in a direction", code reviews, etc.:

* We frequently tackle harder issues together, pair-programming style (using a shared tmux session)

* In addition to code-reviewing their work, I have them code-review mine, and I walk them through my code and thought process

* Talks/meetings once a week or more about architecture/up-front design for projects, in which the junior devs are often included or free to attend

* We have a non-work-related Hackerspace that we attend every 2 weeks where we work on side projects / fun creative projects

Certainly this situation is not possible on many development teams, but I just wanted to point out that mentoring is a wide-open thing that has many approaches and options.

</comment></comment></comment></comment></comment></comment><comment><USER39> Most junior level positions are being filled with the massive influx of new grads from really strong intern programs at most companies now. If you're in college now, make sure you get an internship at a company in your field. If it's too late for that, then you'll have to do a little extra work and probably work on a couple side projects and post them on GitHub. That first job will always be the hardest to get, so don't feel bad if you keep getting turned down.

<comment><USER40> This. If you're graduating without an internship or two, you're in trouble.

<comment><USER41> Define "trouble". I'm ten years into my career now, but I graduated with no internships and feel like I've done OK.

<comment><USER42> I think he is referring to people entering the field now. If they don't have internships then it will be hard for them to compete with others vying for Junior Dev positions that have done internships.

<comment><USER43> Anecdotally, I didn't factor in internships at all when I was last hiring for a jr. I didn't interview a single person who didn't have a public code repo.

<comment><USER44> You don't consider real world work experience relevant when hiring? Just side projects or contributions to open source projects?

That seems like you're looking for someone who lives and breathes programming. Do you have something against developers who work 40 hours a week and instead of programming as a hobby as well, they do other, non-tech, things for their hobby?

<comment><USER43> I don't consider work experience relevant at all unless I can verify the work done or hold a particular recommendation in high esteem. Not getting fired for a length of time, while a skill, is not often what I care most about. Without knowing a company's policies, culture, and tech leads I cannot accurately judge whether someone spent 3 years playing ping pong with the CEO or was responsible for programming a successfully delivered system. In a perfect world, I might try to suss out each candidate's strength and then decide based on the totality of data, but I don't often have that kind of time. I look for public or provided code first, and if it's reasonable, will use that to begin a pointed conversation on our trade.

</comment></comment></comment></comment></comment></comment></comment><comment><USER45> A hypothesis for part of the problem that I've scrolled through most of this conversation and still not seen: Junior developers are having a hard time finding a job because _the tasks have gotten harder_. As easy as people may claim "cloud" is, if a junior developer has to learn the three Javascript libraries, two backend languages, a devops cloud deployment system, and three monitoring technologies just to be able to break even on productivity, it's going to be hard to justify hiring a "junior dev".

When I got into web dev in 1997, we didn't even have source control to speak of. We barely used Javascript. All I needed was a template language and same basic HTML, and we put out a project that, at the time, was considered amazingly cutting edge by most people who used it.

If I were to try to hire me of 1997 now, I'd have a lot harder time finding something for him to do, because I'd have half-a-dozen technologies to train him on before he could even produce the equivalent of "hello world" that integrates correctly into a modern environment. All of these techs have reasons to exist. We found out about the server going down when people got frustrated about it being down and called us after hours of outage. We found out that something was eating 100% of the CPU the same way. Our "analytics" were mostly "Hmmm, nobody seems to be complaining, everything must be OK!" Automated testing? Literally never heard of it. And so on and so on. But people are not magically infused with this knowledge in college; in fact the curricula have barely changed since then (which I consider mostly a good thing), so it means that the bar to being a productive junior dev has definitely risen.

Fortunately, my team lately has been able to diversify and we've got some more projects that are independent from the legacy code base I maintain, so as we've been looking at headcount this year I've been able to say that we've got some positions for juniors now, who can work in a space that is more lake-like than sea-like, and be productive, and learn things, and develop. But last year I had to say that I've got nothing that wouldn't take at least a medium-skill dev to get anywhere in any reasonable period of time.

(And let me both open and close on the word _part_. I don't think this is the _entire_ problem, and I agree with a lot of what other people said about other parts. But I believe it may be a quite non-trivial part of it.)

<comment><USER46> I've been saying this for a while, and I think it will lead to the demise of the bootcamps, and is already causing a cascade of unemployment in low-skill indian IT from what I read. The bar is simply getting higher. I think this is a good thing overall. It's also why I care almost exclusively about CS fundamentals in technical interviews, unless we have a very specific need.

<comment><USER47> How does exclusively interviewing on CS fundamentals get you people who are good at the job?

<comment><USER46> I didn't say I _interviewed_ only on fundamentals, just that it was what I almost exclusively _cared about_ \- for junior devs. It's a good sign that the person understands core concepts behind many different types of software, and would be teachable on the job.

</comment></comment></comment></comment><comment><USER48> This reminds my of my job search 5 year ago after I graduated college. It took me 8 months to land my first job and I was living with my mother. I did work on some side projects to build my knowledge on some technologies. When my mom asked me what I was doing and I said I worked on project 'x' she would say "I think you should be sending out more job applications instead." Working on side projects is not an option for everyone.

What did get me hired was neither working on side projects nor blanket submissions of applications. A friend introduced me to another friend who's company he worked for was hiring and he gave me a list of open reqs for jobs he knew managers were looking to fill. I got two calls for interviews the next week and got an offer for one job by the end of the month.

IMHO your network, not even what you know or what you've done, is your most important asset when looking for work.

<comment><USER49> Couldn't agree more, I feel that this is extremely under emphasized. Meetups and networking events are the best places to get your foot in the door imo. It's the easiest way to separate yourself from the troves of resumes a recruiter may be sifting through on a daily basis, bypass all the politics and nuances of looking perfect on paper, and in the very least be set up for an interview (where you can prove your skills through explanation and whiteboards).

I'm biased though because I got my first two jobs this way.

</comment></comment><comment><USER50> My personal experience with this is that the ratio matters A LOT. I.e. having juniors out number the seniors is bad.

When you have a team that mostly consist of junior and mid-level developers, then they will clique together and they will mostly likely "behave" like juniors. Typical junior behaviour is e.g. to rather than digging into the backlog for the next thing to work on when you're done with one thing, to just sit around and wait for a senior to give you the next task.

However, if you have a team of seniors, who behave like seniors, adding one junior to this team, the junior will in no-time start to behave like a senior. Act by example. Before you know it you will have a really valuable team member.

<comment><USER51> I've had the opposite problem with juniors in the past -- rush to solve tickets and get them committed, but the work done is awful. I honestly preferred the lazy juniors on the team. At least they were doing poor work but there was less of it to code review and fix.

I used to be on the pro junior side of things... but when you're on the earlier side of a startup (series a/b), juniors are a huge liability.

Best "junior" hire I made was recruiting someone in support who I thought was smart and conscientious. Turned him on to programming, mentored him, and now he's great.

I have no idea what the lesson from this has been. hiring is hard.

</comment></comment><comment><USER52> My two cents: simple supply and demand. The slow deflation of the startup bubble of the past five years or so has killed the junior developer. Once upon a time, there so much competition for engineering talent in the startup world that even developers with little to no experience and/or formal training were being handed lucrative jobs.

Looking back we see clear signs of a seller's market in talent: companies went out of their way to hire anyone remotely competent. Once hired, devs could hopefully rely on their company's mentorship, training, and experience opportunities to raise themselves up, and companies could rely on the same for retention. Coding boot camps sprung up to give people just enough skills and credibility to get their foot in the door. Salaries were high.

That gold rush has since dried up. Early stage funding has plummeted. Fewer and fewer companies want to go public. Large companies like Google, Facebook, etc. now dominate their respective product categories. Why is it now difficult to find senior people? Because for someone with years of experience and/or formal training, these companies offer the holy trinity of excellent pay, top- tier perks, and opportunities for career growth.

My personal opinion is that many of these junior devs simply aren't very good. As someone who conducts interviews at one of those aforementioned big companies, I'm consistently disappointed by how poorly most candidates perform on basic interview questions. And I don't mean the kind that test book knowledge of some obscure algorithm, I'm talking basic coding tasks.

From where I stand it's a matter of an oversupply of inexperienced, under- qualified developers that are no longer being absorbed into startups desperate for warm bodies to do rudimentary coding tasks, coupled with a strong demand for senior folks from big companies with the coffers to pay them.

<comment><USER53> As someone starting to teach myself how to code, I'd be interested to hear more about the basic coding tasks people are failing at.

<comment><USER54> We have a pre-interview test that is basically "use flickr's api to show some pictures", with a few details about how the pictures are sized and arranged. Applicants that have gone to bootcamps and even college frequently fail this miserably. Many of the rest fail to understand the details. We even had one use a completely different end point than the one specified by URL to the documentation. Some have just given up and turned nothing in, or something that they admitted didn't work.

These are candidates that we liked their resume enough to give them a shot, not just anyone who applied.

<comment><USER55> That's, errr, a very high bar you got there.

People got it working, showing they can code just fine, and you fail them because they got some details wrong?

<comment><USER56> If you have only one or two positions open, have no trouble finding applicants, why not give a test that has a 5% pass rate if that means you end up with 6 people to choose from and still have to turn people away? What would the advantage be of making it easier just so you would have to review and turn even more people away?

</comment></comment></comment></comment></comment><comment><USER57> Graduating and going through the hiring process last year, I realized how true this is and how important your tech pedigree is. I recieved no full time offers before interning at Apple last summer, and after the internship I had no trouble getting offers (ended up with 5 full time offers). There wasn't any difference in how I described my interests before and after the summer internship, the only difference was companies wanted to see that I was vetted by a big name company. The real experience I had, working at a startup for three years before that yielded very little value in recruiting, even though the experience there made me a much better engineer and it was a successful startup that got acquired.

</comment><comment><USER58> Are companies hiring differently, or are we just defining the terms differently?

"Junior developer" used to refer to someone who can program but who doesn't have a lot of practical experience.

Today "junior developer" refers to someone who can't program but who has a CS degree or went to a bootcamp, and there are more of those today as a proportion of the talent pool than there have ever been.

I think this failure of academic institutions to teach practical skills is diluting the talent pool, causing companies to favor more experienced engineers because they've been getting burned and don't trust their own (or academic institutions') ability to determine in advance whether a candidate will be a productive programmer or not.

<comment><USER59> As far as I know, academic education is not _meant_ to deliver practical skills, but rather theory and deeper understanding. CS degree is not a programming degree but the equivalent of theoretical physics.

It's become an unfortunate trend that the academy has somehow become stuck with the role of doing vocational education, rather than research and theory.

</comment></comment><comment><USER60> I am a junior developer on my first job as a developer at a startup with around 50 developers.

The company, luckily, has a very opposite approach to hiring jr devs than what is described in the article. There are usually one or two jr developers per squad of 4 or 5 people (which is actually a maximum, the company is aiming only at more mid-level or senior devs right now).

There is a very collaborative environment, a lot of help from all senior developers - not only the ones in my squad.

What I think is missing in the economics there is that I (and all other jr developers) do provide measurable value to the company after 2 or 3 months. I am able to create simple, but necessary and demanded by the business, features by myself, just with senior developers reviewing my PRs.

This idea that junior developers are a drag to senior developers is fake in my (limited) experience. I make the senior developer in my team more productive most of the time, and after around 8 months in the job, we are actually hiring another junior developer because I think I am ready to take some of the responsibility of mentoring him/her on a basic level.

I am pretty sure that I am a net positive to the company on a $ invested per value delivered ratio.

</comment><comment><USER61> When I hire, It's ONLY junior devs.

I prefer just out of University before they can get bad habits. Training a dev takes me 6-12 months for them to break even productivity wise.

When we have had intermediate or seniors hired they would not listen to anyone else or care if their software was easy to maintain in the future. I run a small team of 6, I have had 0 turnover for 3-4 years.

I don't want devs who "get it done" I want devs that enjoy the work and want to share it.

<comment><USER62> Not listening to feedback and ignoring future maintainability sounds like the exact opposite of senior behavior.

</comment></comment><comment><USER63> I think the "Junior" title is used entirely by companies to get a discount at salary negotiations these days. I work with a large mix of mid level, senior, and "Junior" developers by title. The practical difference in our technical skill levels is almost nonexistent. The proper progression should be: Intern -> Developer -> Senior/Lead, with Senior/Lead denoting that certain expectations are made of your organizational and management skills moreso than seeking genius rockstar programmers.

<comment><USER64> There is absolutely a skill difference between senior and junior. The problem is that junior developers today somehow think they deserve mid or senior level salaries despite not having the skills.

Developers are being told not only that higher level skills like algorithms and big-oh don't matter, but that they are such special people that they can even do jobs completely outside of their specialty like design, management, and other things.

Developers want to be paid like lawyers, but without the equivalent domain knowledge in CS that lawyers have in law.

<comment><USER35> Hey, man, if people want to pay me well and give me lofty titles I am not going to dissuade them. As developers I don't think that's our problem to worry about. Seeking out the most benefit for yourself is just common sense in the job market we live in and I'm not losing a lot of sleep over the prospect that I'm not as "expert" in my job as a lawyer is.

<comment><USER65> While I don't think you're a bad person for doing those things, can you see how this (repeated by enough people) produces the new-entrant-hostile hiring environment we currently have?

<comment><USER35> Sure, but I think it would be foolish to do otherwise. I was new once too, and even after I'd done my first job people were hesitant to call me back with no relevant degree and my only experience being in a small shop mostly working alone (for significantly less than the market rate, I should add). Now I managed to make my way past that gauntlet and I'm enjoying the fruits of my labors as a "senior" developer. I don't think I'm doing anything other than responding to the incentives created by the system.

<comment><USER66> Absolutely! Though would you still consider yourself a "senior" developer, if a "mid-level" or "junior" starts working with you and happens to exceed your skillset in very noticeable ways? I know I've hired some exceedingly excellent programmers that made me feel rather amateurish!

I guess what I'm trying to say titles are fairly arbitrary - and yes, the system is in need of a little shake up! Enjoy the perks the title brings, and stay humble :)

<comment><USER35> The titles are more or less arbitrary anyway. I'm not that hung up on it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER67> I've long maintained a maxim that's something like "Look in the opposite direction of everyone else." So when everyone flocks to the bay area, get the heck out of there. When everyone says "I have no space for junior devs" think about how you can take advantage of that underutilized resource.

Junior devs are cheap. If you're willing to spend the time to sift -- and you will be doing a lot of resume sifting -- and setup a framework for mentorship, you can hire junior devs with more promise than your average senior dev.

Anecdotally, one of my junior hires from a few years ago earned his way through positions quickly and became a senior software engineer in just three years. I actually invited him to be my co-founder on my next venture and he turned me down :-P.

<comment><USER68> I understand the appeal of Seattle and the Bay Area, but it sometimes boggles my mind that larger tech companies don't build in cities where there are a large number of new grads looking for jobs. [0] LA county produces the most CS grads in the country, [1] and most of them are moving out of the area and up the coast for lack of junior SWE openings in SoCal. Any of the Big N could have a monopoly on talent coming out of USC, UCLA, Cal Tech, UCI, UCSB, UCSD, Harvey Mudd, Cal Poly, etc.

[0] [https://datausa.io/profile/cip/110701/#counties_most_degrees](https://datausa.io/profile/cip/110701/#counties_most_degrees)

[1] [https://www.ocregister.com/2017/07/24/is-southern- california...](https://www.ocregister.com/2017/07/24/is-southern-california- suffering-a-tech-brain-drain/)

<comment><USER69> Hiring juniors in LA has been delightful; so many strong candidates, no real competing offers. That being said, it's also pretty easy to poach burnt out, fed up experienced juniors from the Bay Area.

<comment><USER68> Poach said junior devs from the Bay Area to LA or in general? Sort of confused with your second statement. The crazy thing is that _every one of my CS major friends_ I graduated with at USC moved up the coast to the Bay Area or Seattle, or to the east coast in NYC.

<comment><USER69> Bay Area to LA but in general too; many grads leave the LA area, so it's not a hard sell to get them to come back after they pick up some experience. Bay Area just happens to be the biggest consumer of fresh graduates.

</comment></comment></comment></comment></comment><comment><USER70> This is one of the most important posts I've read on HN in a while. 7 years ago I broke in as an inexperienced dev without a degree because some budget strapped team took a (hedged) chance on me and offered a paid internship. They mentored me a huge amount in a way I have never seen at another company, as well as several other junior devs. Most every one is in a senior position today, and some have stayed at the company. This is not happening anymore as far as I can tell - I know plenty of people with the knack for it but the door seems to be closed, because companies do not want to take the risk.

</comment><comment><USER71> This has been going on for _years._ Back in the mid 80's when I was going to college I knew a lot of people had come back to get their masters are even change fields because they couldn't find jobs. Employers wanted 2-3 years minimum experience and the new grads lamented how were they supposed to get said experience? My first job I worked FREE for the first 3 months at a startup (they didn't have the money to make a payroll anyway). Ultimately that launched my career and got me past the 2-3 years experience issue. This was back in the 80's!

</comment><comment><USER72> >the rate is anywhere from $190-$300 an hour

Well there's your problem. Valley pricing. You can get Sr Devs much cheaper than that. Then you can afford to train up some juniors.

I don't think that's the real problem though. Companies want _you_ to take the risk/expense of learning a technology that might be obsolete next year. They'll pay you back in salary if you lucked up and mastered the right stack. If you didn't, then you keep eating ramen until you strike gold.

The other problem is most Sr.s don't want a Jr. coming in and making negative contributions. Sr.s are frequently the ones doing the interviews. They see most Jr.s as "What's a computer?" level talent that will start fires in production systems.

<comment> ryan-allen > The other problem is most Sr.s don't want a Jr. coming in and making > negative contributions. Sr.s are frequently the ones doing the interviews. > They see most Jr.s as "What's a computer?" level talent that will start > fires in production systems.

I think this is pertinent, when you're already too busy doing things and keeping stuff running, who has the time to handle a run-of-the-mill junior?

The most successful launches I've seen is where a junior comes in and can already contribute _at some level_, this is always due to the extra curricular work they've done outside of their education (if indeed they had any higher level education at all).

The spectrum of jobs out there allows a creative (or lucky, in my case) junior to springboard. Think of 'started out modifying and configuring wordpress themes, ended up writing some custom code and extensions, ended up learning laravel and databases' type of progression. You won't be working in bleeding edge AI or at Google on their self driving cars, but you'll be solving problems for people, and that's a career.

</comment></comment><comment><USER73> I teach at a Bootcamp and see a lot junior developers looking for jobs. Many of them complain of it being hard to find jobs and it is. But I don't think it is any harder than say 10 years ago when I got started. The main the problem is they've never interviewed for a technical position before or aren't looking in the right places for jobs. Also a lot of jobs are perfectly suited for juniors but it doesn't reflect that in the job description. So there are a lot of things that make the job search hard and frustrating but the jobs are out there. And I would love to see more companies more actively mentor people too. But those companies do exist today. It's just a numbers game. If you can hold out, you'll find it.

<comment><USER35> Searching for a job is way easier if you have a professional network to draw on and beginners, pretty much by definition, really don't.

<comment><USER74> > a professional network

How? Let's say I work at some company...Then I know exactly my coworkers and customers. How does that help me build a network?

I could maybe ring up some buddys from uni that are working somewhere else... But contact to them also gets lost over time.

<comment><USER75> >But contact to them also gets lost over time

That's probably a mistake on your part, especially when tools like LinkedIn make it so easy.

<comment><USER35> Yeah. In particular, it's often your looser acquaintances who have something for you.

<comment><USER75> Indeed, one of my bigger customers now was in a junior role at a company I did some work for years ago. You never really know where opportunities might lie and it costs little to keep in touch.

<comment><USER35> I think people also get too shy about reaching out to people they haven't been in touch with. Most people aren't going to be annoyed if you say, "Hey, long time no see. How have you been? Wondering if you know anyone who's hiring" or whatever it is you're asking for.

</comment></comment></comment></comment></comment></comment></comment><comment><USER76> What trouble are candidates looking for junior developer positions running into? Lack of openings? Lack of response from companies? Can't get past the interview?

(Also, are these people advertising themselves as a "junior developer"? Perhaps this is just my experience, but I don't think I ever used that; I started my search looking for simply "software engineer" positions.)

(One the one hand, one company I worked for doesn't seem to really have any junior developers, but we're also not hiring period AFAIK. Another company I worked for pretty much only hired interns, b/c hiring was otherwise tight and those were easy to get approval for. Not quite what I think the article means by "junior dev" (I interpret that to mean "entry level software engineer") They were generally very helpful, though I think we learned how much we needed to learn about being mentors.)

> _Also their hand wringing about the costs seems like crocodile tears knowing > all the time they waste (at least in my opinion) on things like meetings._

I echo this opinion.

<comment><USER77> Once you apply, it's usually - 'We're looking for someone with more experience right now' or 'Experience of 10 years with React'

<comment><USER28> If you even get a reply in the first place.

</comment></comment></comment><comment><USER35> > But let's say they do start sticking junior devs back into teams again. You > have the additional issue which is now senior developers have no experience > working with junior devs or training people at all. When I first started > working with junior devs I had no idea how to do it. I felt lost and > confused. My company was just like basically "give these people something to > do so they can learn something." But that's really not a lot to go on.

I don't really agree with this. I've had to mentor people and there is not really a special trick. I just kind of pair program, and when we start I drive and eventually they drive and then once that's comfortable I leave them alone and leave them to ask me questions. I've found this mostly effective.

Explaining things to junior developers isn't so different from explaining things to anyone else. In the course of your job you probably have to explain concepts to your co-workers and to non-technical people, right? A junior is somewhere between those and you can calibrate as you go.

<comment><USER69> > In the course of your job you probably have to explain concepts to your co- > workers and to non-technical people, right?

I love how this is becoming the norm for engineers. I still run into engineers that seem to just code by themselves in a cave all day and the only human they communicate with is their (often non-technical) manager once every other month.

Communication is one of those skills that feels effortless if you're used to it, and like an nonstop anxiety attack if you're not.

</comment></comment><comment><USER78> 1 or 2 "senior-level" folks (imho, people with at least a decade of experience within a multitude of environments) are going to outperform a half-dozen junior engineers.

When you're building a monolith Rails application, anything goes. But now that the industry is trending towards (for better or worse) service oriented architecture, stateless cloud deployments, walled gardens tossing data back and forth over RPC, data science teams, etc... you need people who have been to war a dozen times and have already made all the mistakes. That is what you get with a senior engineer: someone who knows what NOT to do.

I have spent most of the last 2-3 years of my career playing bad cop and telling people no. Shutting down wild and exciting ideas. Stopping over- engineering in its tracks. Preventing an investment in a bad technology. Preventing fragmented infrastructure with data in a handful of different databases.

I think that is why the junior engineer has disappeared. Most of us were never trained/educated/encouraged to be good teachers and we spend most of our time putting out fires and trying to keep our hands on the pulse of technology while simultaneously hanging on for dear life within our organizations. Pivots, layoffs, blockchains, shiny new business objectives are all mortars flying at the eng team left and right.

I wish I had junior engineers to mentor and teach and foster into folks who have good critical thinking skills and I can trust 100% to make the right decisions – but there is a tremendous cost involved to the business that I think most are unable to afford. Some of my most rewarding career experiences involved working side-by-side with folks fresh out of a bootcamp or university who were wide-eyed and bushy tailed. It was a lot of fun watching them run off and do a bunch of work then having a discussion on the choices and using each moment as a stepping stone towards a bigger understanding of all the moving parts in modern infrastructure.

</comment><comment><USER79> Is this because people stay for just short timespans? We hire junior devs but we don't expect much for the first years. I'm 15 years in and in a team of 30, the average is probably 10 years.

It takes a year to just "onboard" someone until they don't need a lot of mentoring, but until a junior dev isn't just a dangerous mess-creating junior dev, takes at least a couple of years more.

Learning the domain takes many years too, and without knowing the domain you need to be micromanaged and have everything specced up front or need constant interrupting feedback from product owners (should this be default on? What order should this be sorted? How many frobs will the typical user enter here? etc).

Obviously you can't stop people from leaving but I wouldn't even hire someone unless I genuinely believed they are going to stay 5 years.

(For context, this is heavy technical desktop software in a very mechanical engineering-heavy domain)

</comment><comment><USER80> Junior-to-Senior developer ratios are critically important. If I hire too many juniors, then they will write a ton of shit code, and force whatever seniors I have to spend all their time mentoring and not producing.

Seniors are valued because they can write great code, think long-term solutions, take on a project and see all the details to completion, have a more predictable development cycle, and yes, train Juniors.

So my point is... if you graduate too many too fast, you'll end up with people who you can't train, and who also think that working for "the man" a.k.a. big companies is bad, so the perfect combination of limited use, expensive, and unwilling to work in places where they can experiment.

</comment><comment><USER81> As a near-Junior level developer myself sitting at two years of experience I've found myself wondering the same thing. I've put out my resume across the country and found few companies willing to look at it and even fewer positions. Most are looking for mid-tier to senior developers. Even worse I've kept in touch with friends who despite having far more internship experience than I ended up having quite a bit of difficulty find a job post-grad.

Though my current company has had large success in poaching interns into junior devs because we have a strong and genuine sense of teamwork + effective mentoring.

<comment><USER82> Two years experience? It's 2018. You're Senior now :)

I'm only mostly joking.

</comment></comment><comment><USER83> Companies have woken up to the fact that for the most part people no longer stay in one job for more than a few years.

Training junior people makes sense economically only if they get up to speed and positive productivity within a small fraction of the time they'll be with your company.

Since a bad developer creates enormous negative productivity, it can be years before a new programmer's contributions are productive at all, let alone greater than the ongoing opportunity cost of the time spent mentoring them, let alone the sunk cost of months to years of mentorship.

This time makes sense only to invest if you expect the developer you trained to stay with you for _many_ years. That expectation has become less and less rational over the past couple decades.

Nowadays if you take on and train a junior, you're taking the loss on that training - not to train someone who's going to be a good mid-level developer in your own company, but who's going to jump ship for somewhere else well before you can make back the senior developer time spent on them.

<comment><USER84> You shouldn't have this problem if you 1) hire for intelligence, drive, cooperation, and passion about the mission or opportunity, 2) give them continual opportunities to grow and take on increasing responsibility, and 3) compensate them appropriately (as a manager, privately reevalute title and comp every three months for the first year).

Of course, these are the same things (among others) that are true for every engineer.

There's an endless supply of juniors to choose from, so there's no excuse for a bad hire. If they leave for more money that you could have paid them, that's on you, too.

Do those things and you'll win their loyalty.

</comment></comment><comment><USER85> Is the junior job shortage just a valley bubble thing? I'm a young dev and there are grad/entry level positions everywhere I look, none of my peers have really had issues either.

How good (or bad) companies are at actually training their employees is another matter.

edit: typo

<comment><USER86> Well, where are you based at?

<comment><USER85> Australia & haven't heard of junior shortages anywhere around the country, I would hazard a guess that this applies to most places that aren't this overinflated Mecca of programmers

<comment><USER87> That's weird, I'm in Sydney and last year I sent around more than 100 resumes over the span of 6 months, only to land an intern position in a terrible "startup like" company, where I was underpaid and overworked. I had to quit after burning out in a few months. I know of several other juniors with this same issue.

<comment><USER88> 100 applications with almost no luck sounds really bad but there is a possibility you are missing something in your resume. I work in Melbourne, if you want email me your resume and I will take a look to make sure you are not missing something basic.

<comment><USER87> Thanks for the offer, I appreciate it. I had my resume looked over at Reddit and by other industry professionals, it was just lacking working experience and qualifications (I graduated from TAFE, not uni). I'm not looking anymore, now, as I got a much better job, although not development related (which was, anyway, what I wanted, after burning out).

</comment></comment></comment></comment></comment></comment><comment><USER21> I trained a junior dev so well I was laid off because he was cheaper than me. One of the proudest moments of my professional life to be honest.

<comment><USER54> I've got a junior dev under me that has gotten so good that that the thought of that scenario has occurred to me.

I decided to come to terms with it by accepting that if that happened, it'd be the push I needed to spread my wings a bit.

<comment><USER21> Isn't this the goal of every programmer? Programming their way out of a job?

</comment></comment></comment><comment><USER89> I've built a new of 4 developers team since September. 2 out of those devs are Juniors; or at least, formally they are, as this is their first "real", paid job.

But at the same time, these two are much better than many, many "senior" developers who came in asking for very competitive salaries and couldn't answer the most basic of questions. (My satndard is to ask about stack and heap; most of them just say something along the lines "value types on the stack, reference types of the heap" and cannot even connect stack the data structure with stack in memory.) Meanwhile, one of these "Juniors", when I asked him to talk about something he knew very well and was passionate about, explained AI techniques (game AI, not ML) that I never even dove into myself – instead of checking him, I was learning something new from an intervewee, and it doesn't happen often.

I really feel that I got the best deal, sitting through all these interviews regardless of experience and without any real filters by CV, because in the end I found these two - hard-working, talented and with more knowledge you would reasonably expect from a junior.

Don't save time on hiring. Don't create illusion of knowledge by reading too much from CV or using labels like "junior" and "senior". Rather, admit to yourself that you don't really know someone's skill level until you talk to them or give em the test assingment.

<comment><USER90> >when I asked him to talk about something he knew very well and was passionate about, explained AI techniques (game AI, not ML) that I never even dove into myself

An aside, would you mind sharing what he shared with you, if you can recall?

</comment></comment><comment><USER91> It's a symptom of normalized salary ranges for entry level positions, a saturated market, and massive range in the skillset of entry level developers.

There are two sets of juniors that I've come across. The first critically assesses a problem and it's edge cases, how to integrate the solution into the greater body of work, and considers performance. They might not know the stack of the company but they can be brought up to speed quickly by more experienced team members. The second is one that is incredibly proficient at the most cutting edge tools. They are hired because they are up to speed with what the company considers valuable at that moment. There is a much greater emphasis on getting shit done quickly rather than considering how it fits in later, how performant it is, or assessing how to integrate the solution in larger contexts.

I've found the first type to be much stronger teammates over an extended amount of time. They are also the ones that are able to command higher salaries when starting out because of the approach. The second type sees the salary numbers being set by the first and has an expectation that it is what they too are worth. Now you have two drastically different candidates competing for the same entry level positions, at the same rate. The first won't have an issue getting a job and the second will struggle.

Both can flourish in the right situations. We need to do a better job at distinguishing the two.

</comment><comment><USER92> Just few days ago some company's "Senior" developer posting made it to top of HN feeds. I clicked on it out of curiosity and the requirement was "2 years of experience writing code".

Such posts warrant a _WARNING_ otherwise I may get permanent damage due to severe involuntary eye-roll.

</comment><comment><USER93> I feel really badly for junior developers today. I was both fortunately and unfortunately never a "Jr. Developer" as a professional.

By the time I got my first programming job right out of college in 1996, I had already been a hobby programmer for 10 years, had been very deep into assembly and C, and had been reading books like "Code Complete". My first job was writing a data entry system from scratch in C.

It was also unfortunate because I spent the first 12 years of my career working at 2 companies where I was either the only developer or one of only two or three and the other two had been at the same company from the beginning of their careers. So yeah, I was a good "developer" (I had the chance to look at some of my old code and it would have passed one of my modern code reviews), but I didn't start learning modern, proper "software engineering" until 2008 when I started job hopping and choosing companies where the goal was more to gain experience than make money. Although the money wasn't bad either.

Even back in 1993 while in college, I got my first programming side gig because another college saw a HyperCard stack I posted on AOL.

If I wanted to break the cycle of no experience <-> no job today, I would do a side project and post on github and link my resume to it. I have experience and a good resume but I'm thinking about posting side projects to GitHub just to get experience in technologies I don't get a chance to use at work.

</comment><comment><USER94> I've found myself in a "mid-level" limbo. I have lots of knowledge and a fair amount of skill from a lifetime of programming, but I have trouble keeping what feels like an insane pace some others around me seem to manage. I was flat-out told that my output isn't what they expect from a "senior" developer.

Thing is, I never claimed that I was a "senior" developer, whatever that means. I just seem to have been slotted into that category based on years of experience. I didn't want to mislead an employer into thinking I was more capable than I actually was.

I went job searching and specifically said to recruiters and hiring managers that I was "mid-level" and would set my salary requests accordingly. If that meant I'm held to expectations somewhere between junior and senior, and get paid somewhere between junior and senior, that would be just fine.

I found that pretty much everyone was looking for senior devs, a few places advertised junior openings, and interest in mid-level seemed rarest of all.

It's like they think everyone is either a junior who needs to be mentored, or a senior who can deliver a story every day or two. I feel perfectly capable of doing the work, but need some time to think my way through it. I don't quite understand why I'm finding that to be such a hard sell in a job market where it's supposedly so hard to find developers.

</comment><comment><USER95> What is a junior developer? Is a junior developer somebody without experience but with a good technical background. We hire those for sure.

But we dont hire people who dont have a solid basis, and just know a little bit of javascript programming.

For computer programming in a serious field, you need to know the basis to be good one, to solve real problems.

We actually dont use the name "Junior" developer. You're a software engineer or you're not. Junior developers are often names for people who can't program. We don't hire them.

<comment><USER96> You don't hire junior devs then.

</comment></comment><comment><USER82> I'm the cofounder of a YC-backed Computer Science academy ([https://LambdaSchool.com/computer- science](https://LambdaSchool.com/computer-science)), and we've noticed a few things:

1\. The junior dev market is flooded. It's also flooded with people that _cannot_ code. We've done quite a bit of analysis, and we're talking 10% can write fizzbuzz.

Bootcamps are pumping people out as fast as they can collect money, and while some are solid juniors many are just completely lost. I've seen some code bootcamps with <10% placement, and their curriculum is 11 weeks of HTML and CSS and 1 week of jquery. Then they're told to pound pavement for React roles. It's worse than you think. Truly.

It's also 95% of the same people who can't code applying to every single job in existence. Remarkably many somehow get hired. Bootcamps as a whole have 100% earned their negative reputation. I can only imagine the learning curve encountered by some bootcamp grads.

As an aside, it's not only bootcamps that pump out people that can't code. Some CS programs are equally guilty, but probably not as many of them, and having four years to write code if you're even a tiny bit self motivated is an enormous advantage. You give me a moderately intelligent person and I tell them to write code for four years and they'll be hireable by the end for sure.

2\. Many excellent companies, especially startups, have no appetite for junior developers whatsoever. Junior devs take a long time to integrate by definition, and rapidly moving companies don't have the resources to care. It's much, much easier to place juniors at mammoth companies that actually dedicate resources to training. A lot are just paying huge recruiter fees and bonuses to go after the people with experience.

3\. Once you get even six months of experience the whole world opens up. I've never seen job security so quickly gained as a developer that has spent one year _anywhere_. Promotions come fast, offers come faster, and the big companies that actually _are_ dedicated to investing in juniors see them poached for $30-50k extra by companies that don't.

4\. People that can still code absolutely do get hired, and quickly. We are dangerously close to 75% of the class that graduated 3 weeks ago being hired or contracted.

All that said, we take it for granted that we're in an industry where people go from cold start to 6 figure salaries in 3-6 months. I've not aware of that ever having happened in the history of the world. It's no longer write a couple lines of code and raise your hand for a job like it used to be, but software development is still an incredible industry to be in, and with a couple of years of experience you'll reliably be complaining about salaries and working situations that almost any other industry would kill for.

<comment><USER97> > All that said, we take it for granted that we're in an industry where people > go from cold start to 6 figure salaries in 3-6 months. I've not aware of > that ever having happened in the history of the world.

There have been plenty of trained or semi-trained labour shortages in the history of the world, with similar results.

<comment><USER82> Not sure any have been at this scale and lasted for this long.

<comment><USER98> There's multiple examples of this. Looking at Detroit's boom during post-war decade of American cars. In a bigger flash of the pan examples like the North Dakota oil fields. Where unskilled labor was in extreme demand to have 18 year olds making 6 figures.

This will always happen as long as the profits are there to sustain it. But I agree with your general sentiment, having said that, its just part of the human condition. When I attend a bitcoin/ethereum meetup most of the people there are only there for the lure of the quick buck. Not the long term technical implications/learn about the projects.

</comment></comment></comment></comment><comment><USER99> I like the premise of the article. I think bean counting, short sighted companies killed the junior dev....and that role died a long time ago in many places (even farther back than 2010).

I also think the article needs some copy editing. A few paragraphs were rough to get through.

</comment><comment><USER100> My undergrad degree was in music and when I decided to move into software development, I got into a master's CS program that was heavy on theory, light on practicalities. I graduated quite green and unconfident with basic tools/systems like vi or Unix. Hell, I could barely type.

Once out of school, I opted to take a software test development (SDET) position, which provided the sort of hands on training and practical exposure I needed at the time. And, while technically it was a "QE position," the role did provide opportunities for coding in the form of automated tests, deployment scripts, test frameworks, etc...

Although I ended up staying in QA longer than I desired -- the bursting of the web bubble in 2000 sort of pulled the rug out from under me -- I eventually laterally shifted into a dev role and have been quite happy ever since.

I think this sort of path is still a viable option for aspiring Jr. devs, especially given our increasingly complex ecosystems/stacks. It's a great way to learn, and these days there seems to be less clean separation between QE/Dev roles in any event. QE people write code, devs write tests (or rather, they _should_ ;)). (Note, I'm explicitly recommending an SDET role, not a manual testing role.)

</comment><comment><USER101> > Who Killed the Junior Developer?

The educational system.

I've seen horrible things happening to production code due to junior developers. In the end the senior/lead needs to spend way more time fixing all bad code/ideas than if he'd write it himself in the first place. I know a company that has a medior dev that is now already more than 2 months working on a feature I can write in just 2 weeks. Besides that, my code will likely still be better because I code with experience, using proven strategies, making it more scalable, preventing pitfalls, potential bugs, etc..

I don't think the companies are to blame. A junior dev should not write rubbish if he/she is a software developer graduate. Current IT education is very limited. Most of the things you learn in 5 years can be interesting and a good foundation, but not really relevant for most developer jobs out there. You actually have to start learning to code once done with your study. And learning to code is not a short journey, I guess at least some 3 years of full time study before you'll get the hang of it. And I didn't even touch the idea that you definitely need some talent or feel for it. You can study arts, but that alone won't make you an artist.

</comment><comment><USER102> The ideal hiring process imo is actually a training process that is less focused on 'finding the best' but rather focused on helping their local community become good engineers. Companies fund their own bootcamps and pay students $15/hr (with no engineering experience). Students learn and help each other how to code (following a structured curriculum) with mentorship by engineers from the company. When students have finished the basics, they work on open source projects or internal projects following proper engineering process / tools that the company use. When a student has proved that he/she learned how to work well with other engineers and has built a few features, they get hired by the company as an engineer and this engineer would be immediately productive.

This might seem like a crazy idea, but its actually not. The previous companies that I have worked for all offer paid volunteer hours which could go directly to this initiative. The cost of hiring is around 30k per engineer (conservatively), which could help train someone living paycheck to paycheck for an entire year.

This non-profit does this: [https://garagescript.org](https://garagescript.org)

</comment><comment><USER103> What I run into over and over are largely attitude issues in all parties involved.

"Junior" is not an insult nor does it / should it demand an insulting salary level. I don't look at someone's title and think "they must be bad" or "I am better than them" etc etc but I see that attitude a lot. I see seniors take interesting work for themselves, I see them shove off juniors and I see juniors complain about the work they have to do.

And even worse is when someone holds the explicit junior title they are only interested in getting the senior title. Then we have seniors that shouldn't have that in their title feeling threatened by who does and doesn't have / get sr added to their title. It's all a dreadful game and I'm tired of playing it.

As others have said- I enjoy mentoring. I'm not ashamed that I enjoy someone taking the time to listen to me and what I have to say. I have 13 years of mistakes I can share. I don't enjoy working with people that are only interested in the "title game" and that complain about the types of work they have to do. We're all paid very well to do the type of work we do and ultimately we're paid to do what the company asks of us. We don't have to believe it's the grandest technical challenge of all time yet I see Jrs complain they aren't given the "big work" without realizing they don't know what they don't know- they just see some sort of prestige associated with it.

And shame on the seniors for taking work that is interesting to others first and shame on management for not making time for a junior to tackle a bigger task. I do feel for Jr engineers that get stuck in the cycle of doing menial tasks because no one makes time for them to make mistakes.

If you've got Sr in your title did you get it by being hired in to the title or by earning it in some fashion? Did you earn it by being a workaholic? Did you earn it by putting in time with the same organization? Did you earn it by growing your responsibilities? Ultimately- who helped you do it? Who gave you the chances and which manager wasn't threatened by you and allowed you to be promoted? Try to imitate those values and lead by example. Sadly I see a lot of insecure engineers who don't want to help and would never stand for a coworker, not the least someone they helped mentor, surpass them. And it IS a shame.

</comment><comment><USER104> Most IT companies have not succeeded in having a technical growth path. So the 'new' acceptance is that technical people will just be with the company for a short time before moving on unless they 'mature' into management. With that comes the expectation that employees need to be productive from day 1. So there will be no 'investment' in training or mentoring.

</comment><comment><USER105> To quote Feynman...

      When I was at Princeton in the 1940s I could see what happened to those great minds at the Institute for Advanced Study, who had been specially selected for their tremendous brains and were now given this opportunity to sit in this lovely house by the woods there, with no classes to teach, with no obligations whatsoever. These poor bastards could now sit and think clearly all by themselves, OK? So they don't get an idea for a while: They have every opportunity to do something, and they're not getting any ideas. I believe that in a situation like this a kind of guilt or depression worms inside of you, and you begin to worry about not getting any ideas. And nothing happens. Still no ideas come.
      Nothing happens because there's not enough real activity and challenge: You're not in contact with the experimental guys. You don't have to think how to answer questions from the students. Nothing!

</comment><comment><USER106> Got a side question.. how do I tell my junior developer who's still junior that he's not ready for being promoted. He feels he is because he understands more of the code base now, he often makes a lot of mistakes and is ready to point out the mistakes of others. He also does not get off his desk to communicate or question requirements.

<comment><USER83> Find or create a skills matrix for developer seniority. There are a few floating around out there if you Google.

<comment><USER107> Along the same lines, decide what the bar will be for promotion, tell them where they're lacking, and when they reach that bar, _promote them_.

</comment></comment></comment><comment><USER108> The roles that mentees would have been have largely been outsourced/offshored. The days of spotting a talented helpdesk or QA worker and growing them into a fully fledged sysadmin or developer are gone. Some of the finest engineers I know came into the field that way 20 years ago. They wouldn't get a look in now.

</comment><comment><USER109> The word 'Junior' killed the Junior Developer. Nobody wanted to have that title and it was also an easy target for recruiters to hire them away promising software developer roles.

<comment><USER110> In many of the companies I worked for in the past, the word "senior" was also seen as an alternative to a pay raise.

One telco I worked for opted to change the title from developer to senior developer for five people in one year, this is on a 15 person team, where 4 people where already senior developers. The title change was seen as an alternative to a pay raise, equal in value.

Personally I don't care about titles and I prefer to just have the title of developer, and no "junior" or "senior" prefix. It's not helpful anyway, you just use the salary to compensate for the difference in skill levels.

</comment></comment><comment><USER111> Its a large mix of problems. There is infinitely more demand for the top ~20% of developers then the bottom ~80%. There is a glut of new undergrads and transitioning professionals. There is a larger-then-other-industries capital expenditure in hiring, training, and managing, developers - which compounds the hiring difficulties of most small companies including almost every start- up. Oh and there's massive conglomerates with near infinite resources (Google, AMZ, FB, MS) hoarding top tier talent - which plays into developer validation of who the top 20% is.

It's a mess, and it paints a single reality. The tech industry isn't as easy to break into as pop culture has labeled it over the past decade, and in my view it won't be getting any easier... sorry to the younger generation paying big $$$ for a CS degree.

<comment><USER35> Well, sure, but I think this is one of the few industries left where someone with the talent can not have any credentials and just be able to do the job. I've never sat in a computer science class in my life (which is not to say I've never learned anything about the subject). It's not easy but it's not outlandish, like it would be in many other similar fields.

</comment></comment><comment><USER112> Is this a small company vs large company thing?

We hire interns and recent graduates most years. I've had 2 interns/summer for as long as I've been in a leadership role. The majority of my team was hired straight out of college. My employer is a well-established software company (35+ years, 400+ employees, R&D offices in 4+ countries).

We also have a robust on-boarding program for college graduates. So, we can deliver all that early training once with willing SMEs instead of many times. Yes, it costs money (travel/housing for remote new hires, travel/expenses for remote L&D staff, catering, extra-curricular events, etc). That doesn't completely alleviate the mentoring load, but it seems to work well. Plus, the new hires make friends quickly and rely on each other more than they might otherwise.

</comment><comment><USER113> Having recently had to do a lot of hiring and also played too much FIFA, I couldn't help but wonder if a argument couldn't be made for software engineering job contacts to work more like soccer player contracts. One issue is you might hire a junior dev, train them and just when they start to provide value BigCorp makes them an offer they can't refuse and you are left with the bill. If on the other hand the was a contract where a new employer had to pay some amount of money to the previous employer that might help with the situation. Hiring a upcoming super star and coaching them might turn from a risk into a business model in itself. Of course there are lots of potential issues that would need to get figured out, but at least for junior devs this might be a net win.

<comment><USER114> That is pretty ripe for abuse - junior developers take whatever since the first job is critically important to get, and then have zero negotiation power since it costs an exorbitant amount of money to "poach" them and pay them their fair market value.

I mean, yeah, it'd be good for employers. Not so much for employees. Likely an illegal or unenforceable contract, too.

<comment><USER115> Why would it be illegal or unenforceable for software development but legal and enforceable for sports?

</comment></comment></comment><comment><USER116> Do people really think this is a problem? I feel like everyone is taking the article at face value instead of reading between the lines: people don't want to hire bootcamp grads.

Developers fresh out of college with a BA in computer science have no problem getting a job.

<comment><USER117> I had a similar reaction. Boot camp hires haven't worked out very well when I've hired them in the past — even allocating a lot of mentoring time. I don't care about degrees of big time jobs, but in my experience it takes several years of being a curious coder hacking on learning projects before you reach a level where I can give you work to do.

There are plenty of people who fit that bill, but we can only handle a ratio of 20-30% junior or we can't really give them the support they need to grow, otherwise we'd hire more.

</comment></comment><comment><USER118> Really? The "killing" of the junior developer seems like an anecdotal claim. Hasn't ageism been a concern here on HN? Doesn't that tend to suggest that older, and thus more senior developers are "discriminated against" in favor of younger, CHEAPER labor? The reasons being that either:

\- you don't need a senior developer for your needs

\- you can't fork out for a senior developer

\- you could really use a senior developer, but won't fork out for a senior developer because your penny wise and pound foolish

\- you don't understand the difference between a junior and a senior developer

\- there is a labor shortage in software development and all you can hire are junior developers

<comment><USER119> >\- you don't understand the difference between a junior and a senior developer

I think it is this. The title Sr Engineer is handed out constantly to people with little to no experience. You are basically Junior for a year then you get the title change. It is a bit absurd.

So yes, there is a shortage of Jr engineers... but there are plenty of not very good Sr Engineers who should be Jr Engineers.

<comment><USER120> You're absolutely correct on this point. My first job after obtaining my CS degree was "Senior Developer" even though I had never developed software professionally before. I got the Senior title because the company had their pay buckets tied to titles so in order for the company to bring me on at the rate I requested, they gave me the Senior title. Titles apparently are nonsense, at least from what I've seen.

</comment></comment></comment><comment> a-saleh We kinda did. This is because we like to hire interns.

Usually intern in our area:

* studies programming at a university

* costs around a 1/2 of a junior

* is part-time with really erratic schedule

* work output still on on par with few juniors we hired

I suspect this is mostly because there isn't as much of a difference between what can one work in 8h compared to 4h (I spend 2h out of those on meetings an email anyway, so it can be productive to route most of these around your intern)

Second part is, we are well known as a good employer in the area, that has a tradition in accommodating for students erratic schedules, which means we get students who would get a full time non-junior position elsewhere, but they don't want to give up on school.

<comment><USER74> > I suspect this is mostly because there isn't as much of a difference between > what can one work in 8h compared to 4h

This is so true. I don't really understand why 8h workdays are the standard for "creative" jobs. Most people can't fully focus for that long. Tbh I personally just spread out 3-4 hours of proper work time to just fill the 8 hours. Otherwise I'd just run out of power / focus in the early afternoon.

<comment> a-saleh In my case, I work 8 hours because I still get pay by hour :) If, one day I would manage to get into consulting, I probably would work less on average work-day.

</comment></comment></comment><comment><USER121> I mostly disagree with this article, but not entirely. I do think there's a trend by the bigger companies to look for senior talent, but there are plenty of firms that rely on one or two senior devs with a team of junior/mid-level devs and I'd say most smaller companies still hire and train junior developers. I'm in the Chicago area and it's possibly unique in its diverse market of employers and thus able to support all manner of dev team make-up.

I'd also say that many junior devs are offshore and are given test and support tasks, and this is especially true in larger corporations.

</comment><comment><USER122> It was the Middle Manager, in the Small Conference Room, with the PowerPoint.

Did I win? <opponent reveals a card> Nope.~

"Junior" implies training, and American companies don't do training. If you're lucky, they have an internship program, which is apparently enough experience to get you a 6-month contract-to-hire as a "regular" developer.

It's a name game. "Developer" is actually "Junior Developer", "Senior Developer" is actually "Developer", and "Lead Developer" or "Principal Developer" is really "Senior Developer".

</comment><comment><USER123> > _My company was just like basically "give these people something to do so > they can learn something." But that's really not a lot to go on._

That really is how it works though. You need to start doing before you can learn.

</comment><comment><USER124> > Who Killed the Junior Developer?

Those who thought it a good idea to promote people to senior level after 6 months or a year.

</comment><comment><USER125> It's funny, my experience is completely different. I've always loved to hire juniors because you can mentor and they usually come with less preconceptions. That makes discussions much more fruitful. And they usually make you think about your decisions much more, because they can challenge things that any engineer with experience with just take for granted or accepted.

The learning curve can be an issue though. You want to be constantly be welcoming newcomers to have a rolling scheme of new 'seniors'.

</comment><comment><USER126> I recently put together a dev team from scratch. I specced it out as: One Senior Dev, one Project Manager, one Team Leader (an existing employee experienced in the company politics and able to manage), one Ops/Infrastructure role, and one Designer.

Needless to say it didn't quite work out like that. We ended up with two junior devs, one developer, one project manager, the ops guy, and the team leader. One of the people we interviewed for a Junior Dev role was actually pretty experienced (not enough for the Senior role though). Two of the devs could design well enough to be able to do the UI work. We're still looking for a Senior Developer. The team will need to learn as they go, but I'm able to cover for them enough so they can make mistakes (ahhh, the pleasure of being a CEO with a techie background).

I hope to continue bringing on new Junior Devs as the team grows and learns. Creating a pipeline of talent is essential to finding the best people. Because the best people aren't found randomly, they're trained and coached, built up to be the people that the team needs.

It's all about long-term planning rather than short-term thinking. I'm pretty sure that in about six months this team will be doing all the things we need it to, and in about 18 months we'll have lost (at most) one of them and the team will be exceptional.

</comment><comment><USER120> Personal story time...

I was a journeyman electrician for nearly a decade before obtaining my CS degree. The company that hired me, in order to pay me what I was making as a topped-out journeyman, brought me in as a Senior Developer (and its corresponding pay "bucket"). This was my first job actually developing software and I was, in title, a "Senior Developer," even though I knew next to nothing other than what was covered in my college curriculum.

TLDR: Titles don't mean much...

</comment><comment><USER127> Minimum wage killed the junior developer. I love mentoring and teaching, and I do this as part of my current role, and would gladly take on more people and train them and in 6 months they will be capable of going out and getting a 100k salary - I would have an open offer for anyone who feels like taking me up on this opportunity if I could, but that would be illegal. Much better we get people to spend 50k on a piece of paper /s.

</comment><comment><USER128> My title for my first programming job, circa 1992-3, was Junior Programmer. I was sent for two weeks of Oracle training on my first day. We didn't have a formal mentoring program, but the team was small and everyone was open to helping me anytime I needed it.

My recollection is that "Junior" positions phased out along with training programs as companies demanded pre-trained people. It seems like companies have basically shifted all the cost of training to the individual. This is having an effect on college computer science programs as students and their parents demand programs more catered to industrial needs. (The paradox is that industrial needs change before a student can actually graduate.)

Personally, I would love to work with Juniors and mentor them. In the absence of Juniors, I suggested that I do "lunch and learns" with our Help Desk people so they can be more than just ticket routers: maybe act as analysts before tickets get to senior people like me. As of yet, my manager and the Help Desk manager haven't approved. So, we keep riding the carousel of status quo.

</comment><comment><USER129> Isn't the problem the high turnover rate in the industry? Why invest in educating someone if they are going to quit in one year or so?

<comment><USER35> What I've seen (and frankly even what I experienced in my own career) is that really junior people are grateful to the company that gave them their first opportunity and also (to a degree that might even be called naive) invested in what their companies do, and for that reason tend to stay at companies a long time compared to more senior people.

<comment><USER130> More ops than dev, though still have to do both, but this has been the case with me as well. I have been open to staying at a company longer given they are willing to pay a reasonable salary and have the right type and amount of work. No point in switching every year if you're somewhere decent.

</comment></comment></comment><comment><USER131> The demand for developers is such that no company can ignore hiring and training junior developers.

IMO companies have relabeled them to developer and even to senior developers, presumably to make hires feel better that they joined exclusive group of people.

This may also be a result of some tension in HR departments where they are expected to provide some number of headcounts on different levels but they can't. So there may be natural inclination to prop up the hires to meet plans.

The body leasing companies are also inclined to prop up their candidates to offer them for higher rates.

Some regions of the world (my experience is with India) don't seem to have any junior developers. As soon as they are done with their training they have gained enough experience to be marketed as developers.

I work for one of very large companies in financial sector and people who barely can write a loop in Java are still named senior developers.

All this depreciates value of the official recognition of seniority and forces people to discover this on their own.

</comment><comment><USER132> I have seen the "we don't want to waste time teaching people. So, hire only senior developers" scenario play out at couple of my previous employers. And, it doesn't end well.

Senior devs have expectations around salary, growth and work. Over time when the company starts running out of steam - funding, growth or even interesting work it gets difficult to keep the senior devs happy.

Once that scenario plays out, companies start scrambling to find interns or junior devs and find out, not many are not interested in working for them because they heard "rumors" about company's hard-ass culture on "not learning on the job".

Slowly, company realize that a team made of only senior devs is too costly for the value they provide. And company starts to cut down, put in hiring freeze telling the senior devs to produce more per person. Some even go to the extent of firing some seniors and getting junior devs and then allowing people to learn on the job.

<comment><USER133> >Senior devs have expectations around salary, growth and work.

A Junior Dev will have them, too, though. Not the ones fresh out of college, but maybe the ones that already worked for 6 months or so.

<comment><USER132> No doubt about it. The only difference is Junior Devs expectations can be tempered a bit. Senior Devs are more demanding.

</comment></comment></comment><comment><USER134> My experience at Google and Facebook is that junior devs are hires in great numbers. Intern season means you can't find a parking spot because there are so many of them. This article doesn't ring true to me, but my view of the world is narrow since I've only been at big companies. Is he talking about startups? I thought those skewed young too.

<comment><USER135> I suspect this is referring the world of software at large, outside the SV sphere of influence.

</comment></comment><comment><USER136> The investment an organization makes in helping junior developers get up to speed pays off in the longer run if the workplace isn't toxic. Ideas flow better when there is a difference in experience level in the team. Mentoring also helps experience people learn more as opposed to settling down in a comfort zone.

</comment><comment><USER137> This is one of those "each generation thinks it invented sex" issues - <USER3> company looks like it never trains internally, and we assume it's driven by reasons X (cheaper to not train anyone than train people and lose them)

my personal view is that most organisation structures are designed to prevent code quality and hence the reason to train anyone (senior or junior) is diminished.

My idealised view of a software dev org is a well defined code area owned by a single dev lead. that person has responsibility for certain metrics from "quality" to "performance" and "style" and some business kpis derived from the code area - and then stop measuring features produced to measuring how well those features are implemented.

sorry it's a bit early to get this clearer - will revisit in an hour just wanted a opinion

</comment><comment><USER138> The OP is missing a rather obvious point. A junior dev after months of training could jump ship for much better comp now that they're less junior or that suddenly some other company's product interests them more. Another point missing is that sometimes there are very hard problems (eg. self-driving cars, fusion power, DNA pattern matching) that need solving quickly and that's what some companies try to do, there are other type of companies that solve more mundane problems (hr software, customer relation management software, email tool) that have been solved over and over again. To bundle all companies into one category when it comes to training junior devs is a mistake, junior devs could be trained at companies working on easier problems much more cost effectively and efficiently.

<comment><USER133> I'd disagree with you in this part:

>Another point missing is that sometimes there are very hard problems (eg. self-driving cars, fusion power, DNA pattern matching) that need solving quickly

If you have let's say 5 senior devs and 1 junior. Then the problem still can get solved quickly while the junior will learn a lot. Obviously, hiring 1 senior and 5 juniors would be a mistake.

<comment><USER138> >If you have let's say 5 senior devs and 1 junior. Then the problem still can get solved quickly while the junior will learn a lot. Obviously, hiring 1 senior and 5 juniors would be a mistake.

Perhaps that is true, what I was saying is a matter of degrees not absolutes. Let me rephrase for you: to the extend that a company is working on hard problems they should minimize the ratio of junior to senior devs.

</comment></comment></comment><comment><USER139> I agree that the fault does lie largely with employers, but it's not just them. Jr Dev positions are there, but more often than not they are at small local companies that likely aren't paying market rate (or at least their mico- local market rate). For example: there are lots of places in Birmingham (AL) with Jr dev positions, paid internships, etc.., but you can't expect to make > $65k out of the gates.

Then again, small shops are the best place for a first dev job in my opinion. You get exposed to WAY more stuff than you would at larger more established places most of them time. There are downsides, but I personally think the most important thing for a first job is getting exposed to a lot of new stuff and learning to get comfortable in an unknown environment/stack quickly.

</comment><comment><USER140> When I got started, Junior developers were assigned to senior developers doing maintenance programming. It was important work but it also gave you time to come up to speed on the system without the crush of new feature development deadlines. Sadly, it seems that not only do companies not do that these days but the new breed of developers seem to think they are too good to do maintenance programming. I learned a great deal about how systems really work and how to write robust software from some great mentors who had been moved to maintenance work as they neared retirement but companies these days are quick to lose older developers in favor of less experienced and less expensive younger developers. Lots of tribal knowledge is lost in that fashion every year.

</comment><comment><USER141> I think some of this is based on the time horizon of the company. Larger companies (especially those who favored promoting from within) historically have had large batches of fresh graduates, and trained and mentored them. Without these programs, they wouldn't have future executive talent.

Smaller companies had less relative incentive. By the time someone is good, you might be flipping the company, or bankrupt. (This isn't to say it's not worth doing, just less incented)

This shift was one of the largest differences I had to adjust to going from large to small. (It isn't just that mentoring isn't rewarded, it's that there are short term disincentives - the benefits from mentoring likely come in the next company, or the one after that)

What's this mean? Just that the burden is on the mentee.

</comment><comment><USER142> In Germany at least we have apprenticeships and working students.

There is a apprenticeship program for developers (Fachinformatiker für Anwendungsentwicklung -> Qualified IT Specialist for Application development) which gets rather much practical knowledge, since they only go, I think, 2 days a week to school and 3 days a week to work. This takes 3 years, so they have much time to transition from a newbie to a junior to a senior.

The main problem is, most "professional school" are quite shitty. So if your company doesn't have good apprenticeship programs, you're basically stuck with learning outdated stuff at school and nothing of value at your company.

I studied computer science and worked as a web developer on the side, so I wouldn't finish my studies without practical knowledge.

</comment><comment><USER143> Probably a good time to say that we're trying to hire a Junior Developer in London, and I'll be providing as much mentoring as they want.

[https://news.ycombinator.com/item?id=16285477](https://news.ycombinator.com/item?id=16285477)

</comment><comment><USER144> > When they didn't understand there would be a lag as I taught these people.

In a world run by MBAs who figure that any programming task, regardless of complexity, ought to take an hour (MAYBE two) and if it takes longer that means the programmer is incapable, this is hardly surprising.

</comment><comment><USER145> People talk about a "developer's union" ever so often, and one of the most commonly brought up counter-points is "well, but what would we need to fight for as a union?" (not that I agree there isn't anything (else) to fight for, but:) it occurs to me that this is an excellent possibility.

Devs change jobs. This is good, but (as pointed out) means you maybe don't want to train people up; it's the next company that benefits, not yours. But, maybe if everyone paid in - companies AND people - a scheme could be figured out where you'd know that it's fine to train up, since you'll get the benefit of someone else being trained up.

It's still long-term thinking, which others are pointing out isn't common.

<comment><USER120> > "well, but what would we need to fight for as a union?"

Improved compensation, benefits, bonuses, stock options, paid conferences, training, etc...

<comment><USER122> Bottom-up control of the development process. Our own apprenticeship pipeline. Our own certifications. Genuine influence over interviewing and hiring practices. Minimum contract terms. Our own lobbyists. Promoting business for members outside of Silicon Valley. Our own jobs board. A general strike fund. Our own retirement planning and pensions system. A backup health insurance option.

The lobbyists can start by bringing down the exemptions on overtime pay for tech workers, and by trying to loosen immigration restrictions on the people of our industry.

<comment><USER120> > "loosen immigration restrictions on the people of our industry"

I don't think a U.S. union would try to loosen immigration restrictions...they'd care about protecting the rights of U.S. workers...also, why would a union representing U.S. workers want to increase the labor supply?

<comment><USER122> Naturally, it would be to ensure that all the best people in the world are members of the union, and employing filthy non-union scabs would therefore mean lower quality product.

The companies are multinational, so the unions have to be multinational, too. If the company tries to skirt around the union by doing the work in India instead of the US, the union should anticipate the move and surprise the company by already being there, still demanding a better deal for _our_ people.

I anticipate the demand for people with technical skills will continue to rise in the future. There is no need to artificially limit the labor supply anywhere, even worldwide, because the world's universities already can't crank out enough people with official credentials. (And when they do, the new graduates still can't get jobs, because that degree apparently still isn't good enough to meet business expectations.) The union could still eat up much of the bootcamp and intern business with its own apprenticeships. _That 's_ when it might try throttling the supply, _after_ gaining some control over it, by operating at the optimal point for monopolistic competition. Restrict it just enough to squeeze more money out of the market, but not enough to allow a new competitor to enter.

And it benefits all of us to be able to shop around to different jurisdictions as easily as those who employ us. The countries and companies that provide the most attractive environments will get more of us, and therefore prosper, while those who are hostile will get less of us, and therefore rapidly descend into a new dark age of wretchedness and despair, where nothing works properly and half the kiosks and infoscreens either show BSoD or a console screen with no attached keyboard. Then they will rue the day they snubbed the nerds, and weep into their low-tech cloth pillows.

(WARNING: This post may contain hyperbole.~)

</comment></comment></comment></comment></comment><comment><USER120> So I've read through most of the complaints listed here and it seems like having a Software Developer Union would be one way to go. You could then have your jr devs undergo an apprenticeship similar to how we did it in the trades (5 years to become a Journeyman).

</comment><comment><USER146> My company hires junior devs. We mentor them and train them up. When their skill level goes up they get paid more after reviews. Some have left and that's fine and is natural in a company. We take interns on too and have hired from that pool as well.

</comment><comment><USER147> Underwhelming article. I'd say the junior devs are now funneled through contract positions. My experience has been that my companies I work for typically take on junior level roles as interns or contract positions. Take on a couple of contract gigs in the early part of your career till you find a place you like and become a recognized and appreciated contributor. Then when your contract expires push for converting to full time, which usually works best with a counter offer in hand. Throw the dice on dice.com but withhold your full contact information and only give it out to roles you wish to filter. You'll thank yourself in the future in avoiding future spam.

</comment><comment><USER148> First of all, absolutely no employer (at least the sane ones) cares if you are junior/senior/old/ninja or superman. The goal is, to hire people that generate a cash turnover. If you cannot deliver a value that the company can capture as a profit - you are denied. It is that simple.

Maybe these "Junior" people just don't know enough to be productive? How can I hire someone who will waste my time on explaining something that is so basic, one can learn by being involved in open source?

And here is the conclusion. Stuck in Junior limbo (what ever that means)? Commit to some open source project, show me value you can create. I guarantee you, you'll be hired.

</comment><comment><USER149> The existential angst experienced by Hacker News developers is amazing. One moment I am reading articles proclaiming that "nobody hires Senior Developers" (which is nonsense). And people freak out. Followed shortly by "nobody hires Junior Developers" (which is _also_ nonsense). With an equal amount of freaking out. So should we conclude, based on the "wisdom" of Hacker News, that nobody hires any Junior _or_ Senior _or_ any other Developers of any age/sex/...? Of course not. Because developers get hired every day, all the time.

</comment><comment><USER150> Wait I see so many comments about how junior devs not being hired that much anymore. So is this really a bad time to consider software development as a career path if I have no degree or required formal training?

</comment><comment><USER151> Shameless plug: I'm starting a newsletter writing about career advice for junior developers. I'm at the point in my career where I feel like I can share my experiences and give direction on what I learned and what junior engineers should focus on when it comes to soft skills. I won't be getting too technical. It's the soft skills that I struggled with so it's the soft skills that I want to help with.

If you're interested you can subscribe at [https://exponentialbackoff.substack.com](https://exponentialbackoff.substack.com)

</comment><comment><USER152> I find this surprising. My experience is that companies are generally competing for developers, even junior ones. Some actively go to universities to advertise their company for this exact purpose.

</comment><comment><USER153> 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 ...

</comment><comment><USER154> I had a similar experience. 15 years ago, with less than 1 year of experience I couldn't get a job to save my life. I had to work for companies for free! 5-10 years later, I was getting up to 5 offers for a job while interviewing.

And yet, it's not like junior developers suck. I've seen plenty of junior developers who can build up an application, no problem. There might be some mistakes along the way, but they're able to get the job done.

</comment><comment><USER155> I've seen junior devs hired and trained/mentored in pretty much every shop I've worked in (could be an Austin, Texas thing). But, if this is a problem generally, would it not just be a consequence of not expecting to be able to keep junior developers long enough to benefit from them? Or, if the hiring managers intend to flip the company in a year or two, not really caring about the long term pool of senior developers?

</comment><comment><USER156> Hi - Melissa's blog post and the ensuing thread encouraged us at WSO2 to share our views on this topic in a response essay that talks about the importance of junior software engineers in a company.

[https://medium.com/@tylerjewell/bringing-life-to-new- softwar...](https://medium.com/@tylerjewell/bringing-life-to-new-software- engineers-f7a910966431)

</comment><comment><USER157> Smart junior devs make good algorithm designers. Most senior devs don't remember algorithms unless they do that sort of work - they just call into it.

Hire several and put them to work under a good mentor, on a project that requires little domain knowledge. They won't slow the seniors down, and finding a single successful one is worth the cost of taking a chance on the bunch.

Remember, most startups happened with teams of fresh grads.

</comment><comment><USER158> I'm lucky to work where I do. We have the best system I've seen for growing junior developers. Our team is about 60 engineers and I'd say close to 20 of them are from non-traditional backgrounds (coding bootcamps or self taught). It's not that we're doing anything revolutionary, we merely accept that we can handle them, assign them a mentor, and let them learn.

</comment><comment><USER159> Junior devs are significant drain on senior devs resources which could otherwise be spent more productively. And once he or she matures a bit, he or she gets hired somewhere else as senior for double the money. Thus hiring seniors and not bothering with juniors have obvious business sense (until there is a way to bound juniors somehow - for example by immigration).

</comment><comment><USER160> > For my own part, I'm happy to mentor folks

Oh joy, I can't wait to be mentored by someone who held a bunch of random front end positions for about 8 months, has 2 endorsements for javascript, nothing for backend, no degree in this field, considers themselves an author now and uses their gender as a weapon/excuse in their public musings.

</comment><comment><USER161> Stack Overflow pops up plenty of "new grad" level jobs all the time, for example [https://stackoverflow.com/jobs/155829/google-software- engine...](https://stackoverflow.com/jobs/155829/google-software-engineer-new- grad-google?med=clc)

</comment><comment><USER162> Does anyone have any suggestions on how to make myself available for mentoring over the internet? I'm sure there's many possibilities, but has anyone had actual success with any?

Preferably I could get paid doing it, but if that's not really feasible then I wouldn't mind pro bono.

<comment><USER163> Find a Slack or IRC channel and hang out there. Example: I spend a lot of time in #FoundationSites, #Symfony, #Aurelia and answers questions there.

</comment></comment><comment><USER164> Off topic, but this is the first Medium membership-exclusive content I've come across.

Discussion about it: [https://news.ycombinator.com/item?id=13933550](https://news.ycombinator.com/item?id=13933550)

</comment><comment><USER165> This piece reminded me of my days in the restaurant business as a teenager. Was common for everyone to do a tour there, but now the jobs are mostly done by the "undocumented." Don't care to discuss the politics of that but it feels similar.

</comment><comment><USER166> This is of course because of outsourcing. Junior devs usually do repeatable tasks guided by a manager closely, which is exactly what outsourced heads can do, definitely cheaper than the junior devs in the U.S. would. This is normal.

<comment><USER167> Guess who won't have senior devs in 10-15 years.

<comment><USER166> Outsourcing destinations, because there is little demand for senior outsourcing heads. They become harder to manage, and their jobs are high impact enough to justify the expense of hiring them in the Valley directly.

People who outgrow junior level will just make their own startups, or move to U.S. from the locations: outsourcing shops won't need them; more: they will take conscious effort to prevent them from ever growing, because growing, they become threats to these body shops.

</comment></comment></comment><comment><USER168> Here's a plausible answer: [https://blog.codinghorror.com/why-cant- programmers-program/](https://blog.codinghorror.com/why-cant-programmers- program/)

</comment><comment><USER169> Seems like one week I read that firms only want to hire freshly minted engineers because they are cheap and easy to exploit, then next week I read they only hire senior developers because they're more productive.

</comment><comment><USER160> The great irony of this article is that the author has degrees in forestry and agriculture and a very weak development skillset based on their LinkedIn profile and they still got a junior developer job.

</comment><comment><USER170> The economy killed the Junior developer. If we ever are in a situation where there are more applicants than jobs and the economy isn't doing well you can be sure the junior developer will be back.

</comment><comment><USER171> Part of the problem is head count, at least in the company I work for. We had a hiring freeze and now we are allowed to hire two heads. I would love to hire one senior and two juniors but I can't.

</comment><comment><USER172> pretty sure the easy answer is Bootcamps

<comment><USER37> Or just read a "Learn FancyNewLanguage in 14 Days" book.

/s

</comment></comment><comment><USER173> Is out there any data or evidence that support her article? to me it sounds the typical bubble problem: you think it's generalized problem but the data shows another thing.

</comment><comment><USER174> 300 $ / hour ? 300 * 8 * 5 * 20 -> 240K$ per month ? It seems far too much. This might be why they can't afford junior developer.

<comment><USER175> What's the "5" in your equation? :)

However it's still way too much. 300 * 8 * 22 * 12 = 0.63M per year. In my opinion you must be at least Linus Torvalds's deputy to pretend on that.

<comment><USER176> Did she mean daily rate? I wonder if a junior ask for this rate, of course the company has no chance to afford a senior dev.

</comment></comment></comment><comment><USER177> I am so pissed of that "Only members of Medium may see responses to this story."

I thought I was a member but I learnt that it is 5$/mo.

</comment><comment><USER178> In an industry, glorified itself with automation, it is not really that hard to find out the automation first happens within itself.

<comment><USER157> There are always higher abstraction levels and new problem domains. If you lose your job to automation as a software dev, you've gotten complacent.

Put junior devs to work on the new stuff, not what you started on yourself.

<comment><USER178> Junior dev needs to establish trust before they can be put into the 'new' stuff. They are called junior, for a reason.

Ultimately, this industry now has enough people to spare, impact is what everyone is fighting for, this applies for junior dev as well.

</comment></comment></comment><comment><USER179> Junior developer here.

I worked as a programmer for 1.25 years. I left 3 years ago, the company went bankrupt yesterday. When I last checked about it, I saw several of my coworkers replaced with someone else.

The boss kept adding people to his 10+ sales team, and I remained the only developer. Not very long after I joined I prepared a speech about needing a lot of time and preferably an extra developer to clean it up. The web app was written by 1 person for 4 years. No documentation of course, not tests, guess what also no version control. The boss had a sales background and I guess he considered salespeople sources of income, while developers - sources of expenses.

I guess I should be grateful that he hired me? Yes, but the only thing he cared about was if it works and how it looks from the outside. The few online comments there were on the bankruptcy article included one that said the place had mobbing, and another he was lucky he was rejected when asking for a job there because the interview was terrible. (When _I_ was applying, I got a proposal to work with no contract in exchange for higher pay. I rejected that one.). I thought I was maybe paranoid or oversensitive, but now I'm sure I got hired in the first place because I looked desperate.

If I performed stellar, I would have a good success story, but there's limit to how many advanced topics a junior developer can pick up alone while still cleaning up. REST endpoints could really have helped against competition, but then again if he hired an experienced dev after me he would have saved him too. I made a point to write reST documentation describing everything I learned during refactoring/upgrading process, how to run tests, what the various modules are for, where the bottlenecks are, the staging server image, etc.

I fucked up when switching jobs and didn't sign a contract immediately. I thought a verbal agreement was enough. Then I was fired after 4 days, citing poor performance, slooow work speed etc. I never thought I was amazing, but with his other hand the new boss offered me to enter an internship program. He said I would learn a lot. He also sent me some Python video tutorials made by his friend (who works at a university). I told him I took mine from MIT and certainly don't believe a country whose best university is not in the top 400 globally could produce something better... and it was basically a backwater university, not even the top one. Later I found out he had a deal with an (state-funded) employment bureau. He was providing internship programs for aspiring programmers, and the bureau was super happy to send people on "training programs with guarantee of employment". Both parties were happy - the crook had a constant influx of temporary cogs, the bureau had could boast high effectiveness. I keep seeing new entry level developer jobs from that place, and yet the company is NOT growing.

Let me tell you it takes a tremendous amount of willpower just to train at home and remain employable. I've found that hands down the best thing I can do to keep getting job interviews is to regularly commit to github. I enjoy programming, but I'm not passionate about it. You can like strawberries, but 3 pure strawberry courses a day is too much for most of us. It helps to have not one but a variety of side projects so you can alternate between them, and at least one extra programming language (I rewrote someone's glitch art app in Rust).

It doesn't help job interviewers are kinda autistic. I don't mean in the "they suck" sense, but that they have major communication problems. They never tell why they didn't like you, you must infer it from their behavior and observe what kind of behavior gets you more interviews. They always think they can get another one, so why bother explaining anything. Depression + anxiety doesn't help. Dating is super fun by comparison. At least you get to see a pretty girl.

The bottom line: some people only hire junior devs to cut costs.

</comment><comment><USER180> Some data that's not anecdotal would be nice. I work for a fairly large SF company which hires mostly newgrads every year.

</comment><comment><USER181> Hire and develop the best: Leaders raise the performance bar with every hire and promotion. They recognize exceptional talent, and willingly move them throughout the organization. Leaders develop leaders and take seriously their role in coaching others. We work on behalf of our people to invent mechanisms for development like Career Choice.

edit: this is from the Amazon leadership principles

</comment><comment><USER182> >Or track the people struggling with development into a place where they can succeed like project management

Do you really want project managers who couldn't cut it as a developer?

I'm assuming we are talking about software projects here. If so, the idea of putting someone who couldn't make the grade on the bottom rung in charge of the whole enterprise seems like a bad idea.

</comment><comment><USER183> companies need to follow the 80/20 rule. 80% non-junior developers and 20% junior. Juniors should do 80% of the work and seniors should have 80% of the knowledge. if the juniors are busy doing things then the seniors that focus on hard tasks.

</comment><comment><USER184> the guy that code reviewed him

<comment><USER185> Senior Developer in the Screen Share with the Pull Request.</comment></comment>