Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Usually, the teaching/mentoring is not free either.

So you can a) hire someone who needs training and then train them, or you can b) hire someone who is productive since day 1.

The people in a) cannot expect the same salary as b). Otherwise, there would be no point in incurring the costs of training them.

Unfortunately, once you train them, someone can snatch them as people in b). You incur the loss, someone else benefits.



This is simple - pay people by the value they bring to the company upon every annual compensation review.

Yes, it costs money to train people. Consequently they get paid less during that period. But once they can fly on their own, treat them as if you hired them like that.


> Consequently they get paid less during that period. But once they can fly on their own, treat them as if you hired them like that.

That's too early. You made an investment, that investment has to break even. With your suggestion, it would never break even.


But that’s not the trick. The trick should be that you train your employees how to do your business, and then you pay them more than what they’re worth to someone else. Since you’ve trained them in the ways of your business, they’re worth more than that, but only to you, and that’s the trick. Nobody else could squeeze as much value out of these people as you could (since the training is specific to what your business does), so you can afford to keep them, and the people have no monetary reason to leave.


I never thought about this, but this definitely seemed to be the original thinking at one company I worked for.

As far as I know, the company was started in 2003. The founder wrote a custom IDE, VM and compiler. This was the only company that used it.

He hired a bunch of people from a well known but not well regarded private for profit college and paid them below market rates. Of course developers on this proprietary platform were completely useless anywhere else.

By the time I came aboard in 2008 and the rest of the “adult supervision” - a new CTO and developers - they were in the process of transitioning to C#.

Once the bottom fell out of the market with the 2008 recession, they laid off most of the developers working on the proprietary stuff who hadn’t learned C# on their own. They also forced the founder out. They kept me around because I was the only person who both knew C# and knew enough C++/MFC to maintain the old system.


Yes, when digging a moat you have to be careful that it does not drown you as well.


If they keep leaving because you won't pay them what they can get elsewhere, you won't ever break even that way either.


With all due respect, if hiring an entry level dev is a loss for your business then perhaps don't hire them? A dev should be a net gain regardless of skill level.

You pay them market when they need to be trained, you pay them market when they move up the skill food chain.


And as such, junior developers don't get hired, because the first 2-3 months of their career, a junior developer is at negative productivity, considering the work the team is doing to start getting them up to speed.

Some of HN works in areas that are harder than the bog-standard CRUD app. So, do you give up on hiring junior developers at all? I believe our whole industry suffers if we come to that conclusion.


This whole CRUD app crap is a cop-out - please don't insinuate it's my lack of experience that has me making this assertion. I've been an engineer for 23 years and spent the first 16 years largely working on large enterprise systems in C/C++, then C#, primarily in the health care space often with some hardware component. Regardless, the work I've done over the past 7 years with modern web tooling is some of the most difficult I've done in my career.

It's a failure of the organization to not utilize entry levels from the first week. At any company. After all, the FAANGs of the world have a different bar of entry.

People keep talking about this like you're literally training people how to program. That's BS. Every org has refactor work, tests to write, processes to improve, tasks to research, low hanging fruit bugs to tackle, systems to blueprint, all sorts of stuff that's a strain on the more sr. staff that's been pushed aside but needs to be addressed. You can strategically bring entry levels up in a way that's a net gain in any environment.


The truth, however, is that a senior developer is $140,000 and a junior developer is $80,000, and that same junior developer will be $100,000 in two years. (This is assuming salaries in one market.) That junior developer will take 3-4x the time to handle the same task as a senior engineer, and will take some of the senior engineer's time to guide the solution, provide feedback, and mentor.

That doesn't mean that we shouldn't hire junior developers - in fact, it's our duty as an industry to hire and mentor. However, it is with open eyes knowing that junior developers are not cost efficient in many areas for the first year.

But we go back to the original statement: "With all due respect, if hiring an entry level dev is a loss for your business then perhaps don't hire them? A dev should be a net gain regardless of skill level."

If you have $320,000, and can have 3 junior developers or two senior developers with the same budget, the 3 junior developers will be a net loss for the first year. They can be productive, but you have to compare on budget.

___

But I find that as a bizarre set of work that you call out.

* Refactor work is often the largest need from senior developers. Learning how to refactor safely is a separate skill that is not a skill junior developers have without instruction and feedback.

* My senior developers write tests as they develop. If there is test debt, it means sitting down with a copy of Michael Feathers and that is definitely not an introductory text. Trying to write tests for code that wasn't written with unit tests in mind requires a set of skills that many senior developers don't have, much less junior developers.

* I'm curious what processes you see that junior developers can improve.

* Researching tasks can be something useful, but what are these tasks that aren't done while a senior developer needs a break?

* Low hanging fruit bugs are likely the most obvious thing for junior developers, but a highly cohesive team that is writing tests has fewer bugs that are low hanging fruit.

* What systems can a junior developer blueprint? A senior developer understands patterns and quickly solves the problem.


Pretty much all the things you call out as bizarre I've seen some better interns slice right though.

* Refactor - Sitting down with a jr. dev for 15-30 minutes at a time going over the scope for something that is about a day or two of work. Done this many times. We're not talking high-level architecture work, just tech debt the team has let slip away.

* Great. I've never been in a situation where there wasn't lack of coverage though. Focus on things that are somewhat repeatable in nature. The point is doing tests is a great way to learn how the system operates, and basic unit tests cornering edge cases are easily repeatable patterns. Validate w/ PRs, you don't need to hand hold the entire way. No books needed, tons of other tests in your suite serve as guidance.

* Build/deploy system issues. 3rd party integrations. Better approaches to update dependencies. A better approach to documenting an API, automating code documentation, etc. Some particular lack that isn't crucial to operations but is fine letting a cheaper resource tackle as a research task.

* Can blueprint anything that lacks proper documentation. If they can do research for their CS degree they can research and document your system. Yes, you will be giving them little tidbits along the way on how to properly debug or set things up.

AFA 2 seniors vs. 3 juniors, totally dependent on your team structure and the work that needs to be done. If you run as tight a ship as you imply the sr. devs will be a better bet every time from a value basis - but that's rarely the real world. I wouldn't add more than 1 junior at a time to a team of < 6 devs.

Lastly, addressing "that junior developer will take 3-4x the time to handle the same task as a senior engineer". Well duh, don't give juniors the same work as your seniors. The whole point of hiring lower level staff is you have work that is better suited for lower level staff, or rather, work that is too costly to give your sr. staff. This whole it's our duty to train the next generation... you're running a business, not a charity. And then you get caught up in this cancerous notion of people being in debt to you because you don't know how to properly utilize them.


He is a loss in short term. He is supposed to be a net gain in long term.

If he leaves prematurely, the loss is realized and the gain never happens. If he stays for long enough time, he is a net gain.


Again, if an entry level dev is a loss then don't hire entry level devs; your company does not adequately utilize them.


Not every company is using popular, widely available tech, that folks can learn in their spare time.

In this regard, unfortunately, we are using a proprietary platform and there is no chance to learn anything until you have access to the bits and docs. Due to that, fresh hires are completely useless to be utilized in any way, until they learn at least basics.


You're conflating ramp up time of business domain knowledge with skill level. Yes, a sr. dev will come up quicker than an entry because they have the wisdom and experience of past companies, but all devs need some sort of ramp up in an environment like that. You don't hold back pay from your sr. staff until they've ramped up, right? Of course not, they would take a better offer elsewhere. As would your entry levels that have now risen to mid-levels once they get the chance.

But all the same, any company should be able to make any dev useful from pretty much the very beginning. Whether it's rote refactoring work, research tasks that are too time consuming for more sr. folks, tasks that are in the domain of data entry that can be automated with simple scripts, low-hanging fruit bugs, etc. It's a failure of the org not to properly utilize the abilities of a smart person who knows how to program.


> pay people by the value they bring to the company

That's a fun game. Most people can argue endlessly about who is responsible for what and then you get to disclose where the money (and how much) is actually coming in. It necessarily constrains the management to a whole new slew of in-fighting and disclosure control. Never gonna happen.


> pay people by the value they bring to the company upon every annual compensation review.

how do you determine the value they bring to the company? Presumably it must be a % of the revenue or valuation growth but I cannot come up how you derive the value.


How do you determine the value of any candidate you interview? You have a job req. Do they match that req? Yes, good, you make them an offer. What level of pay do you negotiate? What is market. If they're otherwise happy going toward the bottom of market is feasible, esp. if it's a large bump.

If this person goes out the door, you're going to be paying their replacement roughly the same as what they'll negotiate elsewhere... and on top of that, you have to deal with the cost of turnover. You basically just lost a ton of $$ by letting them walk. This is not hard. Just run the thought experiment of what it would cost to find a suitable replacement.


Simple. How much would it cost you to pay someone to replace them at market rates and then add the amount it would cost you to give them time to ramp up on the institutional knowledge and codebase.


Well, not really. The phrase was specifically about how much value they bring to the company. Market rates have no meaning in this context. E.g. how is "if a team works on a product that no customer seems to use/purchase/pay for, what is the value that team brings to the company" connected to market value? I would say it isn't.


If you want to keep the employee you have to pay market rates or they can easily leave. If the team works on a product that no one wants, that’s the fault of the business side. It’s up to the business to either find something for the tea to work on or let them go.


You’re taking the use of that word too literally. I meant it as what perceived impact would the addition/omission of an engineer of that level have on a company? The stuff that factors into determining annual budgets.


Fair enough, thanks for the clarification.


You think you’re entitled to a trained developer for the price of an inexperienced developer. That’s not going to happen. No wonder they leave.


The end result is hiring trained developers for the price of trained developers, and sending the inexperienced developers to be trained somewhere else. Where? That's their problem.

See? Looking just for one's interests works both ways.


You act like you’re doing them a favor by hiring them. You’re not. You’re trying to get cheap labor, and expecting them to feel indebted to you and work at below market rate. It’s not going to happen.

Pay them cheap during training. After they’re trained, pay a premium to the ones you want to keep. Let the rest go to a competitor. It’s simple.

If you can’t afford that, that’s a problem with your business, not the employees.


You have it backwards.

We are not trying to have cheap labor. We are trying to have more labor. However, the experienced people are limited resource, so the next step is to find inexperienced ones and train them.

However, that doesn't work that way so easily. If you train someone for 6-12 months (during that time the trainee not only isn't making you any money, but other people, who otherwise would, are not either), you are investing into these people. If they leave before you break even, you are at loss. If you would pay them market rate as soon as they finish training, you would never break even.

That's why some companies insist on contract, that the trainee will stay with the company for specified time, if they take the training.


Ok. Keep blaming the employees for your retention problems. It's definitely not your fault. I'm sure it will work out.


I don't blame anyone, just filter out the too selfish ones early. If they can't go for win-win of both sides, they can try their moves elsewhere.


So how do you do that?


Very carefully, during interviewing. Until now, it worked, even though mistakes happen. It is not scalable long-term, so we will have to find something else.


Do you think someone is going to actually tell you that they are going to leave for greener pastures as soon as possible?


Of course not. But a good communicator can learn more from the communication than just what was said explicitly.


The truth: I’ll leave for a large enough increase in salary all other things being equal.

What I say at interview: “I love building things. I’ve been interested in computers since the mid 80s when I was writing 65C02 assembly language on an Apple //e. I guess you could say that I have always been a computer geek. I’m still amazed after all of this time that I get paid for doing something that I enjoy this much. On my way to work everyday and while I am working out I’m listening to $list_of_tech_podcasts. I try to spend at least 1 hour a day outside of work just keeping up with technology.”

Any developer with a modicum of emotional intelligence can get pass behavioral interview questions because really, the interviewerer doesn’t expect much from computer geeks and most developers.

How would you know that I am really just in it for the money? I’ve been on the interviewer and interviewee side of the table just as long or longer than most people who interview me. I’ve been through $big_company “how to interview candidates” training. Of course I know the answers you’re looking for.

Oh and the old geek who likes to continuously learn helps to answer the question am I keeping up with technology and why I am not in management.


> during that time the trainee not only isn't making you any money

They're training full-time? They're not even doing junior-level work? Why are you paying them a salary then?

> other people, who otherwise would, are not either

Senior folks are getting valuable experience of mentoring and growing people too.


Yes, they train full time. That's what a proprietary platform (not ours, third party, but hey, at least it has its own wikipage) will get you. Not even the build system is standard. Yes, they are paid salary. Very few people can afford to go several months without salary, that would filter out some candidates that proved to be right match in the end.

And that's the reason why the wage ramp up is slower, even after finishing the training.


That's a different situation then. A lot of companies make trainee employees sign a bond. To my knowledge all the Indian software consulting giants have one. If an employee leaves before the term is fulfilled (typically 2 years) they have to pay the company. It's usually on the order of 20-40% of an entry-level employee's annual salary. Otherwise the company can withhold references and experience letters, which are usually needed in future.

If you already have a bond/contract system in place and employees are still leaving, then IMO you're still paying them too little. If they are happy to pay 20-40% of their annual pay just to leave the company, it means they can make 50-100% more elsewhere. Loyalty is worth something but it's not worth passing up a pay raise that high.


What type of training program would be worth signing a contract for? Alternatively do like Amazon and offer deferred compensation that takes four years to fully vest.


Yes, deferred compensation is also a good idea.

Right now, we directly outline the plan: for now, you will be getting less, once you start working on the client work, your pay will ramp up, depending how much weight you can pull.


Do you not see how there is value in having someone who is trained to your specifications? You're still getting labor out of someone but when they move to being a proper dev you don't have to worry about any training issues because you trained them. I truly doubt you hire developers who are productive from day one, when your mentees will be productive from day one as a real dev AND will probably have less growing pains from having learned bad habits or a different standard at another company.


> Do you not see how there is value in having someone who is trained to your specifications?

You don't, if they leave too early. That's the point.

> hire developers who are productive from day one

That's very rare, true. It was meant to illustrate one extreme. But there is still a huge difference between both ends of the market.


if you pay them better they won't leave. But you've basically said that even after training they are worth less than someone you hire in at first. This distinction is why people leave. You trained these people in the way you'd like them to work, Tailor-made to your processes but you still say they aren't worth the same as the people you hire-in. No wonder they leave and go some place where they've now been hired in without needing to be trained. If you don't value your own training highly enough to pay these people the market rate, what reason do you expect them to stay and work for you for?


That’s easy, “let them learn LeetCode and work for a FAANG”.

At least that’s always the answer over at r/cscareerquestions


I don't see why this rules out giving A.) developers who have now become B.) developers a raise to match their increased value


Because it is still more expensive than just hiring b).

If you decreased a) wages during their initial training to cover the costs and be able to break even with b)-like wages at the end of the training, you wouldn't be able to hire anyone as a) at all.


> Unfortunately, once you train them, someone can snatch them as people in b).

But this "someone" includes the current employer.


Your outlook is causing you to lose.


You assume too much.

I take the world how it is; including human behavior. On the other hand, you assume someone owes you a training and a then immediately a wage that is the same as someone's who came with all the skills needed.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: