8 ms·
Why do so few people major in computer science? (2017)
- tropo 7y agoPeople hit calculus, which is almost never needed in the job market, and they give up. Lots of math and hard science is in the major. It's not an alternative to the humanities and liberal arts and languages. It's done in addition, which just isn't fair at all. Students take two or three semesters of calculus-based physics, three semesters of calculus, two semesters of discrete math, engineering statistics, linear algebra, differential equations, and often even more science. A person majoring in education could skip all that, even if intending to be a math or science teacher.
- ghaff 7y ago>Lots of math and hard science is in the major. How different is this from engineering more broadly, to say nothing about math or physics majors? (I can see CS being a bit more math-heavy than some other engineering disciplines because at many schools, it's been historically associated with the math department but I think the general point stands.) To understand these numbers, I'd have to understand better how degrees roll up into Computer & information sciences vs. Engineering & engineering technologies. At many schools, "CS" is in the engineering school, often associated with electrical engineering.
- aphextron 7y ago>People hit calculus, which is almost never needed in the job market, and they give up. This. I tried going back to school for a CS degree at 26 after 5 years of professional experience in the bay area as a developer. The CS classes are trivially easy, but I simply could not do the math. I paid for tutors. I lived on Khan Academy all day long. I tried three semesters in a row to pass calculus and just couldn't do it. The vast majority of people simply cannot pass the math classes required for an engineering degree.
- abdullahkhalids 7y agoHow many questions did you do with pen and paper, without access to any outside help (book/tutors/videos)? If you start with trivially easy questions (d(x^2)/dx = 2x) and do 1000-2000 questions with very minutely increasing difficulty level, I am sure you would ultimately pass the course. Questions you do with others, or examples from the book are useful for conceptual clarity, but that clarity can only be guaranteed to be solidified if you successfully do questions without help. People often think you don't need practice to master math, but don't bat an eye when they see professional football players passing the ball to each as warm up before a big game (after having played the game for 20 years and passed the ball 100k times already). Fundamentals are important. I just started learning drums, and my music teacher has been making me practice the same beat for the past 3 months over and over again till I absolutely master it. Me and every other student is happily doing it.
- vibrolax 7y agoI had to come to grips with this when I entered university 45 years ago. I went to an extremely dumbed-down high school (especially in math), and had no idea how to make myself grind my way to competence in any subject that didn't come naturally. It took over a year to learn how to learn hard (for me) things. Fortunately, I was able to join a supportive peer tutoring network that helped me overcome the holes in my education and approach to learning. The light went on when I accepted if I wanted to succeed, I would have to spend 10 good hours working a 1 hour problem set. The majority of people just don't want to make a 10x effort to learn things that frustrate them. It's especially hard to grind when you feel surrounded by people who succeed seemingly effortlessly.
- abdullahkhalids 7y ago> People hit calculus, which is almost never needed in the job market, and they give up. This is almost like saying, basketball players don't need to do pushups during the basketball match, so basketball training should skip push ups. The reason all engineers and scientists (computer or natural) should do calculus/differential equations/hard math courses is because these courses make students smarter. They are a form of mental exercise that permanently increase your maximum brain capacity and your ability to do complex logical reasoning. It is possible you could replace these courses with some more job-relevant courses, but those courses would have to be just as brain wrinkling as these courses, if you wanted to maintain the current intellectual level of the industry.
- scarface74 7y agoMost developers are “dark matter developers” despite the HN/Silicon Valley bubble. The complexity in business/enterprise software isn’t the computer science it’s understanding the business. I find most “computer science” people don’t want to actually worry about producing products that people want nor do they want to worry about the actual business domain. There is a reason that despite all of the “smart people” that Google has, they have consistently failed at every product that isn’t advertising.
- abdullahkhalids 7y agoSure. I won't disagree with that. But the university is offering a computer science degree, which is creating skill in computer science. If people want expertise in business, they should supplement with a business degree or on the job business training. Or convince some university to create a "software business" major so they can streamline themselves into a management role at a software company.
- scarface74 7y agoSo exactly what do graduates do with a degree of it isn’t to earn a living? Money comes from producing products that people want? All of the great “research divisions” that couldn’t productize died in favor of companies like Apple who focused research on products that people wanted. Jobs famously killed Apple’s Advanced Technology Group that brought the world things like PowerTalk, OpenDoc, and QuickDraw GX. Microsoft’s Research division hasn’t done much better. I’ve already mentioned that Google has wasted untold millions on products that no one wanted. But the bigger question is are the degrees actually preparing students for the real world outside of Silicon Valley where companies actually want people who can add business value? Will it prepare people to compete for jobs against cheaper foreign labor where they are more focused on actual “occupational training”?
- bombingwinger 7y agoSo you’re likely more educated. What’s your argument? CS majors come out of the gate making 100K, can change companies whenever they want, are mission-critical assets wherever they go, and work in ivory towers.
- tropo 7y agoI got through the hazing ritual, so that works great for me personally. There is far less competition for my job. For the benefit of society, or the country, or the world, or something like that... the situation is terrible. We're wasting years of human lives on unproductive education. We're excluding capable people from CS careers. We're driving up the cost of software. If we trimmed out the non-CS stuff, people could do combined BS+MS degrees in the time that we currently spend on BS degrees. The extra CS education would be valuable to the people and to their employers.
- rcurry 7y agoThis. I think the problem is that schools need to have separate tracks, and now days some of them do, that differentiate between the archetypes of people that work with software. A computer scientist is different from a computer programmer - sure, there are times when the different areas may overlap, but some people want to work in discovery and others want to work in application. And to some degree, isn't the job of science to make life easier for the rest of us? I know some people scoff at people that don't have CS degrees, but it's important to be realistic about science's role in industry: thanks to the combined output of a lot of very talented computer scientists, computer programming is getting easier and more approachable with every passing year. It's not uncommon now for people with very little knowledge of computer science to build all kinds of complex applications. I see that as a victory for computer science, not a setback. And I think the people that want to apply science are just as important to the success of our industry as those who want to develop it.
- username90 7y ago> A person majoring in education could skip all that, even if intending to be a math or science teacher. A person majoring in education earns nowhere close to what STEM grads does even if intending to be a math or science teacher. Knowing those things is what makes you valuable, anyone can learn programming but not everyone will know how things works and you can't program stuff you don't understand.
- ghaff 7y agoOne possible theory that's not mentioned in the article is that CS has probably become less approachable for those who don't enter college already somewhat versed in at least the basics. Something that is pretty much not true at all for any other STEM major. I don't do a lot of programming myself, but I took an intro Algorithms in Python MOOC from a top school a while back. I think it's fair to say that, had I no appreciable programming/using a computer background, the class would probably have been impossibly difficult for me.
- friendlybus 7y agoIt's also less approachable for those that do know more than the current class being taught. I had been privately and self taught, going to a CS degree and learning the professor's dry and mangled way of teaching client-server architecture was like derailing a train I had been building for years and trying to drag it all the way back to the start.
- imedadel 7y agoDid you finish though? I've got a year and a half remaining and I'm working on some side projects and thinking about not finishing the remaining year... PS. We have to study PHP and "AI" next year here. And the final semester is an unpaid project at some local company.
- friendlybus 7y agoNo I quit and moved to the other side of the world for a woman. Do the side projects pay and have a future? Otherwise enjoy graduating with connections. You can quit future jobs to start a side project anytime (assuming no responsibilities).
- netsharc 7y agoA CS prof of mine said studying CS to later do programming is like studying architecture to later be a house builder. I find it an apt comparison.
- dominotw 7y agoexcept house builders aren't required to licensed architects to get a job as a house builder.
- readyoubestbook 7y agoIn part I agree, and of course I am biased since I studied CS but my goal is to be a house builder for a while and then have enough experience to be a proper architect. That's when the CS background should help again. So, study to be an architect, be a house builder for a couple of years and then be a properly educated and experienced architect from there on out?
- musicale 7y agoMany (FAANG and other) companies interview with algorithm puzzles that are fairly well aligned with undergraduate algorithms courses. Perhaps one purpose of such interviews is to select people based on how recently they took an undergraduate algorithms course or equivalent.
- fredley 7y agoThis is the only reason I can think of for still using this interview technique.
- username90 7y agoThey use it since it correlates better to later performance review scores than anything else they have tried.
- bloomer 7y agoThe test they use to select employees correlates with their rating of employees is pretty circular. Any arbitrary test will do that.
- monster99 7y agoBasically early Computer scientists were mathematicians, so CS would essentially be a math major if you really think about it. Since it's all about translating math into boolean functions a computer can understand usually.
- musicale 7y agoUnsurprisingly, CS is a very popular major (if not the most popular major) at schools near Silicon Valley. People major in it because they can get jobs. And sometimes due to it being well taught and/or fun.
- jedberg 7y agoPrevious discussion with 600+ comments (which is linked at the bottom): https://news.ycombinator.com/item?id=14440507 https://news.ycombinator.com/item?id=14440507
- sammyh 7y agoOne theory could be that people do not simply have the previous experience in CS the same way they have it from physics, biology, chemistry and math from college or even before. I for once was interested in physics, started in electrical engineering but transferred quickly to computer science just after few mandatory courses I had taken.
- ghaff 7y agoAs I wrote elsewhere, my money would be on the opposite if anything. Yes, there are base level science courses in high school. But you can sign on as a chemistry, physics, or mechanical engineering major with very little beyond some basic aptitude and interest. At many schools, on the other hand, if you're following the CS curriculum you're starting off with topics like algorithms and effectively teaching yourself programming and maybe even how to use computers in parallel. This has changed a lot over time. When I got my non-CS engineering degree way back when, the one computer course I took was really a programming (FORTRAN) course that assumed zero prior knowledge.
- sammyh 7y agoMy point was perhaps more on how much you actually get exposed CS as a subject before deciding it as something you would like to pursue in the future, unrelated to actual skill or interest in it. As an oversimplified analogy, in general, would anyone consider becoming a professional musician without having being exposed to instruments or music as a creative art form i.e. something you can actually learn and do? A hypothesis would be that if CS curriculum would be added more heavily to prior education, the amount of people majoring in CS would also rise.
- ghaff 7y agoYes, in music (and much of the arts), there's an expectation that if you're enrolling in a program at school you have some degree of prior exposure. But mechanical engineering? Chemical engineering? Economics? I'd argue that kids going into those fields may have read a bit and maybe tinkered a little at the periphery. Maybe in the case of ME they were in a robot competition. Etc. But, in the case of pre-calc physics in HS for example, it barely gives a hint of what being a physics major would be like. I actually don't know how much exposure to programming there is in HS. I assume essentially no "CS" per se but then, they wouldn't have the math for the most part. But I'd argue there are actually a lot more opportunities to get exposure to computer-related stuff than there is for other fields. (To the degree, per my other comment, that there is something of an expectation at many schools that incoming students, like music majors, will have done so.)
- devmunchies 7y agoAnecdotal, but I minored in CS so I wouldn’t be counted, even though I took the core algorithm courses and have continued studying since graduating 5 years ago. I don’t see how one would know what they needed to interview at a FAANG without taking data structures and algorithms courses.
- coretx 7y agoAlgebra is just math, and information sciences entail more. People go to university while they should go to school instead since universities are primarily about the progress of science while schools are not, but do primarily cater to the desire to have a job. At the end of the day, the desired output of both institutions suffers. In Japan, what many people would call basic "CS" is being taught at elementary schools in order to prepare the youth for the future... And in case my argument is still not clear, they don't receive a CS degree for their accomplishments as its nothing but yet another basic prerequisite fulfilled.
- alistproducer2 7y agoCS grad here. It was a difficult major and I used very little at work. It did, however, change the way I think about everything and im glad I did it.
- bobbyz 7y agoHaving completed most of CS undergrad, I can think of a reason that would discourage people to transfer into CS. Programming assignments usually take the most time to complete by far. As much as half of that time is wasted trying to decipher ambiguous requirements, unclear source code, or some other symptom of careless design and what seems like a total disregard for the student's time.
- Nashooo 7y agoSeems like good preparation for the workforce.
- joncp 7y agoOh huh. So it’s a lot like working as a software engineer, then?
- xyst 7y agoReplace “programming assignments” with corporate politics, deadlines that are defined with no actual thought behind them, and product owners that can’t write acceptance criteria to save their life. Sounds like its pretty good preparation from my perspective.
- bobbyz 7y agoSeems like you and a few other people believe that having your time wasted is the nature of work, or at least that it is typical. If you're dealing with this on a daily basis and you feel like it is not worth it, perhaps it's time to find a new job.
- Jorge1o1 7y agoVery much agree with this. In some ways it appears intentional. To avoid “giving away the answer” professors will sometimes hand you a very fuzzy set of loose rules, perhaps 2 example test cases and you’re off to the races. It’s funny because you can read about the same exact algorithm in Sedgewick or CLRS anyways, so I don’t know who they’re trying to fool.
- 7y ago
- xyst 7y agoI’ll be honest. CS doesn’t teach you how to program (anybody can learn that). CS teaches you how to think critically and analyze problems. Also CS is just very difficult, especially with all of the theoretical courses. At a certain point, it becomes a test of your resolve as a person vs your ability to program.
- Cu3PO42 7y ago> CS doesn’t teach you how to program (anybody can learn that). CS teaches you how to think critically and analyze problems. And in my opinion that's perfectly fine. On the other side many jobs that are "just" programming really shouldn't require a CS degree. It should be up to the job market to come up with reasonable requirements, not the Universities to churn out graduates with a different skill set to comply with the market. > At a certain point, it becomes a test of your resolve as a person vs your ability to program. I feel like this sentence goes somewhat counter to what you said before. If CS isn't primarily about programming, which I agree that it isn't, why should it be a test of my ability to program? I disagree that it's merely a test of your resolve, however. Sure, you need to have resolve to complete a hard degree, but the same applies to many other subjects. I'd much rather say it's a test of your ability to think abstractly, generalise and recognise patterns.
- true_religion 7y agoI think that’s the problem. At my university you had to pass both the theoretical and practicals in order to graduate. They taught the theoretical, but expected you to just pick up the practical as needed. If you couldn’t learn Java in a weekend, you would fail the first coursework.
- Antoninus 7y agoI graduated in CS. The education helped me in two ways: 1. Getting an internship and then a job at a large enterprise company right after graduating. 2. About 5 years in professional software development, I was starting to be included in architecture and system design discussion meetings with key decision makers on large projects. Where my non-cs colleagues with the same skill level could not keep up with the conversation. During the time in the between, what helped the most was having the discipline to follow through on finishing small projects that would fill the gap in areas of software development that I didn't understand at the time. I can see why most would be programmers would not want to study CS as it won't immediately help them become better programmers. In the long term, I feel that its worth it to have a grounded education in the industry that you work in. After a recent trip to the Bay Area, it doesn't feel that many new grads are about that dev life. The sentiment is get that 4-year, 1-year cliff and FIRE(https://en.wikipedia.org/wiki/FIRE_movement https://en.wikipedia.org/wiki/FIRE_movement)
- scarface74 7y agoThere is absolutely nothing about modern system design that my CS degree from close to 25 years ago would have helped. Anyone can learn proper system design by working in the field and being exposed to proper design first hand.
- uncletaco 7y agoI skimmed the article so tell me if I'm missing something here but in my experience computer science isn't the major of choice to become a "programmer" anymore. Having gone through the hiring process at three different companies focused on both desktop and web based software, computer science majors were an extreme minority. Most people had a business degree with a programming component attached like Management & Information Systems. Maybe it its worth looking into how many would be CS majors choose to do the less math intensive but more industry relevant business school option.
- salawat 7y agoMy CS degree if anything gave me a solid understanding of the line between problems you can solve with a computer, and the ones where you could throw technology at it, but you'll inevitably create more problems than you'll solve, because the real problem is a socio-political one. It also gave me the framework of understanding to be able to reason about what is actually going on, and how. Being fluent in the major abstractions of a computer system allows you to more easily skip around between working in different real world contexts without getting flummoxed at your lack of knowledge on how that particular field does things. You know and can recognize the problems that you can best solve with a computer; so you just go ahead and fill the niche when necessary, and try to avoid the politics if you can/value your sanity/conscience.