Hacker News new | ask | show | jobs
by timr 256 days ago
> And in our modern world, universities are still the best place for such apprenticeship.

I spent a good portion of my life in Universities -- and went as far as one can go in terms of educational credentials and taught at the university level -- and I cannot disagree more.

Universities produce job skills incidentally, if at all. It's simply not their goal [1]. Even today, at the best CS programs in the country, it's possible to get a degree and still not be better than a very junior engineer at a software company (and quite a few graduates are worse).

> We started with implementing simple data structures and algorithms and solving simple puzzles all the way to implementing toy OSes, databases, persistent data structures, compilers, CPUs, discrete simulations, machine learning models.

This was not my experience, nor is it what I have seen in most university graduates. It's still quite possible for a CS grad to get a degree having only theoretical knowledge in these topics, and no actual ability to write code.

This leaves open the question of where "the best place" is to learn as-practiced programming [2], but I tend to agree with the root commenter that the best programmers come up through a de facto apprenticeship system, even if most of them spend time in universities along the way.

[1] Their goal is to produce professors. You may not realize this if you only went as far as the undergraduate diploma, but that is mostly what academics know, and so it is what they teach. The difference between the "best" CS programs and the others is that they have some professors with actual industry experience, but even then, most of them are academics through and through.

[2] Code academies suck in their own ways.

8 comments

> Universities produce job skills incidentally, if at all. It's simply not their goal [1]. Even today, at the best CS programs in the country, it's possible to get a degree and still not be better than a very junior engineer at a software company (and quite a few graduates are worse).

Having been self taught in both software and electrical engineering, I’ve experienced a lot of this.

In EE, it’s amazing how many graduates come into the job without ever having used Altium/KiCAD/Cadence for a nontrivial project or who can give you a very precise definition of impedance but don’t know how to break out an engineering calculator to set design rules for impedance controlled differential pairs. Or worse yet, people who can give you all the theory of switching model power supply but can’t read datasheets and select parts in practice.

Yeah the practical part is what does it. Students need time on their particular niche's software programs. Outside of Altium/KiCAD/Cadence there's also Mastercam, ANSYS HFSS, LTspice / SIMetrix/Keysight/CATIA/Synopsys/Dymola, among others.
I agree, however the model was clearly designed that the university considers first employment to be the apprenticeship and the university education to be rhetorical background education that makes it possible to follow and keep up in an apprenticeship. So really, the issue is companies don’t properly invest in training juniors… because they will leave after 2 years anyway… which is because they won’t provide them pay bumps equivalent to a change in position, which is also their fault, leading them to hire pricier individuals who just left another company looking for a pay bump instead. They pay the same in the end but trade individuals around pointlessly to do it, and have to retrain them on their software stack.

Kinda funny when you think about it.

I'll disagree with your "disagreement" - of course, I went to a relatively unique school: Waterloo computer engineering with co-op in the 90s. 8 study semesters, 6 work semesters. Clearly lets you see what "work" is like, and which parts of your studies seem relevant. Obviously, no one will use 100% of their engineering courses - they're designed to cover a lot of material but not specialize in anything.

True, grad school was focused on making professors - I did a master's, ended up being a lecturer for a while. Now a 20+ year software developer in the valley. But undergrad was focused on blending theoretical and practical skills. If they didn't, employers would have stopped coming back to hire co-op students, and would stop hiring the students at a high rate when they graduate.

I COULD have learned a lot of software myself - I was already coding in multiple languages before attending and had a side-software-contract before ever going in - and that was before the "web", so I had to buy and study books and magazines and I was able to do that reasonably well (IMHO).

Yet I never regretted my time in school. In fact, I had a job offer with my last employer before going back to grad school, and they hired me as a summer contractor at a very nice hourly rate back then.

Thank you for saying this clearly. I love universities. They are so far from supporting apprenticeships. Even phds — they don’t do enough work for the senior professors to count as apprenticeships. Maybe postdocs. But the system is not great—we need guilds.
Yea, I started to learn how to program in my early teens and made a lot of progress just messing around on my own. Then I went to University for a CSE degree and spent 4 years basically doing applied math. Yuck. Finally once I got out of University and into industry, I started learning again practical things like debugging, build systems, unit testing, application development, and so on. My programming skill growth quickly restarted.

Looking back, I'd consider my University degree to be essentially a 4 year pause on growing my programming skills.

I studied computer science in a university, not because I wanted to learn programming, but because I wanted to study computer science.

I admit that most development tasks don't need the knowledge you get from a CS degree, but some do.

But in computer science, it's also totally possible to be self-taught. I've learnt a lot on my own, especially after university. Computer science is good for that because it's generally accessible: you don't need an expensive lab or equipments, you can just practice at home on your laptop.

Polytechnic schools seem to do this well, research universities not so much.
> Even today, at the best CS programs in the country, it's possible to get a degree and still not be better than a very junior engineer at a software company (and quite a few graduates are worse).

I think it's important to differentiate the personal achievement of students and the training offered by their universities. For instance, the courses offered by CMU and MIT are super useful - insightful, practical, intense, and sufficiently deep. That said, it does not mean that every MIT/CMU graduate will reap the benefit of the courses, even though many will.

It goes without saying that it does NOT mean people can't teach themselves. I'm just saying universities offer a compelling alternative to training next gen of engineers.