It is one discipline where your expertise and earning capacity is not directly linked to government investments in infrastructure and R&D.
CS heavily relies on individual skillset. More people in CS may imply a failing industrial sector and terrible planning by authorities.
Early in my undergraduate career, I decided to abandon CS as a major. Even as an undergraduate, I already had a side job in what would become the internet industry, and computer science, as an academic field, felt theoretical and unnecessary. Reasoning that I could easily get a job as a computer professional no matter what it said on my degree, I decided to study other things while I had the chance.
people interested in working in CS can’t just “learn French” anymore. things in the field used to be this way up until a few years ago, but not anymore. you used to be able to major in whatever interested you, and as long as you knew some HTML/CSS/JS you could find work somewhere. now, you need a degree in CS, you need impressive projects, you need to know all these frameworks, you need to spend hours upon hours doing leetcode.
there are several problems here. firstly, like another user wrote, software engineering is one of the only remaining comfortable, well-paying jobs left. if people were guaranteed jobs by the government no matter what they majored in, you’d probably have a 75% drop in CS majors. far more people would be majoring in French, in film, in history, in the arts, etc. shit, I myself wouldn’t be majoring in CS. we have a system and a culture that shames people for studying what they’re actually interested in, and tells them to view university as training for work. we went from “oh, you can’t find a job as a history major? maybe you should have majored in something useful like CS you idiot”. people all start majoring in CS, and now it’s a problem that arts programs are being cut and students don’t know anything about the humanities anymore.
secondly, this isn’t a university problem, but something deliberately caused by capitalists. pay for software engineers was too high for too long, and companies needed to get wages down to increase profits for shareholders. they encouraged everyone to ‘learn to code’, people did it it, and capital won. the job market is awful right now, and wages will likely never be where they were a few years ago.
Paywall
Last year, 18 percent of Stanford University seniors graduated with a degree in computer science, more than double the proportion of just a decade earlier. Over the same period at MIT, that rate went up from 23 percent to 42 percent. These increases are common everywhere: The average number of undergraduate CS majors at universities in the U.S. and Canada tripled in the decade after 2005, and it keeps growing. Students’ interest in CS is intellectual—culture moves through computation these days—but it is also professional. Young people hope to access the wealth, power, and influence of the technology sector.
That ambition has created both enormous administrative strain and a competition for prestige. At Washington University in St. Louis, where I serve on the faculty of the Computer Science & Engineering department, each semester brings another set of waitlists for enrollment in CS classes. On many campuses, students may choose to study computer science at any of several different academic outposts, strewn throughout various departments. At MIT, for example, they might get a degree in “Urban Studies and Planning With Computer Science” from the School of Architecture, or one in “Mathematics With Computer Science” from the School of Science, or they might choose from among four CS-related fields within the School of Engineering. This seepage of computing throughout the university has helped address students’ booming interest, but it also serves to bolster their demand.
Another approach has gained in popularity. Universities are consolidating the formal study of CS into a new administrative structure: the college of computing. MIT opened one in 2019. Cornell set one up in 2020. And just last year, UC Berkeley announced that its own would be that university’s first new college in more than half a century. The importance of this trend—its significance for the practice of education, and also of technology—must not be overlooked. Universities are conservative institutions, steeped in tradition. When they elevate computing to the status of a college, with departments and a budget, they are declaring it a higher-order domain of knowledge and practice, akin to law or engineering. That decision will inform a fundamental question: whether computing ought to be seen as a superfield that lords over all others, or just a servant of other domains, subordinated to their interests and control. This is, by no happenstance, also the basic question about computing in our society writ large.
When I was an undergraduate at the University of Southern California in the 1990s, students interested in computer science could choose between two different majors: one offered by the College of Letters, Arts and Sciences, and one from the School of Engineering. The two degrees were similar, but many students picked the latter because it didn’t require three semesters’ worth of study of a (human) language, such as French. I chose the former, because I like French.
An American university is organized like this, into divisions that are sometimes called colleges, and sometimes schools. These typically enjoy a good deal of independence to define their courses of study and requirements as well as research practices for their constituent disciplines. Included in this purview: whether a CS student really needs to learn French.
The positioning of computer science at USC was not uncommon at the time. The first academic departments of CS had arisen in the early 1960s, and they typically evolved in one of two ways: as an offshoot of electrical engineering (where transistors got their start), housed in a college of engineering; or as an offshoot of mathematics (where formal logic lived), housed in a college of the arts and sciences. At some universities, including USC, CS found its way into both places at once.
The contexts in which CS matured had an impact on its nature, values, and aspirations. Engineering schools are traditionally the venue for a family of professional disciplines, regulated with licensure requirements for practice. Civil engineers, mechanical engineers, nuclear engineers, and others are tasked to build infrastructure that humankind relies on, and they are expected to solve problems. The liberal-arts field of mathematics, by contrast, is concerned with theory and abstraction. The relationship between the theoretical computer scientists in mathematics and the applied ones in engineers is a little like the relationship between biologists and doctors, or physicists and bridge builders. Keeping applied and pure versions of a discipline separate allows each to focus on its expertise, but limits the degree to which one can learn from the other.
Read: Programmers, stop calling yourself engineers
By the time I arrived at USC, some universities had already started down a different path. In 1988, Carnegie Mellon University created what it says was one of the first dedicated schools of computer science. Georgia Institute of Technology followed two years later. “Computing was going to be a big deal,” says Charles Isbell, a former dean of Georgia Tech’s college of computing and now the provost at the University of Wisconsin-Madison. Emancipating the field from its prior home within the college of engineering gave it room to grow, he told me. Within a decade, Georgia Tech had used this structure to establish new research and teaching efforts in computer graphics, human-computer interaction, and robotics. (I spent 17 years on the faculty there, working for Isbell and his predecessors, and teaching computational media.)
Kavita Bala, Cornell University’s dean of computing, told me that the autonomy and scale of a college allows her to avoid jockeying for influence and resources. MIT’s computing dean, Daniel Huttenlocher, says that the speed at which computing evolves justifies the new structure.
But the computing industry isn’t just fast-moving. It’s also reckless. Technology tycoons say they need space for growth, and warn that too much oversight will stifle innovation. Yet we might all be better off, in certain ways, if their ambitions were held back even just a little. Instead of operating with a deep understanding or respect for law, policy, justice, health, or cohesion, tech firms tend to do whatever they want. Facebook sought growth at all costs, even if its take on connecting people tore society apart. If colleges of computing serve to isolate young, future tech professionals from any classrooms where they might imbibe another school’s culture and values—engineering’s studied prudence, for example, or the humanities’ focus on deliberation—this tendency might only worsen.
Read: The moral failure of computer scientists
When I raised this concern with Isbell, he said that the same reasoning could apply to any influential discipline, including medicine and business. He’s probably right, but that’s cold comfort. The mere fact that universities allow some other powerful fiefdoms to exist doesn’t make computing’s centralization less concerning. Isbell admitted that setting up colleges of computing “absolutely runs the risk” of empowering a generation of professionals who may already be disengaged from consequences to train the next one in their image. Inside a computing college, there may be fewer critics around who can slow down bad ideas. Disengagement might redouble. But he said that dedicated colleges could also have the opposite effect. A traditional CS department in a school of engineering would be populated entirely by computer scientists, while the faculty for a college of computing like the one he led at Georgia Tech might also house lawyers, ethnographers, psychologists, and even philosophers like me. Huttenlocher repeatedly emphasized that the role of the computing college is to foster collaboration between CS and other disciplines across the university. Bala told me that her college was established not to teach CS on its own but to incorporate policy, law, sociology, and other fields into its practice. “I think there are no downsides,” she said.
Mark Guzdial is a former faculty member in Georgia Tech’s computing college, and he now teaches computer science in the University of Michigan’s College of Engineering. At Michigan, CS wasn’t always housed in engineering—Guzdial says it started out inside the philosophy department, as part of the College of Literature, Science and the Arts. Now that college “wants it back,” as one administrator told Guzdial. Having been asked to start a program that teaches computing to liberal-arts students, Guzdial has a new perspective on these administrative structures. He learned that Michigan’s Computer Science and Engineering program and its faculty are “despised” by their counterparts in the humanities and social sciences. “They’re seen as arrogant, narrowly focused on machines rather than people, and unwilling to meet other programs’ needs,” he told me. “I had faculty refuse to talk to me because I was from CSE.”
In other words, there may be downsides just to placing CS within an engineering school, let alone making it an independent college. Left entirely to themselves, computer scientists can forget that computers are supposed to be tools that help people. Georgia Tech’s College of Computing worked “because the culture was always outward-looking. We sought to use computing to solve others’ problems,” Guzdial said. But that may have been a momentary success. Now, at Michigan, he is trying to rebuild computing education from scratch, for students in fields such as French and sociology. He wants them to understand it as a means of self-expression or achieving justice—and not just a way of making software, or money.
Early in my undergraduate career, I decided to abandon CS as a major. Even as an undergraduate, I already had a side job in what would become the internet industry, and computer science, as an academic field, felt theoretical and unnecessary. Reasoning that I could easily get a job
Legend
I am literally real
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.
Wish I had dropped sooner and taken a year or two for a tier-1 university entrance exam. Now I’m in debt, jobless, have a useless tier-3 degree and obviously, didn’t learn any useful skill.
Sad to hear. I hope you find your way.
Hitching teens/young adults with huge debt is such a fucked up system.
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.
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.
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.
Computer science does have ABET requirements
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.
Fellow sysadmin here, how would you create a portfolio? Just list various projects you’ve worked on?
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.
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.
Diploma mills gonna mill diplomas
The capitalist system has a problem with creating vast income gaps and people doggedly chase higher wages because if they don’t they won’t be secure in housing, food, healthcare, or retirement.
If speaking French and knowing French literature paid as well as programming, there would be more French speakers.
Universities can’t fix problems created by the capitalist system. They are just educational and research centers. If a university tried to “fix” this particular issue they would just end up exacerbating it by restricting program sizes even more, making it so that the people with accredited university degrees in CS were even fewer and therefore in higher demand. This would just mean people would go to other universities and start to depend on direct admits into programs when making their decisions. This is already happening and probably why this whiny prof’s department is admitting more and more students into the program every year.
If we want to fix the actual problem, we would need socialism.