Hacker News new | ask | show | jobs
Wasted $45,000 on a CS Degree to end up learning from YouTube
52 points by codingcall 1682 days ago
At the age of 40 I decided to go back to school and launch a new career in tech. In 2019 I graduated from a good university with a master degree in Computer Science but I could not be less disappointed and frustrated. I have paid more than USD 45,000 in tuition and accommodation just to realize the knowledge I acquired was not worth it at all.

My goal was to start my own programming career and try to make money online like everyone else.

The subjects we took sounded very impressive: Software Engineering, Distributed Systems, OOP, Semantic Web, Web Development, Digital Imaging and Computer Vision…etc. In reality students don't have time to learn anything valuable and you graduate with weak skills at all these areas.

I have been reflecting on all that wasted time, money and efforts during my school. As students we were really busy, but in reality we were learning nothing serious related to the real world problems or emerging technologies. I don’t throw the blame on the classes I took, but when the professor who is teaching you web development does not know what Bootstrap is, then that is a big problem.

I respect and value education, but some fields can be realized outside of the classroom. Honestly, I don't even know where I placed my diploma. Maybe somewhere in a box in my basement.

Recently, I have been teaching myself programming and web development using free resources on YouTube and other free platforms. I was determined to become a programmer and to launch a career in Web Development. To some extent, I can say I am advancing pretty well, and the things I learned so far could not have been acquired otherwise.

I am now able to develop complex systems that are used by thousands of people on daily bases; thinking about this, nothing I learned in college contributed to my ability to build and launch these products. Everything I learned was from YouTube and other FREE resources like Udacity, Coursera, and Edx…etc

I do not want to generalize, but it was a complete waste for my time and money. I understand and respect other opinions, but -leaving the college credential out of this- I cannot see the value of learning computer science or software engineering for loads of money, while you can get much better education on the same subjects for free.

I can say with complete confidence that if you are interested in learning Computer Science, or at least the field of Web Development you can do this without the need to go for a paid CS Degree or even an expensive bootcamp. If I can do it, anyone else in the world can do it…even better than I did.

Start from the free resources on the Internet and use your inner grit and persistence; that’s all its going to take. No matter how old you are, you still can get into tech; that’s the beauty of the internet; everyone can launch a career and work online.

You will hate it at the beginning, but I promise, the more you learn the easier and more fun it becomes. Start with the simple stuff and enjoy whatever you think is easy to understand. Ignore the hard parts as they will become easier down the road when you revisit them.

16 comments

I find a lot of masters students who didn't study computer science as an undergrad are woefully unprepared for the realities of the job. A lot of masters programs (even from top-tier schools like UPenn) seem to split students into groups frequently. If everyone knows how to program already, great, but there is a lot of benefit to new programs in doing stuff like `printf("hello world")` that won't ever get covered in a masters program. Put simply, a masters program is not the place you want to learn programming basics.

When you get a masters, you need a good idea of what you want to achieve. "Breaking into the software industry" isn't concrete enough, but even with that goal, I'm sure your masters has helped get you past resume screening. If you don't have a specific, advanced topic you'd like to tackle during your masters, you're going to waste a lot of time and money.

I totally agree
I completed my bachelors in Software Engineering last year. I have had a career in Software Development for 15 years prior. Aside from a few classes about security, logic and data structures, I can say that I didn’t learn a lot new in terms of programming.

This is really important: Universities don’t teach you your job skills.

What most university programs are designed for is a generalized understanding of the subject matter, a standardized set of teachings, and perhaps the greatest unspoken goal: A piece of paper that tells everyone else you worked 120+ credit hours on with that you probably didn’t want to do most of the time.

You can probably get all the programming instruction you get in a university online. But virtually all of that is going to be 100-200 level classes anyway. Because after that it’s not programming, it’s theory.

> Universities don’t teach you your job skills.

This needs to be repeated often and loudly. I would especially emphasize that Computer Science does not teach you how to develop software.

It's honestly such a shame that the software industry places so much emphasis on university education. Sure we all know some self taught dev or highly motivated bootcamp grads who got into the industry, but mostly every job posting you'll see for software is "requires bachelor of computer science or equivalent"

It really should be treated more like a trade, imo, because that's how people learn it best. We even see the occasional post here, "how do I find mentor in software"

It makes sense to me, anyways. But as an industry we're often too busy working at breakneck speeds to capture some market or another to be teaching people coding skills from scratch.

> but mostly every job posting you'll see for software is "requires bachelor of computer science or equivalent"

I'm not speaking from personal experience here, but from what I've read online, people without degrees often manage to get interviews at those companies, even though they don't meet the requirement.

"Equivalent" often includes professional experience. If you are straight out of high school and have never programmed, you don't have the equivalent of a CS bachelors. If you've just been discharged from the Army and worked as an MP for 20 years, you don't have the equivalent (most likely). However, if you've been working for 3-8 years (depending on what you've done), you should be approaching equivalency, at least in the areas most offices need you to be. That is, you likely won't know or understand theoretical CS, the difference between regular and context free languages, various advanced CS/programming areas, or some of the math topics. But you'll be competent in one or more programming languages, core algorithms and data structures (their use, if not their creation), real-world systems programming (lower level OS tuning, databases, etc.), and more.

This is what the "equivalent" means for many (but not all) employers (the HR departments may not be so enlightened, however).

Just here to emphasise the fact that the average fresh bachelor holder is way less competent in software development than someone who spent 3 years+ in the industry.

Equivalent here does not really mean equivalent.

Basically this means:

You either need a Bachelors degree or a (small) track record of success in the industry.

Right, because that'd be the equivalent (via OJT). Now, not all HR offices are sufficiently enlightened to get that concept, but you probably don't want to work in those places anyways in that case.
software engineering is not a get rich quick scheme

students don’t have time to learn… what else are you doing then besides sitting down and studying and working on class coding projects?

a CS program teaches you the fundamentals of CS and software engineering. it is not intended to teach you the latest fad toolkit or language.

you wanted to hack some websites together. i did that at age 15 before going to college. so yeah, no CS degree needed.

do you want to build the next search engine or graphics engine? that CS stuff might come in handy.

A masters degree in Computer Science in many places is going to cover specialized topics beyond undergraduate CS. It is not the place to go for learning CS fundamentals. If you didn't have the foundation of CS, a masters degree isn't the right track.

In fact, these days many high schoolers can build websites and webapps with thousands of users, often learning from free resources like YouTube; but more often than not, these high schools get into undergraduate CS to learn more about how these systems really work under the hood. For example, since you mentioned Web Development, you probably use JavaScript; can you explain at a very high level (no need for details) how the JavaScript you write is parsed into AST by the browser, how the browser interprets the bytecode or JITs it into machine code, how the CPU takes these instructions decodes them execute them out of order retires them? A good undergraduate CS education gives you answers to these; a good masters education just gives you more details.

It's not even that it's too advanced, it's just the wrong thing if the (only) goal is 'web development' and 'Bootstrap'.
> My goal was to start my own programming career and try to make money online like everyone else.

It's not why you should study theroretical computer science imho (I did to understand computers, any job is a side effect of that core goal for me). Youtube videos are ofc a better cost/gain ratio: even if you're shit, you paid nothing and you can trial and error your way slowly at low cost in small gigs.

I also dont think you should pay 45k for an education that mostly benefit society and taxpayers (my MSc was financed by taxes like for everyone else in my country), but apparently you just wanted to make money online so there s sort of zero incentive for you or for taxpayers to pay for that.

You learned a tough lesson in investment 101, next time prepare the return on investment with hard knowledge rather than fairy tales.

It was hard a lesson indeed... it is no fairy tale my friend. I know many many self-taught programmers who make more money than you can ever imagine. real people and friends.
You just went to the wrong school. A small local 2 year cheap college here is exactly the opposite experience. Students come back and visit after they leave and get jobs and tell us how valuable just 2 years were. There are ton of shit schools and a few great ones for CS.
Maybe, but not everyone is so lucky to have the same access opportunity. Nevertheless, I bet that those students could get the same contents from the Internet for free. I am not talking about college credential here. You will be punished by society and stay jobless if you don't get credential, but the knowledge is something else.
But there s maybe something to say about the fundamental basics you got + the ability to learn quickly you simply need the college to put you through, that a gig as a waiter while binging youtube may not prepare you for ?

To say simply, maybe you d see problems if you went to any rando in the street: "binge youtube and you too can whisper to electronics" ?

> Software Engineering, Distributed Systems, OOP, Semantic Web, Web Development, Digital Imaging and Computer Vision…etc.

That's an overly diverse masters degree program. A masters program is typically 4 semesters (in the US) unless you roll straight into it from undergrad (at the same school) where you might reduce it to 2-3 semesters thanks to taking grad courses your senior year. "Fulltime" is 3 courses a semester, so you have time for 12 total courses and that's if you don't do a thesis, which usually takes up most of the last semester. In practice you get 8-10 courses in most CS masters programs and the rest of the time is research/project based.

It is supposed to be an opportunity to focus on one (maybe more, but really best if they're adjacent or can be made to overlap) fields. For example, you can focus on compilers + graphics and develop tools compiling GPU shaders or doing automatic parallelization of algorithms. But it's overbroad if you're also studying OO (what does this mean in grad school?), semantic web, and web development on top of that primary focus area. You're coming out of it as a generalist, and without any opportunity to really focus on anything to develop expertise.

This isn't a fundamental problem of masters degrees, but it is a problem with many schools. If the goal isn't the diploma, you have to be selective in where you choose to go.

You don’t need a CS degree, but I do think a few classes are going to give you a foundation - operating systems, data structures, algorithms, a networks course, and if you’re interested, a compilers course.

Everything else isn’t necessary to be a successful programmer or “software engineer”, even at a FANG or even start up, in my opinion.

I don’t think a computer science curriculum is useless, but not all parts of it are really meant for a job. It’s just theory, and you’ll forget it. I think at least in my area, I’ve consistently applied principles from the courses I listed.

I do think a significant problem is the way that these topics are taught. My data structures and algorithms professor did not teach anything at all. He would ask us to read chapters, and his lectures would regurgitate the written words from the chapter in his words. I don’t think that he’s teaching. The kids who did well on the exams learned it outside the course, or they already knew the material. And I think that’s sort of the biggest problem. I remember sitting in class, and we went over merge sort. He asked the class about runtime complexity, and none of us could answer it except one kid who already knew the material. And the professor looked at the rest of us like we were idiots. In reality, he never actually taught us how to think about runtime complexity or space complexity.

I’m a staff/principal level now at a FAANG company. If I think about what classes or what experiences led me to my current level, my data structures course was probably the most useless. I don’t have a single positive things to say about it.

I passed with an A by memorizing things. The professor didn’t care, and I remember going to office hours and he would be annoyed that I even showed up. Unfortunately the professor is still teaching over a decade later.

Did you do any internships during your Master's program? That's one of the things I always recommend to people learning to program, and from talking to undergrads, that's where a lot of the real job-specific learning happens. It seems like that's where a good balance of theoretical (from classes) and practical (from industry) often comes from.

I think this does bring up an interesting point about the current state of training/education in CS for those that are looking to transition into the field. It seems that schools are marketing their Master's and certificate programs towards people breaking into the industry, but it's hardly a direct mapping from CS classes to practical, on-the-job skills (creating the niche that boot camps have worked to fill). Furthermore, these programs are often money makers for the school, especially if they're fully-online programs, which scale much better. This adds an interesting side incentive to getting paying students in the door.

Is there an intangible value of having a degree on your resume? If there is, or at least if there's a perception that there is, it seems like it's still driving this small part of the academic industry.

Caveat that I'm currently finishing up my CS Masters w/o a CS undergrad degree while working full time and have many opinions about this.

I actually had some very similar thoughts recently: https://news.ycombinator.com/item?id=29137377

That said, it's not like getting a degree was useless in my eyes. I experienced writing low level assembler code which i otherwise would not have, as well as approached problems from a different point of view with Prolog, the paradigms of which were very different from the likes of Java or .NET. I also learnt about 4EM, COCOMO2, COBIT and other practices that are sometimes attempted to plan and execute projects as well as manage them and their risks. Plus, the brief looks at PHP, .NET, Ruby and others, even if pretty underwhelming, motivated me to learn Ruby on my own, continue with PHP and also avoid the older .NET because it's not worth it in comparison the new .NET Core releases (or .NET 6).

That said, all of it was more research focused than anything, but if i had skipped out on getting a Master's degree, i also probably wouldn't know about how to run and manage projects, since you usually don't learn in depth subjects from YouTube or skill sharing sites. It's nice to be able to question the people who have a decade or more of working in the industry under their belt, as it is nice to make mistakes and fail group projects in a no stakes environment so you can do retrospectives and then actually fix them.

I still maintain that the only useful degrees which would teach both theory and practice to a sufficient degree would probably take 10 years, which isn't feasible in our world.

That said, i got my education for free (the country paid for it), so i can understand your frustrations, because to you it probably feels like a bigger waste.

On the upside, some companies really care about the credentials, so there's that.

I have similar experience.

A year ago I decided to enroll in a local university for CS. The reason was that I figured that I was interested in CS, but not disciplined enough to go through the whole program.

After a year I have to say I was gravely disappointed, for the following reasons:

1. Some bad professors really ruined the experience:

There are two who give lectures so badly that students made a few petitions to remove them in the recent years, to no avail. I took two courses with them and made through with good marks, then I found out that both Operating Systems and Database Internals are going to be taught by the same two professors so I dropped the program.

2. I accept my incompetence to go through the whole program:

I realized it would be a lot cheaper just to go with Open Courses from high ranking CS programs (MIT/Berkeley/Melon) and good textbooks and projects instead of attending some schools. If I can't go through I'll seek help from outside (e.g. attending a study group) or just drop what I'm not really interested in.

You're paying for a degree, not knowledge. Most places will trash your resume if the scanner doesn't see a degree on it.
I have a mixed experience. Let's just say that I learned how to work with VUSec security classes when we were replicating rowhammer attacks. Practical? No, but it did give me an intuition for finding very difficult SQL vulnerabilities and completely pnwing my employer (with their consent). So that was really useful.

The fact that I did a course in distributed multimedia systems wasn't useful.

IMO a master CS degree is much better if you already have a few years of experience and have a feel for what you want to learn now.

You don't pay 45k for the teaching, but for the diploma's pedigree and the network you build while you're there.

I don't believe this is right, but it is how it is.

1. Degrees open a lot of doors.

2. You build a network when you are meeting people.

Door-opening and networking are the only two advantages of a college degree that cannot be gained from a different place with a high RoI (in terms of money, effort, and time).

It also affords you 4 years to learn at your own pace.

Proper theory can be learned through books and MIT-OCW. Proper skill can be gained from YouTube tutorials and personal peojects.

Schools like Stanford, UC-Berkeley are another story, though.

You can also build a good network working on open source software, committing to GitHub and talking to people at meetups.

CS is really unique and wonderful in this aspect as the “means of production” are available to anyone, anywhere.

So why do we need to gatekeep this knowledge for $45k or whatever bc this is…illogical and a barrier to upward mobility for many.

IMO access to a good paying developer career should not be constrained by ability to pay/geographical location/familial status. It’s just there you gotta do the work though.

If you really want a degree there’s WGU in the US or open university in uk/eu.

This is true, but I also learned tons of subjects that I may not use for my job, but I appreciate and wouldn't have had the motivation to learn on my own. I don't know what dollar value I would assign that.
The main value I got out of my college degree was being able to participate in the career fairs to get internships and eventually a full time job.
> ... Web Development ... Computer Science ...

That's like studying materials engineering because you wanted to sew quilts.

A prof in my Uni has also said, studying Computer Science to be a developer is like studying architecture (of the building kind) to be a house builder.

Luckily we're very well-paid builders...

Well, with training from YouTube courses you can build a site using React. With a Masters degree, you can build React yourself from scratch.

I never completed my Masters, but the grad courses I took were invaluable. That said, I already knew how to program at a professional level so I got more out of the classes.