Who Killed The Junior Developer? (medium.com)
Melissa McEwen, writing on Medium: A few months ago I attended an event for women in tech. A lot of the attendees were new developers, graduates from code schools or computer science programs. Almost everyone told me they were having trouble getting their first job. I was lucky. My first "real" job out of college was "Junior Application developer" at Columbia University in 2010. These days it's a rare day to find even a job posting for a junior developer position. People who advertise these positions say they are inundated with resumes. But on the senior level companies complain they can't find good developers. Gee, I wonder why?
I'm not really sure the exact economics of this, because I don't run these companies. But I know what companies have told me: "we don't hire junior developers because we can't afford to have our senior developers mentor them." I've seen the rates for senior developers because I am one and I had project managers that had me allocate time for budgeting purposes. I know the rate is anywhere from $190-$300 an hour. That's what companies believe they are losing on junior devs.
I'm not really sure the exact economics of this, because I don't run these companies. But I know what companies have told me: "we don't hire junior developers because we can't afford to have our senior developers mentor them." I've seen the rates for senior developers because I am one and I had project managers that had me allocate time for budgeting purposes. I know the rate is anywhere from $190-$300 an hour. That's what companies believe they are losing on junior devs.
... of lack of experts. It's bullshit, as we all are aware of. Because companies don't plan long-term anymore, the lack innovation power in the short and mid-term. However, I see many positions for junior developers recently. This is the web field in Germany, so YMMV. Those companies that see the light and accept that you have to build a quality staff will remember junior and senior positoins. Those who don't will expect to hire magicians in an instant and fail miserably.
We suffer more in our imagination than in reality. - Seneca
Tata, Accenture, Cognizant, Infosys, IBM Global, and other firms have contributed greatly to the decline of junior developers.
"Forget the engineers." -Carly Fiorina, briber of MIT Technology Review.
at least in the States. The H1-B program requires companies try to hire a local employee first. The rules say they can only have an H1-B if no qualified applicants are available. So everybody becomes a "Senior" developer and since there aren't enough people with the necessary credentials (there never are) they can always apply for an H1-B. This is also why companies don't pay to train anymore.
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
I personally stopped bothering with most corporate applications. Why bother? You rarely work for the company, generally you work for an agency that pimps you out to a company and parasitically leeches off your low pay. The sign up process demands you give them your personal information which is a loathsome thing. They will not let you work from home, they won't let you actually develop a project but rather just work within an antique system someone wrote long ago, upgrading or rebuilding with modern technology like nodejs is out of the question. Most of the time you will be in an very uncomfortable corporate culture and must alter your personality to be something your not to fit in. All in all, it is not worth it unless they pay, which they do not.
To top it all off they are the same people hiring out all the jobs overseas so the idea of working with such traitors is inherently disgusting on a moral level and to my patriotism to my country.
When I went out and started to look for the smaller projects, ones being offered by startups, or ones for a singular smaller business like car dealerships etc that is where I found gold. Hone your skills, be the leader (though generally only programmer) on each project and get a real grasp of elements and techniques to make things work. Giving such technological edge to local businesses, helping in such a way feels good and it is something I want to do for the rest of my life.
They should be so lucky to find someone like me who has been digging around searching and discovering for so long and with such passion, and they never will because I no longer would give them the time of day if they begged me.
First of all, companies love outsourcing in this globalized world in that there are more variable expenses rather than fixed ones. MBAs can tweak numbers all day along and get maximum profit. That makes long term relationships tricky, including the hire of juniors.
Second, employee retention is hitting a very low mark these days. I read on slashdot that everyone should consider a job change every two years in order to get a nice pay rise (>20%). If you stay in the same company for a long time, you are getting screwed (pay rise 3%). Playing devil's advocate, who wants to train juniors that leave after one or two years for a higher pay?
HR is to blame because they have unrealistic standards. It's like a guy that is a "4" that will only date women who are a "9 or 10", shares all the same interests in Star Wars (but not Star Trek!) and is rich being caught off guard because "there are no women to date!"
Stop looking for developers that are willing to take a pay cut and know exactly all the things you are looking for in a candidate (especially the technically incorrect ones like 10 years with PHP 7) and surprise, you'll find there are lots of people that fit that category!
Anons need not reply. Questions end with a question mark.
I don't see any shortage of them..
Companies take interns, and after their internship period is over, decide to hire them. Now the company isn't taking any risks with a fake junior developer, they can hire one that has proven themselves.
... That's what companies believe they are losing on junior devs. ...
... but "investing in"
They want experienced developers just out of school. "Long-term planning" in these companies is equivalent to "What's for lunch?" Yeah... that'll go far.
HR works for management. They get the requirements for jobs from management.
Blaming HR is complete nonsense.
I know, I've heard managers blame HR but it's because they are too chicken shit to fess up to their incompetence.
Every manager wants to have people to "hit the ground running" so they can make the deadlines that were forced upon them by their managers or deadlines they over promised to get their bonuses at the end of the year.
See, most tech managers are former techies who went to some weekend classes taught by charlatans and therefore are completely incompetent. This desire for "rock star" programmers is to cover up for unskilled and incompetent management.
People like to pick on managers here, but a competent and skilled management team can do wonders.
They give a list of 10+ requirements that you are already supposed to know.
The problem is caused by a large number of applicants. They get 1000 applicants and need some way to winnow it down. So they give ridiculous exact requirements, trying to get someone with exactly what they need. But that person already has a job - probably paying more than what they offer - or is such a jerk no one would hire them.
It's the equivalent of saying "I want to hire a junior mechanic that has 5 years of working on a 2012 Porsche, a 2012 BMW, and a 2012 Jaguar."
The only people that meet the requirements either already have jobs or are shmucks.
Half the requirements and TRAIN THE PEOPLE to do the job. Any job that takes a smart person more than a week to learn how to do 90% of the work should be split into two jobs.
excitingthingstodo.blogspot.com
...they're just not called "junior" positions any more. I went to a coding bootcamp in 2016, and about 95% of my cohort got coding jobs within 6 months. The startup I'm at hired me, and then two more bootcamp grads over the following year. None of us were hired for positions that were labeled as "junior" positions. It seems there are still plenty of companies that need developers to do work that as technical, but not necessarily innovative or extremely challenging, and know how to take on a promising junior dev who needs some, but not tons, of mentoring. Yes, junior devs I talk to also feel they have a hard time finding a job. I usually remind them that searching for jobs is often a dispiriting endeavor, and that imposter syndrome is rampant among new coders. If they keep at it, many of them still do find jobs.
The company I work for is _finally_ starting to take back work from offshore companies after realizing they were being left with an unmaintainable mess...and this took almost 10 years. Lots more companies are still addicted to cheap coders. That's where all the onshore junior developer jobs went when it comes to custom applications and software.
The other thing that's happening is software as a service applications that are good enough out of the box to not need as much dev work done on them Things like SharePoint Online and Salesforce.com are good examples of this...plus every single corporate niche application (travel, scheduling, etc.) are being targeted. The best a junior developer can do is get hired at one of those companies, but they tend to use offshoring or other cheap soiurces of labor.
It's not a good thing, because we really do need a bunch of new recruits in the pipeline who are capable of learning and don't mind spending time gaining experience. Companies want people to jump from freshly-printed CS degree to rockstar full-stack 10x developer, and it's just not possible without real-world, low-level experience.
Junior developers seem to all want to jump on the technology du jour they've heard about from Google or Facebook. The problem is: Google and Facebook have only a limited number of junior developer jobs available. Other companies have different technology needs, more often than not needs for projects operating at much smaller scales. These needs are poorly met by technologies designed to operate at Google or Facebook's scale.
Got a guy like that where I work now. Great guy but he just won't shut up about Kubernetes. We have 36 servers in the production environment, each of which does something different using different software. Kubernetes is the wrong tool for every job we have.
Until they get past the compulsion to use the Latest Greatest technology, developers limit their usefulness.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
they can also set an low pay rate the USC will not take say $50K in the bay area for an 50+ hour work week. to get an H1-B in as well.
Junior AutoCAD drafters are no longer required because the software automates many of the tasks that they used to perform. So, insufficiently-experienced juniors get "promoted" to more senior positions while the old farts get laid-off because why not? They're too expensive anyway.
Well, this is what happens if the work hasn't already been offshored to India or China in the first place.
Ever try mentoring someone who is 12 time zones away and asleep while you are working?
Interesting article, but I think my life exemplifies this particular problem, and highlights the reasons behind the problem itself.
Tools.
Imagine two plumbers. One master experienced plumber. One junior plumber. Maybe the junior helps speed up the master, maybe he doesn't. In either case, the master plumber can only do so much alone.
Then we add really good plumbing tools (welders, wrenches, et cetera) into the mix. Now the master can do a lot more. As a result, these advanced tools become justifiable. With the master using advanced tools, the gap to the junior is a) even bigger; and b) easier to close with the tools. Master teaches junior to use advanced tools, junior becomes much more valuable.
I'm not a plumber. I'm a senior (owner) web developer. Our industry is very different because our tools work very differently from welders and wrenches.
In programming, our tools consist of elements that are actually far more complicated than the programming itself. Simple programming has always been simple. But IDEs, APIs, version control systems, development mirrors, and the like are actually far more complicated than logo and javascript and html ever were.
A wrench makes turning a bolt easier. An API makes turning a thousand bolts easier than turning ten manually, but APIs are far more complicated than turning one bolt.
This leads to our senior developer's advanced experience being less about experience in programming, and more about experience in how to program. This has a few complications:
First, that kind of knowledge is much more difficult to transfer -- its conceptual, its layered, its abstract. While it's likely that any junior plumber can be taught to use a torch very quickly, it's unlikely that any junior programmer can be taught to use an IDE without months of practice.
Second, and this is back to that gap from before, the senior programmer with the senior experience is far too valuable using that experience to warrant the effort to teach it. A senior developer with senior tools and senior experience, properly motivated, might be more productive than a good team of a 100 good juniors, and that's if juniors can do the job at all. Asking a senior to teach a junior is basically like saying you have no work for the senior for the year it'll take to teach a junior anything worthwhile.
Third, and this is the problem that is especially my problem, I don't want to work that hard. It's easy for me to work as a senior programmer. It's easy for me to do the work and get paid and move on. It's easy for me to charge a lot, take a lot of responsibility, and take a lot of time off. I'm fast, I'm efficient. I really don't have any interest in teaching humans. I chose a career where I tell machines what to do, in part because I have zero interest in motivating humans. Over the years I've hired junior developers, I'm fired junior developers, I've hired my own boss, I've hired sales personnel, I've hired advertisers. In the end, I've shed them all because I simply want to program, and I don't need any help with it.
The article concluded that it's an industry problem. Maybe it is, but I see it differently. It's a senior's solution. This is what I'm doing. I like what I'm doing. What I'm doing works for me. I'll keep doing it.
If we had unions with apprenticeships! and then we will not have this issue.
...the fact that even at a low wage, heck, even free, a junior developer is going to cost so much of a senior's time to mentor and clean up after that they end up being really expensive.
Then when they get to be worth a shit, instead of sticking around for you to recoup your investment, they rationally take a job at higher pay somewhere else. You could raise their wage to keep them, but there's no incentive to train them up then. Why would I invest in a junior when I can poach a senior?
The only way I got into the business was that I had shipped 3 titles that I had done all the design and engineering on. The code in them is a shitshow, but all the employers saw was a completed game that had made money. This is what a businessman cares about, and businessmen are the ones cutting checks.
The story summary after this one has the following headline: "US's Greatest Vulnerability is Ignoring the Cyber Threats From Our Adversaries, Foreign Policy Expert"
A quick skim of the comments on Slashdot shows almost all the Anonymous Cowards and a significant number of the identified commenters think it's the job of the US government to get the hell out of the way of business and watch it turn America into some kind of libertarian utopia.
Sadly, this is what happens instead. Business won't provide entry level jobs for the best and most talented young computer people, because "Fuck you. Our only mission is to enrich our shareholders and society can suck it."
So those bright, talented young kids find somewhere else where they can make a buck while they develop and exercise their skills.
I've calculated my velocity with such exquisite precision that I have no idea where I am.
If the rate is anywhere from $190-$300 an hour then I'll gladly do it for even half off. I'm all for paying experienced developpers more but c'mon, I'm living comfortably on about a tenth of that range. Seriously among the ~40 senior developpers I've personally worked with, only 2 of them were truly skilled and could justify their salary, unlike the majority who were called senior because they've been at the job for 10 years.
So if someone can do the project you ask of them, you would never hire them. If they cannot do the project you ask of them, you hire them.
Glad I don't work for your company.
By the way, I have never heard of "fizzbuzz", so I googled it. Top response shows basically what is needed, which is how I would handle your request if I was a programmer. Now that I know about it, I'll just memorize the four or five methods they showed in various languages and ask you African or European.
If you think I voted for Trump because of this post, you're wrong. I voted for Dr. Jill Stein of the Green Party. Again.
The other things people mentioned are certainly a factor. But I think another factor is education. The "computer science" degree is what people normally study to go into a programming profession. But I've found the education typically rather lacking... people coming out of schools may know a couple interesting algorithms, but they don't know anything about software design, architecture, communication systems, or teamwork/planning. In addition, no one really learns how to be a true "author" of software. Most developers I've worked with (even senior ones) have no very little ability (and often times interest) in coming up with proper function/class/variable names, for example. Written code needs to be understood, maintained, and compartmentalized (for re-use and testing). There's process around code development as well (from code reviews to task/project management, to testing)... it'd be good if students were exposed to different ways these can be done, and the pros and cons each. These skills are just as important (if not more so) than understanding the syntax of a language or the details of how a hash table is constructed.
When I think back, a lot of 'junior dev' assignments were classes of code that had clear specs and were mostly just doing CRUD on the back end. A whole lot of boilerplate code. Code that is now pretty much replaced by some MIT-licensed library in Maven/PyPi/Rubygems/NuGet, etc. At one level, it should make a junior dev more productive... "just reference the library". But, remaining tasks left are closer to the business logic, more open-ended, and generally higher-level architecture questions.
The 'getting started' pipeline problem is even more obvious in the ops/sysadmin realm. I picked up my UNIX chops through installing bare-metal servers, configuring BIND domains, Apache, Sendmail, etc. Junior dev tasks. Now... why would you run your own DNS? Make an API call to a provider, automate it, and scale x1000. Manage a giant fleet with Ansible or Puppet... great. Now, we go heavy into containers. Great.
But, I haven't met many people who were very good with containers or Puppet who didn't first have 10 years of basic sysadmin. But, those tools have obviated the need for paid entry-level jobs getting that 10 years of basic sysadmin knowledge.
Our formal education system doesn't help. I look at the computer classes on offer at my local Community College and weep. 3 hours of C++... for loop and data structure... write some itty-bitty bit of code. Great, the fundamentals. But, that's all they ever get. What I need... check out from Git, read a third-party's API definition, and add a little function into an existing large codebase based on some huge framework. Oh, and/or write a test for that addition too, please. We're finding that the bootcamps (at least, the best of them) are more connected to real-world needs than most US colleges and universities.
Junior developers, especially out of college, will break more than they fix for the first ~4 years. Why would a company want to shoulder that burden, just to have the self-absorbed millennial believe they're getting screwed over the entire time because they're so special and leave the moment they start to break even? The only junior devs worth hiring are self-taught teenagers - formal education and code don't even mix, it's just brainwashing of impressionable youths with Java development standards nobody in any productive (e.g. non-educational) environment would be caught dead using plus a generous helping of extremist liberal political ideologies which create intra-office strife when your ideal employees are a bunch of tech-absorbed autists.
I recently retired (as a senior developer) from a very large technology company that, in recent years, pretty much ONLY hired "junior developers". "Recent College Graduate" was the term used, and even then it was difficult to find promising candidates. The company also "strongly encouraged" hiring of women and "underrepresented minorities" (that is, not from India or China). I was not a hiring manager, but I did interview candidates and reviewed CVs - nearly all of them were from foreign-born applicants.
Yes, the senior people such as myself were expected to train the newcomers, and we did, gladly, because we wanted there to be continuity in the product development. In my conversations with peers at other firms, it was largely the same - junior programmers were much easier to get hired than senior ones.
If I could offer one piece of advice to aspiring software developers, it's to look outside of Silicon Valley. There are lots of great opportunities at companies with offices in the south, midwest and northeast. We were not looking for specific skills, other than being familiar with C or C++. (None of this new-age Python or R crap...) Nothing you learn (other than basic programming) in college is directly applicable to the real world of commercial software development - we'd teach you what we needed - but finding people willing to move outside of the west coast comfort zone was very difficult.
That said, we did find really great junior people who are well on their way to becoming the senior developers of the future.
yep all want existing sec clearance (in addition to other certs like A+ security).
Its a joke, a complete chicken vs the egg problem. Certs like A+ cost $$, not something your going to get when your looking for work or "junior" level.
I got the sense those positions are either for military vets only or purposefully exclusionary to keep the industry as incestues as possible.
Junior developers generally need good specs, narrow goals, well specified tools, well-defined tests, etc.
And those are *exactly* the sorts of tasks that are very amenable to out-sourcing.
It's pretty hard for companies to justify spending $60K on a junior developer, when they can purchase the services of someone with roughly the same skill set for $10K and get fairly similar results.
Of course, foolish companies feel they can also replace the $100K developers with a $10K developers, but that generally ends in tears fairly quickly.
But on the senior level companies complain they can't find good developers.
I'm a senior developer. Here's the problem as I see it in the senior recruitment arena: The majority of company HR departments and recruiters are bad at recruiting senior developers.
The modern tech landscape is filled with hundreds of different technologies technologies and tools. HTML, CSS, Javascript, hundreds of Node modules, PHP, Ruby on Rails, Linux, Windows, OSX, C++, Java, Python, Go, Rust, Perl, Git, Agile, Waterfall,.... the list is immense. No two companies use exactly the same tech stack but HR's job postings ("Required: <specific list of 18 technologies>") indicate they are filtering for someone from a company that does. It is reasonable for employers to expect that new technologies can be picked up on the fly but employers either don't seem to recognize this or are demanding someone who is going to be productive on hour 1 of their new position.
Another problem is that many recruiters and HR people think in terms of "years of experience" with each technology. This is a rather meaningless and often un-quantifiable metric for an engineering job. Example: I use Perl maybe once a month in the job I've held for the past 11 years, but only for a day and to write some "run once, throw away" type of script. I've known Perl for 20 years. How many years experience is that? There's no standard answer and no way to answer in "years of experience" that doesn't involve a lot of explanation and make the answer useless for comparison purposes - but someone who says they have 20 years Perl experience passes HR's resume filter while the more honest and nuanced answer does not.
Successful tech companies do not care about finding an exact match for their tech stack. They look for problem solving skills.
When I can hire an experienced foreign worker for the same amount?
“Common sense is not so common.” — Voltaire
The newer guys at my company wouldn't shut up about Amazon Lambda (not to be confused with actual lambda functions). No matter what the question, their answer was always "Lambda!"
Tiring of "arguing" with them all the time (shooting them down), I eventually let one proposal proceed to the point where they scheduled a meeting to discuss how to move a certain project to Lambda, with management present. It was a process that handles processing a data feed from Microsoft. In that meeting, I didn't shut them down right away. I let them talk about the many benefits of Lambda vs the current system, mainly scalability. And ... scalability. Yeah pretty much just scalability. After they pitched it pretty hard, I asked "so the main driver of this, the primary reason to take a couple of weeks to rewrite this using Lambda, is for massive scalability, right? It could run thousands of times per second, right?" "Yep, that's the great thing about Lambda", they said. "Our current implementation can only run about once per minute, right?", I asked. "Yeah, the current code takes a minute or so to run". "And what it does is process the Patch Tuesday data which comes out once a month, right? We need to run it once a month?" "ummmm....". "We need to scale in case Patch Tuesday starts occurring thousands of times per minute?"
After stammering for a minute, one of them piped up with a great answer "we'll be able to parse more feeds, from other sources!" "True, that might be good", I said. "Our current system does four feeds. It probably can't handle more than about 500-1,000 feeds. Over the last six years, we've added a total of four feeds. How long do you think it will be before we have more than 500 feeds and need something more scalable? 25 years? 50 years? 200 years? Should we plan on building something that can handle 500 feeds and schedule to that project 50 years from now?"
I haven't heard a word about Lambda since then.
What I HAVE done since then is found a good pattern to maximize the productivity of the team, seniors and juniors combined, while making my job more fun. Some trivial problems the juniors just handle. Anything that might benefit from a senior developer's attention, I look at at make some notes about generally how it might be solved, and any traps that may be lurking. I might include a link to a certain third-party module that may be useful. Then the junior person has my notes pointing them in the right direction. At each morning scrum, I remind the team that I *love* helping to solve problems and helping people understand things they are having trouble with. So they reach out when they hit a wall or need help choosing between two options. Then when they finish the task we do code review - I, or another Senior, looks over the code and makes suggestions as needed. The junior guys handle the details of actually implementing the ideas I suggest. They write the unit tests. They fill out the change request forms. All the bureaucratic red tape is theirs. It works great. I can guide five to ten times as much work as I could do myself. Their code isn't quite what mine might be "in the small", but the approach they use, the overall design, is either what I suggested, or something better they found. Code doesn't go to production with glaring errors that would be obvious to me, because I've looked over all the code, and made a unit test policy. It works quite well.
So junior devs work out nicely in my system, IF they can do one particular thing right - know when to ask for help. Don't ask me AGAIN the same thing you've asked me ten times, knowing the right answer but just lacking confidence, and don't go charging ahead when you have no idea wtf you're doing. Ask when you need to ask, and not when you don't. If they can do that, a team of junior devs and senior devs who have a solid system of working together can be very productive, multiplying the benefit of the Senior dev's experience. My company also isn't paying me senior salary to fill out change request forms and crap. The juniors can do that, based on the documentation that I wrote for them.
When I came out of school, I had theory and the experience of writing (on my own) a compiler for a largish subset of Ada 83, a cross-assembler, a couple of device drivers, a few minor device firmwares, and various assundry other useless classroom exercises. That was enough to have put me on my school's team for the ACM regionals. As a Computer Engineer, I had also designed and constructed devices and could quickly make designs without having pre-made boards like Raspberry Pis in existence. But the reality of the difficulty of accomplishing a design that also met reliability, manufacturability, and other real-world goals had not yet hit.
Within days of starting work as an Associate Engineer in Avionics, I understood that I had gone to school from ages 4 to 21 to get the learner's permit that would allow me to start learning how to design and program real-world systems. It took about three more years of 90 hour weeks with unbelievable financing and toys (the lab I was in probably had over a billion dollars of hardware) to play with to reach a level that I would consider a competent systems engineer.
In that day, virtually everyone spent their first years in corporate environments that gave you a year or so as an Associate Engineer contributing nearly nothing and two or three years as an Engineer barely breaking even in the contribution to project versus cost of mistakes equation before becoming a truly useful Senior Engineer. If we've lost that level of corporate training to season the college output, we might as well quit.
They just don't call them "Junior Developers" any more, it's considered demeaning. Just like we can't call people "janitors" or "secretaries". In IT we call them things like "Network Administrator 1" or "Systems Administrator 3" to create pay bands and allow for personal professional growth. We use a matrix to tie things like traditional education, industry certifications, years of professional experience, annual evaluations and tenure with the organization to move them up.
By the way, I have never heard of "fizzbuzz", so I googled it. Top response shows basically what is needed, which is how I would handle your request if I was a programmer. Now that I know about it, I'll just memorize the four or five methods they showed in various languages
I'm pretty sure memorizing four or five implementations of FizzBuzz is a lot more work than simply coming up with a solution to the problem using your basic programming skills -- assuming you have basic programming skills, of course -- which is the point of the exercise. Sounds like FizzBuzz has become too well-known to be effective anymore?
I don't care if it's 90,000 hectares. That lake was not my doing.
So basically, you're not looking for junior positions. You're the problem the article is talking about.
I looked at Fizzbuzz and, given 5 minutes, I could probably come up with a similar solution as the top answers provide. It's certainly not inclined towards elegant solutions at first glance, though it depends on what you prefer in your elegance (if you want lean runtimes or lean code). But it looks like a first year programmer problem, not something that I would be satisfied in qualifying me for a position with that company.
Why would I code fizzbuzz? AnguNodePy has a standard Jizbag for that.
At the bottom of the
Sorry mate
Sorry mate, but you're not getting it. What's the weirdest list of tech-sounding things you personally are qualified to do? Assuming you're not in the USA, make a list and send it to me. I'll turn the list into a job description that I will advertise with the help of my immigration attorney consultant. If we do it correctly no one will be qualified to to do the job but YOU. If by some weird coincidence a US citizen shows up who does meet the same quals, I'll withdraw the job posting and change the quals ("...we're looking for an Algol developer fluent in Elbonian who knows how to ferment kumis...").
Maybe there aren't a lot of companies that do this, but at least one did.
My company explicitly states that it's our job, as senior developers, to farm the crop of new junior developers. And FWIW, we've seen enormous success from hiring inexperienced (but talented and eager) new engineers and mentoring them in the ways of our world. The main difference between me and a new kid out of college is that I've made a lot more stupid mistakes than they've had time to. I share my experiences with them, and they share their excitement and willingness to try new things with us. If I can play a small part in helping them graduate to a senior role - either here or elsewhere - I'll consider it a personal accomplishment.
We did our time as juniors. Now it's our turn to help the next cohort learn the ropes.
Dewey, what part of this looks like authorities should be involved?
Decades ago, when the Earth was young and we slew the dinosaurs with our might slide rules, I attended a Digital Equipment Corp symposium. There was a Q&A session there with the leading lights in real time device driver development, including the maximum leader of device drivers, Ralph Stamerjohn. During the Q&A, a user in the audience, concerned about training new real time driver writers, in environments where mistakes can be deadly (he worked with industrial robots)., asked "What should be done with new device driver programmers?" Ralph Stamerjohn grabbed the mike and said "take them out and shoot them". From what I've seen of new driver writers, his advice was spot on.
There is no God, and Dirac is his prophet.
Lots of software managers are looking for "rock stars" for their teams. Despite the behavioral facts: - rock stars tend to be in-your-face-public with their ideas (prima donnas) - they show up, then trash the environment (prima donnas, again) - leaving a total mess for everyone else to sort out. And if you are the 'everyone else', you get downgraded for not being 'a rock star'. - the hiring criteria seems to be not what you know/have done AND delivered, it is how well you take their tests, how arrogant you are during the interview, and how well you take the tests when the interviewer did not read your resume. This is even more difficult for a Junior developer without a PhD, or are a bit more humble. The interview process can be intimidating just out of school. Candid suggestions: unless you have a PhD or a pile of patents as sole inventor, don't waste your time interviewing for software with AMD or NVidia.
Last year I went to a job fair, and I got one interview out of the batch of 15 booths that I hit (out of 25 or so that I marked, many of them weren't there or had misrepresented what they were there for). I guess I didn't match what that company needed, I didn't get any further than that interview. Investing time in a job fair takes a lot of my energy, and with that kind of outcome I'm more demoralized about attending future ones. I'd rather just cold submit resumes to online job applications, I can handle 50 of those getting 1 or 2 interviews, than 15 face-to-face encounters where I pour out my soul and get little to nothing.
Worse, I just get told to apply on the website or get the card of the recruiter, like what was the point of showing up to the job fair anyway?
Please point me in the direction of your company!
Imho
Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
Taking on a fresh developer takes a lot of resources - not only do they need to learn company routines, all the tools, how to work with teams and how to actually do development in a non-school setting, but they also need to learn how to actually work: Show up, what's not acceptable for taking days off, how to interact with all sorts of internal and external stakeholders etc.
As the average time a developer spends before switching jobs decreases - apparently Job Hopping Is the 'New Normal' for Millennials - the commitment from companies will go down too. Why spend a lot of time and resources to groom someone if he's probably going to leave anyway? Why not just get someone who's past that in the first place?
One thing I've noticed lately seeking employment related to my degree is this inane requirement to have a boatload of experience in order to qualify for a entry level/junior job:
Randomly
5+ years of IT experience
5 years of experience with some high end networking device no college or university is going to let a grubby student get close to
5 years of handling network device's management software
10 years of experience with Windows Server 2016, supporting 100+ users
If you meet at least half of the requirements, talk to us!
I could be wrong, but it's almost as if the company is looking for entry level for them and not actual entry level or junior anything at all.
PS I always make sure that I praise the Junior's work in a team meeting, rather than taking credit myself. They obviously wouldn't want to do the grunt work while I took the credit. Conversely, when I very much direct any praise their way, they often feel the need to "set the record straight" by pointing out that the cool thing was my idea. "I just had the idea, YOU made it actually work", I'll reply. I suspect it won't take too long for our new project manager to notice a pattern there. :)
On a different note, my initial post may have sounded arrogant. I'm not the best programmer in the world. We're ALL the biggest fish in a small pond, if you define a suitably small pond. When I'm working with the main Linux kernel devs, I'm the junior. Working on Linux kernel raid, I asked Neil Brown for guidance and certainly he (and others) reviewed my work. I'm a tiny guppy in the kernel pond. I happen to be "the biggest fish" (most experienced) at my particular office. If I went to work for Red Hat, I'd probably report to Florian Weimer and I'd be a guppy again compared to him.
This is partly an unintended consequence of job mobility. In the old days, you joined a company and stayed there your whole career. It made sense for them to hire junior people and invest in training them. Today people move around too much for that. A company hires a junior developer, spends a lot of money turning them into a senior developer, and then they leave and take that investment somewhere else.
It's a tragedy of the commons. If every company invested in junior people, the whole industry would benefit. But in that situation, any single company can get an advantage by only hiring senior people. They get the best developers and don't waste money on training. So every company follows that strategy, and the whole industry suffers.
"I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
just copy and paste the full job description in white text at 1pt in to your resume at the end.
there are other visa programs for getting the best and brightest. H1-B is specifically to fill worker shortages in order to improve the over all economy. The argument goes that workers will not be displaced and the increased economic activity will help them.
In practice what happens is that the rich and powerful stop funding schools and training programs (since they have a supply of cheap, already trained folks from overseas). If you've got kids this is a big part of why their college costs $150k from a public University. It also depresses wages.
The H1-B program needs to end. No amount of reform can save it. It's intended purpose was always a lie.
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
The "Geez, wonder why" part is a little silly. It's not like people don't hire junior devs or that there's not enough open positions. It's the actual reality that there's a million entry level devs, including a lot of very, very low level ones (you can thank universities that cut corner, and crappy bootcamps, on top of the "self taughts" who really aren't, for that) flooring the market.
You can only train so many people at a time. The majority of people we hire at my company are entry level and co-ops. In a single cohort, we can easily have 25% of our software engineers be entry level of some sort. And we keep doing it. Still, we get an absolutely insane amount of applications (hundreds per day, and we only have 250~ engineers). We need these folks to gain some experience (or hire more senior engineers laterally) before we can take more in. That takes a while, when the ratio of applicant junior to senior can literally be 1000:1.
Not dead yet. The Junior is in the basement building an EMPIRE :)
[($)]
Right, that is my point. It isn't some arcane situation that only experienced programmers would know from similar experience. It is a rather strange yet simple task.
As I mentioned, I am not a programmer, but I have had programming classes going back to BASIC in grade school, RGP in high school, COBOL in high school and college, Pascal thru Delphi in college, C++ class at some point with a smattering of self-paced (in 24 Hours (yeah, right)) books. I haven't touched Java, Perl, or any of the other 'newer' languages, because that's not my occupation. But if I was fresh out of those college courses I could certainly make a script to return fizz or buzz as needed. Even in BASIC it wouldn't be too hard.
If you think I voted for Trump because of this post, you're wrong. I voted for Dr. Jill Stein of the Green Party. Again.
> If they hit a problem, I'd tell them to try to find the answer on their own for maybe half an hour, then come and ask.
I could probably do a better job giving people guidance on when to ask and when to keep trying themselves. Also encouraging them to sometimes try asking each other.
> Get their head around our application, source control, red tape, etc. Initially, every task I assign to them takes more of my time to explain and review than if I did it myself. Maybe I'll try to explain what I mean a couple of times
You were probably addressing two separate things here, but it occurs to me that we sometimes spend time explaining source control, red tape, etc. At a company I owned, and again at my current employer, we documented all that stuff using a wiki. I was actually a bit annoyed when my then-new boss wanted to spend so much time writing wiki docs for so many things, but it has paid off in short order. At my company, I told people "if you need me to explain something for you, it might be a good idea to make notes in the wiki." Not always, of course, but often enough, because there will be another new in six months.
Of course, his idea with the documentation might be that I would be documenting myself out of a job - writing down all the stuff that the cheap people will need to know so they can get rid of the expensive people. Hopefully the bosses see that the less-expensive engineers are a lot more effective in combination with an old guy who is practicing effective teamwork. I believe that's the cheapest (most efficient) way in the long run. I'm trying to make it so, and make it show.
And if he does actually deliver working code, which is a big if, what's to stop him from turning around and selling it again to your competitors or going into business for himself.
Sure. so what. it happens. You charge him with a crime. He gets deported. And you play some accounting games to help offset the loss of trade secrets. If your company depends solely on a project you would have gave to a junior developer then you probably don't deserve to exist as a company.
The Indians and the Chinese don't give a flying fuck about US laws
Most embezzlement is done by US citizens that are senior staff.
“Common sense is not so common.” — Voltaire
There is a simple solution to motivate Seniors to mentor Junior programmers. Have a cap on the aerage salary for the programming team. If there are no less paid junior programmers some senior need to get fired to get the average down.
Voila problem solved.
Now you may say you will move to a differnt company but the whole industry is doing the same
You will say the work will not get done. Nope it can be done by outsourcing companies who do have senior devs invested in the success of juniors.
It just may happen that with the breakdown of society in the US , where everyone is out to get their own, such companies might be based offshore
**Life is too short to be serious**
There are no 10K programmers. Programmers in India are billed at 25-30 dollars per hour so around 50-60K. Its the benefits which prevent hiring junior developers at 60K to do routine work. Fix the Healthcare and Housing shortages and companies can again afford to hire junior developers. Currently companies hire junior developers just offshore and when thoe folks get good enough the companies bring them over on H1Bs. If the govt was to do a system like Germany where the govt pays part of the salaries of junior apprentices companies could still hire junior folks in the US.
Till then its H1Bs or kids who went to do startups out of college and survived on ramen for a few years while gaining experience who are available as mid level devs and junior devs will be offshore
**Life is too short to be serious**
They figured this one out and will down rank your score. Also the program looks for same description in each job
http://saveie6.com/
Abusive labor practices FTW!
Thought this title was the start of a murder-mystery. My guess: Richard Stallman, in the library, with the lead pipe.
With people readily jumping between employers, the investment of a company to mentor a junior developer will likely not pay off. So you try to hire the people you need now, not the ones you need in the future. Increased mobility is also a consequence of more standardized technologies and development processes for "bread & butter" development like setting up web sites.
Whereas I would speculate that before people stuck longer with their jobs, so that if you took on a junior they were more likely to stick around and become an efficient senior. Or if you work within say nuclear plant control software, which would be more specialized and where you get paid for that specialization, you are more likely to stick around - plus you basically have to be taught on the job because it involves proprietary or classified stuff that you cannot learn elsewhere.
For a society and for the industry, not hiring and mentoring juniors is a really bad idea. However, this really goes back to game theory. You cannot expect an individual company to behave in the way that is best for the whole group. Which is why if you want to fix this kind of things, then some sort of regulation or intervention to shape the job market is required.
Who Killed The Junior Developer?
Professor plumb, in the kitchen, with the rope. Do I win?
... recruiters. The way a programmer, or any other worker, is recruited by commercial recruiters is always aimed at the highest level of certification.
Bach says it all.
In the past, the new grads were a lot more prepared. There was a lot fewer of them, but the demand was lower too. Since dot-com boom the schools of various quality produce more and more junior developers like pez dispensers, however the quality of education has dropped. A lot of programs don't even teach what a pointer is nowadays (heck, I had HR at one of my past employers - a very large software company - tell me to stop asking pointer questions as they showed up as "most stressful" in their post interview surveys). So, post a junior embedded developer position today, and get 2,000 resumes a day or two later, thousands more in the days to follow. They all claim to know how to program, all have the same courses on their resumes, but a whole lot of them when presented with "what is a pointer?" question they freak out and scream "discrimination" or some other social justice term of today's times. Weeding out such folks from thousands of resumes is next to impossible - no work experience and past projects to distinguish between them. It is much more efficient to pick good schools, hire interns from those schools, then fill the junior developer roles with past interns. That is why you often don't see the junior positions posted externally, they are usually filled with prior interns.
PS> Before any of you get offended because you are, or know of, very capable new-grad programmers; of course they exist, they simply get lost in the sea of mediocre or plain horrible ones.
Fizzbuzz isn't a selection test, it's a deselection test. You don't ask a candidate to implement Fizzbuzz to show you that they're competent, you ask it to show that they're not incompetent. It filters out the people who wrote '10 years C++ development' on their CV but don't actually understand for loops and if statements. Anyone with more than a couple of weeks worth of programming experience should be able to do it.
The problem for people hiring is that a lot of people that make it to interview can't - and if you can't implement Fizzbuzz then you're not going to be able to write any nontrivial software.
I am TheRaven on Soylent News
>>Seriously, you have 36 servers and manage each one individually? That's not the most efficient way of doing things.
Yeah, true.
The most efficient way is to put it in the cloud and let Junior Hackers manage it instead.
They're free, so it must be very efficient.
aaaaaaa
The timeframe of the newly minted idiot, I mean "MBA" is the next quarter. Everything in their world is defined by numbers on a spreadsheet. Nobody is going to get into risky, costly things like training developers. Spreadsheets can (but usually don't) contain employee loyalty, corporate knowledge, customer goodwill, marketplace reputation or dozens of other not easily quantifiable factors that determine markeplace success.
MBAs like it easy. Really easy. Besides, they know that in a year, they'll be gone and someone else will get blamed and have to clean up the mess.
Please do not read this sig. Thank you.
Putting up a post for a new college graduate, or junior developer is considered to be an age discrimination issue. Most new graduates are under 25 years of age, so by asking for that level, you are apparently telling the old guys that you are not interested in them.
HR has advised that we just post the position, asking for 0-5 years experience (how is that different?) and don't increase the pay if an over qualified person applies.
This is based on some court ruling I hear.
You can lose something that is loose, so tighten the loose item so you don't lose it.
+1 This. Why are you posting anon?
Programmers in India are billed at 25-30 dollars per hour so around 50-60K.
Really? I've been on the outsourced side of this, and we were told that if the off-shore team had to repeat the work three times to get it right (which is not all that unusual), the company was still saving money.
And this was in Canada, where the health insurance cost was pretty negligible.
Also, no H1B's, as the company ran it's own shop in India.
At $25-30, it hardly seems worth it, given my observed failure rate of off-shoring projects to be about 50%.
This is really comical to me.
The contractors complain they can't get qualified people, so, they outsource this work to foreign workers to fill the role. This is of course at a cheap rate and on the govs dime.
As a born citizen our passport should at least get a foot in the door for jobs like this. Basically what's happening is the gov is paying for a background check, but the loophole is its paid if its a foreign worker....
Thanks for this and the previous comments. Just what I needed to hear. Quit my company of five years recently, had enough of the constant stress because of ego/power tripping and dysfunctional communication.
Really hoping to for a better experience in my next gig. It's nice to hear a reassuring description from the trenches =)
What do you do and in what geographic area? I've had "good luck"* with all of my employment. If by chance I happen to know of a company in your area that would be interesting.
Certainly luck played a role, but I also turned down offers after investigating the company culture, and I think I've trained my bosses and those around me regarding what kind of working relationships I flourish in.
You answered your own question "the company ran it's own shop in India.".
Captives suck at the outsourcing. People who are sent from Canada to run the captive are only there to enjoy the expat lifestyle.
Local managers are are looking to get transferred to the home office. Noone is interested in building talent.
They will hire bottom of the barrel to show short term cost savings or pay premium rates to keep the work going on as long as they dont have to do the hard work of getting offshoring to work.
At 25-30 dollars per hour an outsourcing company can pay 10 dollars per hour to its developers (including benefits) Spend another 10 on management/supervision, sales, training and have 10 dollars as profit. These are averaged across 3 years. The first 6 months there is no billing and the next 6 months people are generally unbilled buffers. They only start billing in their second year.
The problem with captives is the huge salaries given to those sent as expats leave the budget lopsided
**Life is too short to be serious**
Ads for entry level developers (read: under 25) with 15 years of experience in 5 year old technology and they'd REALLY be happy if you had some familiarity with their 30 year old legacy systems.
I'm not sure if this is the same thing they are talking about, however it has to do with the general shift I think in how organizations hire.
I'll provide an example. I've been around a long enough time I guess you could call me pretty senior, at least insofar as I have knowledge no one else does as this point and am kept very busy because of that. One of the problems with many of my project is that I simply lack the time to dedicate to all of them as much as I should. One of the constant issues (and personal annoyances) I've seen over the years, is that every so often management will realize that I basically have too much work, and not enough time. They are also occasionally aware that if I get hit by a bus walking to work one day, apart from being a bit sad, they would have more than a bit of a problem with my sudden departure and the impact to our systems. So every now and again they assign a new hire, or backup, or some such junior position to try and mitigate some of those issues. I will then have to expend quite a considerable amount of my time (which is then impacting projects and my general sanity) to bring these people up to speed, train them, and get them the experience they need in order to have the knowledge necessary (which it would be less work for me to do it myself than handhold someone else to do it, which inevitably I am going to have to pick up the pieces anyway as I'll get into). However then what happens is because the organization doesn't do a good job to retain said individuals they eventually move on, usually to better positions, sometimes with little to do with what I got them up to speed on, leapfrogging up the corporate chain or elsewhere. Which to me is frustrating as after this happens over and over again I feel like I am just wasting my time which I could be spending elsewhere to basically help someone else's career options. Meanwhile we are left with the same problems, rinse repeat, over and over again. No one sticks around long enough that having that junior staff doesn't really help your future as they are gone. In the long ago past perhaps the corporate job market was such that they made a consented effort to retain and train staff. However now it seems that everyone simply just bounces around from position to position that it hardly seems worth it. In the end the organization is paying me to train someone who is going to leave anyway so why bother. Might be more effective to simply have me focus on my projects, and if in the unlikely event I get hit with a bus, just hire another senior guy and hope he can pick it up in a reasonable amount of time without too much disruption. Never mind the revolving door of management which can just play musical chairs with issues like this and hope the next guy gets it when the music eventually stops...
a) HR departments, who know, literally, *NOTHING*, and don't care to learn what the organization does, or what they're looking for..
b) I started programming in 1980. I was hired as a sr. programmer I. A few months after, I asked my buddy there why sr, and not jr. He told me they'd gotten rid of jr programmer jobs a couple years before... because jr. programmers were eligible to join the union.