5 ms·
I work at Facebook on Cache infrastructure doing super low level C stuff that gets deployed to lots and lots of machines in a massive distributed system. At be
by alexgartrell 15y ago
I work at Facebook on Cache infrastructure doing super low level C stuff that gets deployed to lots and lots of machines in a massive distributed system. At best, half of the knowledge I needed could have been gained hacking around on my own in my free time. The other half came directly from Systems courses at Carnegie Mellon and research I did there as an undergrad.
This is also true of my close friends from school (housemates my junior and senior year) who work at Apple on the jscore Javascript engine, at Pure Storage[1] on hardcore storage stuff, and at SpaceX on control systems.
Maybe the average coder doesn't really need a college degree, but if you want to be a badass and get there as quickly as possible, four years at a top CS University is about the quickest shortcut you can take[2].
[1] http://www.storagereview.com/pure_storage_comes_out_allflash_storage_array http://www.storagereview.com/pure_storage_comes_out_allflash...
[2] You still have to go WAY above and beyond, but the exposure to people in that realm is invaluable, and it's hard to get that exposure outside of these places.
- davidsiems 15y agoAs a reference point: I have an nontraditional CS degree (DigiPen). I learned a lot of math in school, and programmed a ton. There was emphasis on data structures / algorithms, but not as much as you'd find in a traditional CS degree. Part of my job is to hack around on JSCore in a Webkit port. I do this without much problem. I wouldn't say I understand the whole thing, but if I needed to I could. In my experience, you learn as you go. As long as you're good at problem solving and using Google/Reading/Asking People Who Know, you'll figure it out. With or without a traditional CS degree. There's nothing magical about JSCore, or hardcore storage, or spaceship control systems. It's just domain specific knowledge that you pick up if you spend time solving those kinds of problems.
- deleted 15y ago[deleted]
- sliverstorm 15y agoI'm not a CS person, but I have learned that eventually Google can't help you anymore, and People Who Know become your most important resource. The trouble is once Google is no longer helpful, finding People Who Know can get tough.
- cookiecaper 15y agoI definitely think that self-directed learning in that area can provide an adequate background. I am very skeptical of any supposition that a traditional university will actually let you learn things quickly; the curriculum and pace is necessarily lessened to the lowest common denominator, and everyone suffers (even the LCD, because he won't constantly be the LCD for every subject). The biggest advantage a traditional CS path has, imo, is the exposure to university resources, bot social and physical, though predominantly physical. As you noted, if you're doing some massive distributed thing, it helps to have access to a lot of decent computers. However, I fully believe that a determined independent student can gain the same knowledge on a faster schedule than he would if he followed a degree program at a university.
- nyrulez 15y agoExcept it's harder :) I tried doing stuff on the MIT site and always fell behind - and of course I would never do the assignments that add real value to understanding.
- jcheng 15y agoThe same could be said of many of my CS friends at MIT.
- abduhl 15y agoThe problem here is that your work ethic is not up to par because you can always think to yourself, "Why should I waste my time on this?" and not have an imperative answer ("I need to pass this class"). The major draw of a University education is that it forces you to focus and do the work. If you are driven and do not need the grade excuse to dig into a subject then you do not need to attend a University. This becomes ever more apparent past the undergraduate level when you enter the workforce or a graduate program. You will end up going to classes or learning about material that interests you or is relevant to your work and you will do this without concern as to whether or not you get a grade at the end because all you care about is learning something you are passionate about.
- pheaduch 15y ago
- DavidChouinard 15y agoIf one is working on very low level problems — as you are — then an academic education is tremendously useful. What you refer as badass is the work of a true computer scientist. There are indeed incredibly brilliant academics in most computer science departments. However, most of us here — including the OP, it seems — are interested in higher level problems. Not those of writing compilers or optimizing some arcane algorithm, but those involving successfully running a startup. Academia is far behind on the later, and as a student myself, I share the sentiment of the OP.
- mattdeboard 15y agoI'm a student too, as well as a paid developer, as well as a guy in my early 30s, as well as a person who changed careers within the past year to software development. I've been doing this (programming) in earnest for a little over a year. Already I want to broaden my horizons beyond web development. It's getting stale, and frankly a little repetitive. Granted I'm not working on Big Problems, but that's the point, right? It doesn't take a CS degree to put together a web-based startup with a great idea, some market research, sexy CSS and some funding. However, I'm already bumping up against the limits of what I know. I'm a ... let's say, voracious and enthusiastic autodidact. I don't think there's anything about developing for the web I either couldn't handle right now or learn rapidly. I'm talking UX, backends, servers, etc. You know, until the actually fucking difficult problems come along that aren't answered all over StackOverflow. The problems the people in IRC channels don't have a macro for answering. The problems that aren't well-documented, or, better yet, tread new ground. On the web it seems like treading new ground is pretty tough. There are a lot of uber smart people who started a lot younger than me who had the ideas and thoughts and problems I'm having, but 15-20 years before I had them. Web development is a solved thing, it seems like. That doesn't interest me. It seems to me that I can't do anything new if I stick to the web-startup-centric (or just web business) world. And I am not bright enough to work on new and/or unsolved problems right now. I need education, and I need the fuckin' good stuff. Discrete math, data structures, algorithms, linear algebra (hell, I don't even know how linear algebra applies to CS, but I've read a million times it's central), the stuff I can't figure out in an hour or a day or a weekend. That's why I'm going to school. So yes, school might be boring the fuck out of you right now, but in a year or 5 or 10 you're going to want to do more, different, arguably better (more meaningful?) things than iterating a web site. Plus, I don't know about you but I don't want to be the guy who really really really knows Python|Ruby|JavaScript (plus HTML and CSS!!!) and gets really emotional about why my high-level languages of choice are awesome or better or whatever than the others. I've seen it already among my co-workers and fellow students and tbh it bores the piss out of me. I want to know WHY Cython is slow at X while Ruby is great at Y, or why the JVM's disadvantages exist. In short, I want to be prepared so that when the day comes that I get the chance to ask a brilliant guy (or girl!) like Rich Hickey a question, I ask an awesome question. I haven't gone back and read this over, and I feel like I sound way too grizzled for my experience level. Sorry in advance if I sound smug or condescending. Just trust me when I say it was unintentional. I fully accept the fact that I am 100% full-blown stupid and know nothing, in practical terms. And frankly I don't think I personally would ever rise to anything other than the mediocre, run-of-the-mill peon I am now on my own. That's why I'm studying the science of computing. Don't get all frustrated about school. Trust me, part of me wants to work full-time and get the money rolling in and so forth. But shortcuts are almost always the long way around.
- kabdib 15y agoCollege for me was a mix of self-learning (writing LISP interpreters and video games) and being forced to learn nifty new stuff through coursework. I wound up dropping out after 3 years. I don't regret it because I've kept up the self-learning (being an ACM member, reading lots of papers on a continual basis, not budgeting books on CS and engineering). I think you can afford to drop out of college, but you cannot afford to drop out of learning. I've seen too many senior engineers wind up sidelined because they concentrated on just what they were good at in their job. I don't mean be a butterfly, or attempt to learn every month's new cool stuff. But get exposure to lots of levels of many good systems. Read the Unix source code. Read a compiler or two. Learn Prolog or Haskell. Write a network stack. Learn about database implementation, and Self, and modern graphics, and build systems. Learn everything you can from the stuff around you that is of good quality. I'm earning more money than I would have believed possible, at a job I think I would do for free, if I could. It's a privilege to work with really good people.