Hacker News new | ask | show | jobs
by 0xbadcafebee 20 days ago
> There is a material difference between the signal from an internship (~7 weeks of usable work time after ramp-up) vs a co-op (5 months actually working)

And that's why the trades require you to perform years of work as an apprentice before you're ever qualified to pass an exam to become a journeyman. Not only is it like a years long internship, but you're paired with someone who has already passed a high bar. You're learning directly from vetted people, and those people can vouch for you.

> University of Waterloo famously sends their Computer Science students through a total of six internships, giving them roughly 2 years of real-world work experience before they graduate.

Still less time than an apprentice is required to work, but it's better than nothing. Most trades require you to be an apprentice for 4 to 5 years.

> The reason is, hiring engineers has historically been so competitive that you couldn’t convince a senior engineer to do an internship [...] So the industry converged on not requiring it.

Which is one reason the trades made it the law that you have to follow the apprenticeship in order to become a journeyman. "The contracting companies don't feel like hiring licensed workers" isn't an option. Companies don't do the right thing unless they're forced to.

This is why we need professional engineer certification for software engineers. We need a rigorous, time-tested, reliable process to ensure engineers have actually done the job in the right way. Otherwise it's a bad guessing game like Steve is explaining.

This is also why we need a software building code. We need to explicitly define exactly how you're supposed to engineer, so that we can create a certification that people can pass. Otherwise designing and building software is completely subjective. Engineering should not be subjective.

This is not some mysterious experimental idea that nobody knows if it'll work. Trades have been doing this for decades. It's not perfect, but it's much better than the alternative.

2 comments

I guess my concern there is that there's such a high degree of diversity to software jobs that figuring out what "qualified" means is also very diverse. For instance, what it takes to be a frontend web dev vs working on embedded systems vs working as an SRE are practically different professions.
The trades are all different professions, and within them are sub-professions. There are apprentice electricians, journeymen electricians, master electricians, electrical engineers, industrial electricians, commercial electricians, residential electricians, new construction electricians, maintenance electricians, US-specific electricians, UK-specific electricians, etc. And we standardized them all. What we didn't do is say "let's not standardize professional electricians because it might take some effort."

It doesn't have to be perfect right off the bat. Start by writing down how you do your job. Get some other people who do your job to review that. And get some more people to review the review. The reviewers note down where there's some gap, something you're not doing, some considerations for doing it, etc. All of it gets updated, consolidated. In a few months you have a document that standardizes your profession.

There are millions of people around the world that write software. Get different groups together to document their own specialties. By parallelizing, we can get a basic set of standards for most specialties in ~1 year.

And don't forget there are already thousands of books on how to do each specialty. It's not like all the knowledge is tribal. It's not really that complicated to explain how software and systems work.

> Engineering should not be subjective.

I think there’s a lot of ways to do engineering right. It’s very subjective in many ways. Every project has multiple possible paths to success.