If there was some formal, or informal understanding that candidates "trained on the job" would stay for a few years, I think companies would be more open to building junior devs.
Does anyone have ideas about how to make this work?
Does your friend give them actual, meaningful raises as they grow? Is he actually paying competitively to begin with?
Because I think if you have this pattern that consistently, it's really likely that either you're underpaying to begin with or your raises suck or are not even present.
I love working at small companies. It's by far my preference. But none of the small companies I've ever worked at offered anything like the comp and comp growth that the big corp I currently work at does. In fact, almost all of them offered me near zero compensation growth over time. And in real dollars that effectively means negative growth.
I think what's going on is that after a year at any job you start to see the problems with the code base, and it starts to get repetitive. It will be like that both in big-co and small-co, but in a different way. In small-co you can have a much more freedom, but you reach a plateau of the new things you can learn. In big-co there are bigger problems and more challenges, but you're part of a soulless machine that just wants you to do your job and not ask questions.
Not having experience the soul-crushing big-co life, the brough-up-to-speed junior hires don't appreciate the deal they have, and want to explore their options. It's a rational decision, and come to think of it I'd probably do the same. The code is always greener on the other side... Who wants to be like "no I'll stay here and do 3 years of the same things that I'm really good at now and delivering value for my employer."
From the employers's perspective though was it worth it? Time/energy invested to train them vs. maybe 6mo or 1 year of useful coding contributions.
This is only half of what I asked. What about the raises? As someone in another thread chain pointed out, the expected raise from job leaping is maybe 15%. How did the raises your friend gave compare to that?
I'm not saying they have to meet it, but if you're sitting there doling out 1-2% raises per year people are gonna leave when they get what they need from you.
Also, small companies (frankly, especially 'web' companies) are not even remotely immune to demanding people just "do their job and not ask questions" or forcing their employees to sit in the same box for 3 years doing the same thing. Often the lack of room for career growth in perpetually small companies almost demands this.
I find that small companies are often much worse in all these metrics. As a jr employee they’ll never rise to chief architect - your friend, the cofounder, has that job. And is never giving it up. Plus thanks to cash crunch, making shortcuts to deliver is common in small companies. Especially since they don’t have a reputation to protect. So quality? Well, maybe.
I recently took 9 weeks off from my bigco FAANG, job to help raise my baby. After the company’s health plan was on the hook for a million in costs (baby born prematurely, spent 3 months in hospital nicu). At no point was I worried about my job or company. I’m happily back on the team in my job cranking away and being productive.
Now tell me my experience would be better in a 12 person startup/shop. I dare you.
Ps: in terms of impact, well I work on a small thing in a sense so only a few million people directly use my product. Big companies have big impact. Lots of guard rails which is nice to no longer make the same basic mistakes over and over.
As usual, this is the craziest part of the comment to my European mind. Your healthcare system spent somewhere around an entire lifetime of effort for something that, while relatively dramatic, should still be quite routine for a sophisticated medical organization!
The infant is also financially liable but likely uncollectable. The baby's life may or may not be ruined depending on where the US goes w/r/t health insurance coverage for pre existing conditions.
In the US only the wealthy ( millionaires ) are safe from medical bankruptcy and even they can get taken down by some issues.
I mean, can you even imagine other areas of life where every person you purchase from attempts to screw you over by demanding 2x-10x of the reasonable fee unless you had the information to be aware of it? It would be impossible, because everyone would just take their business somewhere else.
But you can't exactly say "oh, I'm not willing to pay my life savings for this, I'll just take this 3 months prematurely born baby to the shop across the street, or maybe get it done in six months time instead, when it's more convenient.".
Considering that only few people get to the top title at a big company (I think there is ~20 Technical Fellows in Microsoft world wide), I think that is a fallacy. If you work at a small company that grows, you're far more likely to become a chief architect.
> Now tell me my experience would be better in a 12 person startup/shop. I dare you.
Only applies to the US. EU citizens don't really have to worry about that.
Senior/Chief Architect is an engineering/production position, with limited scope for game changing R&D. In a typical 10-20 man shop the position is usually taken by the CTO, who will be usually be in it for the long haul for both financial and technical reasons.
Very, very rarely a startup will turn into a unicorn with hundreds or thousands of employees. You can get some way up the ladder when that happens.
But the odds are against it happening in the first place. And at the higher levels you'll still be competing with talent hired from outside.
This is so important, as a relativley junior developer at a 6 person web dev shop, the owner is the only other backend developer. I have no room for climbing, even if I get a job title upgrade or a raise, my responsibilities and the level I work at won't change. I will handle the day to day backend and the owner works on strategic choices. There is only so much impact I can make in this position
I'm reminded of this talk : https://www.youtube.com/watch?v=hER0Qp6QJNU around the 8m30 mark is the pertinent point, but worth to watch before that to get where his point is coming from.
The first job refused to match the $48k offer. I’d probably still be there if they had, a decade on. Awesome place, awesome people, but... student loans and wanting to not live in a dumpy apartment won...
Startup -> Medium sized company
I didn't have to move states.
Edit: I'm a college dropout too. Rapid learner so I learned a lot on the job at the startup. Did a ton of tasks nobody else wanted to do (devops, automation, performance, tests).
There is no local market, at least not in the long term. Once a junior developer has acquired some skills and experience they're going to start looking at other markets where their market rate will be higher, and being less likely to have attachments that make it harder to move they will find it easier to move than more senior developers.
But still I was being paid less than the job was originally advertised at, because of a missing qualification.
So I moved, yes. Pay people what they are worth to you, not what you think you can get away with.
Altogether, this is the best approach. The guys at two years and slightly more of experience have learned on the job from someone else and you can get them for relatively cheap vs. the huge opportunity cost of having your senior engineers mentor people if they don't want to.
The downside is I can't recruit off this user handle but c'est la vie.
And yes, the employer in OP's example should reconsider providing value through training vs straight cash.
My communication skills are my biggest flaw, especially around things like negotiating salary / talking about how I feel with the job. My technical communication is pretty fair, but I turn into a brick wall when we approach higher level meta conversations. I had plenty of opportunity and I wasn't mistreated, but being paid half what you think you're worth for a year with no change in sight really does a number on your confidence as a new player, and I never spoke up about it. I'll accept if that means it's my fault for not getting myself a raise, but I also won't feel bad about leaving after getting on the job training.
If you want to keep your junior employees, pay them what they're worth now not what they were worth 6mo or a year ago. Switching companies is just the only way to force companies to reset the memory of what your salary used to be and reevaluate your value.
That said, based on your other comments itt, that may not be the case in your example.
Took me less than a month to find someone who was offering significantly better salary, yet the consultancy seemed surprised when I told them. Suddenly the salary bands became a lot more flexible.
I shouldn't need to have another job offer to get offered pay rise in line with inflation.
We already know jumping gives on average a 15% salary increase every two years, so you just have to beat or match that.
Now people might still leave for more interesting projects, but you get one of the larger motivational factors out of the way.
People often leave because negotiating a salary upgrade is way harder than navigating an interview.
So, unless your hidden motive is to have cheap labor just write down in the contract that every two year the salary will increase 15% minimum, unrelated to objective bonus and all that bullshit.
The you have it. The secret for training and retaining talent in a competitive market.
You could argue that head hunted employees that's a good match for the job they leave for probably get higher salary.
The current job of a dev is more likely to be the first job for the dev (after job jumping it's never the first job).
Since the dev age pyramid is quite base heavy, job jumping is a indirect measurement of more experience.
Just being able to job jump is a indirect measure that you are sought after and that brings higher wages.
If Starbucks starts making coffee 3x as good will people happily start paying $12 for coffee?
Because businesses would rather have a person leave and then hire someone at 1.5x or 2x their salary than just pay the first person 2x what they were making the year before.
This happens all the time. Employers want to have 2x people at 1x prices, and that doesn't work for long.
This attitude introduces a skew where your workforce gets progressively filled with people who do not switch jobs. It's a dangerous outcome, to be managed with care. If you get stuck with those who do not switch jobs because they are too incompetent, you have a big problem. If you manage to get those who are competent but content, and not very concerned with higher earnings, you have the ideal result: stable, competent, performant team, with controlled costs.
When Starbucks entered the market here, their $5 coffee was about 3x the price of the status quo cup.
Also, if businesses can't pay the market rate for labour (by definition, the money the employee can get in an open market is the market rate) then they don't have a sustainable business model.
After two years, you’re essentially a mid-level engineer and the money you can command is way more than what a junior developer with two annual “raises” is typically paid.
Isn't this why most junior devs leave? Because they are getting crap junior dev salaries? Once you've trained them they are no longer junior devs. The market certainly doesn't think so.
In my first dev job, which was a fantastic job, some gatekeepers wouldn't give up access or tasks that I was better suited for.
I was always going to be a bit younger, always the junior guy on the team, despite the fact I had relevant education and, in my opinion, was probably better at the job.
Eventually I left and they were upset, but I didn't like being held back. Not everyone is like that though.
Nowadays I build and run teams. I don't do any real technical work unless I need to show a junior a working example on how to do it. I'd rather watch them learn and grow.
If they had an option to move up and work on interesting problems than I would have stayed.
I suspect many others are the same. The only people hiring juniors are the ones who can't afford to pay mid level devs and when the juniors become mid level what are they to do but leave.
Well that is your friends first problem!
For a smart fast learner your friend isn’t providing a benefit worth the cost of a couple of years of low job growth.
Your friend should look for candidates who are average learners, want a steady paycheck, and don’t want to do anything tech related outside of work hours.
Think of Japan, where changing job is like a lifetime event, training is graciously provided, since the firm assumed that your loyalty is guaranteed. Or in case of some companies in China, where they can sue you if you quit your job before the agreed years are met on your contract. Both seems undesirable to me personally.
Pay more. If they can make more money by switching jobs, you're not paying enough. They paid for their training by working for a lesser salary for 1-2 years, and it's not irrational for them to then want a competitive salary.
- Personal growth: Devs in that company were nice, but not stellar (I was the most "senior" one after a couple years), so I couldn't learn much from my peers.
- Nature of the business: I moved from customer service to product development, which is a personal preference.
- Money: The new place paid about 40% more.
Also; most people leave managers not companies. So if pay is right, and the people are otherwise a good fit, it might be company culture that pushes them out.
[0]: https://www.hrdive.com/news/when-an-employee-leaves-can-you-...
There are already many companies that lock you in contract in exchange for comprehensive training.
You could go back to the real apprentice (no modern apprentice shelf stacking mc jobs) route but in that case the apprentice signs for x years and you cant make them redundant - and you also not guaranteed a job after it finishes
Before leaving school you try to find a company that is willing to take you on as an apprentice for a four year contract.
Time is roughly split 50/50 at work in the company and specialized schools. The companies will cover the cost for the school, and pay a small amount to the trainee (~550$ first year to ~1400$ in the fourth year)
On average companies lose money in the first 2 years, but make it up in the last two for an overall win. Especially for programming apprenticeships, this can be quite lucrative for the companies.
So even if they leave immediately after the four years, it is not really bad for the company.
Though the majority of devs would be better of with a programming apprenticeship instead of an university degree in the first place. Only a fraction of devs work on these hard technical problems or complicated architectures that are actually engineering and not just programming.
Ways you can do it in germany: hire. After 2 or 3 months to see if he is a good fit. Give him a bonus to stay. The contract allows you for up to two years without issues, maybe three. If he quits earlier. He must pay back the bonus back (Valles Heilung des bonus in german, healing 9f bonus) after a few months he won't have a chance to get something better.
You also can increase the salary in a bonus. Which he eeds to payback if he wants to leave early.
Is that not possible in America?
If you intend to stay anyway or are not so keen on leaving, why should you say no?
It's similar to stock option vesting and that is very common.
But yes these types of bonuses are common, especially as stock options with vesting. More so outside of Germany as far as I'm aware.
Right to work means you can't be forced to join a union.
He is talking about payments that are conditional upon you staying at the company for a certain amount of time. Relocation bonuses and stock option vesting are a very common type. If the bonus is high enough, it makes it very unattractive to quit. He is exaggerating though.
They need (not just want, but need) progressively more and more autonomy, bigger and bigger tasks, more and more responsibility. It also helps when the company culture/management is such that they can talk openly about their preferences and dislikes. It does not mean they should get everything they want, but there should be no "punishment" for saying what they want.
Even if they leave, they will be back because most companies lack a unified culture with clear values.
Loyalty goes both ways. If you want someone to stick around, incentivize them to.
My sister and I are the only ones in our family who switch jobs every few years. Switching often seems to be better for our careers, though my brother has worked on some very interesting stuff. (All of us are in IT.)
Why is a startup in the early cash-poor stages competing for FANG-level people?
So, unless you want the economy consisting of a few dzaibatsu-style monopolies, the “loyalty first” approach to hiring is unsustainable.
And to be honest I hate having to look for jobs every 2 years. If someone offered me a job for life, job security, development etc, I'd take it.
Now I hear you, they cannot force you to stay in a company (slavery laws and such). Well, the way it was structured legally is that Nestle was loaning money to the individual for Nestle's course. Then the debt would disappear as long as you stay the right amount of time. Oh, and also it was mandatory to take the course for the role this guy was trying to transfer to.
Of course, the employee would study on the side while working the normal fulltime job and even get complains for missing 2 days for the tests.
If I recall correctly (but don't trust this paragraph so much), the training was internal but it was preparing for 2 external tests (once every 2 years).
I don't have a problem with it myself - it's simple to understand, and the company is giving you something of high value, and retaining your services for a minimum period in return.
I read all the docs carefully and I wasn't convinced by the course content so didn't take it. On the day the course was to begin, one manager pulled me to one side and said they really value me and would offer me a 8% raise—but I had to take it right now—he even had an amended contract and pen in his hand, open on the last page for me to sign then and there. I refused. I was seen as a bit of black sheep by management afterwards and sidelined.
Every dev that took it came to me over the course of the next few weeks and said they wished they hadn't taken it as they didn't learn anything they didn't already know and they felt like they'd been cheated. They could get out, but they'd owe the company something like £7,000 which gradually reduced each month over the course of the retainer.
It was a tactic to stem the flow on the revolving door that place had. The weird part is although technically and ethically it's by far the worst place I ever worked, I made so many friends there and the people were truly amazing.
Eight years later I'm still in frequent contact with several of them and we often reminisce and recall the crazy stuff that happened at that strange place on an almost daily basis. Looking back now it's almost comical, like something straight out of a Dilbert nightmare. But the stress at the time was immense.
Anyway, my point is that my response had made those assumptions, as that's the kind of arrangement I know is common.
I'm not sure this could work with normal raise-type compensation in the software world due to the difficulty of enforcing such a thing or clawing back money from people who leave early. The traditional way this was done was with pensions that ramp up with length of time at the company, but those are few and far between these days due to the overhead hit on financials.
First year I earned a low junior dev salary. Third year after delivering a few projects and company financials improving I received a 66% raise. Fifth year a 50% raise.
And I was not the only one. The idea of raises pegged to inflation seemed absurd in our company when based on performance and company income we could increase our salary by 50% or more every few years.
Sure we had one or two devs who came, trained up, got bored and moved on but by and large if you’re clear that salary increases are not always going to be single percentage points you get more longevity out of your employees.
Another part is that if you hire an inexperienced programmer, not only do they have lower productivity than an engineer with 2+ years experience, but they lower the productivity of at least one other senior engineer that needs to mentor them and bring them up to speed. I'd estimate that mentoring a new inexperienced hire would at least half the mentor's productivity for a couple months at least. If you hire someone that's already worked a couple years, that lost productivity was paid for by a different company.
Another observation I had is that the upwards mobility is easier in between companies than within the company. The sad truth is, most companies only acknowledge your importance when they are about to lose you. If they consider you are comfortable in your position, they have no incentive to promote you. So assessing yourself against the job market periodically is a logical and practical way to keep your career path in check, regardless of your company.
We hired several good developers who were more or less jr. After an average of 2 years, 4 of them left to go to Google, Facebook, Amazon and some company in Austria.
For me it was an honor, a couple of them even told me that, they had been applying to those companies before but could not get in, and it was after they got into my team and got some specific experience, that these companies wanted to hire them.
In some other fields, it is expected that a Jr person will be for a couple of years and then "fly away". For example, I know it is a normal path for a just-graduated finance/economics person, who gets into a VC fund to get experience, and after 2 years he leaves for an MBA in a "top school". I've seen it several times (with people from VC funds that invested in companies I've been). That is something expected and accepted.
Personally I don't see anything bad for that. Maybe the only disadvantage is the "know how", but it can be mitigated if you establish the right documentation and knowledge transfer processes.
Why wait?
But also, younger people (who are more likely to be juniors) want to get more experiences, find somewhere more suited to them, and have less tying them to a given location.
New guys are expensive (especially in time), experienced guys are valuable.
If I spend a bunch of money/time on new guys I have less to spend on experienced guys compared to the company that just spends it on experienced guys. So, the companies that don’t train new can pay experienced more, thus getting the experienced guys.
That is the theory - in practice it is a bit different.
It takes a lot longer to become a senior who can easily switch business domains and tech stacks than it does to skill up in a single business domain and tech stack combo.
Two years in house is easily comparable with 5-6 years on the market if you work in a complex domain and have a good training program.
Our team is about 70% guys who learnt from scratch on the job I think. We have very low turnover, and you don’t come to us if you’re chasing max compensation anyway, so we do not have those problems as much (we don’t pay bad, but you can certainly make more other places).
This is exactly what happens in the majority of companies, and they only hire seniors. Which is what prompted the OP to ask the question in the first place.
I'd guess it's more likely than not that someone who's learning lots and quickly will find that they're better suited, and thus more valuable, to a different employer than their first employer. It's not simply a matter of raising wages. It's getting a close fit of aptitude and interest with the work at hand.
Loyalty goes both ways and unfortunately most companies doesn't seem to understand that where I am from.
https://www.wikiwand.com/en/Transfer_(association_football)
Is that a thing in any other profession, paying for the training company/instituition?
Sounds like something a contract could fix.
But this is exactly not how it works. The only job I stayed 3 years where I had gaps, told them in advance, and learned.
Where would you rather stay: the job where there is no learning curve or where you can learn something new?
I think the reason is that decision makers want to minimize all their risk, being okay if the employees manage a fair amount of all the risk.
In software industry, the first job switch in 2 years seems pretty common and reasonable, and the dev by that time would be able to strike a better job offer not only for money but also better aligned with their self-interests.
From the companies' perspective, they might find such high attribution rate stays against their own favor, making providing necessary training uneconomical for them, both in time and money.