Many thanks for the reply; you make some excellent points.

I agree completely on the "theory" side of things. One of the reasons CS degrees have value is in these foundational aspects. While they can be learned outside of that environment, it's challenging and most people don't take the time to do it.

I think there's a "happy medium" between pure apprenticeship and what we (mostly) have, today. You brought up the model used in medicine -- I feel this model is more like the mixed apprenticeship/university model with a lot of hands-on work in the field under apprentice-ship like conditions with increasing responsibilities/exposure to actual patients. Of course, my exposure to how all of that works begins and ends with medical dramas on TV so I may be imagining that "ideal scenario".

My own situation was quite unique and I feel it was pretty ideal for myself and the company that I spent my college years working for.

I'd started building small business networks for folks in my teens and at 19 interviewed for a job supporting network rollout at a regional-LEC-turned-national telecom. I'd just started college full-time in hopes of completing my degree in 4 years -- I'd have to push this to 6-8, instead, but for accepting a longer time in school, I'd get experience working in an IT department[0] and they paid for my tuition/books.

The tuition reimbursement policy was generous -- it covered at least two classes a semester with books, four semesters a year at 100% if you scored at least a 3.2 (or pass in pass/fail scenarios). If the degree was in your field of work you required no approval; if outside of it, you could still receive reimbursement with approval from HR (which was always granted if the degree was useful to any job in the company, so it was nearly always approved). Some of work time could even be logged as "working on my degree".

You had to pay back a percentage of any class you took two years prior to quitting[0], but IIRC even that was never more than half.

On the company's side, the program encouraged loyalty. Once you're in it, it becomes a big factor in "am I going to take this new job?" -- I turned down two excellent offers because they lacked a similar program and I wasn't encouraged that I would be otherwise supported in completing my education[2] Myself and two other coworkers stayed there 17 years -- at least nine of those were "while I was getting my degree" or waiting for the pay-back period to end. I turned down two excellent job offers during that time because they lacked a similar program and I really appreciated the fact that I was earning a respectable salary while completing my degree and accumulating exactly zero student loan debt.

[0] My hope at the time was to transition to the software development team but I started supporting migrations from mainframe terminals to networked PCs -- some of which were allowed to connect to the internet. Within a year I was writing software full time but (thankfully) not on any of the actual development teams at the company.

[1] If you were laid off you were not required to pay them back.

[2] That sounds a little entitled -- and it is. But I had support at my current job so it was a "real thing" I would be giving up. Beyond that, though, it spoke to the overall organizations' feelings about professional development.