I feel like, outside of the work experience that was baked into my degree, I could've spent those 4 years and all that money in a much more productive way.
(Note: I don't regret it, I had a lot of fun, but in terms of becoming a professional I could've been much more efficient)
As a result, anyone who's come to me asking how they can "break into" programming, I strongly discourage them from University at all.
I personally found the humanities and hard sciences a bit more compelling compared to any CS courses; viewing the CS testing and teaching methodology through the lens of having already been in industry, it pained me more than it might have otherwise had I been a naive impressionable student with no professional perspective. Sitting there writing out an ADT in Java with a pencil in a not large enough physical space, thinking "why did I decide to do this crap again?", but also not being able to respond to the artificial pressure of the classroom with a fabricated stress response.
For example, I went to grad school and studied databases. On that topic, I probably know more than anyone I work with; so if I put forward a proposal that is related to DBs in any way, I can be quite sure that there are no surprising edges that will come back to bite me (i.e. no one will come along and say "well what about this?", at least from a technical perspective). That's because I know what I know, and there are things I don't know, but I also feel like I know what those are (e.g. I don't feel as comfortable with low-level programming, mostly because I actually skipped a machine organization class and never picked those skills up separately).
Guess who does really really good in sales? People who play varsity or college sports. Is it a rule? Nope. Is it a great heuristic? Yep. Does football teach you sales? Not really... but it does filter for certain traits, one of which is probably pure animal magnetism and the base desire of humans to be influenced bt the most fit individual.
And what do we teach people for 12 years before college? Is college the first time people learn how to learn?
https://www.nytimes.com/2024/04/21/us/alta-utah-public-schoo...
You can socialize with your ski buddies. You can study with self-selected motivated group of teens together with AI and a tutor (college grad with AI teaching high schoolers, high schoolers with AI teaching mid schoolers, etc).
This model will be decentralized and more like twitch group, rather than centrally administered school District
Because AI.
Engineering disciplines can be split into blue collar (like operating CNC) learned at vocational schools, and deep tech (research focused) - these really only need “elite” colleges like top1%. The rest of 99% of colleges might as well disappear
just ask yourself: are you ready to pay $300k (65k tuition+20k living costs per year) for each of your kid to go to college, party, get drunk and study data structures & algorithms and Java?
do you want to spend 300k so your kid understands Cormen Leiserson algorithms book and do you think it is a good value ?
and I am talking about CS - arguably one of the highest ROI degrees out there.
meanwhile a kid from India/Eastern Europe who got same CS degree for $10k out of pocket will get the same knowledge and can get the same faang job
not even that much. just cost of living. so why not adopt the same model everywhere?
As for college/trade schools, options range from essentially free for self-study to very expensive with everything in between. Again, I'm not sure to what degree AI changes most of that. I'm certainly prepared to believe that credentialism becomes less important in some fields (it sort of has in CS) but that has less to do with AI than some companies relying less on universities to do their vetting for them.
Other fields, of course, differ. You've got a lot better shot at a top-paying job in Big Law if you went to Harvard Law and clerked for a Supreme Court justice.
If you want to send your kid to daycare, please go ahead and send to public school. But more and more parents opt for alternatives to public school: private schools, college prep programs, charter schools, extra-curricular Math and science classes, coaches/tutors and etc.
In the end it doesn't make sense to maintain bloated school system that does not accomplish anything, but being glorified childcare for teens, while all academic achievements are due to self-selection.
You can look at any top-rated high school and realize they are not doing anything much. They just have self-selection mechanism that filters the most motivated kids with strong parent support.
1. Equip students to do a job.
2. Equip students to find a job.
These are surprisingly disparate, and I suspect the latter is a lot more significant than most people realize.
Put differently: I suspect the real challenge is getting hired without explicit qualifications.
Personally, I suck at self promotion. The career aids offered by my school made a world of difference.
Many report out this exact statistic. My alma mater claims 90% job placement for STEM grads.
> They offer extra services to help you find a job but it's completely voluntary so I don't equate extra motivation with "equipping".
They go out of their way to offer these services, but of course it all boils down to personal motivation. They hand students a tool and show them how it's used. That's my definition of "equipped."
It’s weird that people equate Computer Science to Software Engineering. TOTALLY different!
In fact, you could argue that you could do compsci bachelors and at the end come out knowing everything theoretically but not know how to actually code well. Compare this to a software engineer undergrad - the whole time you should be coding!
The 5% of the job that is hard, is what you're paid for. It is what keeps the job onshore, and it is what keeps fresh community college grads from being hired into it.
With due respect, in my experience as someone who did not major in CS, it was a rough first few years because I had weak knowledge of data structures, almost no knowledge of computer networking (showed itself why managing containers etc), didn't know even the very basics of bash/linux.
Nowadays, when I work with CS majors vs non majors, it has noticeably been more difficult to get the latter group up to speed and productive. Of course there have been notable exceptions (there always are when it comes to people matters)
The total amount of code I had written in my first two years of university was not very much; by the time I had taken some of the advanced courses I had written a lot more code and had thus become a better programmer (still not a good one, but better!). I had written probably 10x more code by the end of year 4 than the end of year 2 thanks to practicum courses, etc.
Our industry is swimming in auto-didacts, dropouts, bootcampers, and community college graduates. There's no licensure and most industry-adjacent academic programs spend a lot of time teaching concepts and abstractions far divorced from everyday industry needs. Committed tinkers who are ready to get their hands dirty and start learning the trade are historically very welcome.
However, the job market is upside down right now, because we had an insane hiring bubble that has since burst, leaving countless people with real work experience in the candidate pool for jobs at all levels.
In this kind of market, which we're used to seeing come and go, there's temporarily a lower-than-usual demand for candidates with less vetting, and so the auto-didacts/etc can expect to have a hard time getting attention for a bit.
A lack of interest in community college graduates is an ephemeral market state that we're familiar with seeing sometimes, and definitely not a structural detail of the industry.
It was already a known phenomenon for UW students to take CC classes to reduce the cost of genEd requirements but after the trains that just got easier. Much faster than the busses.
The only way for ANY college student to do this is through real-world experience (from an organization that is willing to take on someone very green or private repo work/portfolio). I am regularly asked by randoms on LinkedIn and/or my network as well as interns and/or candidates what they can be doing to improve their chances to get an internship or FT role. In those instances, I always recommend that these folks:
1. Come up with a project, end to end.
2. Develop the code and post it in a repo that can be accessed by companies during the hiring process.
3. Be able to explain the why behind the project, the entire process end to end, and--most importantly--why the work was important to do.
These are the items I believe will put those green students toward the top 20% of their competition in the market. I find entirely too many candidates who have a lot of coding and theory courses and not a whole lot of application of those learnings. By being able to show management of a project from end to end, be able to explain the development process coherently, and provide the potential business value it brings is a big way for those folks to stand out from someone who can just write code.
Many average four-year colleges aren't doing this for their students; CCs most definitely aren't.
I haven't worked in the CC system, but I've been around the Belleuve/Seattle area CCs for many years.
And at least for those, there are broadly 2 tracks. The first is what you say - the first 2 years of a bachelor's degree track.
The 2nd track is a variety of certifications. Sometimes these are industry certs like Microsoft, Cisco, etc. And some of them are CC certs. But they aim to get people productive in 2 years.
But the real secret of that school was that, at least when I was there, they had too much computer hardware for the number of students.
The number of hours in a day you could show up in a lab and not have a waitlist was fairly generous. Which meant a lot of the smarter students had no problem working on their own pet projects.
From a “hit the ground running” standpoint, a lot of these kids were only bothering with a 3.3-3.9 GPA because time spent getting three more points on a test or homework was time lost from working on your project, or talking to people about theirs.
Software development is a discipline in its own right that only very partially overlaps with a university CS curriculum.