24 votes

Should I go to college for computer science?

I have an undergrad degree in polisci. I was planning on going to law school, but got rejected everywhere I applied. I am really reconsidering going to law school. Last couple years, I realized that I have a genuine interest in coding, and I could pursue it as a career. I learned C++ with online tutorials, and I think I am proficient at it, or at least have the potential to be much better.

Anyway, money is tight, so I would really appreciate any input you have about a career change. Thank you!

(If this belongs on another sub, please let me know)

EDIT: I am in the U.S. I can move states if necessary.

47 comments

  1. [11]
    tindall Link
    If you enjoy the coding aspect of CS, and you are primarily motivated by getting a job, I personally think you should first try to build a small portfolio and get jobs based on that. I'm happy to...

    If you enjoy the coding aspect of CS, and you are primarily motivated by getting a job, I personally think you should first try to build a small portfolio and get jobs based on that. I'm happy to help out if you like. Since you already have a bachelor's degree you will probably be able to get something, and after the first few years, I've heard that experience trumps education.

    From personal experience, after just having done a few internships and open source, I have gotten offers for full-time dev positions despite not having completed my degree.

    21 votes
    1. [7]
      Greg Link Parent
      I emphatically agree. A bachelor's degree is a long, expensive, and difficult way to get a foundation of knowledge in a whole field - while that can somewhat take the place of job training, it's...

      I emphatically agree. A bachelor's degree is a long, expensive, and difficult way to get a foundation of knowledge in a whole field - while that can somewhat take the place of job training, it's not a cost- or time-efficient way to do so. It's also likely that even an excellent four year degree will miss a lot of practical knowledge that a six month coding bootcamp would cover, simply because the degree is academic while the bootcamp is career targeted. That counts triple if the degree really is CS in the old school sense rather than a catch-all term for software related studies.

      Either going self-taught, taking a closely targeted coding/software engineering course over the course of a few months, or (if you're lucky) finding a graduate job that'll provide some in house training opportunities would all be far better than a degree in this situation.

      10 votes
      1. [6]
        Wolf Link Parent
        I like the bootcamp the best. To be honest, I don't want to set back another 4 years of my life. Do you know of any quality bootcamps?

        I like the bootcamp the best. To be honest, I don't want to set back another 4 years of my life. Do you know of any quality bootcamps?

        4 votes
        1. [5]
          Greg Link Parent
          Unfortunately not something I'm close enough to at the moment to give you specific recommendations. Generally speaking I'd say: make sure you speak to a few different ones to understand the...

          Unfortunately not something I'm close enough to at the moment to give you specific recommendations. Generally speaking I'd say: make sure you speak to a few different ones to understand the landscape before making a decision, choose a course that's not too rushed or factory-like (I arbitrarily said six months above, and I do think that's a reasonable ballpark), and most importantly remember that it's at least as much about building the ability to learn independently in future as it is about the specific skills here and now. The latter are important, no question, but you'll need to pick up new languages, new libraries and frameworks, and sometimes whole new programming techniques to stay on top of the changes over your career and you won't always have someone to teach you - get a strong foundation of the fundamentals and get into good learning habits now, because you'll need them later.

          5 votes
          1. [4]
            Neverland (edited ) Link Parent
            Have you ever come across anyone who went through Lamda? https://lambdaschool.com/ Very interesting business model: Five different tracks, full or part-time. But all remote. I am curious if anyone...

            Have you ever come across anyone who went through Lamda? https://lambdaschool.com/

            Very interesting business model:

            $0 up-front + 17% of income for two years (only if you're making $50k+)
            or
            $20k up-front + no income-based repayment

            Five different tracks, full or part-time. But all remote. I am curious if anyone has seen a Lamda grad in the wild.

            Edit: spellings

            4 votes
            1. Greg Link Parent
              Can't say I have, although the words "income share agreement" have been floating by in conversations a few times over the last year or so, so I think we'll be seeing how the model works out in...

              Can't say I have, although the words "income share agreement" have been floating by in conversations a few times over the last year or so, so I think we'll be seeing how the model works out in general over the next couple of years.

              I'd say I'm cautiously optimistic about it as long as the upper and lower limits are fair (as Lambda's seem to be), but it wouldn't take much for an unscrupulous organisation to make it quite onerous.

              3 votes
            2. [2]
              teaearlgraycold Link Parent
              Is that 17% of the amount above 50k? If not then that could incentivise some people to make less money if they're just above $50k.

              Is that 17% of the amount above 50k? If not then that could incentivise some people to make less money if they're just above $50k.

              2 votes
              1. Greg Link Parent
                It's a cliff, so that definitely could be an issue, but two years is a short enough period that I imagine it's probably easier to take the hit and know it's only temporary rather than artificially...

                It's a cliff, so that definitely could be an issue, but two years is a short enough period that I imagine it's probably easier to take the hit and know it's only temporary rather than artificially cap oneself and then scramble to negotiate a raise in month 24.

                There's also the social expectation of reciprocity which probably helps on the whole - not enough to rely on solely, I'm sure, but a lot of people will feel an obligation to pay back what they "owe" to an organisation that they worked closely with for almost a year.

                3 votes
    2. [3]
      Wolf Link Parent
      Have you learned coding in your spare time? If I don't go to college, I will probably have to learn while having a day job. Do you have any experience with this?

      Have you learned coding in your spare time? If I don't go to college, I will probably have to learn while having a day job. Do you have any experience with this?

      4 votes
      1. [2]
        tindall (edited ) Link Parent
        Yes, although mostly as a high school student, and I was only working part time. However, most people can learn software development in a few hours a day over a few months. You need to learn: a...

        Yes, although mostly as a high school student, and I was only working part time. However, most people can learn software development in a few hours a day over a few months.

        You need to learn:

        • a little bit of theory what the heck computers are. The Domain of Science: Map of Computer Science video is a good 10-minute intro, and Crash Course Computer Science from PBS is a good starter course. In 8 hours of entertaining videos, you will get not only a truly useful foundation of knowledge but enough history to understand a lot of hacker/programmer culture, which can really help in the job market. Should take about a week, watching 1 to 1.5 hours per day.

        • how to interact with computers via the command line - specifically, the bash shell. This step is critical to becoming an effective software developer, because literally every tool used in day-to-day software engineering can be used from or replaced by bash and the associated utilities. If you're on Windows, get WSL; if on Mac OS, use Terminal.app or install Linux in a virtual machine. Then, follow this tutorial, skipping the "obtain Linux" part if you're using WSL. You don't have to finish the whole thing, but give it a shot. Should take a couple weeks.

        • a programming language. I recommend Python (version 3), because it is highly ubiquitous (unlike e.g. Ruby), highly marketable (unlike Scheme and other Lisps), and sane (unlike JavaScript, which will screw you up forever if it is your first language). There are great online resources like A Byte of Python, or Hands on Python if you're more into academic-type resources. If you're more into books, try Automate the Boring Stuff with Python. Avoid Zed Shaw's tutorials ("Learn X the Hard Way") like the plague.

        • how to do and learn on your own. Once you understand what computers are, how to operate them, and how to program them, you need to go in your own direction. Pick a problem you have and try to solve it with a program of your own devising, and don't be afraid to search for "how to _____ in python 3" when you have questions.

        • more advanced topics, like algorithms and data structures (the "computer science" part of the field). Check out MIT Open Courseware, UMass Boston Open Courseware, keon's Algorithms repository, and the Python DS book.

        If you want more resources, or need help of any kind at any point, please feel free to reach out to me!

        9 votes
        1. Wolf Link Parent
          Thank you so much for this! This is very clear and will definitely help me with this career change. I guess a better be would be pivot.

          Thank you so much for this! This is very clear and will definitely help me with this career change. I guess a better be would be pivot.

          2 votes
  2. [16]
    vord Link
    As someone who has an Information Technology BS (from a reputable college), and does not have a CS degree, here's my thoughts: Computer Science is, at its core, a very math intensive degree...a...

    As someone who has an Information Technology BS (from a reputable college), and does not have a CS degree, here's my thoughts:

    Computer Science is, at its core, a very math intensive degree...a lot of people don't realize that. This is the primary reason I don't have a CS degree...my natural "peak" was around Calculus II, and I wasn't able to advance much past that without immense help, and I stopped enjoying it. If you can get through the harder mathematical aspects without losing that joy, having a proper CS degree will give you skills that enable top-tier programming ability.

    If you love coding, but can't quite get past the high-level mathematics to finish a CS degree, I would advise some sort of Information Technology related degree. It will open lots of doors for job opportunities that allow you to write a lot of code. You might not become the world's best programmer without a CS degree, but you can certainly make a decent living as an above-average/good coder with some sort of Information Technology degree.

    11 votes
    1. [8]
      Greg Link Parent
      One of the difficulties here is that the language tends to be used quite interchangeably, to the extent that it can actually be very difficult to know if two people are talking about the same...

      One of the difficulties here is that the language tends to be used quite interchangeably, to the extent that it can actually be very difficult to know if two people are talking about the same thing. I've especially seen "computer science" used more and more as a catch-all term, whereas my own broad understanding is:

      • Computer Science - Mostly theoretical or academically applied, with lots of mathematical fundamentals and other details that will help to understand the principles and concept of computing top to bottom. Very good for getting a deep understanding of a complex field, not especially focussed on practical application (although an excellent foundation for later practical study).

      • Software Engineering - Theory and practice of software development. Some mathematics, some principles that are good to understand, some things that are important when building real world applications. Good all rounder for someone who wants to primarily write code.

      • Information Technology - Theory and practice of the broader computer ecosystem. Some pieces of the two disciplines above, along with hardware, networking, monitoring, and a lot more understanding of how to work with and integrate third party software. Especially good if you're interested in systems as a whole, with code being the glue that holds them together.

      As I said in a post above, I do that I think a degree specifically is the wrong tool for OP's situation, but whatever kind of training they do I think you've hit the nail on the head in saying that it's important to pick the subfield carefully. Part of doing so means they'll need to be careful in understanding what different people/companies/educational institutions mean when they use the same words!

      19 votes
      1. [5]
        Amarok Link Parent
        There's also the administration aspect to consider. Systems administration may involve programming, but it's more akin to simultaneously being a policeman, fireman, medic, janitor, and...

        There's also the administration aspect to consider. Systems administration may involve programming, but it's more akin to simultaneously being a policeman, fireman, medic, janitor, and construction worker - all at the same time - for the systems and applications that every institution depends upon for its success. Your building blocks are thousands of programs, some free, some commercial, some home-brew - which you then tie together to meet the ever changing, ever evolving needs of any given organization. All of these building blocks change over time, all of them are both total garbage and solid gold, with the determining factor being the needs of the org rather than the aspects of the tech itself.

        Then there's networking and telecommunications, which does dovetail a bit with system administration, but at the higher echelons is the work of building out the internet and connecting everyone - and it's very much its own specialized discipline. There's programming here too.

        I remember when I was studying calc and discrete for computer science and having a hard time. One of my instructors told me to think of math as 'reality's programming language' and for some reason that made it a lot easier for me to understand. Until then I'd been hampered by primary school education - rote memorization of math techniques with no real understanding of how to relate those things to the real world. Looking at it as a language helped me get past that.

        9 votes
        1. [4]
          Greg Link Parent
          Very much this. I haven't had occasion to work with any real hardcore network engineers, but I can say without hesitation that a good sysadmin is worth their weight in gold. Unless your company is...

          Very much this. I haven't had occasion to work with any real hardcore network engineers, but I can say without hesitation that a good sysadmin is worth their weight in gold. Unless your company is huge you might not need them in-house, but you're still relying on some of the best at AWS to keep things running on your behalf. As far as I'm concerned they're the keepers of dark and arcane knowledge that allows the rest of us to run our code in quiet, reliable comfort.

          3 votes
          1. [3]
            Wolf Link Parent
            I'm getting the impression that sysadmins are quire valuable. If they are paid well, do you think it is feasible for a beginner to have an end goal of becoming a sysadmin? Is this something that...

            I'm getting the impression that sysadmins are quire valuable. If they are paid well, do you think it is feasible for a beginner to have an end goal of becoming a sysadmin? Is this something that can be learned through training or would I require a formal education?

            2 votes
            1. Amarok Link Parent
              All you need - the only thing - to become a competent sysadmin is good problem solving skills. That's basically the job description. The rest depends on what you want to do. They all boil down to...

              All you need - the only thing - to become a competent sysadmin is good problem solving skills. That's basically the job description. The rest depends on what you want to do. They all boil down to certain certifications depending on what kind of tech you want to be working with. The classics are MCSE, RHCE, CCNA, and VCP/VMCE. These are courses/exams that come in boot-camp form, and yes, unlike college classes, those are worth taking, though study beforehand so you'll get the most out of them. They come with legions of books from many publishers, usually one book per test, and 1-6 tests per certification. Learn to love O'Reilly publishing. ;)

              As for the new cloud-based ecosystems that are forming, I remain utterly (and gleefully) ignorant about how that side of the sysadmin world is shaping up. Managed services is the new hotness. That's a fancy way of saying you'll work for company X and perform sysadmin tasks on all of their client's systems - you're being farmed out to those companies, but without the contract-related hassles we used to have where you'd get hired by them directly and move from contract to contract. Now you just log in remotely and handle whatever needs handling. I know people who do this job, from home, in their pajamas, and get paid six figure salaries to do it.

              If you're really into programming, though, you might want to look into DevOps. That's just sysadmins who work with/for programmers in a more active role. Having programming skills yourself will make you much more valuable to those developers, since you'll be speaking their language and able to dive deep into the code itself to find out where it needs a little love. I did this for about 20 years and I was never bored with the tech. Developers are the best users a sysadmin could ever want to support - you'll never get the 'I can't turn on my workstation' problems from them. Instead they'll land nice big juicy nightmares in your lap that'll take brain power to solve. If you love solving problems, get a kick from fine tuning systems and applications, and like taking 'clever' programmers down a peg when they need a dose of reality, you'll like that kind of work. :D

              The pay range depends on what level of tech challenge you're up for. MCPs/desktop support is kinda the burger-flipping end of the sysadmin scale. You'll do alright (think 40k/yr) but you really want to be moving up away from desktop support or you will kill yourself fixing that printer for the tenth time this week and re-installing sales laptops because some idiot virus-bombed himself.

              Supporting critical apps is where the big money is. You won't interact with end users, you'll manage key systems that cost your company thousands-per-second of downtime (so your job is to make sure it is never ever down unless it's scheduled to be down). You'll typically work with higher level management at this level, CTOs and their ilk. Expect to deal with Oracle databases that need to handle five hundred thousand credit card transactions a second on christmas eve. If you do this job well, you'll be sitting in the datacenter munching cookies during that time (because you tested this many times and solved all the problems beforehand) - then taking christmas to new years off to relax.

              You can make a decent living supporting windows, but frankly, unix/linux is where the fun stuff lives. Find a unix shop and learn that side of it, and you'll be very well isolated from the day to day tech support work that makes the job into a chore. Salaries here can range anywhere from 70k-250k depending on the work, though in general, the higher the salary, the more your ass is on the line, right up into air-traffic-controller territory. Without decision-making power, this can be nasty. If you have the power, though, then it can be rather fun building the perfect digital universe for your business' needs, and you only have yourself to blame if it muddles up.

              7 votes
            2. Greg Link Parent
              Feasible? Certainly, but it's quite a different skill to coding. I know for a fact I'd make a much worse sysadmin than I do a developer, for instance, so at the very least I'd suggest keeping an...

              Feasible? Certainly, but it's quite a different skill to coding. I know for a fact I'd make a much worse sysadmin than I do a developer, for instance, so at the very least I'd suggest keeping an open mind and a willingness to be guided by which you find yourself better suited to.

              In terms of value, I'd call it a higher risk option. Everyone needs devs, from the occasional freelancer at a tiny company to technical leads of thousand person departments at Google. Everyone roughly recognises what a developer does; they might still think that a six-month project can be done in a week, but they at least grasp why you're there and worth paying.

              Sysadmins, on the other hand, only make sense as a dedicated hire at very large scale - they'll be managing many machines, potentially for hundreds of clients, so the absolute job pool is much smaller. Often there will be developers or IT staff doing some of the duties as an ad hoc part of their job, with varying levels of success, when a dedicated hire would be overkill. It's also often a rather unappreciated position: a corporate manager sees a high salary, a job that "surely one of the other techies can do", and no tangible output; when you're doing the job well, you're invisible ("so what are we paying you for?"), and when you're visible, it's because something went wrong ("so what are we paying you for?!").

              Don't get me wrong, it's a hugely interesting, important, and often well paid field - and maybe it'll be perfect for you - but one of the reasons I'm appreciative of those who do it is because I know I'd suck at it.

              5 votes
      2. vord Link Parent
        Exceptional points! Best bet to sort these things out is to talk directly to admissions counselors for schools you are interested in, and ask them very detailed questions. If they don't know the...

        Exceptional points! Best bet to sort these things out is to talk directly to admissions counselors for schools you are interested in, and ask them very detailed questions. If they don't know the answers directly, they'll be able to find someone who can.

        4 votes
      3. Wolf Link Parent
        Thank you for clarifying! I appreciate your other comment as well. I am sure now that I want to focus on Software Engineering. My end goal really is to become freelance (whenever that's feasible).

        Thank you for clarifying! I appreciate your other comment as well. I am sure now that I want to focus on Software Engineering. My end goal really is to become freelance (whenever that's feasible).

        3 votes
    2. Silbern Link Parent
      The math is quite a bit different than other disciplines though. At my university, ICS majors only have to go up to Calc II, but we have to instead have to take two rounds of Discrete Math instead...

      The math is quite a bit different than other disciplines though. At my university, ICS majors only have to go up to Calc II, but we have to instead have to take two rounds of Discrete Math instead of the second two semesters of Calc. Some people such as myself struggle a lot with Calc, but from what I've checked out so far, I like Discrete Math a lot more.

      10 votes
    3. [5]
      msnspk Link Parent
      I have to say, as someone who is recently self taught and "capable," but wanting to go to school to become "proficient" and eventually, "professional," this comment terrifies me. I've always...

      I have to say, as someone who is recently self taught and "capable," but wanting to go to school to become "proficient" and eventually, "professional," this comment terrifies me.

      I've always struggled with math. In highschool, Algebra and Physics, which were both math intensive, were the only classes I ever failed. I think my main issue is that I never learned how to study. I excelled at History, Social Studies, Civics, English, Biology, and all of my electives, but I struggled so hard with French and anything math related, whether it be an actual math class like Algebra, or even just math intensive like Physics. I never studied and sometimes failed, only to have to take summer classes and pass by the skin of my teeth.

      Then, a year after I graduated high school, I took my first semester of community college and failed my Statistics class. I did great in History and English, or Language Composition, or whatever it was called, but I failed my math class, again, because I still didn't understand how to study.

      Now, years later, I'm going back. I literally applied for my local community college's Summer semester a few days ago, and I'm taking Calculus I as a ten week summer course starting in June. (Assuming it's actually offered in the Summer, which I haven't actually checked yet, because I haven't registered yet, because my transcripts and vaccine requirements haven't been approved through Admissions yet.)

      My idea is that, hopefully, having just Calculus to focus on for those ten weeks will help me hunker down and really learn how to study. Plus, I failed Statistics, so I need to pass Calculus and catch up on the math path so that I can earn my Associate's as soon as possible.

      I'd be lying if I said I wasn't worried. On one hand, yes, I taught myself how to program as a young adult working shitty part time jobs. I was able to settle down and learn what has so far been the most mentally difficult thing I've ever done. It was hard, but I like programming, I love building things.

      On the other hand, math is my crux, it's where I fail, it's what I do, and I'm very worried that I'm going to drop the ball yet again. I think I hate math because I've performed so poorly in the past, and I hope that I come to love it once I study and understand it (kind of like what happened with programming), but there's always that nagging doubt.

      3 votes
      1. [3]
        Amarok Link Parent
        Hah, you'll be fine. I failed Calc my first time through - I cannot relate to instructors who drone on and don't even look at the class when teaching, and Calc is a thick subject where 'getting...

        Hah, you'll be fine. I failed Calc my first time through - I cannot relate to instructors who drone on and don't even look at the class when teaching, and Calc is a thick subject where 'getting into the zone' applies just like a marathon programming session.

        I took it again over the summer and aced it effortlessly. Partly that was a vastly superior instructor (only the ones who love the subject tend to teach it over summer), and partly it was because taking math in a 4-hour block let me load it all in my brain and get into the zone. If the class is over in an hour, it's over at just the point where my brain is kicking into high gear.

        The longer time blocks from summer class was the perfect antidote to that problem. Learning limits, integrals and differentials is like learning multiplication and division, or powers and roots - it's another level of handy tools that make infinity your bitch, so you can start applying math to the real world.

        If you want to blow your own mind, take calc, and then take calc-based physics for the science elective. The difference between that and the algebra-based variety we all learn in primary school is impossible to express with words, it's night and day. Physics suddenly makes perfect sense when you use real math instead of shortcuts. I felt like Calc was the first time I enjoyed math, and I'd hated algebra.

        Turns out everything leading up to Calc is the pre-show. You have something to look forward to - math is about to get interesting as hell for you. ;)

        3 votes
        1. [2]
          msnspk Link Parent
          Actually, at the community college, both the Computer Science and Physics degrees explicitly require calculus based physics, so at least I'm good there. And I didn't even think about the fact that...

          Actually, at the community college, both the Computer Science and Physics degrees explicitly require calculus based physics, so at least I'm good there.

          And I didn't even think about the fact that class periods are going to be longer than one hour. I've never taken a summer semester before, so there are a few things still new to me, but knowing (and I checked) that summer classes last longer than one hour makes me feel a lot better, for the exact reasons you described.

          Thanks for the kind words and encouragement.

          2 votes
          1. Amarok Link Parent
            Just think of it like learning reality's source code. There's still some debate if math was invented, or discovered. I fall into the latter camp. High level math lets you peek behind the curtain,...

            Just think of it like learning reality's source code. There's still some debate if math was invented, or discovered. I fall into the latter camp. High level math lets you peek behind the curtain, ask meaningful what-ifs and get meaningful answers to problems that aren't so rigidly defined as they need to be in algebra-land. That math is applicable in every single field of science, too. It's your all-access pass. And as with most things, it's all practice, practice, practice. Look at the calc labs as a programming challenge, because that's really what they are, from a coder's point of view. Math is the only thing we've found with the power to connect thought and reality with some level of objectivity.

            Also, learn to love wolfram alpha. Think of it like a version of google that really likes math questions. ;)

            4 votes
      2. vord Link Parent
        If I terrified you, that was definitely not my intent. I was intending to open an alternative path, for those who might try to jump fully into CS without knowing the nature of what they're getting...

        If I terrified you, that was definitely not my intent. I was intending to open an alternative path, for those who might try to jump fully into CS without knowing the nature of what they're getting into, get frustrated and give up on coding professionally.

        Perhaps it would be helpful to note, that I consider my programming skill somewhere between "can assemble blocks of stackoverflow answers into a working program" and "occasionally can write something of moderate complexity without making a google search every 20 lines," but I still find immense joy in it, and strive to improve slowly over time.

        Do what you love, don't be afraid to fail.

        3 votes
    4. Wolf Link Parent
      I am not completely put off by math. I can learn with some time and work.

      I am not completely put off by math. I can learn with some time and work.

      2 votes
  3. [8]
    Akir Link
    There's a lot of variables, and it largely depends on what you are trying to do. A CS degree is needed in some specializations but not in others. If you are interested in fields where C++ tends to...

    There's a lot of variables, and it largely depends on what you are trying to do. A CS degree is needed in some specializations but not in others. If you are interested in fields where C++ tends to be used, they often require degrees.

    In any case, if you are looking to become a good programmer, I typically recommend most people to take some form of face-to-face courses early on. Programming isn't just coding, and if you want a job in the computer sciences you need to at least be aware of all the other things involved. Having an experienced instructor really helps you in that way.

    That being said, if you are just looking to get a coding job as soon as possible, frontend web coding is typically considered to be the easiest way to break in. Not many frontend web devs have CS degrees. Javascript is relatively easy to learn, but it has some fundamental differences from C++ that you might have some difficulty bending your brain around.

    7 votes
    1. [7]
      Wolf Link Parent
      If I were to pursue frontend web coding, where would I go after learning the essentials?

      If I were to pursue frontend web coding, where would I go after learning the essentials?

      2 votes
      1. [6]
        Akir Link Parent
        In today's environment you also need to know a framework or two. React is the most popular but Vue and Angular are also good options. Build something so you can start a portfolio and then go job...

        In today's environment you also need to know a framework or two. React is the most popular but Vue and Angular are also good options. Build something so you can start a portfolio and then go job searching.

        (Honestly you should probably look and see what is hiring in your area before you choose which framework you learn.)

        4 votes
        1. [5]
          Wolf Link Parent
          Do you think it's optimal to learn both?

          Do you think it's optimal to learn both?

          2 votes
          1. [4]
            teaearlgraycold Link Parent
            The more you learn the better. You could try for the bootcamp route. It'll cost money, but less than a CS degree. I'd recommend a longer one, since some are only ~2 months and won't be enough IMO.

            The more you learn the better.

            You could try for the bootcamp route. It'll cost money, but less than a CS degree. I'd recommend a longer one, since some are only ~2 months and won't be enough IMO.

            4 votes
            1. [3]
              Wolf Link Parent
              Where do you think I should focus? Should I just learn a language or is there more?

              Where do you think I should focus? Should I just learn a language or is there more?

              2 votes
              1. [2]
                teaearlgraycold Link Parent
                Once your interest has been sparked, I'd follow some kind of curriculum when learning a first programming language, since you don't know what you don't know. You might think some "a", "b" and "c"...

                Once your interest has been sparked, I'd follow some kind of curriculum when learning a first programming language, since you don't know what you don't know. You might think some "a", "b" and "c" is what you need to know to learn a programming language, but there's really the whole alphabet and more.

                A "curriculum" could just be a good book, like K&R C (if you want to learn C that is). Beyond language-specific knowledge you'll still need to learn about data structures, algorithms, etc.

                4 votes
  4. [2]
    mrbig Link
    Stating your location might help you get better answers. Like all exact sciences, computer science is reasonably universal, but practicing law is radically different depending on the country.

    Stating your location might help you get better answers. Like all exact sciences, computer science is reasonably universal, but practicing law is radically different depending on the country.

    5 votes
    1. Wolf Link Parent
      I am in the U.S. I can move states if necessary.

      I am in the U.S. I can move states if necessary.

      3 votes
  5. [5]
    oryx Link
    I'm just finishing up my first year of computer science engineering at college. I have a BA in English Lit. Definitely looking forward to the job prospects. Also, I absolutely love learning about...

    I'm just finishing up my first year of computer science engineering at college. I have a BA in English Lit. Definitely looking forward to the job prospects. Also, I absolutely love learning about this stuff.

    5 votes
    1. [4]
      SunSpotter Link Parent
      How has the math climb been so far? I was going to make my own comment on this, but your experience is probably more relatable. Honestly my math skills sucked out of HS and it took me a long time...

      How has the math climb been so far? I was going to make my own comment on this, but your experience is probably more relatable. Honestly my math skills sucked out of HS and it took me a long time to get where I needed to be for engineering. I'd be worried OP is even worse off if they haven't had math for a while.

      5 votes
      1. [3]
        oryx Link Parent
        I took all the AP maths in high school. While it had been a while since I've last done any real math work that isn't just calculating someones change in my head, it didn't take me long to get back...

        I took all the AP maths in high school. While it had been a while since I've last done any real math work that isn't just calculating someones change in my head, it didn't take me long to get back into it. I could have just as easily taken a math degree when I went to school for the first time. My problem has always been not knowing which direction I should pick. I enjoy so many different subjects it makes it hard to choose.

        4 votes
        1. [2]
          SunSpotter Link Parent
          I have to ask, with impressive skills like that out of high school, what attracted you to English Lit the first time around? I mean, you could have done almost anything by the sound of it.

          I have to ask, with impressive skills like that out of high school, what attracted you to English Lit the first time around? I mean, you could have done almost anything by the sound of it.

          3 votes
          1. oryx Link Parent
            Self-sabotage. I was really depressed and had some serious anxiety problems and I guess reading books and analyzing other people's problems really helped me reflect on my own state of mind. I was...

            Self-sabotage. I was really depressed and had some serious anxiety problems and I guess reading books and analyzing other people's problems really helped me reflect on my own state of mind. I was too scared to fail so I picked something that I knew the types of jobs you would get weren't suited to my personality.

            3 votes
  6. [2]
    davidb Link
    As others stated - you do not need a degree to get a job, really a degree isn't strictly necessary for any career path. But, it can help to know what you want to do? Here's a quick high level...

    As others stated - you do not need a degree to get a job, really a degree isn't strictly necessary for any career path. But, it can help to know what you want to do? Here's a quick high level guide:

    If you want to do research or develop new technologies, get a degree. A degree can help you navigate the theoretical concepts of computer science (computer architecture, data structures, algorithms, programming language concepts, compilers, interpreters, parallel/distributed systems, graphics, AI, cryptography, databases, networking, etc). That theoretical knowledge is super useful in researching/developing new technologies. As an example: you want to do research for NASA/google/facebook/awesome new hardcore tech startup, you want to develop a new crypto algorithm, you want to work on new machine learning algorithms, you want to develop a new programming language, etc.

    If you'd rather develop products that utilize new technologies, a degree is only somewhat useful. It will help your understanding of how to use new technologies, so you can more quickly pick up and use new technologies. As an example of this: you want to take that fancy new computer vision classification algorithm and use it to infer the emotional state of someone from a photograph, you want to take a crypto algorithm and use it to develop the next shipping logistics blockchain product, you want to take a machine learning algorithm and use it to develop a model to suggest which brand of deodorant someone would most likely use based on their clothing and toilet paper purchases, you want to take a new programming language and write a website backend with it, etc.

    If you'd rather use existing technologies to develop applications and software products, a degree is much less useful. If your end goal is to be a web developer, knowing about a bunch of different programming languages and the details of how code is interpreted/compiled from high level languages down to machine code, how the CPU manipulates machine code, formal methods, etc - that won't very often be useful.

    All of those are just my recommendations, obviously not hard/fast rules. A degree can definitely be useful for web development, and even if you were to work in enterprise software as a "code monkey" that theoretical background can make it easier to get a job and to complete your work. If you're motivated, no need to go to college at all (even if you wanted to do academic research, the only benefit to you getting a degree over studying on your own would be the networking and credentials). You can get everything you need to learn from books and websites. You could probably teach yourself everything just with a computer and access to github.

    If you are specifically interested in web development, this roadmap provides a pretty good idea of what order to learn things in. It doesn't link to particular tutorials or courses, but it can help give you an idea of the landscape of core technologies without getting too burdened down in all of the different frameworks (though.. it does still include most of them).

    One final note - in a CS degree program you will not really learn as much of the practical side of software development in your coursework. Topics like software engineering lifecycle, project management, software design patterns, revision control, continuous integration, testing frameworks, debuggers, etc. tend to be glossed over in computer science coursework ("left as an exercise for the reader").

    5 votes
    1. Wolf Link Parent
      This is very useful, thank you!

      This is very useful, thank you!

      3 votes
  7. [2]
    Kraetos (edited ) Link
    Same, developed an interest in coding as high school student and decided to major in CS. I didn't know what I was getting into: had my school offered Software Engineering as a major I would have...

    Last couple years, I realized that I have a genuine interest in coding, and I could pursue it as a career.

    Same, developed an interest in coding as high school student and decided to major in CS. I didn't know what I was getting into: had my school offered Software Engineering as a major I would have taken that instead. I breezed through the introductory courses, but the the advanced courses really kicked my ass up one side and down the other. In particular, algorithms and theory of computation were extremely hard for me because I struggle with anything beyond basic calculus. I'm lucky to have gone to a school with a really good student-teacher ratio because tons of face time with my professors is the only reason I managed to graduate. Well, that and I enjoy writing, so I took a lot of English classes which buoyed my GPA.

    And then I got shot out into the job market near the depths of the last recession and couldn't find a job anyways. I've moved into a technical marketing role since then, which is interesting because in my current role the theoretical stuff is actually a useful foundation, more useful than straight Software Engineering would have been. In any case my path to tech marketing has been unconventional, but no regrets.

    So tl;dr Computer Science is math first, programming second. If you want programming first, math second, you're looking for Software Engineering.

    4 votes
    1. Wolf Link Parent
      Thanks for the clarification! I am definitely aiming for software engineering now. I don't see math as too much of a problem, but I am more interest in getting to the programming first.

      Thanks for the clarification! I am definitely aiming for software engineering now. I don't see math as too much of a problem, but I am more interest in getting to the programming first.

      2 votes
  8. Happy_Shredder Link
    You may be interested in the MIT open courseware. It's no replacement for a real course (there is so much value in dedicated study, surrounded by driven people and good teachers) but the material...

    You may be interested in the MIT open courseware. It's no replacement for a real course (there is so much value in dedicated study, surrounded by driven people and good teachers) but the material is great.

    4 votes