6 ms·
If 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 co
by DavidChouinard 15y ago
If 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.
- Pewpewarrows 15y ago> Web development is a solved thing, it seems like. That doesn't interest me. I was in the exact same boat as you when I started out. After a few years of web development, I was getting closer to a sinking suspicion that I was nearing the end of the rope, so to speak... And then the rabbit hole opened up to me. Trust me when I say: the web development stack is very, very deceptive. It would take at least a decade, if not more to fully master every aspect of it. And it hasn't even been around that long (comparatively), which makes finding true experts for our "hard problems" quite difficult. The knowledge that I have to go into work knowing inside and out every day? Domain registration, sysops, provisioning a server from scratch, chef/puppet for configuration management, bash scripting, server security, firewall rules, DDOS prevention, nginx/apache hosting software usage and configurations, the dozen and a half different fucking flavors of wsgi servers and how to properly reverse proxy into them, redundant load balancing with HAProxy and heartbeat, postgres/mysql/nosql database software usage and configuration, database sharding and connection pooling, master/slave and master/master setup advantages and disadvantages, proper schema creation/indexing/querying efficiently, proper static and media file headers/caching/expiration, python/ruby, django/rails, process management ala supervisord/runit/upstart/initd, semantic HTML, flexible CSS through a separate tool like SASS/LESS, javascript and what used to be the giant clusterfuck of front-end engineering, ajax, comet/long-polling/buzzwordsgalore, getting SSL to properly work with all of the above, Solr search engine usage/configuration, caching with varnish and memcached, queuing all over the place with rabbitmq, lightweight key/value stats with redis, proper version control, continuous integration, project management, one-click builds and deploys with fabric/capistrano, and the 1001 insecurities built in to naive web development and how to properly protect against them. The list goes on and on and on. I'm sure I'm forgetting to mention a lot more. Now I know how silly I was back then to believe that I was "done" with web development after a short amount of time setting up toy websites. I still consider myself a novice, and I haven't even scratched the surface of what it takes to make a web site/service scale to massive amounts of traffic. The parent comment from a Facebook dev is somewhat spot-on though: for the hard Computer Science problems, you have to get into the low-end systems level programming. On the complete opposite end of the spectrum, I deal with problems at the macro level. Computer Science, while extremely helpful in some cases, in no way, shape, or form prepared me for the bottomless pit of knowledge required for modern web development. To each their own, but both sides are deluding themselves if they believe that they somehow have the "tougher job" when it comes to programming. The only difference is that a CS degree better prepares you for one over the other, due to the nature of the work involved.