It's a top down problem. The universities didn't invent it. For years, candidates have campaigned on "lrn2code" so much so that we make fun of it here. They weren't saying that to bring new perspectives or art to the discipline. They were saying it because tech jobs have basically become the only path to the middle class. Small wonder, then that enrollment situations are what they are.
I graduated from UC Berkeley's College of Engineering with a CS degree right as the recession hit. Even then, I could see the demographics of my classmates trending away from your typical nerds who just like being on the computer into guys who were just after a paycheck.
Point being, like everything, this is a systemic issue. Give people one path out and they'll take it. The US economy is basically just giant business conglomerates and tech companies. Myopic capitalism has led us to this.
Same: so many people signed up because they heard IT payed well and has many offers. Half the class dropped after the first year when they realize it's not for them.
I did a CS major at a state school and we started with ~400 students. It ended with like 35.
Honestly, a CS major has almost zero practical relevance to most tech jobs anyway beyond filtering out resumes. I can count on one hand the amount of times I used a skill I learned in my classes in my work as a jack-of-all trades dev/sysadmin.
If you wanna work in tech, any college degree works. What's more important is a portfolio that shows you know what you're doing.
What’s more important is a portfolio that shows you know what you’re doing.
Which is hardly trivial to create. CS is a vast field, with a lot of subsectors and areas of specialization, and not all of the relevant skills are tied to things you can toss in a resume or portfolio. A lot of companies need people who have 1) good communications skills and 2) the ability to identify problems in code or infrastructure and offer efficiently implemented solutions, or at least the path to those solutions and 3) knowledge of multiple coding languages and a certain degree of specialization in Linux. Some of these are difficult things to present in a CV and the place they really can be demonstrated is in interviews. The hard part for a new graduate is just going to be able to talk to someone who can give them the job and see if they're a good fit for the company. Internships or co-op opportunities are also very important, as they let you talk about work you've actually done somewhere. But these are hard to come by.
I'm talking about breaking into the industry. You just need to get an entry level job or two that will probably suck, then work your way into the niche you want with job experience. You probably won't even really actually know where you want to ultimately go until you've been working for a few years and had time to gather new skills that you didn't get in school.
Exception being academia, but if you wanna do that just go get your grad degree, and by the end of that you'll have a way in or have learned that academia sucks your life force out for far less than the industry pays.
I feel like there need to be multiple CS pathways. For example, people who want to go into hardware development might take a set of courses more closely aligned with electrical engineering. Another set of skills might be aligned with data center management. Another might focus on distributed web application engineering. That's where I ended up, and nobody ever taught me in college when would be an appropriate case for implementing a cache, what options exist to solve that problem, how to administer them, etc. When I hire for entry level DevOps people, there's usually a skill gap between "I've built some cloud servers" and "I have specific experience managing redis caches and ElasticSearch clusters."
I feel like there need to be multiple CS pathways. For example, people who want to go into hardware development might take a set of courses more closely aligned with electrical engineering.
There are.
My university (and many others) offered Computer Science, Software Engineering, and Computer Engineering. Computer Engineering is sort of a middle ground between EE and SE, where you learn hardware concepts like circuits and semiconductors (for hardware development), but there are also algorithm-based courses.
Each of the programs has many options for elective courses, and you can focus on databases, algorithms, security, web development, or whatever you want. The core concepts are the same, and it's more about learning broad concepts and skills, rather than focused skills. Things like Redis and Elasticsearch didn't exist when I took my database course - the practical portion was mostly just SQL. Things like Docker came even later. But the broad concepts I learned allow me to jump in and use "new" technologies as they mature and stabilize.
None of the programs were just "coding bootcamp". Coding was almost inconsequential to my degree (CompEng), though I understand it's used more heavily in Computer Science degrees. I had a single first-year course that was supposed to teach us programming - all the other courses just assumed a basic knowledge. The focus was more on the design, the logic, and the algorithms. Anyone can code - the bootcamps have that right. But not everyone can design and implement a distributed system efficiently and securely.
Yup. Felt fucking lost after getting my CS degree. Ended up going down a completely different path where the degree didn't matter. Still nice to have in my back pocket so I can at least grab some certs and have a half decent resume if needed, but I probably would've been fucked fresh out of college.
Do you still regret having a cs degree? I'm about to transfer and finish up my cs degree and I know I'll need to grind some certifications so I can have a good chance of landing a computer security job. What do you think?
Not at all. Even though it's not relevant to my field, it has come in handy a few times. Though I also sold my soul for college money, so I guaduated almost completely debt free which was a HUGE jumpstart to my adult life. Had I been saddled with debt and struggled to get a job, I might've felt different.
I will say my biggest regret is not sticking with the comp security club. Just a bunch of people dicking around and breaking each other's computers for fun. The first 2 meetings were pretty slow trying to get various things installed and I lost interest, but it would have been great experience for security (which I am interested in as well). See if your school has something similar. Additionally, a lot of the guys who were successful right out of the gate made connections while still in school through internships and the like. Experience and connections are vital. Probably even more important than certs.
Part of the problem is that no one seems to really have a good Idea what should be taught in an academic setting for programming and system administration. There isn't an equivalent to ABET, which handles engineering curriculums, and it doesn't seem like the industry or academia is there to create a curriculum yet.
Yeah pretty much. I have a personal website that I set up with a pipeline to automatically build and deploy. Creating it taught me a lot of things and it was definitely a focus when I had interviews. Homelabs are great too, shows you have some self driven interest in the subject, especially if you don't have a bunch of work experience to advertise.
Ah, cool then I'm already kinda on that track. My "portfolio" just tends to be a section of my resume that lists technology I've worked on and improvements/automations that I've put in place. Helped me get my current gig.