My program was lackluster from a development perspective. No real projects, the coding-centric courses all had really poor execution, and a lack of instruction on how to actually program and design; however it was excellent for CS fundamentals and foundation. I ended up okay because I spent a lot of time in internships and just learning on my own, which balanced out with the abstract stuff from school, but I witnessed quite a few people graduating who could barely understand how to work with APIs.
EDIT: Just to add some background: I graduated last fall, got into one of the top popular major software companies in the U.S., and reaffirmed that the 4.5 years I spent getting my degree did not seem worth the time spent. It wasn't a complete waste; the foundation is really important for software engineering, but there was a lot of cruft and "took a class because of requirements" that went on.
It wasn't to me. The frustration I felt for 4 years is beyond belief. I couldn't stand any longer in my fourth year. Stupid for dropping out at the 9th hour.
Now I wonder why companies aren't pushing for programming over the science.
I question that claim and believe that people perpetrating the meme have never actually hired and mentored software engineers themselves.
There's in my experience very little correlation between being academically great and being highly productive in an unstructured environment such as that of an early stage startup. In fact if you didn't go to school, and still managed to learn a ton about your craft and the underlying principles, I'm much more impressed.
Like do they not have a general algorithm for this in a library?
Are they looking for more efficient ways of inverting trees?
but
> I still frequently go back to the same texts we used in class, but I get a lot more from them now that I actually have a pragmatic need for that knowledge
So you knew that there was something useful you could know about, and you knew where to find the information, and you were able to comprehend and absorb and use it.
So not a total waste of time. In fact, pretty much exactly the point of tertiary education.
As I mentioned, most of my comprehension was from learning about things on my own, not because someone in the faculty explained it to me. In fact, it was really difficult to get any kind of mentorship at these schools, given how all instructors were researchers who always seemed very unhappy having to teach courses.
unfortunately nowadays college is more about providing a network + campus recruiting opportunities + some qualification on a resume.
But I think I would be a bad to mediocre programmer in the real world (ended up doing something different)
I'm sure academia would have been a lot more useful if I really needed specialized knowledge in some specific area. Even then I doubt I wouldn't have been able to teach myself everything, or find someone who could.
I did get a lot out of team projects though, those were the closest I got to real-world-like experience of working in teams.
Software engineering is a craft. At some point we need to ask ourselves if we aren't served much better by turning our education into craft schools / apprenticeships etc. over the current awkward model of trying to stuff vocational training into academician-training programs that were never meant for that in the first place.
A program like Digipen/Guildhall or some well executed long-term bootcamp is fairly in line with what would work best for creating productive industry contributors. I remember one of my program directors being very clear about it: "We don't make software engineers, we make computer scientists who can go into research". I don't think that part is ever obvious to people going into CS programs.