Computer science degrees are usually advertised as the golden degree. I mean, lots of parents push their children to obtain this supposed golden ticket to the future. What do you not learn in computer science? You learn all the cool stuffs including AI/Machine Learning, IoT, graphics programming, databases, web development, mobile development, security, discrete mathematics and sometimes cryptography. You see, the very strengths of a typical computer science BSc is its very weakness. The old debate of “boot-camp vs CS degree vs self-study” easily puts a BSc in computer science at the Bottom for the reasons I will highlight below. Please note that these will mainly apply to those who do not intend in teaching at universities or doing computer science research.
BSc in Computer Science does not prepare you for the industry
From theory of computation, to formal methods to programming language design. Computer science courses contain lots of things you will never use as an average software developer (most likely working on a web or mobile application). There is a strong emphasis on the “foundation” in a computer science course. The problem with this is that it is mostly not applicable to the industry. Things like version control, collaboration, managing large code bases, dealing with clients, learning frameworks used in the industry to professional standards are ignored by academic institutions. You come out of these universities memorising the best sorting, searching and other fancy algorithms, many of which you’ll never implement on the job.
Poor and outdated teaching methods
A lot of computer science professors are just not good teachers. Many of them are teaching subjects they last researched on many years back. They have a faded memory of that subject. The lecture notes are lazy and look very low effort. Compare that to a Udemy course or a FreeCodeCamp.org course on youtube where the tutor is desperate for good rating and will go the extra mile just to get that 5 star rating. Your professor on the other hand does not need your rating because the university pays him/her to do research. They are not so creative in their ways of teaching. Online tutors brush up on things that most professors will overlook such as good sense of humour and spot-on analogies to aid clarity. You can also see rating for online tutors and decide if you want to take their free or paid courses. For the most part, you cannot pick professors and even if you can, you have very limited options compared to online learning where you have a plethora of tutors to pick from. You have no choice but to attend the lecture of that professor you can barely understand.
The semesters are disconnected
Here is what I mean. You start a course in C++ programming and you learn the basics of C++. You are given an assignment to write a simple payroll system with C++ and Qt. You are given a deadline of 4 weeks to finish that project, after which your professor will test your knowledge on multi-threading or some other advanced topic in C++. Your professor for android development has also given you an assignment in Kotlin to build a small news-feed app with a deadline of 3 weeks. In the next semester, you will be working on completely different tasks that may not be related to C++ or android development. Do you see the problem here? You never know what it is to work on a single project for 12 months. You write tiny code bases here and there to fulfil tiny tasks but you don’t see the big picture. You probably have never written more than few thousand lines of code for any given project, you just lack the ability to build and maintain big projects. Your design pattern skills are not battle tested as you are never able to try them out on big projects.
It is ridiculously Expensive
This one is pretty obvious. A typical computer science degree in the US, UK, Canada or France can cost you $15,000 per year, just for tuition alone. Not including books, accommodation or feeding. So you will spend at least $60,000 in your 4 years of study. Compare that with the free high-quality courses on FreeCodeCamp.org channel on youtube, where you can easily see a 10-hour course on programming, databases, cloud computing, etc taught by professionals and industry experts. Some online courses are free and some are paid, Even the paid courses are peanuts (in terms of cost) when compared to ridiculous tuition fees of universities, also many of these online tutors know more about the very subject than the professors you pay ridiculous amounts to learn from.
Fewer people care about it as time goes on
Have you wondered why graduates of Law, Literature, Art, Economics, Architecture, etc all transition into software development without having to study computer science? I’ll tell you why! because no one cares about a computer science degree. Try becoming an architect without a degree in architecture or a Lawyer without a degree in Law. Even fields like accounting have better gatekeeping structure in place whereby it is harder for a graduate in English Literature to become a professional accountant than to transition into software development. I’m not even talking about web development or mobile app development because just about everyone and their grandma transitions into those fields easily, I am talking about machine learning, cyber security, etc being done by graduates of civil Engineering, Economics, Law etc.
You learn a lot of …. well.. nonsense
Similar to the first point, there are so many things you learn in a computer science course that you will just never need. That time could have been spent on improving documentation skills, improving communication skills, learning new frameworks, etc. Tell me how many times you used your knowledge of P vs NP or your knowledge of intel x86 assembly language to make products that customers will pay for? Even if you are bent on learning a lot of these fundamentals and hard-core subjects, you can easily learn them online for free. The only difference is that it is not being forced down your throat like universities do.
You are a jack of all trades and a master at nothing
That 1 or 2 semester course you took on mobile development, Programming in C++, unity game development, web development, will not properly prepare you for the industry. The industry is flooded with a truck-load of unwanted beginners. Trust me, that start-up or that established company who builds professional mobile applications are not really looking forward to hiring someone who just did one semester course on mobile app development, except you have shown exceptional promise through your high GPA or you have internship experience. Also, Ubisoft or Activision Blizzard will not be impressed by your 2 semester course on Unity game development where you could barely scratch the surface and made bunch of throw-away games. This applies for all other subjects you will learn in computer science courses.
Honestly, it is difficult to justify the time and money spent on a computer science degree in this day and age. With resources all over YouTube, Udemy, Cousera, Linkedin Learning, etc. With programming, all you need is a laptop, unlike medicine or engineering where expensive equipments are involved. If you want to get into very niche fields, or government jobs that require clearance or maybe you want to get work visas abroad, then degrees could possibly help. Other than these few examples, avoid computer science degrees at all cost!