12 ms·
Go To University, Not For CS
- sthomps 16y agoNice post. The world is lacking tons of culture (although you don't always need to go to university to get it, especially if you are a self-learner). Enjoyed the post though.
- mehta 16y agoLove the post. Having done college and then post-grad, I have to say that I missed out on the immense opportunities of learning about culture, art, history and so many more things. Additionally, One thing that that the article did not mention is the environment in the CS departments(just for hanging out... and getting new ideas) which is way more better then the things you'll learn in class.
- archgoon 16y agoIt's difficult to take this person's point seriously when he claims >Another way to explain the shallowness of Computer Science is that it's the only discipline that eschews paradox. Even mathematics has reams of unanswered questions and potential paradox in its core philosophy. In Computer Science, there's none. No unanswered questions? Rubbish, 'P=NP' anyone? Correctness of the assumption of the Church-Turing hypothesis (which is falsifiable if not provable) ? Granted, I'm not sure exactly what he means by "eschews paradox", but I assume this is mostly because the author doesn't really know himself. If he simply means "lacks counter-intuitive ideas", than he's dead wrong. I'll put forward the Halting Problem as an obvious example. Counter-intuitive if for no other reason than people are simply used to problems being solvable.
- deleted 16y ago[deleted]
- gwern 16y agoJust a quick nitpick - I've known people to be not particularly impressed by the Halting Problem. The real result, if you want to wow someone, is Rice's theorem (http://en.wikipedia.org/wiki/Rice%27s_theorem http://en.wikipedia.org/wiki/Rice%27s_theorem): 'Not only can you not decide halting - you can't decide anything else either.'
- archgoon 16y agoReally? They're impressed by Rice's theorem but not the Halting Problem? I find that surprising, I would expect someone unimpressed with the Halting Problem would simply view Rice's theorem as an obvious consequence of the Halting Problem.
- gwern 16y agoIf you aren't impressed by the Halting Problem, you probably aren't so sophisticated and able that Rice's theorem is an obvious extension of the Halting Problem. Intuitively, I can convince myself that Rice's theorem is true ('just write a program that runs itself and halts or doesn't halt on whether it has that property'), but I can't really follow the math and I only think of that because I've already heard of a number of results that use similar translations/compilations from one sort of program to another.
- mreid 16y agoAlso, check out Blum's speedup theorem. Very odd.
- Confusion 16y agoIf that's counterintuitive, than the most basic physics already teaches you that many things are counterintuive. The 3-body problem does not have an analytical solution. We can't even properly simulate the solar system a couple of thousands of years ahead. Nearly everything in physics is numerical approximation, despite what theory would lead you to believe. After that, the halting problem is far from surprising.
- archgoon 16y agoThere's a significant difference between "Nobody can solve this problem, despite it having a well defined answer, regardless of the power of the computer and the time given to solve it, no matter how clever you are" and "I can only get an approximation to the solution, but the error will always be well defined, so I can get arbitrarily accurate solutions, say within a nanometer given a few billion years or so."
- Confusion 16y agoAlthough you can't solve the general halting problem, there are many halting problems that can be, and are, solved in practice. To me, that's the same thing as a numerical approximation to something that doesn't have an analytical solution.
- hga 16y agotl;dr: Don't major in it unless you're attending one of Stanford, U.C. Berkeley, CMU or MIT. OK, that's in part my spin---he only mentions MIT---but it's also my considered recommendation post-the dot.com crash. If you plan on/desire to stay programming, I think you really need to be severe about approaching this, seeing as how the normal career of a programmer is over by age 35-40; beating that is going to take a lot more than going to a Javaschool or just starting with your native programming talent. ADDED EVEN LATER: see this other posting in this thread for two exceptions to the 35-40 problem: http://news.ycombinator.com/item?id=1391516 http://news.ycombinator.com/item?id=1391516 ADDED: going into serious debt to attend a Javaschool for the purposes of becoming a better software developer strikes me as a particularly bad bargain nowadays. If you don't have what it takes to be an autodidact after graduation for the rest of your career you should think really hard about getting into this field to begin with. On the other hand, now that we're in what looks to be a long Great Recession at best, this may be your best bet, it's just probably not a good one if you don't get into the best school you can and engage in serious extra career long effort.
- StupidDorks 16y agoIf you are not going to top 30 schools, then it is likely that the "culture" being taught their is no better! How can you say that CS dept in non top 30 school is bullshit but other departments would be glorious?? It boils down to whether you go to a good school or not! Also how many liberal Arts Majors get job?? And then Why not Major in CS It wont do any harm at least!
- brent 16y agoI cannot let comments like this stand. I have seen little difference between students from the top few schools and the rest. If you are only doing an undergrad I see little reason to hold these top 4 on such a pedestal. Any school in the top 20 or even probably 40 are more than a java school at the undergraduate level. The differences are marginal. However, if you plan to go to graduate school I would certainly try to attend one of the top 4 schools.
- hga 16y ago
- swolchok 16y agoPeople will most certainly ask you why you studied Art History in college if it turns out that you came out the other end with no marketable skills, especially when articles about your woes show up in the New York Times as though your poor planning and choice of topic did not lead directly to your inability to find work.
- Lewisham 16y agoThe thing that grates is that I am guessing he chose not to seek out the multitude of ways that are offered at university to assimilate "culture" (which, by the way, is a rather nebulous term. Does going and partying three nights a week count?) There's the university newspaper. Bands. All sorts of sports classes. Charity groups. Activism. In some countries, you can get minors in things of interest, like philosophy of science or something. His view seems blinkered, at best.
- StupidDorks 16y agoAnother misinformed post by someone who thinks CS education is useless and that ability to code at age of 19 is suffiecient to become a superstar! If someone follows his advice I would really sad for that person, CS is an amazing topic! And its main purpose is not teaching programming but whole other things. It depends a lot on which school you go to though, if you are goint to top 30 schools is US, then i can assure you that the CS departments there will offer you much better opportunities than you can ever imagine! For rest of the universities their other programs are most likely to be as useless as their CS programs. Let me put here harshly: There is NOTHING,NOTHING that programmers have achieved in last 10 years!! All the advancement in this field has came from people who introduced novel paradigms (which requires creativity and not programming!) or came from CS / CE / EE Academic departments! The Web, Google (PhD Students), advances in chip design, Virtual Machines (VMWare) etc, came from People who had siginificant university education in CS EE or Physics! Just because you can write code does not means that you have mastered CS. I bet all smart-ass programmers on this forum, cannot understand most of the mathamatical concepts that go behind stuff such as Machine Learning or Information Retrieval or even Theory of Computation. These are uber loosers who think that wearing Star trek shirts and writting Glorified Enterprise fizzbuzz makes them smarter than any CS dept grads. If you are following their advice, I really feel sorry for you! If CS education was really so useless, Why would Google take some many PhD's??
- Emore 16y agoI must thoroughly disagree. First off, I agree on the importance of culture. But equating a CS degree with coding is just plain wrong; Dijkstra has a nice quote on this. CS is and should be applied mathematics, and what more timeless topic is there than math? Secondly, there are some serious doubts whether university teaches you to think independently. As a counter argument, read "The Disadvantage of an Elite Education"[1]. Summary of this article: university teaches you--if you're somewhat ambitious--to become an excellent sheep. In other words, it promotes you into being the same mediocre person as anyone else. That said, I still believe there's a ton of things to be gained from spending four years in a university: network, culture, more-than-average-but-still-pretty-mediocre ability to think, fun, and being inside a solid recruitment base for cool companies. [1] http://www.theamericanscholar.org/the-disadvantages-of-an-elite-education/ http://www.theamericanscholar.org/the-disadvantages-of-an-el...
- devon_r_t 16y agoWhere did you get your CS degree? Or more importantly, which institutions do you know of that actually teach CS as applied mathematics and aren't just "Java Schools?" I went to roughly a school with what was and still is an incredibly mediocre CS department and, as far as I can tell, this is the case more times than it isn't. I spent time working on a Pure Mathematics degree but eventually switched to CS and I still consider it to be one of the biggest mistakes of my life. I agree with Zed to an extent, but only because so many CS programs focus on the wrong things and are little more than trade programs. For most young people I meet I strongly recommend they steer clear of CS unless they're going to a school with a proven program.
- watty 16y agoI disagree with this article. I thought I could code prior to university but had no idea. If you have a chance to go to school, go. If you want to be a software developer, major in CS. Definitely have a minor or double major too.
- wheels 16y agoIt was a great post right up until the part where he started talking about computer science. It left me with the feeling that either Zed did not study computer science, and is just talking out of his ass, or went through a very bad computer science program and has generalized that all of them must be that bad. How arrogant can you be? There's nothing for you to learn from 100 years of algorithms, complexity theory, language or operating systems design? Nothing?! All you need is code?
- StupidDorks 16y agoThis poster is really The Idiot! What abotu AI, Machine Learning also CS lies on a fine line between engineering and Computer Science, thus like other engineering problems there is a focus on solving real life problems rather than philosophical paradoxes!
- hga 16y agoThe termination with extreme prejudice of 6.001 suggests that some people mostly agree (http://www.wisdomandwonder.com/link/2110/why-mit-switched-from-scheme-to-python http://www.wisdomandwonder.com/link/2110/why-mit-switched-fr...). Certainly there's an ever increasing role for people pasting together big libraries and frameworks without a deep understanding of what goes on behind the curtains....
- deleted 16y ago[deleted]
- prosa 16y agoIn any successful field of engineering, the job growth explosion will be among the assembly-line workers. Cars and aircraft, now solar panels and semiconductors. Extrapolating from that to say that an engineering education is worthless is a huge extension of reasoning. Those assembly-line jobs only exist because of years of research by well-educated engineers. If your school's Computer Science curriculum is a series of courses on the LAMP stack, that's one thing. But in the fields like algorithms, distributed computing, machine learning and information extraction, to name just a few, there is plenty of room to build a career around a degree.
- dustingetz 16y agoi agree, culture is important. but, how much money is it worth? is it worth 20k? 50k? 200k? on the flip side, not all of us are brilliant alpha programmers with entrepreneur-class egos. the labor-class parents of one of my best friends are incredibly proud of his BigCo software job, and BigCos don't hire without a degree. The cynic in me wants to call a [software] degree an average person's investment.
- jrockway 16y agoWhat BigCos don't hire without degrees? I know people at Google and Microsoft without a degree. I work for a giant corporation, without a degree.
- hga 16y agoLucent in theory didn't, although that was a result of their union contracts which required people not covered by them to have college degrees. This seriously screwed over the undegreed Ascend employees after the acquisition; anything that might bring them to the attention of the union like putting them in for a promotion risked a grievance (or whatever) filing that Lucent would lose. Companies that do contracting work for the Federal government generally need to hire people with degrees, and that's probably generally to universally true for consulting companies in general, where they're selling appearances to get their foot into the door.
- sliverstorm 16y agoThat brings up the question; when did they get into the industry? Back when there was no such thing as a Computer Science degree, you of course didn't need one to get a job as a programmer I'm sure there are some people still who get into Google and Microsoft with no work experience or degree, but I suspect that number was higher when these things were new and all. I also suspect a good number of the people you were thinking of when you made that post had good work experience to help them land the job.
- deleted 16y ago[deleted]
- johnl87 16y agoI regret studying CS. I would have rather gone for CE and learned more in depth about how the computer works. It seems like all the computer engineers at my school are really good coders too, and they understand the hardware better. Opens up more jobs where you can do more hardcore coding like drivers and stuff.
- allend 16y agoCS != Programming. Honestly. No, really. Personal data points, third party anecdotes even less so, are not a reliable way to extrapolate how CS (or any major) is taught outside of the MITs of the world. Your experiences, shockingly, are one among many, and remain yours. That said ... The culture thing is spot on. That is what getting an education is all about.
- StupidDorks 16y agoThis guy is a total dimwit
- beloch 16y agoA university CS program that only teaches you how to code is nothing more than a technical degree. Some universities do this. Many, besides MIT, do not. They should teach everything from hardware architecture to compiler design to basic quantum computing in a decent undergrad program. Some of those will be advanced options. That's fine. Depth comes at the cost of specialization, and every CS grad should have a tiny bit of depth somewhere. The basic first year courses often do not assume knowledge of coding, but they should have a point besides learning to code. I think better advice for students choosing a program would be to go to University, spend a year studying as many different things as you can, including CS, to see what engages you. Learn how to code at the same time. You might be happier as a physicist who knows how to code than a computer scientist who wishes he knew more physics. There are plenty of coding jobs a CS grad can't do.
- acangiano 16y ago> Another way to explain the shallowness of Computer Science > is that it's the only discipline that eschews paradox. > Even mathematics has reams of unanswered questions and > potential paradox in its core philosophy. In Computer > Science, there's none. It's assumed that all of it is > pretty much solved and your job as an undergraduate is > to just learn to get a job in this totally solved area > of expertise. Zed is confusing software engineering with computer science. CS is a branch of applied mathematics, and it's not different from mathematics. There are unsolved problems and plenty of areas that require further research.
- robryan 16y agoIt's not like software engineering doesn't have unsolved problems either, like why is it still so hard to produce bug free software, why programmer productivity has only gone up a small amount despite 30 years of language advances and why most software still has to be mostly custom. The dream from the earlier days of software engineering where we were eventually meant to have components that could easily be mixed and matched to create whatever we want hasn't eventuated.
- rbranson 16y agoI don't think we'll ever get around having to build software with code and highly trained developers. The world is still very much custom engineered, from architecture to civil engineering, electrical to mechanical engineering, even mass produced items have relatively few interchangeable parts.
- prosa 16y agoI agree. However, it is worth examining places like Dubai -- the tallest building in the world, and indeed practically an entire new city, was built by unskilled laborers working for dollars a day. That's a compelling case for commoditization of talent, but in the end I think it's just a heuristic improvement. It gets you pretty far, but at the end of the day you still have huge teams of PhDs and M.Archs doing the actual engineering. (If that was commoditized it would be a scary world indeed!)
- robryan 16y agoWhile I agree that your not always learning useful things in a CS degree for someone to have left high school and said they already know everything the CS degree and industry will teach them would be very very surprising. Personally I have little interest in the alternate university path he is suggesting, I would probably eventually get sick of it and quit. That's not to say I don't find a broad range of subject interesting, just that I'd rather pick up that other stuff online in small chunks when it interests me and spend the 4 years I have of study to focus on something that really interests me like CS.
- moolave 16y agoOne good friend of mine best said it, (although university may not be the only place to get all your programming skills honed) it is one of the best places to meet future connections in business or just on a collaboration of a tech project.
- forlucy 16y agoI'm probably wasting my time posting here. He's completely wrong about CS as a subject of study in general but very right about the problems with CS as a formal academic subject of study. Academia is a religion of sorts. It's primary goal is the replication of the academic system itself, control over a generation who desire an education whereas actual education of people is merely a secondary objective. Just one quote from Chomsky among many regarding education : "A lot of the educational system is designed for that, if you think about it, it's designed for obedience and passivity." Education is Ignorance, Noam Chomsky - http://www.chomsky.info/books/warfare02.htm http://www.chomsky.info/books/warfare02.htm
- b3b0p 16y agoDon't go to a school that teaches programming. There are many fine schools besides MIT, CMU, Caltech, etc. Saying you should disregard CS as your major because you aren't able to attend one of the elite schools is downright depressing. There are many great schools for an undergraduate that have an excellent CS curriculum. Any programming at the schools I attended were optional 0 credit labs. And except for the CS 1 and 2 intro classes, there was no designated programming language, you could use any language you wanted. Some chose Ruby, Python, or Java while some others chose C or C++. They were more concerned about your ability to design and implement a proper working solution to the problem given.
- hga 16y agoI agree it's depressing, but if your goal is to continue "programming" past age 35-40 I'm not sure you can make the case for others. See my other posting discussing autodidacticism. However, there is one caveat: if you go into embedded or get a serious security clearance and stick to government work that required it, you can with much less difficultly continue programming. In the former case the field appears to respect gray hairs, in the latter, it's pretty hard to get the first job (they can't have you working on classified stuff until you get your clearance and you can't apply for or hold one without a job requiring it) so once you have your "tickets" you're in very good shape.
- lucifer 16y agoMeaningful answers to questions such as "Should I study CS?" are critically informed by the questioner. Obviously, if you want to make a living in IT and already know how to code, heck, get to work and make money instead of giving it to some corporation masquerading as an "institution of higher learning". But if your ambition in life includes 'solving the tough problems in computer science', then by all means, pick a top notch school and be diligent in sucking brain content from peers and faculty. Its is not a trivial intellectual domain, and the "primitiveness" of the discipline is actually indicative of how early in the game this thing is. So , wanna to be the Plato of Computer Science? Either way, you'll need to get that "computer science" education. From the ground up.
- reader5000 16y agoYou can dole out 40k/yr and isolate yourself from the real world for "culture", or you can go to your local library (where they still are funded) and read a book. Your call!
- philwelch 16y agoMy main regret about university isn't that I studied CS, but that I didn't study mathematics. Coming out of high school, I didn't have the faintest idea what mathematics really was. I did study philosophy, but the parts that appealed to me most were, frankly, the most similar to mathematics (symbolic logic and proof-writing). And then when I studied CS, my favorite parts...were mathematics again! All quite ironic for someone who always hated what he thought mathematics was.
- adzp 16y agoI studied mathematics as an undergraduate and am now pursuing advanced study in computer science. The foundation that studying advanced mathematics provided me for further study in CS is rock solid, particularly since my interests lie in artificial intelligence realms of CS. I've also found that in "the working world", once you prove you can code, you are a favored candidate for more interesting, complex job assignments by your employer.
- thecombjelly 16y agoI agree. I went through my junior year of a CS degree and dropped out because it wasn't worth it. If I was to do it over again, I would definitely have chosen a different degree. I'm 100% certain that doing a different degree, I would have turned out a better programmer and better at something else. CS (or any programming degrees) are not as intellectually challenging as they should be. If you want to learn how to program than, I have yet to find any degree that will teach you much about becoming a good programmer, so I would recommend going to school for something else.
- mechanical_fish 16y agoI got a degree in physics which I regret not at all. I recommend the hard sciences: Physics, biology, or chemistry. Or a similarly 'hard' engineering degree: EE, ChemE, MechE, or whatever the engineering equivalent of biology is. ;) (The name for that is still being invented. "Biomedical engineering" is one term you'll hear.) Take plenty of lab courses; try to get some summer science internships involving programming -- science labs need programmers, so that should not be hard to find. I'd get a minor in CS, maybe. But, frankly, if I went back to school today I might still prefer to take courses in art and design -- a subject that would sure be handy for my career -- or statistics, and teach myself the CS in the evenings.
- nostrademons 16y agoI always figured I'd do that - I entered as a physics major and spent six semesters as one - but ended up graduating in CS and really wishing I'd done CS from the beginning. I wanted to be a physicist, I didn't want to do physics; conversely, I didn't want to be a computer programmer, but I liked to write computer programs. If I were giving advice to incoming freshmen (which, I guess I am, since there're bound to be some reading), I'd tell them to try out a whole bunch of different courses, and then major in the one where the homework makes them come alive. Because when you end up spending a good chunk of your life in a field, the important thing is that you enjoy the day-to-day work, not that you enjoy the trappings of success. (Of course, you should probably keep an eye on how marketable the field is - I don't recommend choosing a major just so you can get a high-paying job, but if you find you like CS and you find you like Beowulf, being a programmer will net you a much more comfortable life than being a Beowulf scholar.) Incidentally, I also took the "don't take courses in subjects you can teach yourself" approach. It worked very well for things where teaching myself involved reading a book, like history or economics. It worked not at all for things where teaching myself involved working out problems, like statistics and linear algebra. I suspect CS is closer to the latter than the former.
- markbao 16y ago> You my friend, are an idiot. I hate to tell this to you, but your lack of education makes you that way. Your failure to expose yourself to literature, art, poetry, science (real science, the icky kind) has made you stupid. Another data point against you is that you learned to code and you are questioning whether you can get something out of a university education. How arrogant can you be? There's nothing for you to learn from 2000 years of Philosophy, Biology, Physics, History? Nothing?! All you need is code? This is inaccurate, but excusable since I assume Zed hasn't been to high school in a good number of years. Things have changed greatly from then—high school courses are far more rigorous than what he describes as "failure to expose yourself to <x>"—and if you're going to a top 30th percentile school, chances are that you took an AP class as well, if not more than one.
- hga 16y agoHmmm, an interesting point. I'll note that my high school in the late '70s had only one term of the calculus at the end, and the fact that the teacher refused to teach, full stop, wasn't caught by something inconvenient like the independently administered AP tests. My school system had dropped its honors program because it was "discriminatory", but somehow nowadays they offer 12 AP courses including Calculus AB, the sciences, literature and foreign languages, music, US history, etc.
- younata 16y agoI'm currently coming out of high school (11 days until graduation), and, I haven't learned much. 6 AP courses are offered at my school, none of them are pushed on you until after you sign up for the class and decide that wasn't a good idea. I haven't ever done "real science". AP Physics B (non calculus) is the only ap science course offered, and it still was just "here's a lecture about physics, do your homework, few labs".
- hga 16y agoSigh, algebra based non calculus physics is cargo cult science much in the original sense that Feynman started the meme. No one outside of education does it this way, or as I like to put it, there's a reason Newton invented the integral calculus to develop classical mechanics and why Edison couldn't compete with Tesla (self-taught Edison didn't have the math to do polyphase AC, which was the only practical approach back then). Anyway, I feel your pain, I came out of my high school not having learned hardly as much as I wanted to or needed. At least I had some good to great math teachers until my senior year (that was a literal life saver along with a summer school course on a UNIX V6 machine). Senior year was a total loss with no insurance, or "It's a bad sign when JROTC is by far your most interesting and useful class." How well have you learned your math? That's a key foundation.
- Osiris 16y agoI started University in Computer Science, and then after some time abroad in Mexico, I switched to International Relations and studied politics and economics. My plans to go into International Business haven't yet materialized and I'm currently in IT, including both web and Windows client development. Being a one-man programming team means I have to learn a lot by myself and don't have the expertise of others to lean on. Because of that, I feel I'm held back from my potential. For example, I'm having a hard time teaching myself how to do TDD, or learning new languages or techniques. I think a CS degree would have given me a great background to be a better programmer. So, I wouldn't discount it and I think you still learn the culture because of all the GenEd classes you have to take in University.
- meric 16y agoI agree with this article about CS to some extent but I don't fully agree. I already knew how to program in Java (poorly) before going to university to study a double degree in Commerce and Software Engineering (which is just CS + 1 more year). So you have someone who's a proto-programmer - learning programming but not quite getting there yet. I don't go to any of the few places like 'MIT'. We have `learned` python, C, Java and c++, so far. (I put the learned in quasiquotes because my classmates tend to completely forget the language after the course finishes.) Sure, some courses like Project Management is completely useless, but I do study courses about machine learning, and how to design algorithms. I'm now in third year and I feel that going to university to learn software engineering has made me a much better programmer than I would have been without it. Stuff like Object Oriented Design and unit testing, I wouldn't have gone and learned it myself... It would take a university to teach me that. Funny... I was just having a discussion with my lecturer the other day... He was complaining the university's courses were too `theory` and didn't help students get jobs... especially compared to competing universities. I was telling him the point of university isn't to get students jobs but to teach them how to think. If students wanted a place to teach them so they can get jobs they'd just go to technical colleges. I think he was convinced... hopefully. What about my commerce degree? Well its mostly boring but occasionally something really interesting comes up... like e-business and economics. I've only done commerce because my dad made me to. The article makes me think though, maybe I should've gone for a Commerce/Science degree majoring in Mathematics instead. Or a Commerce/Engineering majoring in Electrical engineering...
- StudyAnimal 16y ago"Funny... I was just having a discussion with my lecturer the other day... He was complaining the university's courses were too `theory` and didn't help students get jobs... especially compared to competing universities. I was telling him the point of university isn't to get students jobs but to teach them how to think. If students wanted a place to teach them so they can get jobs they'd just go to technical colleges. I think he was convinced... hopefully." Probably not, if you look at magazines like the Communications of the ACM you will see that academia sees their "failure" to churn out programmers for industry as a crisis, and are more concerned with appealing to women, minorities, and people who may not find theoretical CS topics like algorithms and data structures easy or fun enough. They want to increase their rolls basically, and they saw how switching from CS to learn java style trade schools during the internet boom helped do that. Now that the market has stabilized a bit, they hate to see rolls dropping, they hate to see CS classes filled only with the right sorts of people (i.e. geeks and nerds for want of a better term) to carry the discipline further, so they want to dumb it down even further, make it more mainstream, get all the cool kids in. I don't blame them I guess. It is mostly the fault of industry blaming them for not churning out experienced senior software engineers. Computer Science should stay pure, the right people will always come, even if it won't be the biggest or coolest department at uni it will always have a rich culture. People have their whole lives to gather experience and become great developers, they can do that on the job. You only have a few years at university so you shouldn't try to use it to become a good developer, you should use it to learn core CS theory and whatever else leading edge topics interest you that may or may not yet be used in industry. Industry would be better off asking themselves why they don't do a better job training developers themselves, providing great career paths, and even contributing back to academia, cooperating with CS departments writing papers, doing research and taking part in conferences.
- madmanslitany 16y agoI doubt this is actually what happened, but I can picture Zed finishing a post suggesting that students take some time to learn about culture while at university. Then he decided that he wasn't going to piss off and fire up his usual quota with just that so he added an opening and closing attacking a CS education. I'm in pretty decisive disagreement with him on what he says about CS here, but there's a valuable point in here. CS students, and engineers in general, are a little too dismissive of the liberal arts. There are some genuine reasons for this, but Zed is right in that it's supreme arrogance to think we have nothing to learn from thousands of years of human achievement in the arts. Ultimately, culture is how humanity expresses itself with the time and energy we've bought for it by making life easier with technological progress. Taking some time to understand the human condition through culture before we transform it would be a good thing. Plus, on a personal level, meeting people who aren't fellow engineers is generally a good thing. Guys, there are a lot more girls outside of CS than there are therein... Hell, girls, that goes for you too if you just want to talk to another girl for once.
- ilovecomputers 16y agoThe last Art course I took was a digital art course: http://digital.arts.uci.edu/arts12/ http://digital.arts.uci.edu/arts12/ The impression I got was that not even the scholars knew what digital media was. However, I did acquire a large pool of information of what this grouping of similar people were up to. They were a great source of inspiration and if art is one thing, it's building upon the works of others and the humanities offers a larger pool for you to build upon. However, when it comes to better understanding how people react to their environment, I turn to the social sciences for a more concrete explanation. My naive understanding of the humanities is that it's based upon assumptions and opinions, but I bet a wiser scholar can show me differently. BTW, depending on where you go, a CS degree can be more of a liberal art education than a technical one.
- mattchew 16y ago> Chances are you'll end up going to some crappy Java school ... > This is what Universities do ... they train people to think ... So your average university can't teach me to code, but it can impart to me the wisdom of the ages. Not my experience. At least at a state university, most kids are there to party and walk out with a credential that (they hope) gets them an agreeable, good paying job. That is the culture that the university has to share, at least by default. Yes, you can get more out of university than that, and some do. But the idea that your horizons will be broadened and you will acquire culture and Learn How To Think just because you had to pay a pile of money get in the doors . . . no, I'm afraid not.
- hga 16y agoI wonder, how many universities and colleges can you attend and not be able to learn "the wisdom of the ages". All it takes is a few dedicated professors who are dying to be able to teach someone, anyone, who, in my case (this was MIT in the mid-80s), could identify the French Revolution. After that seminar session my professor said he would have retired if no one could have answered the question ... then again, history is my humanities specialty. Hmmm, I still study about as much history as I do CS and software engineering. I've observed this directly or indirectly at 2nd and 3rd tier schools as well (and MIT's humanities departments aren't by and large first tier as far as I know).
- steveklabnik 16y agoI think lots of readers here are getting confused with the two kinds of "computer science." We all know CS as a theoretical discipline, close to math. But most American universities, it would seem, don't teach that. This is what Zed is talking about, the "computer science" that makes up one of these degrees. Maybe, I'm just overly bitter, but he's absolutely right about the current state of undergraduate level curriculum.
- hga 16y agoI think a lot of this has to do with where the school's CS department came from. For those few that started in the Math Department they tend to stay close to the math. For the engineering based ones (e.g MIT's EECS) engineering is always the prime focus and CS theory is at minimum a means to that end and for the serious CS types they can concentrate in it but they'll still in theory be good engineers. (When most of a school's students are engineers it just tends to rub off anyway, even on the theoretical physics types, it's hard to escape without groking a fair amount about engineering which many realize will be useful in the real world.) Also, the ABET accreditation requirements require serious teaching of engineering whereas you could skate on serious math outside of the one specifically required half-year discrete math course plus one other serious one (no doubt most if not all require single variable calculus).
- DrSprout 16y ago>Universities are the last place where people actually attempt to expand human knowledge through research and are willing to teach you their subject. It's the one place where you can go study something entirely and totally useless like Art History or History and Philosophy of Science and nobody is going to ask you why. And then immediately thereafter: >Except for a few places like MIT, Computer Science is a pointless discipline with no culture. While I agree with some of the points made in the article (do go to college, because you'll be a better person for it, regardless.) This is where the article completely loses cohesion. The way I see it, there are two ways you can teach computer science, and in both it is useful to you as a programmer, provided you apply yourself. 1. You are taking software engineering, learning to code. It may not broaden your horizons, but you spend four years looking at code and writing code in a structured environment, you're going to get better at coding. 2. It is a hopelessly abstract mathematical endeavor that has nothing to do with programming. If that's the case, it's just like philosophy of science. Despite its apparent inanity, simply the act of dissecting the how and why of computing will affect you as a person, enhancing the way you look at the world.
- c00p3r 16y agoYet another coder converted to a great teacher of humanity?
- amohr 16y agoIf all you really want to do is code, my guess is all the art history and romantic literature classes in the world won't result in a necessarily cultured person. Culture doesn't just come from exposure, it comes from receptiveness. As Dorothy Parker said "You can lead a whore to culture, but you can't make her think" I think this post would be much more accurate if Zed had chosen a more fitting marquis word. There's tons of things that you learn in college but wouldn't pick up going straight to work. What I think has been most useful, for me, that I would not have picked up on my own is writing for different audiences. In high school, you most likely wrote like a high school student: (generally speaking) unrefined, undirected, and usually lacking a clearly defined audience. When you get to college, you get used to the academic environment - you learn to communicate an idea efficiently to someone who isn't an english teacher. It's where you learn that all those "rules" they taught you aren't as steadfast as they would have liked you to believe. It is ok to start sentences with "And" or "But" and end with a preposition.
- lsc 16y agolearning to write, no matter where you do it, is an extremely valuable thing to do. Judging from the output I have seen, though, I'm not sure college is the best place for that.
- stipes 16y agoI'll throw in my voice that a "regular" University can still have a good CS program. I am at a large state university. My theoretical courses have been, by and large, quite good. Our introductory course is based on SICP and Scheme (with a little Python at the end). Our second course is roughly about OO, taught with Java (but without letting us use most of the libraries at all). The design of our program is that you choose an emphasis (I'm in network security; there's also networks, graphics, AI, etc., and yes, software engineering). All emphases have theoretical elements, at least to some degree. I have also had great experiences doing research with professors, who are very open to undergraduates.
- donaq 16y agoHuh. I'm not sure whether to agree or disagree with this. On the one hand, I learned a lot of interesting CS stuff (algorithms, complexity theory, cryptography, parallel computing, compiler techniques, operating systems design, etc) while doing computer engineering in a university in Singapore. As far as I know, the CS courses in both the older universities in my country also teach the same things sans the hardware stuff we also learned in CE. These are useful things to know which would have been very hard for me to learn outside of university, and we're not MIT. On the other hand, there are a lot of other sources of accreditation available here that conduct courses exactly like those Zed mentioned. In those cases, I would have to agree that it's not worth the money to take those courses. Then again, they're usually not called CS over here. They have names like Business IT or some such. IMO, you cannot call yourself a CS course unless you teach, you know, CS, which is pretty much the case here. What's the situation in the States? Are there a lot of courses teaching you how to code Java billed as CS? p.s. of course I've forgotten most of the CS stuff that I've learned in university, but just knowing that they're there if I need them and gaining the big picture How Things Work was worth the time spent and makes me a better programmer.
- georgieporgie 16y agoMy take, for what it's worth: I was a major nerd through high school. We got a great teacher my Sophomore year who taught us all the basics of algorithms, and gave us enough freedom to pursue our own interests. I taught myself 8086 assembly language, and thereby grasped pointers in a way my classmates couldn't. Fast forward to college. I wasted my time for four years. The most memorable CS things I learned were i, j, and k as iterators (in other words: some accepted formatting which makes reading each others' code easier), SQL (not well, and how hard would it be to pick this up on my own?), and finite automatons. The memorable non-CS things are vastly more numerable. Anthropology, physics, philosophy, and mathematics. Ten years down the road, I've found that most of my career has consisted of a) finding and fixing bugs and b) gluing code together. I have devised precisely one original algorithm (I don't mean simply writing fresh code, but writing an original algorithm). An awareness of computational complexity has been necessary, but a deep understanding of algorithms has not. Here's the kicker: getting a job without a lot of algorithm and puzzle talent proves difficult. Of course, I find this hilarious in the face of my career experience. If I were brilliant at algorithms and puzzle solving, I would have been terribly, terribly bored for virtually all of my career. It's been my experience that interviewers tend to overestimate the complexity of the tasks their team faces each day. So, I would advise a young'un who already has substantial computer talent to pursue education in a different area. You'll meet more interesting people, develop your character, and have the option of a very different career path if you tire of software or vice-versa. Of course, all of this goes out the window if you truly want to be a computer scientist. But it seems to me there are at least ten well-paying "code gluing" jobs for every one research scientist position, so I hardly see this as defining necessity for a career.
- evo_9 16y agoI thought the point of the article wasn't about the merits of a CS degree, but rather if someone is a pretty sharp person that already knows how to program, should he/she go to college for the experience and to learn about all that other non-programming knowledge out there. I say, hell yes, the more exposure to knowledge the better, and chances are they will be drawn into CS classes because it truly interests them.
- curiousfiddler 16y agoZed, unfortunately or fortunately there are good and bad universities (in terms of CS). If you are in a good university, a lot of professors will teach you lessons which will last a lifetime. You must go check the video lectures on youtube by UC Berkley, MIT and Stanford. They will teach you the most important lesson, time and again, till it becomes a habit for you - its all about the fundamentals. They will teach you that computer science is as much programming as it is applied mathematics (& lot more). I went to a bad school. Teachers were not confident in their subjects, they could not inspire me and I must confess I wasn't smart enough to inspire myself. 4 years later, now I have taken a break from my work, and I am revisiting my fundamentals with the help of the open course ware available on the net and boy, I sure have missed a lot!
- curiousfiddler 16y agoAnd about culture: if you question what culture is and what culture gives you, you will figure, that it has a lot to do with habits. And in universities, you definitely get a chance to pick up some awesome habits which will last a lifetime. In good universities, the process is easier & the habits have a wider range (not just discipline etc which are forced by the administration), because your peer group is a lot more determined to attempt leading a meaningful life.
- ephealy 16y agoZed wrote "Your entire world has been this horribly inaccurate model of the real world where you were basically trained to be a good little factory worker." Are we sure that university life is any different? I don't discount the value of the liberal arts, but will a college education really encourage the artist within the coder, enabling him to be better? Is it possible that a college education will simply magnify the 'factory worker' training that Zed talks about? Is it not possible for an employer to take a promising coder out of high school, mentor him in the ways of a professional programmer, and provide a cultural education - all without the need for $xx,000 in debt?
- marstall 16y agozed shaw is british?
- petercooper 16y agoAfter reading this, I'd recommend "Subtlety" by Sarah Palin and "How to Manage Your Debt" by Kostas Karamanlis.
- pedrokost 16y agoI will go to University for Computing. I am one of the apparently few people who love studying - not the act of studying,but the reason to study. Any interaction with people increases my ability to think and speak. This is a quote from somwhere: "The rate of cultural and economic progress depends on the rate at which ideas are having sex." Educational facilities (even if they limit your creativity)increase the rate at which ideas have sex and that's good. After spending two years in an International Baccalaureate program I have found that I have completely changed my way of thinking and speaking. I changed. I am more grown up. There are many people - those who don't understand the reason to spend years in school - who can't even understand me anymore. I ceased to speak in terms of e.g. temperature, but in terms of heat radiation and entropy change. Common people can't understand me. That seems pointless, but it has made my brain more agile in analyzing things that are more complex and that would take too much work to resolve with 'common language'. This is the power of education. I agree, you don't have to study CS, but for gods sake, if you want to be a programmer don't study a humanistic subject (except maybe philosophy). Study something that can push your brain to think and to create complex in-brain connections. The reason I say don't study something like history is because I believe that in some decades simple facts won't matter much, only analyzing the facts will. I believe that in less than 50 years we will have computers connected to our brains that will be able to hold all the facts we learn and even perform simple analysis. But the complex tasks will be left to the brain, and so one must learn to increase its mental processing capacity and not to increase memory capacity The other reason for studying CS are connections. Meeting people, potential partners, employers and all the rest. You don't get that if you don't study CS. University is the easy way to come to meet people and get a job. You'd have to have a much better portfolio to get a job if you don't have a technical degree. On the bad side, universities are expensive. But there's hope to earn the money back with a great degree.
- hga 16y agoAh, but when you take your first serious history course you'll study historiography and ideally your professor will introduce you to Thucydides whatever the course is about. And that's very relevant to "analyzing the facts", especially since not all "facts" are created equal.
- stcredzero 16y agoIn Computer Science, you only get an expansion of the envelope when some corporation makes a new toy everyone goes crazy over, not realizing it's just like that other toy someone else came up with 10 or 20 years ago. This is an unintended admission by Zed that he's working off of 2nd or 3rd hand knowledge.
- gcheong 16y agoI really appreciated my CS education after reading the following from Apple's core data documentation: "There are many situations where you may need to find existing objects (objects already saved in a store) for a set of discrete input values. A simple solution is to create a loop, then for each value in turn execute a fetch to determine whether there is a matching persisted object and so on. This pattern does not scale well. If you profile your application with this pattern, you typically find the fetch to be one of the more expensive operations in the loop (compared to just iterating over a collection of items). Even worse, this pattern turns an O(n) problem into an O(n^2) problem."
- masomenos 16y agoto play devil's advocate, what you'd need to know to parse that paragraph was covered by my CS 102 class. So you'd only need to have taken a couple classes, rather than majored in the subject.