Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

A lot of unorganized thoughts:

- I really didn't like that seniority equates to creating value in this article. I knew junior engineers who could have code circles around way more senior.

- Comparing Bootcamps with CS degree is also leaves a bad taste in my mouth. Bootcamp is usually much shorter and very narrow. CS is longer and much broader. Software engineering became complicated enough to require some breadth (even junior engineers need to have some understand of SDLC, source control, language, main framework and couple of other things).

- On another hand, I agree, everybody wants senior people, because senior (+good) engineers create way more value than junior (and unproven).

- I think for junior engineers who don't come from the top schools it would be hard to get into a pipeline of hotshot companies. However, why do we concentrate on FAANG as a first employment opportunity? The first company where I worked had 5 people and a dog and a tiny salary. It didn't stop me from finding the next company and gradually getting to a decent place.

- If I was in junior engineer shoes, I would try to find absolutely non-glamour company (big old consulting company, something small and local, government, etc, and apply there). Get a couple of years of experience and after, expand the search to include better companies.

Also, I would challenge the core premise of this article, looking for Junior Software engineer, I got around 700 open positions and searching for senior, I got about 900.



sort by: page size:

I keep seeing this argument for a bunch of different industries. Nobody appears to have an answer for where all these more senior people are going to come from when we're replacing the juniors with an LLM.

People don't magically become senior engineers, they need to get experience of the basics. Traditionally that's done by being hired as a junior engineer and doing a few years of fairly dull work under the supervision of the more senior engineers, who gradually prod you into doing things well.

Bootcamps have been somewhat filling the ever increasing void for junior positions to some extent (in the process making the barrier to entry into the industry higher for people who can't afford to literally pay for the junior roles that used to pay them), but there's still a chasm between someone fresh out of a bootcamp program and a developer who you can let loose on a project unsupervised.


I take a different take here.

Juniors write a lot of code. Often significant amounts for a company's products and services. They're the ones who are implementing all the decisions that seniors spend their time making in all their meetings.

Most senior engineers I've seen have most of their days filled with meetings with very little actual coding time.

The seniors are valuable, making decisions, coming up with solutions, building frameworks etc, but it's the juniors who then take that and run with it and build everything on top of it.

So while some will still code, it's far less than what the junior engineers are creating.

Yes they require some more training, and clear direction, but they are the ones actually creating and executing the vision of the company informed by the seniors.

What companies really want, like others have said, are senior engineers who are willing to accept a junior salary.


Definitely agree with this. It's not that the junior developer position doesn't exist anymore, it's that there's an overwhelming supply of strong candidates with the CS pedigree, multiple internships, side projects, and well balanced technical/soft skills.

For juniors to be cost effective/neutral, you can only really have 1-2 per mid/senior engineer. Most companies don't have that many mid/senior engineers to begin with, much less ones that are willing to take on a junior to mentor for a year or two.

It takes a better part of a decade to transition a junior into an independent, mentoring capable senior. The current software boom only started in 2009ish. That means there's only a few cohorts of seniors created in this cycle, and I would guess not very many of them given the job market in 09. Give it time, years of experience don't just happen overnight.


I mean, I should not be senior. I should not have been the only web dev as my first job out of a bootcamp. That is insane. But, bizarrely, in this world of start-ups and feature pushing, shit has yet to hit the fan.

I think it helps I routinely push for that promised, mythical senior developer and instead they give more more classes, pair programming with senior devs of my choosing, etc. Perhaps my complete (justified) awareness I am way over my head is the prerequisite fire to keep me always drinking from the fire hose of knowledge. Who knows.

I will say that it seems baby startups who have to choose between cheap(er) bootcamp grads who know how to get a beta out quickly, cheap(er) fresh CS grads who often don't know how to get a beta out quickly, and more expensive experienced people often chose the bootcamp grad.

I said in my interview they should get a senior dev. They said they couldn't afford one. And here we are 3.5 years later.


I see if here a lot and I don't think it's the right mindset to think of some dichotomy of junior and senior developers (unless you truly are in some sort of apprenticeship program). Some of the poorest performing engineers I met at faang were high in level. You should act and carry yourself the same whether you're senior or junior in level.

What are you talking about?

TBH I can't even chain together any of your reasoning here. How does teams wanting to hire seniors imply juniors who join won't be able to learn? Were you on those teams? Did you actually see "yoda class devs" refusing to spend effort to grow their junior team members?

And how is mentoring juniors an even remotely acceptable substitute for learning from the best in the industry? Having juniors question your assumptions only works for making you aware that they might be bad, but doesn't necessarily help in guiding you towards making the right ones.

The only issue I take with GP's is the assumption they make with FAANG having the "best engineers". At tens of thousands of software engineers per company, the concentration of top talent is quite dilute, and if you're unlucky you'll see a lot of mediocrity just due to the large numbers. My impression is that often smaller companies with an strong engineering culture might have "better" engineers on average.


At my old company (in a small east coast market) the leadership had supported a local boot camp wholeheartedly and highly encouraged teams to bring in junior candidates from each graduating cohort. In the round I participated in we interviewed four candidates for my team. (I was the tech lead.)

Of the four candidates, two were essentially extremely under-prepared on multiple levels. We simply could not even convince ourselves that they had rudimentary coding skills or problem solving intuition. One candidate was marginal but seemed intelligent and possibly able to handle the role.

One candidate was previously working in IT doing helpdesk and project management work and wanted to break into software development. She did quite well on the fizz buzz level coding task and we had a strong belief that she would be able to perform and get up to speed so the company hired her.

She was very intelligent and hard working and she did slowly begin to learn the applications and the tech stack (Java + Spring) but I can't emphasize how much hand-holding, mentoring, and knowledge transfer it required on our part. She was assigned a mentor to do pairing with her and I personally spent a lot of time with her going over the systems and pairing with her. A short time later I moved to another team and then later left the company but my former coworkers report she's doing ok. It worked out but it was definitely a slow and time consuming process.

I think the key challenge is that when a very junior engineer like this gets 12-24 months under their belt they're going to be very attractive to other companies and are very likely to leave. I do not currently believe that the investment that any single company would put in on some of these folks is likely to pay off. The productivity that these folks contribute minus the effort spent on them in 12-24 months is very likely to be a wash unless the person is exceptionally talented.

I get the weird sense that companies recognize that they won't get too much benefit out of mentoring any specific person but that they've collectively decided that they want to increase the number of junior candidates badly enough that they're willing to "take one for the team" in a sense. Perhaps the expectation is that for every junior candidate they train but quickly leaves they'll just get a junior-mid candidate that somebody else trained.

In conclusion, not all candidates from these schools are good and the good ones probably won't stay all that long. It doesn't seem to be an obviously great bargain but companies are clearly willing to take those risks.


Seniority has a very real value in tech, though. It probably doesn't have much value if you're say, a doctor, working with different systems each time that look similar.

But in programming, you deal with systems, you know the undocumented gotchas of the system, and understand the flow of it better than someone who's completely new to it. You know when Chesterton's fence applies and when it doesn't. I often tell startups to promote the juniors instead of replacing them with seniors, because the junior who built the system would be able to modify it better.

Even in sales and product, there's some value to understanding what the customer wants and aligning that to the features or a specific pitch and such.


Entry level/junior positions already have a plethora of candidates. Where companies are sorely lacking are in senior level talent. It's going to be a gut check when all of these CS grads come out and they are competing with everyone else plus all the boot-camp coders.

Ok, that makes sense.

I agree, it's problematic that there are so many more juniors than seniors in the industry right now. I feel like many juniors are being left without mentorship, and then it becomes much harder for them to grow and eventually become qualified for senior roles. So that could help explain why many candidates seem so weak, alongside with all the recent hype.

I guess eventually the market will cool off and the hype will die down since this stuff seems to be cyclical, and the junior engineers who are determined enough to stick it out and seek out mentorship will be able to grow and become seniors.

But it definitely seems like the number of seniors is a bottleneck for talent across the industry.


I think if you can make a choice between a junior and senior engineer you'd take senior every time. Companies need senior people with experience. Lots of junior positions are the result of there not being enough experienced people to fill the roles so companies are trying to upskill junior people.

At least that's my read on the situation. If I were a manager and I could choose between hiring somebody with 10 years experience and fresh college graduate I'd hire the experienced guy for sure (or hire them both). The only reason I can see why you would only hire junior is if your budget is limited (because of course the person with 10 years industry experience will require higher compensation than fresh graduate).


1. Let me tell you the secret: if you call and market yourself as junior, then you WILL be limited to junior opportunities. The idea that someone is a junior engineer is a self-limiting and self-filtering belief. Very few companies will say they want junior employees, for good reason (there is something amateurish about calling yourself a junior employee - I can't quite put my finger on it). But that doesn't mean that when a company advertises a "[Normal] Software Engineer" position, you're disqualified (you aren't). Most fresh college grads I know don't call themselves junior engineers; why should you?

2. The market for senior developers is red-red hot. The market for normal software engineers (including junior, entry-level, whatever labels you want) is merely "hot" - but there is still plenty of opportunity to go around. What bohnej is saying doesn't align with what I've seen in SV.


I'd take it a few steps further. Change "Junior" to "Bootcamp graduate" and "Mid-level" to "Junior."

If there is anything even close to linearity between the "levels" of software development proficiency, then "Will understand code found on the Web before even thinking about copying & pasting code." is not equidistant from senior engineer as it is to "Might copy & paste code from the web (such as Stack Overflow) without understand it, if it just works"

Being a Junior developer should be a proud accomplishment, not a title for what you can buy for $10k and sitting in a classroom for a few weeks.


On the contrary, experienced engineers are the ones most likely to be comfortable with a non-exciting big company that provides solid benefits, a reasonable working schedule, and mature, well-considered engineering practices.

Our own company isn't large, but we're rather traditional. We're not hackers, we believe in technical correctness, test-driven development and choosing the best tool for the problem at hand. This means that we generally write mobile software in the target platform language, server software in JVM languages, and on the occasions where we get to work on hardware and OS development, C and assembly.

The work approach is not laden with technical culture and "fun", unless you find solid engineering to be fun (personally, I do).

However, we've had great success in hiring genuinely senior engineers with at least a decade of experience each. We experimented early on with hiring junior engineers, but found that the overhead of dealing with untrained engineers was exceptionally high -- something that models my experience elsewhere, at larger companies.

With the caveat that these are generalizations, I've found that the cost to hiring junior engineers is expressed in obvious and (perhaps) non-obvious ways. There are the obvious costs of the training and mentoring required, along-side lower productivity, and a lesser ability to estimate complexity and time to completion. There are also more abstract costs, such as technical and design debt that junior engineers are much more likely to incur simply due to a lack of experience. There are also cultural costs -- if you hire too many junior engineers, you'll create a technical culture and working experience that drives senior candidates away, amplifying the costs I've listed above.

Of course, I readily admit that someone must hire untrained junior engineers, and I realize the implicit unfairness of hiring standards that would exclude myself were it 15 years ago. However, there are companies other than our own that are willing to bear these costs in exchange for being able to recruit at the scale they require -- we're just not one of them, and I think our reasoning is sound.

That said, there are some things a junior engineer can do to make themselves less junior, (possibly before even entering the labor market):

- Get experience (class projects don't count). A great way to do this is by contributing to OSS, especially projects that demand high-technical competence (eg, contribute to the ruby interpreter or MacRuby, not just high-level Ruby on Rails). Senior engineers have past experience to draw on when implementing software projects; this allows them to design not just for the immediate requirements, but with an understanding of how the requirements, maintenance costs, and performance will evolve over time.

- Study practical implementation topics (... and then get experience implementing them). A lot of the value of a senior engineer is in their broad understanding of the practical topics of the field. Coming out of a CS program, you should hopefully have a firm grasp of the fundamentals of CS, but what many candidates are missing is a firm understanding of applied programming. Some off the cuff general book suggestions: UNIX Network Programming, Application Programming in a UNIX Environment, Mac OS X Internals, Applied Cryptography, The Design and Implementation of The FreeBSD Operating System, Database in Depth. This list is probably incomplete :)

- Don't settle for just an internship. Internships at big companies (Apple, Google, Microsoft) serve as a relatively cheap first-pass filter on college candidates for hiring. Of a given pool of software interns at a company like Apple, it's unlikely that more than a 10% of them will be hirable material, and of those 10, maybe 2-3 will actually get jobs. Other companies may hire a larger percentage (I don't have any experience there). If you want to work for Apple, Microsoft, or Google (or think you might), then don't sit on your laurels if you get an internship there. Pick a real, practical problem that, and work on it, hard, leveraging your access to senior engineers for advice and guidance as much as possible. If you just coast through the internship, you probably won't receive an offer. I think some students look at internships at the big companies as prestigious. However, they may be viewed as the opposite -- an internship at one (or more) of those companies without being hired is a red flag for me, since I'm wondering why you didn't get an offer.


so they do want junior developers. They’re just giving them the “senior” title ridiculously early in their careers.

What no one REALLY wants are ENTRY LEVEL developers, who tend to be a net negative to productivity for roughly the first year or two.


There are tons of junior developers out there, bet you won't have the same turnout for senior level engineers.

I don't know! Is it their job?

The attention of senior engineers is the single most valuable, expensive and scarce commodity of a modern software company. The incentives are absolutely not aligned for most companies to make it worth their time to hire junior engineers.

But obviously thats a problem - because as you say, where else will senior engineers come from? And I don't think we have a good answer here. The old school answer was apprenticeship - a company trains you up, and in exchange you work for them for a time. But most companies are loathe to do that because you're likely to quit and go somewhere else for a pay bump as soon as you have enough skills and experience that you're worth hiring.

For my money this, right here, is the real problem with modern programming / career development. Whiteboard interviews are the least of our problems.


You laugh, but where I live the market for juniors (other than summer internships exclusively for currently enrolled university students) is basically zero right now.

Every company is looking exclusively for seniors or at least mid level. They don't care that someone needs to train juniors in order to become seniors as long as it's someone else who has to do it. Companies can stay irrational longer than you can stay solvent.

So everyone keeps telling me how hot the SW dev market is right now due to all the openings and the high demand, meanwhile I'm only getting rejections because I don't have 3+ YoE in AWS, Kubernetes, Django/Flask, System Design, etc.


We all worry now. But I think someone with 10-20 years experience will be better off than someone with 5 months experience...it's better to fire all juniors and leave out a few seniors from a software engineering perspective. juniors are a long term investment and often cause more trouble than provide value.
next

Legal | privacy