Hacker News new | comments | ask | show | jobs | submit login
Ask HN: Is a computer science degree worth it or should I learn on my own?
54 points by cloudblare 5 months ago | hide | past | web | favorite | 94 comments
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?

Both. Do not expect a college to teach you how to write good code; they won't. You can write terrible code and still get Cs/Bs. ("Cs get degrees") It's up to you to learn how to write good code. If you want to progress in your career, you will need to be able to write good, maintainable code, and that isn't a skill that's taught in college. If you're "that guy" on the team that writes shitty code, sure, you'll get a paycheck every month because management can't justify firing you when they're behind schedule, but you'll never get promoted, either.

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.

I'd add that there's a big difference between having a non-CS degree and having no degree at all.

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.

Plus the degree goes a long way in getting you past the resume gatekeepers and into the interview room in the first place. There are a lot of places that won’t hire at all without a CS degree, and many others see it as a strong signal at entry level (education becomes less and less important as you get further into your career and have a job history to demonstrate your skills).

Good, maintainable code has it's place in the engineering cycle.

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.

My recommendation is to go to school if you can. In addition to getting a good formal education in computer science, you also get exposed to many other subjects such as math, philosophy, physics, etc. Even classes like English/writing that may seem unrelated, all help you become a better professional as you discover how important communication and documentation is in the workforce. The university experience can be very fulfilling. You are also exposed to various extracurricular activities which can further supplement your growth. For example I was part of the game development club and even got to lead it for a few years. That bit of experience was not only super fun, but also helped me land my first job at Lockheed after graduation. I also randomly stumbled into learning Japanese and Chinese and got a scholarship to study abroad In Japan for a whole year. Absolutely amazing and life changing experience.

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. :)

I would suggest getting a degree in engineering! Electrical, Computer, Software. The key to being effective in the long term is to be able to design and then implement system of systems.

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).

If you want to be a software engineer, study software engineering, not some other engineering area. I think electrical engineering is far less useful to people if they are going to be general software engineers than being a cs major. You will spend a lot of time learning things that won't matter to software engineering. Of course if you were going tl be employed as an electrical engineer, but if you only were trained as a software engineer, you wouldn't be able to be proficient either. Study the field you want to work in!

In my experience (a very long way from SV) a significant proportion of excellent programmers did not do SE degree but had degrees in some other area. My analysis suggests that critical thinking, ability to comprehend requirements and do good design are critical skills and can be developed in many related fields.

But CS pays, and engineering doesn’t. If you plan on getting a job, that engineering degree is worthless when you’re at a whiteboard and the interviewer is asking some canonical CS question requiring implementation of a data structure that you don’t know the name of. Also, engineering is hard, like, lifetime of accumulated knowledge hard. It’s true for CS as well, but there are so many kids running the show that it’ll never be expected of you. And that’s okay because CS problems are easy, at least the ones you’ll get paid to work on. Load a poorly-written web page faster, given infinite compute resources. A/B test the color of the button to get more clicks. Engineering problems are hard. Shoot down a nuclear missile going Mach 32. You’ll spend a thankless lifetime trying to learn enough about things like microwave phase shift jitter and electron transport dynamics in indium phosphide before you really understand how hard that is. Instead, just get a CS degree, and call yourself an engineer when you valiantly build the backend of the “Yo” app.

>>If you plan on getting a job, that engineering degree is worthless when you’re at a whiteboard and the interviewer is asking some canonical CS question requiring implementation of a data structure that you don’t know the name of.

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.

Off-hand CMU/Waterloo are the only places I know that offer a SWE degree, and it's mostly distance professional graduates.

A good accredited CE curriculum will require all of the CS fundamentals.

Had to look it up.


As someone self taught in a lot of things, definitely don't know what you don't know.

I'm 33 years old and have been programming professionally for 11 1/2 years, and I'm self taught. I'm considered "senior". I founded and lead a user group and I've spoken at a conference. I don't say this to brag, I say this to state that despite my success and that a piece of paper won't advance my career, I've always regretted not having my degree. I'm married with a kid and I just started going back to school to fulfill my wish. I say this from experience, go to school first. It's much easier the first time around.

How do you deal with classes like "intro to web development", where you will learn what a GET request is, when you've been a senior web developer for 10 years? (Just as an example, maybe you've worked in something other than web development?) Is cleping classes realistic?

Do people really need to take an “intro to web dev” class as part of a CS curriculum? Is intro web dev included in the list of requirements nowadays?

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)?

You just slog through it and use the free time to dive deeper in your other courses or to go above and beyond what's required for the course.

He might not have any classes like that. I majored in computer science and mostly took classes like crytography, compilers, operating systems, automata theory, etc. They might have had some courses like intro to web dev, I wouldn't remember; I always wanted the "hardest" courses I could get. I could program before ever staring the curriculum (at 26). They had two mandatory weed-out courses early in the curriculum to bounce anyone who just didn't have the aptitude or likely ability to complete the program where I had to write some boring Java, but that's it. In other places in the curriculum or some classes, they did have some programming, but things that wouldn't bore most anyone (For one class, we had to write Tetris, for instance. In the operating systems class, we wrote an OS.)

> I've always regretted not having my degree


Get a degree. It is so much easier to get a job, and you are more likely to complete it since you have skin in the game.

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.

A good engineering program also exposes you to higher level maths and physics as well, stuff you might not encounter or need if you did mostly self-study.

This is a really good point I’d like to second.

No one can answer this for you.

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.

There's also the middle ground of going to a reputable coding bootcamp.

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.

Just out of curiosity, why bootcamp and not a community college course or two? I ask because my mom taught programming at a CC in the 1980s, and her students got decent jobs. And my spouse is just about to sign up for a Python class at the nearby CC.

Mostly because I'm older and I have a family I need to support. I don't feel like a course or two would benefit me as quickly as 16 weeks of nonstop learning.

The other big factor is that the bootcamp has a strong relationship with recruiters making it easier to land a job afterwards.

#1: There is more to college than the education, education is almost incidental anymore. It's about networking and signaling, and that is actually pretty important even though it shouldn't be.

#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?

Like others have said, it really depends. As somebody who works-to-live and doesn't particularly love software, I never would have achieved the knowledge I have now on my own. I needed the real-life deadlines and stress to learn. Additionally, I can say with quite a bit of confidence that I use knowledge obtained from university almost every day, even if indirectly. If you do decide to go to school (and are in the United States), I would highly consider the community college -> in-state public university route. I went to a top-30-ish CS program at a large in-state institution, and I don't think I missed out on many opportunities because of it. Unless you get into CMU, MIT, Stanford, etc. just pick a large, hopefully cheap in-state school, make good grades, and apply to jobs through your school's network.

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.

There's always the possibility of getting a non-CS degree. Granted, I started college in 1982, but I ended up majoring in math and physics while teaching myself programming and electronics. Lots of people were getting programming jobs without CS degrees.

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 you are paying for it in loans/cash, be very very careful about where you go and how motivated you are.

If it's mostly subsidized at little cost to you, probably worth it

Learning your own doesn't give you a grade or diplomas to prove how much you've studied.

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.

the opposite is quite true as well... a degree doesn't mean you've learned anything or are great at the things i need.

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.

To read you've hired engineers without the degree. Some brilliant people just needs an oportunity. In tons of business they just discard the CV that don't show degrees. A good talent chasing makes this world better in a faster way. But not everybody can find the spark in potential genius.

Well, this comments starts with "I feel happy..." Sorry.

In general, 4 years of school is worth 4 years of work experience. The problem being that, without 4 years of school, it's hard to convince anyone to hire you and get 4 years of decent work experience.

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.

My 4 year degree sure doesn’t look like 4 years of experience to any HR staff/hiring managers I’ve ever interacted with.

From what you see on social media, in the news, etc. it might seem like "wow there are people out there who are self taught and made it big! I can do that!" But keep in mind, these stories are out there because they are rare. Most people who don't go to school, even those who shared the dreams of making it big, end up failing. The ones that succeed are unicorns. The inherent structure of school forces you to follow through with learning, projects, and eventually completing a degree.

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.

Depends on what you mean by 'worth it' and what you would like to do if/when you got a degree. Assuming you mean monetarily/career-wise, there are some career paths/types of companies where you'll have a very difficult time getting into without one. (primarily large companies and 'gated' industries whether by professional associations or regulation) However, you can generally be a contractor/vendor for nearly any company as the business relationship is different and if they like you enough they may offer you a full time position despite the lack of a degree. But something not to discard is the life experience factor: I've met some people who just loved the whole college experience and that alone made it worthwhile for them regardless of the career aspect.

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.

It can be worthwhile, even though you are getting ripped off very badly. That 4-year degree gets you about 1 year of valuable education, 1 year of nice-to-have education, and 2 years of disinformation.

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.

Going to school make's it easier to become a chef rather than becoming a cook [1] (“reasoning from first principles” vs “reasoning by analogy”).

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...

It depends on what part of IT you are looking at, and what your objective is. If you need money now - then get a job and use what you have learned. The more you have a passion for the topic the more likely a degree is needed. Because after you get a bachelors, you are likely to want a master etc.

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.

There is a massive amount of high quality and completely free material from universities available online. Use it to your advantage.

In my opinion, the industry wavers back and forth on CS degree or just 'git-er-done'. I remember the early computer 'craze' (1970's) when all you had to do was open a company called "Compu-NNNN" and money would flow. Later, people wanted to see diplomas, degrees, certifications so then lots of folks when to school: undergrad, or grad-school if you already had undergrad degree. Now, things are a bit different: information as well as the opportunity to acquire skills is global, no one place is 'ahead' of the other

My advice: choose a path you are comfortable with in terms of time, money.

My experience hiring lots of engineers is that people with comp-sci or other stem degrees are on average much more successful at software engineering. Yes, there are great self-taught and code-schooled engineers, but on average they are less successful. Plus even the great ones seem to get started later with their careers instead of getting hired straight out of college like comp-sci majors.

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.

Yes, I would say worth it. Not just for the degree itself, but the networking and internship opportunities being a student gives you. If you live in an area with a strong tech scene you can get high quality paying internships which give you a strong foot in the door at many companies.

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.

There was a time where the software industry was booming and immature so that someone with enough time on their hands to teach themselves what was necessary, could end up being as good as the other guy.

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.

I'm a Russian citizen and have no degree, self-taught, never had a problem, until recently when I was offered a job in Berlin. As far as I understand, in order for a foreigner to be able to live and work in Germany (and that should apply to many, if not all, other European countries too) one must obtain a Blue Card, and that requires one to have a degree in the field they're going to work in.

even that can be bypassed if the company is really interested in you, they need to offer you yearly salary greater than xx000 EUR and give you contract for 1 or 2 years and you can get a blue card without university degree. i dont know the details, but im working in berlin and i know many friends with that issue

Wow! Sounds great if true... Could you, please, connect me with one of those friends of yours? I'm really willing to go, meet people, make some friends, if possible at my age, maybe, even, try to launch a dev studio. I was also considering buying a degree, but, of course, I'd much prefer a legal way.

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?

My email is iliaznk@gmail.com, just in case.

I think it really depends. A degree requires more commitments, both time and efforts, but it'll give you more: fundamental theoretical knowledge, network, career consultancy and vision. But if you already have good fundations and need to get started in CS, there are so many resources available these days. You just need to be much more self-desciplined and dedicated. Good luck!

Learning is like gardening. You plant seeds, maintain their growth and hope one day they become something beautiful. In schools you will find many well skilled gardeners who know how to growth some beautiful parks, though this strongly depends on the soil they get, meaning you. If you don't work with them, or just don't have or get what is neccessary to grow well, then even the best gardener can't help you.

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.

It probably very much depends on the school and the courses you take but most will provide you with at least some foundational knowledge of computer science (e.g. data structures, complexity theory, some linear algebra, software engineering), which is incredibly useful.

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 wouldn't get a degree. They're not needed and you'll make far more with an extra 4 yrs of experience. There will be some jobs that will be harder to get, but it doesn't make up for the fact that you're not working for 4 years, and paying through the nose for school.

There's also the middle ground of going to a reputable coding bootcamp.

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

3 years ago I made the decision not to get a CS degree and haven’t had a problem getting interviews. There are other things to consider. If you’re interested in talking reach out to me at samheutmaker at gmail

If you do it to make more money down the line, then it's less about learning anything and more about having the right names on your resume, so shop around for brand names. The more Ivy-league sounding, the better.

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.

Trivia: Someone in a hiring position once told me they no longer hired self taught programmers because such people didn't understand essential architecture. They had tried it and it never worked out.

What is "essential architecture?" I'm having a hard time searching on it as everything comes back as either "essential computer architecture" or "essential architects' architecture" (aka building and city design).

I'm not a programmer.

Maybe some actual programmers will kindly weigh in.

Well... Talking as European my answer is "it's depend".

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...

I have both coded before and after the cs degree. Degree is not about making money but gets you to the level of understanding that nobody can sh*t talk you about how important learning 'x tech' is. Learning that much without degree is really tough as trying to pull your teeth without going to the dentist. Only danger is, you become so deep about the knowledge part but business doesn't care how good scientist you are, so there is that.

Most CompSci programmes around the world are utterly bollocks and not worth the time investment from a learning perspective as you'll have to waste time on the tedious and unproductive coursework.

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.

My two cents: in my relatively small sample of developers that I know, I see differences in the ones with and without degrees in the topics that require more study and discipline like operating systems, complexity, and formal theory. For example, people without a degree in general does not have a good background for developing multithreading systems or understanding that the problem they are trying to tackle is NP hard.

If you are in it just for having a job and an income - then having a degree is not necessary. If you want more then it is also not necessary but helps a lot. Make a pros and cons list and decide for yourself. But make a decision. I picked engineering instead of CS and do not regret. But I was looking into application of CS. Be mindful that engineering is not particularly easy but definitely doable.

Going through school also helps you build a network and gives to access to peer groups that will have you learning a lot quicker and be exposed to new things.

I moved from the UK to the US when I was 20 with no degree, just self taught. Have been working in senior engineering roles for ~8 years. I do feel as though I’ve struggled more with the academic side of CS but the practical side is what you’re measured on post-inverview. You can’t go wrong by going to school, but it is becoming decreasingly necessary

under what visa?

This would be hard to do today.

An O1, which yes has gotten harder but is achievable

How young are you? If you're around an average college student's age, you should definitely get that degree.

I'm 31 and considering getting a degree. Wondering if I should go for a masters in CS or do a bachelor's. Coming from a non-cs background and doing a career change at this point isn't easy. Master's would be much shorter and the Bachelor's obviously would take much longer. Any suggestions?

> Wondering if I should go for a masters in CS...

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?

Usually Masters degrees require Bachelors first. Maybe you mean Associates?

It's conceivable he had a non-CS Bachelor's, and could either take a second bachelor's or try to go straight for a CS Masters. Second bachelor's programs often, IIRC, have more minimum coursework than Masters programs (though that can be offset by needing to take undergraduate courses outside of the minimum to meet prereqs in the Master’s program that someone with undergraduate CS background wouldn't have to.)

Some programs in Canada allow you to get a masters in CS without having a CS background. It would require taking certain prerequesites.

The (reputable) programs I am familiar with in the US are the same.

He probably has a bachelor's in a different subject.

Yea sorry should have mentioned I have a Bachelor's in Finance

Thought masters comes after?

A math degree is worth it. Learn graduate level statistics and machine learning. Then apply it to something.

If you're in the U.S., take 1-2 intro programming courses at a local community college. If you get an A, and like the course content, you will be in a much better position to determine if you should go it alone or get a degree.

Both. An education is worth it if it is a master; I do not think, speaking from experience myself and people I have hired, a bachelor is worth much of anything.

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.

> An education is worth it if it is a master

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.

ymmv indeed; probably depends a lot on the field and region, hence the ‘in my experience’ ;)

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.

Depends on a lot of factors, age, savings, debt, etc...

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.

Hey leesec, you don't have an email listed. I'm a 25 year old making similar decisions. If you wouldn't mind quickly sharing the factors that went into your decision, I'd appreciate it. Included my email address on my prof.

You might want to put an obfuscated version in your profile and edit it out of this comment. I imagine email harvesters are happy to crawl HN, and you might even get some more... targeted emails.

Updated...appreciate the tip!

Yes, for reasons everyone has said, and to collect those life experience badges (going to college, college friends, etc). You wanna try a lot of things once.

going for a CS degree will give you an overview of existing topics, meaning at the time you finish you degree, you will know things, and you will know which things you don't know. Without a degree, you will know things, but you won't know what else is there

great answer


Seconding this. My degree comes in handy all the time conceptualizing software and architecture problems into computer science problems, which are much less murky to solve. My practical experience comes in handy all the time with the day-to-day usage of libraries and frameworks, and "hands-on" skills ie debugging, deploying, etc.

Do the first two at a comm. college.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact