Ask HN: Is a computer science degree worth it or should I learn on my own? Is 4 years of going to school really worth it? Or should I just try to learn as much as possible on my own and carve my own path? |
Ask HN: Is a computer science degree worth it or should I learn on my own? Is 4 years of going to school really worth it? Or should I just try to learn as much as possible on my own and carve my own path? |
On the other side, not every one want's to be a park, some people are happy being a bush, sometimes people are better with being a jungle and maintain their own beauty.
Nobody can predict the future, nobody can tell what person you will be in 10 years, in 20, 30.. But probability-wise it's always a good idea to learn from those who already mastered the skills you seek to learn. Having a teacher, someone who can guide you, someone who forces you to learn the boring but still important stuff, is usually a good thing. Especially in a highly knowledge-drowning field like computer science.
You can certainly learn this all by yourself but that takes quite a bit of discipline. Moreover, having an actual teacher and peers to help you with your learning is an enormous benefit.
That said, foundational computer science education can only ever be part of the equation. If you really want to excel in your field you have to learn on your own anyway. So ideally, it's a combination of both.
As for the degree itself, that totally depends on what you're going to do in the future. What you learn is much more important than the degree itself. You can still drop out later if you feel you'd better continue on your own or your time (and money ...) might be put to better use in other ways.
I'm a 34 year old dad with two kids with a bachelor's /master's, so I'm not really itching to accrue any further debt and I don't wanna spend 2/4 years in school. Sure, if I had the time and money, I'd go back to school and take a bunch of math/theory that would probably help but wouldn't be essential to finding a job.
Anyhoo, I start class at a bootcamp in a couple of days. Other than a bunch of codeacademy, mdn and other random resources, I don't have a load of experience in programming
If you actually want to lean something, you have to check some available lit and see if you actually care about the problems CS people are trying to solve. Just because CS has something vague to do with all things Valley, programming, six-figure salary, hacking the Matrix and other shiny stuff doesn't mean you're gonna like it or end up valuing it.
Maybe some actual programmers will kindly weigh in.
Degrees and school solve different problems: degrees serve as a way to "know enough" about someone otherwise unknown to assign a job, also solve some legal problem in that process; schools are a way to spread not only knowledge per se (notionism) but also to transmit a paradigm, a way to grow personal knowledge.
So, without a degree you may encounter "bureaucratic" problems/obstacles or at least "suspect" in your work's career. Without a school you can learn MANY things, perhaps more than that you can learn at school in the same time, but it's hard to say if you can learn them with a good ontological method or not. At school it's the same: if you encounter a good teacher you may learn good paradigms not only "know how", otherwise you may only lost time and eventually money (depending on your's country education system).
Also even if you are lucky you still need experience, not only paradigms and mere knowledge.
The way and the order/time you'll follow to get them... Well it's really individual, not standardizable, so you can't IMVHO get ANY generally valid answer. You know ingredients, how to combine them it's your's personal recipe to be build accordingly to your personal taste, kitchen, tools and time you have and want.
For the rest, in my experience USA/UK/English-world school in general tend to be too notionistic, they tend to form "skilled Ford model workers" not real "technician" or "autonomous thinking guys, European ones tent to be too detached from the real world so they form "autonomous thinking children" they need to grow in the "outside"/real world for some years after. Also in the USA/English world it's generally more valued experience/history than competence mostly because it's easier to check than really get to know someone. In EU world it's more valued traditional qualifications...
As a bottomline: it doen't really matter how much effort you put if you do not really want to do something so if you force yourself in a school or in autonomous learning results will still be poor. You need to desire and need something to really accomplish it. So to say that if you can, as you can, it's better to follow your dream not a pre-defined path by someone else. it may not be ideal, it may not produce better result but being you'r own path it will make you more free and happy than anything else.
Sorry for my English, not my motherlanguage...
So the question really boils down to:
1. Do you want to work in academia? If so, get degrees.
2. Do you want a piece of paper showing you're a good cog in the machine? If so, get a degree.
3. Do you want to learn as much as possible? If so, skip the degrees and focus on learning.
That strongly depends on what you plan to do with it once you have it. Is it just for the credential? Is there some specific area of knowledge you feel you need to know to advance your career? Is it for the sake of personal curiosity?
A master will give you thorough theoretical understanding, it shows you can get through difficult and boring phases but did not give up and you learn to learn and reason systematically. Outside that networking, social life and having fun should be a big part imho.
If you have to build up student debt (I am from the EU; it was basically free for me as long as I wanted, so I got several degrees) then it depends what you want with it; I would say for IT compsci is definitely worth it; other fields, you might struggle to pay back debt for a long time so then it would need to be something you really want. As you are not sure and asking here I assume you mean compsci.
ymmv here. the company I work at offers the same starting salary to fresh bachelors, masters, and phds, unless your scholarly work happens to directly pertain to the business. in a lot of cases you will have missed out on 4-5 years of raises and experience. a lot of companies will be calling your peers "senior devs" by the time you get your first job.
Many companies we work with throw bachelors straight on the do not hire or maybe-if-no-master pile. This is also related to that in my generation and my country, bachelor basically meant dropout. You always got the equivalent of a master and hiring managers from my generation and region still feel it is basically not finishing.
Recently had to make this choice for myself as a 24 year old.
Reach out to me if you want to discuss it further and I may be able to provide some insight.
That being said, having a degree makes it significantly easier to get your butt into a chair and have the opportunity to prove that you're a good programmer and deserve a raise. When you don't have a degree, the burden of proof is on you to demonstrate to the interviewer that you're a good programmer, and then the burden of proof is on the interviewer to convince HR that you would be a good hire. But if you have a piece of paper with the magical words "Bachelors of Arts/Science (doesn't matter) in Computer Science/Engineering" and there's a strong need in the organization for people, the burden of proof is on the interviewer to convince HR that you can't program and that HR shouldn't hire you.
It's a role reversal. It's the difference between "proof beyond a reasonable doubt" in a criminal trial vs "preponderance of the evidence" in a civil trial. With a degree, you can get a job just because you don't suck. Without a degree, you'll have to convince a startup CEO that you're a ninja/rockstar/MacGyver or whatever the buzzword is this month.
With a non-CS degree it may be a little harder to get an interview, but if you can interview well, it's not going to count much against you. A degree in a strong technical field (like Physics or Engineering) might even count in your favor compared to a CS degree if you can still do well on an interview.
With no degree at all, you may find it harder to get interviews in the first place. There are definitely still jobs to be had, and companies who will interview you, but the options will, at least initially, be more limited.
But so does quick, slapped-together code from late last night.
Depending on the complexity and impact of either, you can progress in your career.
College won't teach you either, but it gives you an (otherwise very difficult to obtain/justify) opportunity to study full-time for four years on complex subjects and a foot in the door.
I also made some of my best life-long friends, and now business partner, in college. As you can see going to college is more than just the degree.
As others also mentioned having a degree significantly improves your chances of getting a programming job. I’ve helped many people prep for job interviews, both with and without a degree, there is a stark difference for better or worse.
I’m not saying college is a must-have. But I’m saying it can be a life changing and amazing experience, that is way deeper than just studying computer science.
I still reflect on those nostalgic days sitting in the coffee shop or student union on campus discussing math, philosophy, politics, programming with numerous people, many smarter or more knowledgeable than myself. I feel that I had a major “awakening” in college. :)
Astronomy is not about building telescopes and biology is not about designing microscopes. Whilst CS is a very important field, it could be likened to being like physics is to structural engineering. Physics study will teach you a lot about how materials behave, but structural engineering will teach you how to apply that science and build structures that will meet the requirements over a long time.
The problem with being self-taught is that you don't know what you don't know and can easily succumb to the Dunning-Kruger Effect. That is why programs are so full of bugs. The coders didn't understand what they were building, they just hacked away until something just worked (some of the time).
When I was in college and grad school 10-20 yrs ago, and when web dev wasn’t as hot as it is today, the CS folks were taking classes like algorithms, data structures, operating system design, compilers, microprocessor architecture, etc.
Has this changed much in the past decade? Or are you talking more about a trade school type of degree (and do they still call that CS)?
Why?
Go to an in-state school with a good CS and Engineering program if you can. Also you can consider going to community college first and transferring in your credits to save money.
If you want the fastest path to get a $50,000 -$90,000 job - you may want to consider self study. There are jobs in every city that could fit for this.
If you want a career path and want to work on high level engineering, then go to college. You will need the basics and a network.
If you are asking and not sure, you should most likely go to school.
I'm a 34 year old dad with two kids and a bachelor's / master's, so I'm not really itching to accrue any further debt and I don't wanna spend 2/4 years in school. Sure, if I had the time and money, I'd go back to school and take a bunch of math/theory that would probably help but wouldn't be essential in finding a job.
Anyhoo, I start a bootcamp in a couple of days. Other than a bunch of codeacademy, mdn and other random resources, I don't have a load of experience in programming. I'm constantly making mistakes and often hit the solution button to fully understand the problem.
I think the biggest motivator than anything is to find a problem/type of program you'd like to create and learn as a means to achieve that idea. That's been the biggest motivator for me.
The other big factor is that the bootcamp has a strong relationship with recruiters making it easier to land a job afterwards.
#2: I was just reviewing a big requirements document with a Program Manager in the DoD and they asked me to come up with criteria for hiring SWEs. They were specifically asking what kind of education they should have.
I told them that BSCS was good, but I would hire someone the same age with no degree, but 4 years of experience over someone with no experience and a BSCS.
My experience shows me that even at the Senior Level this seems to apply.
There are drawbacks though.
Generally speaking, code savants don't need school to be amazing, but a non trivial number of them are high maintenance Divas that aren't great employees. Genius level work though.
On the other end, the BSCS folks have a floor of competence most don't fall under, so code is more predictable but in my experience rarely really amazing work.
On the extreme end, PhD's generally can't code worth anything. Don't hire them as SWEs, they're researchers and architects.
So the answer to the question is really more questions.
Are you ok losing out on positions that have a mandatory degree?
Could you maintain your desired lifestyle as a freelancer/code mercenary?
Are you sure you want to miss out on the social and network benefits of going to College?
However, if you're the type-A/self-motivated type, you can totally learn learn enough on your own to land an entry-level gig. I will never be that kind of person, but I work with people who are, and they earn the same if not more than I do doing the exact same job.
Then I got a graduate degree in physics, so you never know. Your interests can always change while you're in college.
Today, I do a lot of programming, but I'm not employed as a programmer. On the other hand, math, physics, and electronics are "domain knowledge" that have served my career well.
If it's mostly subsidized at little cost to you, probably worth it
Another benefit of the degree is the already plannified roadmap, taking it's time to learn the basics in depth. And, of course, the teacher who answers the doubts that are coming and shows the advanced tricks he already know.
Definitely, learning in your own is a good choice if you don't plan to work on infosec jobs. But without a grade the most tech job I can find in my country is formatting broken windows machines, installing printers and routers, and no much else.
of the 100+ engineers i've hired in the last decade, few had degrees and all of the top performers, aside from one, did not.
dual edged sword in my opinion.
Additionally, it's harder to get jobs at larger and more bureaucratic companies without a degree. This is because of risk. If I'm a hiring manager, and I hire you, and you do a good job, everything is fine. If I hire you and you're a disaster, there will be a review as to whether there were any red flags during the hiring process that were missed. If "doesn't have a college degree and sufficient work experience" is found, it'll be used to make me look like I was sloppy for hiring you. If no red flags are found, it'll be chalked up to "there were no red flags. This was just bad luck." and everyone moves on. Knowing this, I probably won't hire you even if I think you're a good risk because it's not worth the risk for me.
Without a college education, you'll need to work for small companies who are willing to take a risk on you. You'll also have to accept really low pay to offset this risk until you've built a decent resume.
All of these things might be better than accumulating student debt. Depends on where you live, what the job market is like, and what connections you have.
There are multiple benefits to this. First you have a base to fall back on. No matter what you do from that point on, you have a degree that declares that you are at least somewhat competent in your field. You can't go any lower than this new platform you made it to.
Secondly, having gone through college for a degree in a field that I do not work in now, I can say there is still immense value in getting any degree, especially a science degree. The most important thing you learn is how to think logically, think for yourself, and how to problem solve logically. These are things that are often taken for granted, or overlooked.
Thirdly, you learn about a multitude of topics that you may not have bothered to investigate, which broadens your horizons, and makes your a more informed and intelligent person. Same goes for meeting new people. You meet people that you may never have had the chance of interacting with. Universities aggregate people from all over the world. You will make lifelong friends and connections that can be just as important in a career as technical skills. This also results in learned social skills and emotional intelligence which is immensely beneficial.
I'd highly recommend you at least try it for a while so you'd understand what you'll be passing on. One thing that isn't worth it is regretting down the line that you didn't go and having neither an understanding of what you passed on or a good reason why you did it. You don't even need to go to a 4-year college: take some Community College classes if you're unsure or money is an issue. (if you're careful to take classes that transfer, you can eliminate a big chunk of the cost if you decide to go for the degree) The downside is that 2-year schools really don't give you the same experience as the 4+-year schools. Bonus points if you take classes while trying to carve your own path: it's hard but then you'll get the experience from both sides to inform your decision.
If you just got the 1 year of valuable education, you'd still need 2 years (only part-time though) due to long chains of prerequisites. This is easily demonstrated at some schools by the fact that a person with an AA degree (totally generic liberal arts, like repeating some high school classes) can upgrade to a BS degree after 2 more years. Since half of those classes would be outside the major, the clear conclusion is that the 4-year degree only gives you 1 year worth of valuable education.
So there you are, giving up 4 years of salary and paying 4 years of tuition and living expenses, to get just 1 year worth of valuable education. It sucks, but it might still be your best option.
Higher education is sort of a cartel. You are offered what they feel like selling, even though the customers are really annoyed, and every place is roughly the same. It's like dealing with De Beers or OPEC. The colleges even exert control over the accreditation organizations, ensuring that no college can cheat.
There's nothing wrong with being a cook but it depends on what you are aiming for for your career.
[1] https://waitbutwhy.com/2015/11/the-cook-and-the-chef-musks-s...
[1] https://waitbutwhy.com/2015/11/the-cook-and-the-chef-musks-s...
Programmer / Database - definitely - I have been developing code for a long time, I have worked in many positions. When I work with people I can usually tell if they have a degree in CS or some other topic. Part of it is the mind set of the person, and their ability to comprehend issues. A math or engineering major will understand recursion when explained. Most math majors will be able to do recursion after an explanation. A history or business major will nod in agreement, but still have no idea what I explained. That being said I use recursion to distinguish better programmers who can / could be great and those that are on the B team.
Like others have said, not all CS majors are great programmers, and many are just bad. But the chances are better, but I think it has more to do with passion than anything else.
If desire to be a systems administrator, a CS degree can help, especially in scoring the interview, but is often more helpful to have certifications.
It is easier for a boss to justify a raise / promotion for someone with a degree than not. Take this extreme scenario: you have 2 developers, one with a few programming certs and one with a CS PhD. A manager slot opens up... whom do you promote? How hard would it be to explain either promotion to upper management? If they screw up in the new position who will they blame (if its the PhD person they blame them. The other guy they blame you for promoting him beyond his skills).
If you want to do web pages, then I think the learn it on your own is the best tactic.
I would avoid a CIS degree. That appears to be a degree for people who cannot do CS but think a computer degree would be real cool. Last I looked there were a lot of unemployed CIS people.
The one advantage of starting work now, is you might be able to get the company to pay for your CS degree. But they almost never provide a good pay raise.
My advice: choose a path you are comfortable with in terms of time, money.
I imagine it will also be difficult to network and build relationships in the industry without attending a 4 year school unless you are very outgoing. Who you know is often more important than what you know.
It's possible for you to carve your own path but from my experience companies are looking more and more with people that already have professional experience even for entry-level jobs. As long as you can afford it without going knee-deep into debt then I would say it's a good idea.
Now systems have become more mature, more complex, and companies expect more from an individual that they only want to train on the details of their own system rather than the basics of the craft.
Gradually that's meant that at the very least, you ought to be credentialed to have an advantage now if you want to be hired by larger companies. There is an exception to this, and that's if you manage to be front and center in a large self-sufficient software project. But getting to that point can be just as difficult as getting a degree, and leaves you with the burden of communicating your value even if you have learned a lot in the process of maintaining this codebase. See the story with the Homebrew guy failing his Google test.
From my experience a university program emphasizes theoretical material which gives you a bit of every domain in software engineering. You are still given a lot of room to direct your learning outside of this, but it would be mainly to keep current as to what tooling industry uses as well as maintain your network. What you are paying for is structured material plus access to the wisdom of professors, which can often be quite mind-expanding in its own right.
Where are you from, if you don't mind? How is it in Berlin? I stopped following any news a while ago, but the last thing I heard was that a lot of refugees were coming to Germany and not all of them were behaving. To the extent that native Germans started leaving some cities. Is that true? Is it safe in general?
What software engineering program doesn't cover DS/A? Furthermore every answer to those cookie cutter whiteboard questions can be found in CTCI, leetcode, or any other DS/A textbook.
Lets not pretend that a CS degree is some magic pass to getting a job in the field.
https://en.m.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effec...
As someone self taught in a lot of things, definitely don't know what you don't know.