Hacker News new | ask | show | jobs
by rswail 2014 days ago
Learning to program is more like an old fashioned trade than a profession. I don't mean that in a derogatory way. I mean that what should be happening is apprenticeships.

If "industry is crying out for more people", then it should be investing in that in the same way it does in every other part of the supply chain.

They should be hiring and training programmers, not externalizing their costs.

4 comments

The way apprenticeships traditionally worked is that the apprentice was bound to the master for a certain number of years, and his parents also often had to pay to have him taken on. The tension between needing trained labour, but not wanting your trained labour to walk out the door and seek employment elsewhere (literal meaning of 'journeyman') was resolved firstly by extremely severe constraints on the apprentice and his freedom, and secondly by pretty severe regulation of the master, to ensure quality of training, and prevent exploitation. In practice there still was a lot of exploitation.

Today neither employers not bootcamps would be able to take on risk/exert control over the apprentice's career to the extent optimal from a strictly economic point of view. You can look at the service-for-education deals offered by the military (for both low-skilled and highly skilled people) to get an example - no other organizations would be allowed to restrict a trainee's liberty to the same extent.

While I don't agree with the moral spin that is sometimes put on this of 'greedy juniors' getting trained up and then abandoning their benefactors for higher salaries, this is a real collective action problem, not just shortsightedness in behalf of employers.

I don't think we need to look at apprenticeships through a lens that is quite out of date. For example you can look at the apprenticeship schemes in the UK:

https://www.apprenticeships.gov.uk/

This only works with a lot of government support. If you don’t have the government’s ok to take more of the trainee’s surplus in year three than you could if they could just leave why bother training them in year one or two when they’re bloody useless or of marginal value? Unpaid internships exist for the same economic reason; for a long time in many fields the training being provided is worth more than the labour of the trainee. If you can’t get a return from the training why bother? That’s where the government comes in, either by allowing those kinds of contracts or by mandating apprenticeships or levying industry wide “taxes” so everyone pays for trainees’ development and gets the return from it more or less equally. Otherwise the logical thing to do is let someone else pay for the training and then immediately hire away the trainees without paying the costs of the training.
Do you think that apprenticeships in the UK have been successful in motivating training for shortage jobs with highly technical skills?

I don't think they have. I've seen reports which claim they are mostly used as a subsidy to training which was already taking place, as a workaround to pay workers less, and generally in low-skilled jobs.

Like the grandparent post, the UK model is guilty of assuming that the word "apprenticeship" together with a sort of folksy appeal to a golden era of apprentices will solve the hard problems of training and education.

I’m just bringing it up to show that we don’t need to just consider one model and in particular one so out of date.

In general I also think a lot of the praise for apprenticeships is misplaced and viewed through rose tinted lenses.

I brought up the past model to show that apprenticeships in the past worked for a specific reason. Various models of apprenticeship/training/education fail today, because we have rejected what made them work in the past. We don't want / can't have a system where young people are completely under the control of an apprentice master for several years, unable to change jobs or live where they want. This is probably a good thing. But without it, the idea of apprenticeships makes little sense.
> literal meaning of 'journeyman'

The title "journeyman" refers to the right to charge a fee for each day's work. :

https://en.m.wikipedia.org/wiki/Journeyman#Origin

Interesting, the wikipedia right before your quote says that the "journey" "comes from the French journée (day)," as you say, charging for a day of work. But the next paragraph says:

> In parts of Europe, as in Late Medieval Germany, spending time as a wandering journeyman (Wandergeselle),[6] moving from one town to another to gain experience of different workshops, was an important part of the training of an aspirant master.

So I guess at least in some times/places journeymen also did actually journey? Whether wandering or not, I'd think the right to charge a fee for each day's work is also the right to leave at the end of the day if you'd like, having gotten paid. Unlike an apprentice who is tied to his master and does not get paid for a day's work, if he leaves he's out of work entirely.

You are misreading it. The semantics that someone goes from place to place is captured in the word "wandering", and is not repeated in "journeyman", which still refers to charging for a day of work.
Indeed, we already have a form of this in PhDs. They teach people more advanced skills, but they are exploitative and gatewalled.
Yes, and despite this there is commonly resentment by academics of the time they spend mentoring graduate students who then leave for higher paid posts outside academia.
Junior programmers suffer from the tragedy of the commons.

Why waste $$ training juniors, when for a fraction of that $$ you can poach a ready-trained senior from the company next door?

Every company wants someone else to take apprentices and carry the burden of on-the-job training

I did work briefly work for a small consultancy that decided to take on juniors, even though it was anticipated that for probably a year they woudln't be billing enough to cover their salary; because there weren't a lot of qualified applicants anyway where we were located, and as a sort of intentional public service to help people get into the field (especially underrepresented people etc).

Of course, the most skilled juniors quickly left for higher paying jobs elsewhere around when they started to actually make back their salaries in billing. There were no hard feelings, the company knew that could happen and could afford it, and of course, why wouldn't they? (I mean, I guess it was hoped that sometimes they would prefer working for the consultancy for a while). But it was a kind of experiment, and indeed the experiment showed it was not really a sustainable model, I think they stopped doing that.

I also did this with my consultancy along with reimbursing employees for passing certifications and paying for tuition. Three of them work for Microsoft now and one works for Amazon. Others are at other big firms. I don't regret how I invested in them and I think it is great that they are doing so well in their careers, but I will not make an unsecured investment like that again.
Yup. I guess one way to "secure" it would be to try to make them promise to keep working for you for a certain amount of time, but even if there's a legal way to do it, that just seems icky, who wants to force people to keep working for you when they don't want to, or the environment that will come from working with people who would rather be somewhere else but are being forced to stay. That's not a good solution.
In a standard tuition reimbursement situation, you have to stay at the company (even if you don't want to) and maintain a certain grade point average. Why can't software companies adjust to this but other kinds of employees can?
It's sad to read comments like yours because I'm a junior dev myself. I can't blame you, though, because as I pointed out above, it's all due to perverse incentives in this industry.
This must be why I don't see many junior dev jobs on HN or many other places. The software industry is very lucrative IF you're not a junior.
The problem, which I've commented on and experienced many times, is that companies don't have enough incentive to fund training of junior developers. In a culture where devs switch jobs every 2-3 years, there doesn't seem to be enough runway to train a junior to senior level before they get poached.

I wish there was a realistic solution to this problem other than bootcamps, but I don't know what it could be.

This is probably an unpopular opinion, but I think junior salaries need to come down a little bit (or senior salaries need to go up). When I was a Junior, I was making about 75% of a Senior role. There was no way I was worth 75% of a senior role. Better to have a true Junior role with lower salary, lower bar to entry, and more mentorship.
Also tragedy of the commons: Why invest in training when you can expect employees to get poached by the company next door in only 1-2 years?
Most of the poaching happens (well to me anyway) because the jobs became unbearable. And because it was the only way to get decent salary increases.
It's easier to afford bigger salaries for seniors if you don't have to carry the budget burden of unproductive juniors
That's why there's a vesting schedule and stock compensation for engineers.

Unless you are Netflix and can attract and afford world wide talent, if you have no bonus or stock compensation you are much better hiring contractors for software.

I agree, but I think that in order for that to work, we would have to accept much lower salaries for junior/apprentice engineers (until they've proven they can add value). And maybe also a higher tolerance for firing engineers who are not working out early.

As it is, I'm not surprised companies are reluctant to bet on the potential of untrained engineers, _and_ the chance that they'll stick around long enough to make the investment worthwhile.

I'm sure there are a lot of inexperienced, uncredentialed engineers out there who would take a low-paying job with a significant chance of getting fired in 3 months. I was one of them. The alternative is to not get hired at all.

I agree completely with this! There is no real onramp for junior people. Personal anecedote incoming... feel free to skip.

For example my brother is a talented person with devops/sys admin/cloud skills. As someone who is more in the pure coding side of things, I go to him often with questions in his area. He has been tech oriented since a young age. He is also 30 with no comp sci degree and no work history besides driving Uber. No company would take a chance on someone like that if they have to pay a huge salary for it. But for a startup it would be a perfect moneyball opportunity to pay like $25 an hour or whatever. If he works out great you got a smart productive person for a cheap salary. It is a huge win. If not, dump him and try with someone else.

> industry is crying out for more people

At a certain price-point they are.

> Learning to program is more like an old fashioned trade than a profession

Sure. Learning to code is pretty much a trade at this point. Engineering isn't. There's a pretty big gap between a real engineer and someone who "learned to code" in high school.