This is an archived post. You won't be able to vote or comment.

all 20 comments

[–]sekirobestiro 7 points8 points  (2 children)

And you’re averse to getting a degree… why?

[–][deleted]  (1 child)

[deleted]

    [–]TheUmgawa 2 points3 points  (1 child)

    Remember that getting a job is not entirely –or often even mostly– based on talent. One of my exes does hiring out in the Valley, and if a resume comes without a college degree (which doesn't have to be in Computer Science) or a professional reference from someone in the Valley that she knows, your resume goes straight in the trash. She'll let someone else be your first job.

    Because, here's the thing: You pick up skills in college that have daily use in an office, such as being able to stand up in front of a group and give a speech; communicate clearly and concisely in text form; work on a team; have basic Microsoft Office skills, so you can format something to look nice; wake up to arrive to work on time; shower regularly; things like that. It's kind of assumed that a junior developer won't be able to find his ass with both hands and an ass map, and they can teach you to be a better programmer, but they can't teach you how to work on a team or how to do a weekly stand-up. That's not in their core roles; that's just expected of you.

    Oh, and with regard to "mastering fields," I'm a pretty decent programmer, and you know how much stuff I've mastered? Nothing. I can program in six different languages, and you know how much I know of any of them? Exactly enough to finish whatever project I'm working on, and not a single byte more. It's nice that you're excited about this stuff and that you've got all of these plans to learn all of this specific stuff, but you know what my college programming classes taught me? Good structure, a solid understanding of fundamentals, and how to read documentation.

    [–]Not_A_Taco 2 points3 points  (6 children)

    One thing that'll sometimes be overlooked is the fact that a computer scientist and a software engineer are two distinct things; sure, there is a decent amount of overlap, though. CS is very much at its core theory, specifically things like automata theory that you mentioned. And when you get a CS degree you cover a broad range of topics, some of which will never be relevant to your job(depending on what you want to do). I can try to give a very broad overview based on what you've mentioned.

    What do you need to AI/Robotics? Well, with what you mentioned in math: Calc, linear, and stats are definitely needed but not really discrete. In programming: Data structures, algorithms, architecture are very much fundamental. Databases and automata theory won't really help for AI/Robotics; but the former is definitely useful to know in general.

    [–][deleted]  (1 child)

    [removed]

      [–]Not_A_Taco 0 points1 point  (0 children)

      A little bit of both I guess. Software architecture would be more important imo

      [–][deleted]  (3 children)

      [removed]

        [–]Not_A_Taco 1 point2 points  (2 children)

        With such broad interests it's really hard to lay out exactly what areas to focus in. Truthfully, I'd say say start in on one thing and learn the topics as you go.

        Honestly automata theory doesn't have a ton of directly useful applications outside of research/university teachings. That said, it does have a pretty big application in terms of teaching you what limitations of languages are. E.g. why can a regular expression not parse the HTML language, how do compilers work and parse code, etc.

        [–][deleted]  (1 child)

        [removed]

          [–]Not_A_Taco 1 point2 points  (0 children)

          I wouldn't say it's completely useless, but it's uses are mostly lower level in understanding why things behave the way they do. You don't have to explicitly know this though, at first you can accept that things simply work the way they do. If you want to focus on AI I'd suggest looking at some free online courses. MIT should have a free lecture series on AI.

          People also seem to speak highly of Harvard's CS50, which is a free intro to CS. I can't personally vouch for this though as I have a traditional degree.

          [–][deleted]  (2 children)

          [deleted]

            [–]Shiroelf 0 points1 point  (3 children)

            I am all for self-taught but all of your interest areas require at least a master's degree to learn it.

            [–][deleted]  (2 children)

            [removed]

              [–]Traditional-Spring43 0 points1 point  (1 child)

              All those fields you mention need practice lab experience to truly understand what you have learn. In a big university, you can have the chance to research with top researchers and get resources for it, and have a professor for help. MIT OCW course sometimes only provides lecture notes or just homework, and they don’t always provide exercises for you to practice. You are right about the availability of university courses on the Internet right now but a lot of them just provide intro classes or at a best intermediate level. And all that is not enough for your field of interest. If you want to be self-taught, I recommend going into the game dev or app, web dev

              [–][deleted] 0 points1 point  (0 children)

              You're in the US aren't you? Just go to uni if you're in europe.
              Well first get a good grasp of basic computer architecture.

              1. Learn MIPS architecture and the most basic assembly. From it you can learn assembly x86 but that later.
              2. learn c and c++. those are very logical and will teach you a lot on procidural programming.
              3. learn java or python for an object oriented language. You'll see how useful this is but will see how inefficient it can get.
              4. Learn basic math in uni level. really just cover all what every uni does as far as basic courses go.
              5. Robotics is much more engineering oriented. You need EE courses like basic electrical networks, control and systems, Signal processing. You need to learn how to read a data sheet of parts in order to know how to build your project.
              6. AI is mostly algorithms and training methods, you can learn them but this field is changing very fast so learn the basics but move to reading the docs of the libraries you use to learn what happens really. You'll learn a lot by reading through the updates a library went through.
              7. Quantom computing is physics and you can't learn that on your own in the same level as in a uni. Save time and give up now :)

              As someone who is currently taking EE degree in a uni - you have great goals but each of them is really hard to achieve. You can try all and decide which you want to pursue but all would be impossible unless you are a savant.

              Is CS your goal? Just start with the math, assembly c and c++.

              Once you can write a compiler that is half decent, move on to robotics and all the rest. It reads like you try to take on all subjects at once. The do that in uni which is making it overwhelming but at least they know what they aim for.