I officially mentored someone at my previous company and helped him move from a support tech role into a software dev position. It was incredibly rewarding.
But to play devil's advocate for a moment, isn't there something of a natural disincentive to level up one's employees in such a tight labor market? To follow the author's analogy, by mentoring someone, we're effectively "adding a fish" to the pond, and if someone else "catches" the fish, that effort is largely wasted. One might argue that if everyone put more fish in the pond, then we'd all be better off (true), but we have a standard collective action problem where the free riders benefit at the expense of the fish growers.
I see two (partial) ways out of this trap.
1. Pay more than everyone around you. (Obviously, not generally viable.)
2. Make the culture of your company so awesome that people will want to stay, even if you can't pay the most. Make mentoring/growth a central strategy at every level so people will see a path to grow.
>To follow the author's analogy, by mentoring someone, we're effectively "adding a fish" to the pond, and if someone else "catches" the fish, that effort is largely wasted.
Even more curious is that IT culture is basically that if you want to get paid what you're worth, you have to quit and go to another company.
So these companies put all this effort into raising a better developer, and then refuse to pay them what they're now worth and basically force them to go elsewhere.
It's not "what if they go elsewhere" under that situation, it's "when".
I'd argue that you don't even have to "pay more than everyone around you". Simply coming close to parity is enough to stop most people from going through the pain of a job search. But these companies don't even get that close.
The last time I switched jobs, I got a 40% pay increase. That's ridiculous. I even told the company I was underpaid and they asked if I could wait a year for a raise. I didn't even answer the question. I just walked away and started looking for a job.
They weren't surprised when I found one and quit.
And a couple weeks before I left, they put in a job ad for 7 developers, offering what I was making at my new job for each of them. I've been at this new job as a senior developer for 8 years now.
Could I make more? Almost certainly. But they gave me decent raises and have a good culture (almost zero overtime in 8 years) and benefits, and I don't feel like leaving.
I've worked for enough crappy managers that I know how much that affects my job satisfaction and work-life balance. I'm at a point where I'd probably (and, currently do) sacrifice 10-15% of my salary just to work for someone who is respectful and interested in my development and wellbeing. I'd bet others are like me, and if you truly mentor and develop someone, you won't need to pay Netflix-level salaries to retain them.
#2 doesn't work if the company can't get anywhere close to #1.
With no work experience, I was hired as a junior dev with a $40k salary, which I gladly accepted. A senior dev mentored me throughout the year and it was fantastic.
Coming up on my 1-year anniversary with the company, I was thoroughly enjoying my job, the people, and the culture. I was hoping to get a raise up to at least $60k, though, since I was significantly more valuable to the company than I was when I first joined. They offered me $50k.
I started applying for other jobs and got an offer for $90k and I accepted it. I still talk with my mentor from my previous job. He's pissed that his company won't pay enough to keep the developers he mentors.
IMO that devil's advocate argument is incorrect. There is no trap in working to increase an employee's skills.
If you train someone at work and level them up-- they're not in class 8 hours a day not contributing. They are working on a project.
All software mentorship is based around the idea of growing skills while meaningfully contributing to a project. Actually it's much harder to train someone without a project. I have never once in my career seen a scenario where a person isn't contributing and just learning skills.
After said project is done a trained person might leave. But an untrained employee might leave as well-- for a place that offers meaningful mentorship.
To follow the author's analogy, by mentoring someone, we're effectively "adding a fish" to the pond, and if someone else "catches" the fish, that effort is largely wasted.
The question is why would someone leave your company once you train them? If someone is more valuable on the open market than you are paying them, pay them market rates. HR compensation policies need to be in line with the market, not the old “we have a policy of not giving more than 5% raises”.
I’ve been working in development for a $long_time but I restarted my career about 10 year ago and my rise is about the same as you would see from someone just graduating from college 12 years ago. Out of the four job changes I had, two were partially because the next company was willing to offer me $25K more (not talking crazy west coast salaries here).
One other went out of business and the other because they decided “they didn’t want to be a software company” and they just wanted report writers a year and a half after I was hired as the dev lead.
1. Pay more than everyone around you. (Obviously, not generally viable.)
You don’t have to pay the most, but don’t pay so much under the market that everytime the employee sees a random job posting or a recruiter call they know they can make signifactly more just by picking up the phone/responding to an email.
2. Make mentoring/growth a central strategy at every level so people will see a path to grow.
I'd be curious to hear other possibilities.
That helps. But why would I spend a year a two “growing” at your company, when I could both “grow” and make a lot more money some place else?
I’m at a happy place where I work now, and I am decently compensated compared to the market, but even now if someone was willing to pay me $25K more, all other things being equal (work life balance, no travel, short commute), I would jump ship. But the only realistic way I could make significantly more is by going into management (not interested) or being a consultant (not interested right now).
People choose where to work, and money is only a small part of that decision.
Invest in an employee, give them meaningful and interesting work, and the resources to grow, and you will generate a lot of value that doesn't show up on the books: loyalty.
From the financial perspective, it is almost always cheaper to get more out of a current employee than to go into the market and find someone new.
IMO there are two types of companies: those that know how to develop talent, and those that only know how to import it. The former are often the ones that have a long bright future and create a big impact on the world.
> by mentoring someone, we're effectively "adding a fish" to the pond, and if someone else "catches" the fish, that effort is largely wasted.
This only holds true in a zero-sum game, which the economy is not. Improving the skills of employees actually makes the entire pond bigger.
A business that pursues a poaching strategy will not develop the practices to identify in-house talent. Ergo, you have a hard time understanding anything about employee performance other than you pay a lot.
When you are the one adding the fish to the pond. You know exactly what type of fish it is as it grows. Whereas the fish that you catch may be a catfish rather than a sockeye. The free rider problem is a real thing, but so is the market for lemons.
> But to play devil's advocate for a moment, isn't there something of a natural disincentive to level up one's employees in such a tight labor market? To follow the author's analogy, by mentoring someone, we're effectively "adding a fish" to the pond, and if someone else "catches" the fish, that effort is largely wasted.
Most good employees don't quit for at better job unless there's a dysfunctional workplace. Partly they don't know if there's better jobs, and partly it's just a lot of effort, but mostly because other companies don't know they're good employees. The labor market is a market for lemons. If you own a $2000 car that drives OK you don't sell it because other people won't believe it's any good.
What I have personally experienced is that since I had an awesome mentor, I've been willing to follow them along anywhere they go and which in turn helps the mentor to get into a leadership role since over time they are effectively leading a group of mentees.
> Make mentoring/growth a central strategy at every level so people will see a path to grow.
I have been following hackernews for 15 years. 20 years since I saw an stallman interview in local pc magazine, blown away by the intensity of the man. I am an artist. I love to read plt stuff and haskell lisp code, I cried over sussman lectures.. It expands my mind, finding ways to express my thoughts so that common people in my world can understand me better, for their sake. I dont write programs, a lot of the code feels unmusical, not ergonomic, my musical background made me aware of how unmusical a keyboard feels like. Learning functional programming has made me aware how most people use imperative chain rule sequences to generate their thought patterns. I would love to work with inspired people just building new ways to express thoughts. But I quietly read and try to translate visions and feelings into code. Writting linear sentences is becoming a drag. It feels as if the time is ripe to raise our conversations to a more constructive functional level. It is happening. It is a slow progress. I can't see myself working in IT because of business deadline material oriented approach. So I continue to quietly read plt stuff. I do not want to understand anything because the other is usually limited to a smaller temporal frame. I read code and apply different real life variables to it and see how the interactions develop within my interaction space. How would you mentor me? /rant
I don't think everyone leaves with the next best salary upgrade if you pay fair. Leveling up a junior should be rewarded in time. Part of the mentoring is to teach them how to fight for your upgrade, right?
Good culture is good, but no culture fits all personalities.
In the end you probably have to accept that some portion of mentees will leave and try to minimize the rate.
What I would be afraid of that grown up juniors may get stuck in their learning environment and remain junior for way too long.
I’m surprised there is not a compensation scheme something like what follows:
Setup: Bring on promising “apprentice” and have 3 year roadmap to reaching “solid individual contributor” status
- year 1: pay at market rate for standard recent college grad but payout 60% in year 1, 10% in year 2, 10% in year 3, 10% in year 4, 10% in year 5
- year 2: beginning of year give merit raise to full salary amount based on market rates but payout 75% in year 2, 5% in year 3, 10% in year 4, 10% in year 5
- year 3: beginning of year give merit raise to full salary but payout 90% in year 3, 5% in year 4, 5% in year 5
- beginning in year 4 get merit raise and receive 100% of salary cash that year as well as the 10% from year 1 and 5% from year 2
- year 5: includes 10% from year 1, 10% from year 2, 5% from year 3
If you can’t keep your employee after that, it’s on you, but they’ve def stuck around long enough to pay you back in productivity
(edit: I realize my math is a bit off but I’m on a cellphone on the move, you’re gonna have to mentally fix the math, but you get the idea)
> Make the culture of your company so awesome that people will want to stay, even if you can't pay the most. Make mentoring/growth a central strategy at every level so people will see a path to grow.
I think this only goes so far. There are better companies and worse companies, sure, but even the best companies have their issues and after enough time, most people want to move on. People also change, and what seems awesome to a fresh graduate may not be great for someone older, so it's always hard to keep everyone happy.
Pay, however, seems to be a motivator that keeps a lot of people in place (certainly not everyone, but a lot). I know plenty of talented people who feel trapped at their jobs because their jobs pay very well. It's common enough that there's a term for it, "golden handcuffs".
While a developer is being mentored and improving, they’re still contributing to the company for the same salary even though their market value is rising.
Eventually, without a raise in salary, they’ll move to a company that pays market value. So developers aren’t free riders because the aforementioned; the new companies are free riders because they pay market rates.
Edit: it may be a free rider issue if the mentorship / training is orthogonal to their tasks. For example, if Starbucks started to offer their baristas CS classes, it’d be a free ride for employees. But what are perks classified as?
> Make the culture of your company so awesome that people will want to stay, even if you can't pay the most. Make mentoring/growth a central strategy at every level so people will see a path to grow.
This is why company culture is so important. You may not be able to compete on financial compensation right away, but if you have a culture thats great, enables people to learn and grow and work with other great folks, its very attractive as compared to simply throwing more money.
Not to mention: many folks _want_ that kind of mentorship and culture. They desperately want to learn from smart, experienced developers.
I tend to mentor people I see as promising. Those with leadership potential. Folks I see as future peers with similar values (ethics, quality, teamwork).
If they get far I have a good reference or referral in my future. In the meantime I can offload some of my troubles onto them and worry about other things.
To put it another way, if you think good software requires vigilance, and you worry that there’s a shortage of it, these people aren’t competition. They’re allies.
3. Treat all workers as cogs in a machine that can be replaced at any moment if they are disobedient or fail to do their job right. After all, there are plenty of qualified people lined up to take their place anyway. Bonus points for incorporating foreign workers that can be locked into indentured servitude for many years. If you do it right, your fish can never leave the pond!
> Your mentees will support you and promote you for the rest of your life.
The problem I've seen is that this is rarely true. We've had a big set of grads we've trained that quit for a 20% pay rise, or a project that they happen to like better. Many regretted it but it didnt stop the next guys from doing the same. I'm really burnt out over teaching green newbies again and again.
The distinction here is between a hunter-gatherer mentality and an agricultural one.
Are you picking and choosing or are you farming?
Currently we grow engineering skill in (often) high cost institutions with limited capacity such as traditional universities. Moocs and bootcamps are alternatives which try to address the scalability, cost, and time commitment barriers of traditional education.
The question is should there continue to be a strong dichotomy between organizations who consume the output of these growth channels and the growth organizations, or should software development companies create programs of structured education and growth that have a low barrier to entry?
As others have mentioned startups who can hunt/find/pick people with relevant, high quality skills have the advantage of not paying the time and organizational cost of training.
Personally I think that large organizations should be taking more hands-on approaches that take all, or nearly all comers, and then provide training for the kinds of skills they need.
If you look at military funding for medical educations (for example) you'll see that the organization can be very generous in terms of time and training cost as long as a candidate ends up with the skillset they need. You might not go in wanting to be a urologist, but you can end up highly skilled and very well paid if you're willing to meet the needs of the organization.
I have, to some degree, given up trying to hire senior developers. Instead, I'm doubling down on the internal training programme (and have hired extra juniors).
5% of time is set aside for training. Works out a little over a half-day every fortnight - every fortnight, after lunch on Friday, drop the code and hit the books, pet projects, videos, experiments, whatever clearly makes you a better software engineer. If you don't spend that time on your own training, questions are asked. Nobody has been fired for not training yet, but if we get someone who simply refuses to, I could see it going that way; when we hire someone, we're not just hiring that person today - we're hiring that person next year, and we're banking on that person next year being better at this.
There is CapEx for books. We have PluralSight licences. New starters' agreed objectives include reading and thence using "Effective C++"; I will come by your desk every so often to chat about parts of it. We have short presentations every fortnight (the time of which doesn't even come out of the 5% training time) on technical topics. Once you've covered the basics, the company starts contributing towards conference attending.
The last senior dev who got internally promoted currently has an allowance of 50% of his time for helping more junior devs understand things. Fifty percent! The intention is to get his senior dev knowledge and experience out of his head and into the heads of five other people; growing ourselves five more senior devs.
I got all this by asking for it. Grow your own. Everyone wins. The company wins, the employees win. Just had to ask; if you ask, and your company isn't interested in improving, isn't interested in producing better products, faster and cheaper... well, is that really the company for you? :)
"The last senior dev who got internally promoted currently has an allowance of 50% of his time for helping more junior devs understand things. Fifty percent! The intention is to get his senior dev knowledge and experience out of his head and into the heads of five other people; growing ourselves five more senior devs."
I am pretty senior and I like mentoring people. But the incentives are generally the other way: If as an IC I transfer my experience to new people I almost get no credit. The manager of the group gets credit for building a good team but I have to justify my salary compared to the people I mentored. So sometimes I wonder if it would be smarter to keep knowledge to myself so I can look better.
This is great, but only when you've already got enough knowledge and experience within the organisation to enable it. That's where you really need to hire senior developers. Trying to grow a team of juniors into a team of seniors without enough guidance, grows teams of expert beginners, which is way worse for both the team and the organisation in the long run. You won't be able to hire or retain seniors in that sort of environment as they'll see it for what it is and leave.
However, that's not to say training people up shouldn't be done! I've seen some wonderful developers grow from junior to senior and it's always great to see it happen. Just make sure the organisation is in a position to do it well, otherwise you're doing both them and the juniors a disservice.
Maybe I'm just a grump, but: 5% is pretty low number for training people up. Perhaps that's just the "hit the books on your own, but during work time" portion? If it includes other things (talking people though a project that's on the edge of their capabilities, discussing the architecture of important project from an educational perspective, ...) then it seems pretty low.
We are trying to build our own internal training program.
Beyond the language-specific training, what books/courses have you found that are super useful. For example, would you ask someone to learn design patterns or something like that ?
We're in a labor market in which CS students are focused on drilling for the FAANG-style whiteboard tests. And many will tell you their strategy is to go to Google for 2 years of experience and resume-building, and then leaving rather than grind away and play the promotion game there. And everyone has known for 20 years that you have to job-hop to grow your salary in this industry. And most employees would be naive to think that their employer would take care of them long-term.
In this mercenary environment, loyalty doesn't go very far, so, for retention after mentoring, I assume one would have to pair mentoring/training with substantial growth in compensation. Besides all the non-monetary attractions.
I love the point the author raised in this article. Companies are spending a ton of money on recruiting and paying commissions to recruiters. If some of that money and effort is channelized toward mentoring, a company can notice a significant change in quality in its workforce. That said, this article fails to address 2 major issues or provide any solutions for that:
1) Every decent size company spends for providing resources like books, learning portals etc. for their employee to grow their skills. There is an entire industry running which caters to provide companies learning tools, for example - safari online books etc. Mentoring is also used a buzzword in these companies. There is a difference between providing tools & books vs creating an environment where people can grow. Mentoring is very inter-personal. Unless companies create incentives for senior engineers to help mentor other engineers there won't be any real change to the way things are now.
2) If your teams or Orgs are always battling to meet the next deadline, how will mentorship happen? You can't expect people to put more than 40 hours of work and expect them to personally mentor other engineers(They still do btw).
This article assumes that the person you are mentoring is open to being mentored. I’ve worked with some engineers who were definitely junior despite having years of experience and very opposed to even a slight suggestion on how to improve their thinking process or implementation process.
This sounds like a wonderful idea in a business culture not obsessed with burning tomorrow to a crisp for more return today. Not to mention this requires trust and loyalty, both rendered cruel jokes by the all-against-all knife fight that our (in the US) labor market is.
At what size of company does this pay off? My experience of hiring juniors is generally that they are net negatives to productivity for quite a while, and the smaller the company, the more significant the impact of that is. How do people here go about mitigating that?
This seems to strike a chicken and egg problem. Who will grow the talent? It seems you'll need to hire the mentors for that. And what's the level of growth possible? Isn't that capped by the level of your senior devs?
As far as I know, most interview processes are designed to hire potential. For example, if you can't learn fundamental algorithms in a reasonable amount of prep time to prepare for the interview, but someone else could... Which talent has the most likely potential?
I'd even go and claim that the current interview processes are biased against senior talent. Someone who already knows they are qualified won't be motivated to go and practice fundamental algos that they haven't needed for real work in years. They'll expect their own track record and knowledge to be recognized on it's own. But, the interviews won't care about that. And they might instead hire a junior with more time and motivation on their hand, which decided to spend all evenings for the last two months doing leet code questions.
Similarly, many companies seem to favor new grads, which they can quickly brain wash into their existing engineering culture. They think, these new grads really strive, instead of challenging the status quo, they internalize our processes and work hard to deliver, even if we're being unreasonable. Eventually, this creates a lack of perspective in the entire company. Hiring more external senior talent would help get more perspectives, and prevent this silo of opinion that hurts innovation over time.
I have never seen a single company/startup place a job posting for a junior position, (lucky if they even say training)
Last time I checked, everyone wants to look for a senior developer with 5+ years of experience. It's some sort of hidden bonus if you're from a FAANG company as well.
I'm guessing everyone wants to be the next Google, Facebook, Amazon, Netflix or Uber.
The article is not only on point but it reflects a big problem in the tech companies.
Businesses loose millions and they just burn cash because of toxic and arrogant developments teams.
I can quadruple the sales of the company that I work for but you cannot push any change through the arrogant development team who don't give a chance to other people, it is so pathetic.
The best developer thing is really frustrating and ultimately a failure. Companies always claim to want the best during hiring, but once hired that completely goes away. What they really want are a couple good developers and rest somewhere between mediocre to brand new.
To really see the paradox ask extremely controversial questions during the interview. As a frontend developer ask about process efficiency or interacting with the DOM without a bunch of framework bullshit.
I have found the premise of the title to be completely false in real life. Not much else to say to this - I haven't seen too many people grow, and when we hire someone great, they are great.
Yes! This is something that is not just about developers and seems to be a huge gap in hiring.
Go look at any big company job listings. There are many positions that have no "entry level" roles. The lowest level of experience will say "5 years of {x}".
If you're a company that does not take people without experience, where do you think they're getting the experience? You're relying on other companies to train your employees, and naturally you're not getting a chance to create the exact employee you need.
Hire people that are intelligent, humble, and willing to learn. Ignore credentials, and promote from within. In most situations, you'll get the right result.
Aside: The weirdest part is there are some positions that seem to not have entry-level jobs anywhere in the industry, you have to sneak into them. For example my girlfriend is a "Brand Strategist" at a web design agency. This is what she always wanted to be, but when she was applying it seemed that every Brand Strategist job required 2-3 years of Brand Strategy experience. So she applied to her company in a role she didn't really want and then basically talked her way into the new role. Obviously she's doing well and she will never face this barrier again. But that was a stroke of good fortune.
this is exactly what global investment banks do ... they hire a fresh crop of a few dozen smart motivated young perspective programmers and put them through 9 months of intensive work study multitasking classroom lessons in software problem solving together with IT operations experience where everyone gets a very broad exposure to the technological landscape ... these banks repeat this every 3 months with yet another new crop so there are three such sets of new recruits on an ongoing basis ... after the 9 months these ~graduates~ are assigned into programming roles and just boot themselves into their new positions ... key here is they start with razor sharp people from any field ( philosophy, science, humanities ) who have exhibited problem solving potential ... also key is the business can afford to offer this in-house training while the new hires are getting paid ... baked into this equation is the nurturing of loyalty and admiration toward their employer - deservedly so I might add
I don't think a general discussion on this topic can really be had.
In my experience of working for shitty enterprise software, good and bad consulting firms (and seeing how their non-tech clients work), and silicon valley startups. The company financials, work culture, job market are all vastly different, impacting all the trade-offs of different hiring method.
i.e. some firms simply cannot afford top-of-the-market pay for senior engineers they want to hire, so they hire more junior ones and train them, who eventually leave after they're trained, but people don't immediately jump to next ship paying a little more, so you end up getting good work out of them for a period of time while underpaying them.
Some companies compete on non-momentary means.
Some pay top of the market rate, but only hire seniors.
Some pay top of the market rate, and hire from all levels; some of the juniors rise up through promotions, and some didn't get recognition despite growing, so they leave for other companies.
Some companies simply don't care about engineering quality, or does not have the ability/DNA to differentiate between good and bad work.
Also in silicon valley, networking and mentoring good engineers is much more professionally rewarding than in smaller markets.
I guess the cynic in me would ask what the point is in polishing a rough gem in your organization into a diamond, if you're thus turning them into a target for other people to poach.
That's roughly what they do at my company. Many people in the company have some form of Computer Science certificate/degree, so shouldn't be that hard to make them develop...but you hit the Peter Principle much faster in this line of work. The CTO loves the hanging on by the seat of your pants optics. "Look at him go. He doesn't have any idea what he's doing, but he's getting it done. That's what we want." The rock stars puff up and grouse about the recent QA to senior DEV promotion, then ridicule them, then you find out the rock star has been working until past one every morning since part of their responsibility as a lead is to make sure the QA-cum-Senior Engineer's work is code complete. Then they leave. And yes, then a great developer is hired...but they never tell us where they're going...
[+] [-] msluyter|7 years ago|reply
But to play devil's advocate for a moment, isn't there something of a natural disincentive to level up one's employees in such a tight labor market? To follow the author's analogy, by mentoring someone, we're effectively "adding a fish" to the pond, and if someone else "catches" the fish, that effort is largely wasted. One might argue that if everyone put more fish in the pond, then we'd all be better off (true), but we have a standard collective action problem where the free riders benefit at the expense of the fish growers.
I see two (partial) ways out of this trap.
1. Pay more than everyone around you. (Obviously, not generally viable.)
2. Make the culture of your company so awesome that people will want to stay, even if you can't pay the most. Make mentoring/growth a central strategy at every level so people will see a path to grow.
I'd be curious to hear other possibilities.
[+] [-] wccrawford|7 years ago|reply
Even more curious is that IT culture is basically that if you want to get paid what you're worth, you have to quit and go to another company.
So these companies put all this effort into raising a better developer, and then refuse to pay them what they're now worth and basically force them to go elsewhere.
It's not "what if they go elsewhere" under that situation, it's "when".
I'd argue that you don't even have to "pay more than everyone around you". Simply coming close to parity is enough to stop most people from going through the pain of a job search. But these companies don't even get that close.
The last time I switched jobs, I got a 40% pay increase. That's ridiculous. I even told the company I was underpaid and they asked if I could wait a year for a raise. I didn't even answer the question. I just walked away and started looking for a job.
They weren't surprised when I found one and quit.
And a couple weeks before I left, they put in a job ad for 7 developers, offering what I was making at my new job for each of them. I've been at this new job as a senior developer for 8 years now.
Could I make more? Almost certainly. But they gave me decent raises and have a good culture (almost zero overtime in 8 years) and benefits, and I don't feel like leaving.
[+] [-] reureu|7 years ago|reply
[+] [-] Fordec|7 years ago|reply
CEO: What happens if we don’t and they stay?"
[+] [-] squallleonhart|7 years ago|reply
With no work experience, I was hired as a junior dev with a $40k salary, which I gladly accepted. A senior dev mentored me throughout the year and it was fantastic.
Coming up on my 1-year anniversary with the company, I was thoroughly enjoying my job, the people, and the culture. I was hoping to get a raise up to at least $60k, though, since I was significantly more valuable to the company than I was when I first joined. They offered me $50k.
I started applying for other jobs and got an offer for $90k and I accepted it. I still talk with my mentor from my previous job. He's pissed that his company won't pay enough to keep the developers he mentors.
[+] [-] gorpomon|7 years ago|reply
If you train someone at work and level them up-- they're not in class 8 hours a day not contributing. They are working on a project.
All software mentorship is based around the idea of growing skills while meaningfully contributing to a project. Actually it's much harder to train someone without a project. I have never once in my career seen a scenario where a person isn't contributing and just learning skills.
After said project is done a trained person might leave. But an untrained employee might leave as well-- for a place that offers meaningful mentorship.
[+] [-] scarface74|7 years ago|reply
The question is why would someone leave your company once you train them? If someone is more valuable on the open market than you are paying them, pay them market rates. HR compensation policies need to be in line with the market, not the old “we have a policy of not giving more than 5% raises”.
I’ve been working in development for a $long_time but I restarted my career about 10 year ago and my rise is about the same as you would see from someone just graduating from college 12 years ago. Out of the four job changes I had, two were partially because the next company was willing to offer me $25K more (not talking crazy west coast salaries here).
One other went out of business and the other because they decided “they didn’t want to be a software company” and they just wanted report writers a year and a half after I was hired as the dev lead.
1. Pay more than everyone around you. (Obviously, not generally viable.)
You don’t have to pay the most, but don’t pay so much under the market that everytime the employee sees a random job posting or a recruiter call they know they can make signifactly more just by picking up the phone/responding to an email.
2. Make mentoring/growth a central strategy at every level so people will see a path to grow. I'd be curious to hear other possibilities.
That helps. But why would I spend a year a two “growing” at your company, when I could both “grow” and make a lot more money some place else?
I’m at a happy place where I work now, and I am decently compensated compared to the market, but even now if someone was willing to pay me $25K more, all other things being equal (work life balance, no travel, short commute), I would jump ship. But the only realistic way I could make significantly more is by going into management (not interested) or being a consultant (not interested right now).
[+] [-] ergothus|7 years ago|reply
Not only is this a self-fulfilling prophecy, if you don't invest in your employees, the level of waste is larger.
I recently posted an article on LinkedIn about this very topic: https://www.linkedin.com/pulse/most-common-web-dev-hiring-mi...
Note: I shamelessly plug one of my new-developer friends at the end.
[+] [-] snowwrestler|7 years ago|reply
Invest in an employee, give them meaningful and interesting work, and the resources to grow, and you will generate a lot of value that doesn't show up on the books: loyalty.
From the financial perspective, it is almost always cheaper to get more out of a current employee than to go into the market and find someone new.
IMO there are two types of companies: those that know how to develop talent, and those that only know how to import it. The former are often the ones that have a long bright future and create a big impact on the world.
> by mentoring someone, we're effectively "adding a fish" to the pond, and if someone else "catches" the fish, that effort is largely wasted.
This only holds true in a zero-sum game, which the economy is not. Improving the skills of employees actually makes the entire pond bigger.
[+] [-] johngalt|7 years ago|reply
When you are the one adding the fish to the pond. You know exactly what type of fish it is as it grows. Whereas the fish that you catch may be a catfish rather than a sockeye. The free rider problem is a real thing, but so is the market for lemons.
[+] [-] wisty|7 years ago|reply
Most good employees don't quit for at better job unless there's a dysfunctional workplace. Partly they don't know if there's better jobs, and partly it's just a lot of effort, but mostly because other companies don't know they're good employees. The labor market is a market for lemons. If you own a $2000 car that drives OK you don't sell it because other people won't believe it's any good.
[+] [-] hashhar|7 years ago|reply
[+] [-] dooy|7 years ago|reply
I have been following hackernews for 15 years. 20 years since I saw an stallman interview in local pc magazine, blown away by the intensity of the man. I am an artist. I love to read plt stuff and haskell lisp code, I cried over sussman lectures.. It expands my mind, finding ways to express my thoughts so that common people in my world can understand me better, for their sake. I dont write programs, a lot of the code feels unmusical, not ergonomic, my musical background made me aware of how unmusical a keyboard feels like. Learning functional programming has made me aware how most people use imperative chain rule sequences to generate their thought patterns. I would love to work with inspired people just building new ways to express thoughts. But I quietly read and try to translate visions and feelings into code. Writting linear sentences is becoming a drag. It feels as if the time is ripe to raise our conversations to a more constructive functional level. It is happening. It is a slow progress. I can't see myself working in IT because of business deadline material oriented approach. So I continue to quietly read plt stuff. I do not want to understand anything because the other is usually limited to a smaller temporal frame. I read code and apply different real life variables to it and see how the interactions develop within my interaction space. How would you mentor me? /rant
[+] [-] LolNoGenerics|7 years ago|reply
Good culture is good, but no culture fits all personalities.
In the end you probably have to accept that some portion of mentees will leave and try to minimize the rate.
What I would be afraid of that grown up juniors may get stuck in their learning environment and remain junior for way too long.
[+] [-] patagonia|7 years ago|reply
Setup: Bring on promising “apprentice” and have 3 year roadmap to reaching “solid individual contributor” status
- year 1: pay at market rate for standard recent college grad but payout 60% in year 1, 10% in year 2, 10% in year 3, 10% in year 4, 10% in year 5
- year 2: beginning of year give merit raise to full salary amount based on market rates but payout 75% in year 2, 5% in year 3, 10% in year 4, 10% in year 5
- year 3: beginning of year give merit raise to full salary but payout 90% in year 3, 5% in year 4, 5% in year 5
- beginning in year 4 get merit raise and receive 100% of salary cash that year as well as the 10% from year 1 and 5% from year 2
- year 5: includes 10% from year 1, 10% from year 2, 5% from year 3
If you can’t keep your employee after that, it’s on you, but they’ve def stuck around long enough to pay you back in productivity
(edit: I realize my math is a bit off but I’m on a cellphone on the move, you’re gonna have to mentally fix the math, but you get the idea)
[+] [-] chadash|7 years ago|reply
I think this only goes so far. There are better companies and worse companies, sure, but even the best companies have their issues and after enough time, most people want to move on. People also change, and what seems awesome to a fresh graduate may not be great for someone older, so it's always hard to keep everyone happy.
Pay, however, seems to be a motivator that keeps a lot of people in place (certainly not everyone, but a lot). I know plenty of talented people who feel trapped at their jobs because their jobs pay very well. It's common enough that there's a term for it, "golden handcuffs".
[+] [-] bhl|7 years ago|reply
While a developer is being mentored and improving, they’re still contributing to the company for the same salary even though their market value is rising.
Eventually, without a raise in salary, they’ll move to a company that pays market value. So developers aren’t free riders because the aforementioned; the new companies are free riders because they pay market rates.
Edit: it may be a free rider issue if the mentorship / training is orthogonal to their tasks. For example, if Starbucks started to offer their baristas CS classes, it’d be a free ride for employees. But what are perks classified as?
[+] [-] pm90|7 years ago|reply
This is why company culture is so important. You may not be able to compete on financial compensation right away, but if you have a culture thats great, enables people to learn and grow and work with other great folks, its very attractive as compared to simply throwing more money.
Not to mention: many folks _want_ that kind of mentorship and culture. They desperately want to learn from smart, experienced developers.
[+] [-] hinkley|7 years ago|reply
If they get far I have a good reference or referral in my future. In the meantime I can offload some of my troubles onto them and worry about other things.
To put it another way, if you think good software requires vigilance, and you worry that there’s a shortage of it, these people aren’t competition. They’re allies.
[+] [-] president|7 years ago|reply
[+] [-] tomaskafka|7 years ago|reply
[+] [-] pyrale|7 years ago|reply
[+] [-] james_s_tayler|7 years ago|reply
[+] [-] vharuck|7 years ago|reply
"What if you don't, and they stay?"
[+] [-] megablast|7 years ago|reply
You provide the tools for everyone to improve.
[+] [-] unknown|7 years ago|reply
[deleted]
[+] [-] rb808|7 years ago|reply
The problem I've seen is that this is rarely true. We've had a big set of grads we've trained that quit for a 20% pay rise, or a project that they happen to like better. Many regretted it but it didnt stop the next guys from doing the same. I'm really burnt out over teaching green newbies again and again.
[+] [-] iandanforth|7 years ago|reply
Are you picking and choosing or are you farming?
Currently we grow engineering skill in (often) high cost institutions with limited capacity such as traditional universities. Moocs and bootcamps are alternatives which try to address the scalability, cost, and time commitment barriers of traditional education.
The question is should there continue to be a strong dichotomy between organizations who consume the output of these growth channels and the growth organizations, or should software development companies create programs of structured education and growth that have a low barrier to entry?
As others have mentioned startups who can hunt/find/pick people with relevant, high quality skills have the advantage of not paying the time and organizational cost of training.
Personally I think that large organizations should be taking more hands-on approaches that take all, or nearly all comers, and then provide training for the kinds of skills they need.
If you look at military funding for medical educations (for example) you'll see that the organization can be very generous in terms of time and training cost as long as a candidate ends up with the skillset they need. You might not go in wanting to be a urologist, but you can end up highly skilled and very well paid if you're willing to meet the needs of the organization.
[+] [-] EliRivers|7 years ago|reply
5% of time is set aside for training. Works out a little over a half-day every fortnight - every fortnight, after lunch on Friday, drop the code and hit the books, pet projects, videos, experiments, whatever clearly makes you a better software engineer. If you don't spend that time on your own training, questions are asked. Nobody has been fired for not training yet, but if we get someone who simply refuses to, I could see it going that way; when we hire someone, we're not just hiring that person today - we're hiring that person next year, and we're banking on that person next year being better at this.
There is CapEx for books. We have PluralSight licences. New starters' agreed objectives include reading and thence using "Effective C++"; I will come by your desk every so often to chat about parts of it. We have short presentations every fortnight (the time of which doesn't even come out of the 5% training time) on technical topics. Once you've covered the basics, the company starts contributing towards conference attending.
The last senior dev who got internally promoted currently has an allowance of 50% of his time for helping more junior devs understand things. Fifty percent! The intention is to get his senior dev knowledge and experience out of his head and into the heads of five other people; growing ourselves five more senior devs.
I got all this by asking for it. Grow your own. Everyone wins. The company wins, the employees win. Just had to ask; if you ask, and your company isn't interested in improving, isn't interested in producing better products, faster and cheaper... well, is that really the company for you? :)
[+] [-] maxxxxx|7 years ago|reply
I am pretty senior and I like mentoring people. But the incentives are generally the other way: If as an IC I transfer my experience to new people I almost get no credit. The manager of the group gets credit for building a good team but I have to justify my salary compared to the people I mentored. So sometimes I wonder if it would be smarter to keep knowledge to myself so I can look better.
[+] [-] scaryclam|7 years ago|reply
However, that's not to say training people up shouldn't be done! I've seen some wonderful developers grow from junior to senior and it's always great to see it happen. Just make sure the organisation is in a position to do it well, otherwise you're doing both them and the juniors a disservice.
[+] [-] anarazel|7 years ago|reply
EDIT: non-phone spelling
[+] [-] sandGorgon|7 years ago|reply
[+] [-] neilv|7 years ago|reply
In this mercenary environment, loyalty doesn't go very far, so, for retention after mentoring, I assume one would have to pair mentoring/training with substantial growth in compensation. Besides all the non-monetary attractions.
[+] [-] rajeshp1986|7 years ago|reply
1) Every decent size company spends for providing resources like books, learning portals etc. for their employee to grow their skills. There is an entire industry running which caters to provide companies learning tools, for example - safari online books etc. Mentoring is also used a buzzword in these companies. There is a difference between providing tools & books vs creating an environment where people can grow. Mentoring is very inter-personal. Unless companies create incentives for senior engineers to help mentor other engineers there won't be any real change to the way things are now.
2) If your teams or Orgs are always battling to meet the next deadline, how will mentorship happen? You can't expect people to put more than 40 hours of work and expect them to personally mentor other engineers(They still do btw).
[+] [-] julius_set|7 years ago|reply
[+] [-] twoquestions|7 years ago|reply
[+] [-] thom|7 years ago|reply
[+] [-] didibus|7 years ago|reply
As far as I know, most interview processes are designed to hire potential. For example, if you can't learn fundamental algorithms in a reasonable amount of prep time to prepare for the interview, but someone else could... Which talent has the most likely potential?
I'd even go and claim that the current interview processes are biased against senior talent. Someone who already knows they are qualified won't be motivated to go and practice fundamental algos that they haven't needed for real work in years. They'll expect their own track record and knowledge to be recognized on it's own. But, the interviews won't care about that. And they might instead hire a junior with more time and motivation on their hand, which decided to spend all evenings for the last two months doing leet code questions.
Similarly, many companies seem to favor new grads, which they can quickly brain wash into their existing engineering culture. They think, these new grads really strive, instead of challenging the status quo, they internalize our processes and work hard to deliver, even if we're being unreasonable. Eventually, this creates a lack of perspective in the entire company. Hiring more external senior talent would help get more perspectives, and prevent this silo of opinion that hurts innovation over time.
[+] [-] kgraves|7 years ago|reply
Last time I checked, everyone wants to look for a senior developer with 5+ years of experience. It's some sort of hidden bonus if you're from a FAANG company as well.
I'm guessing everyone wants to be the next Google, Facebook, Amazon, Netflix or Uber.
[+] [-] yzfr12006|7 years ago|reply
Businesses loose millions and they just burn cash because of toxic and arrogant developments teams.
I can quadruple the sales of the company that I work for but you cannot push any change through the arrogant development team who don't give a chance to other people, it is so pathetic.
[+] [-] austincheney|7 years ago|reply
To really see the paradox ask extremely controversial questions during the interview. As a frontend developer ask about process efficiency or interacting with the DOM without a bunch of framework bullshit.
[+] [-] projektir|7 years ago|reply
[+] [-] cva10|7 years ago|reply
Usually the people who talk loudest about mentoring are clueless or are in the teaching business.
In the real world, there is zero reward for mentoring. Moreover, if you do it, you might get fired and be replaced by the now cheaper mentee.
[+] [-] ohaideredevs|7 years ago|reply
[+] [-] habosa|7 years ago|reply
Go look at any big company job listings. There are many positions that have no "entry level" roles. The lowest level of experience will say "5 years of {x}".
If you're a company that does not take people without experience, where do you think they're getting the experience? You're relying on other companies to train your employees, and naturally you're not getting a chance to create the exact employee you need.
Hire people that are intelligent, humble, and willing to learn. Ignore credentials, and promote from within. In most situations, you'll get the right result.
Aside: The weirdest part is there are some positions that seem to not have entry-level jobs anywhere in the industry, you have to sneak into them. For example my girlfriend is a "Brand Strategist" at a web design agency. This is what she always wanted to be, but when she was applying it seemed that every Brand Strategist job required 2-3 years of Brand Strategy experience. So she applied to her company in a role she didn't really want and then basically talked her way into the new role. Obviously she's doing well and she will never face this barrier again. But that was a stroke of good fortune.
[+] [-] AtomicOrbital|7 years ago|reply
[+] [-] analyst74|7 years ago|reply
In my experience of working for shitty enterprise software, good and bad consulting firms (and seeing how their non-tech clients work), and silicon valley startups. The company financials, work culture, job market are all vastly different, impacting all the trade-offs of different hiring method.
i.e. some firms simply cannot afford top-of-the-market pay for senior engineers they want to hire, so they hire more junior ones and train them, who eventually leave after they're trained, but people don't immediately jump to next ship paying a little more, so you end up getting good work out of them for a period of time while underpaying them.
Some companies compete on non-momentary means.
Some pay top of the market rate, but only hire seniors.
Some pay top of the market rate, and hire from all levels; some of the juniors rise up through promotions, and some didn't get recognition despite growing, so they leave for other companies.
Some companies simply don't care about engineering quality, or does not have the ability/DNA to differentiate between good and bad work.
Also in silicon valley, networking and mentoring good engineers is much more professionally rewarding than in smaller markets.
[+] [-] beachy|7 years ago|reply
[+] [-] man2525|7 years ago|reply