This is a transplant from the original Irrational Exuberance, and was written in mid 2007.
Recently I read the article Computer Science Degree Does Hurt (A Lot). Its always fun to read about how your last four years were spent in vain, but I have to admit that its a thought I have occasionally harbored myself. It seemed worthwhile to write a response from the perspective of a recent graduate (less than a month ago), who neither loves CS programs, nor irrationally scorns them.(Note: the above blog entry is a response to a blog entry here by Leah Culver. Ed: her site is back up now, although the url to article has changed. Not directly related, but its probably worth remembering Joel Spolsky’s thoughts about college, here).
My response to the “A Computer Science Degree Does Hurt A Lot” article is simple: it flaunts a tragic mistake that results from assuming both: computer science majors and hackers are exclusive groups
and that self-taught individuals who avoid college are a perfect subset of hackers
. There are numerous hackers who get CS degrees, and there are some hackers who don’t get CS degrees. Being a hacker is a combination of talent, devotion, and innate curiosity. Most CS degree holders are not hackers by that standard, but--sure as nuclear war and flame wars between Common Lispers and Rubyists--neither are most self-taught individuals.The difference is that self-taught programmers are self-selected to have that innate curiosity to explore and experiment, whereas attending college no longer guarantees a strong internal drive towards understanding. To assume that self-learning intrinsically leads to superior performance or talent is mistaken.(Side note:
I think this self-selection is also why most individuals who come into college already knowing some programming tend to develop into better programmers: because they are curious. Some students who begin learning to program during college turn out well, and some don’t; it really boils down to who is imbued with the hacker’s curiosity.)
Added Value from College
Enter College at Differing Angles
Lets Meet the Hacker
In my class there was only one individual who had programmed seriously before coming to our school (full disclosure: I went to a liberal arts school (oops), and my graduating class had six computer science graduates (oops again)). He was by far the best coder when we began our studies, and at the end--by golly--he was still the best coder.He learned a lot during our time at college, but much of his learning was self-directed. The early courses were undoubtedly tedious for him. The value of the courses for him was to build a foundation of theory and concepts underneath his existing programming talent. Much like in the learning of foreign languages, its all to easy to get to a very proficient point only to realize that you still don’t understand some of the underlying foundational concepts--for this individual, going to college let him shore up those leaks (and also gave him lots of time to work on his own projects).
Enter the Clueless Novice
Things were different for me: I entered college without ever programming before. My first course I took there used Python. Far from a theoretical or impractical language, Python is a fantastic language with widespread application in "real" projects. I learned a lot in my first course, but by its end I was still producing marginal code.Then I took a course in data structures, and things started to click--a little bit--as my foundation expanded. I could suddenly begin to consider the underlying implementations of the software I was using every day. Then algorithms and theory courses came. Software development classes. Python gave way to Java, Java gave way to my personal experiments in Common Lisp. Interest in Common Lisp spread to Scheme, functional programming, and examining different object orientation models. Java Swing spread to Ltk
(a Common Lisp bridge to TK), Ltk moved over to a Python
/Cocoa/SQLite stack, PyObjC morphed into Django
development. Django into MySQL, css, html, and the many pitfalls of web development.For me, college gave me a solid foundation which I then had to build upon myself. College isn’t the silver bullet, and it can’t make you into something without your own effort. It does help you build a solid foundation that you can then build upon yourself. I don’t want to make a saptastic analogy, so I’ll just say that building anything without a solid foundation has never served me well.
Breadth of Knowlege
Going to college has forced me to learn some things that I wouldn’t have learned on my own. This list includes assembler (no one uses it), Java (no one smart uses it), theory (practical is king), how to implement data structures (why reinvent the wheel?), and other numerous and sundry bits and pieces (they don't "matter").I think that learning a broad spectrum of your field is crucial. Much of creativity is applying one field’s techniques to another. By limiting ourselves to what is immediately interesting, we limit our ability to draw valuable connections. Thus, while some are content to dismiss non-programming courses as useless, I enjoyed my macro and micro economics (okay, I hated them, but I learned anyway). I learned while being dismembered by the Spanish, French and Japanese languages. I had opportunities to read books I would have likely not read (I love to read books on my own, but I don’t think the Lysastrata
or the Republic
would have been among them).Having resources and knowledge outside your exact field is not a meaningless waste--even if we accept the flawed view that only our skill in our specific field is important--because applying the tools of other fields to computer science is the recipe for a particularly sweet tasting dish: progress
Being Around Smart People
It is one of life’s pleasures to be around smart people. Far more so to be surrounded by smart people who share your passions. (Exceeded only by adding “likable” to the equation.) Having other smart people around us working on projects and problems helps stimulate your own development. Colleges certainly do not have a stranglehold on smart people. But they <strong>do</strong> have them.
Collegial Negative Externalities
I’m willing to quickly accede that colleges are far from perfect. They--like everything else I have experienced--have faults to accompany their strengths. I’d like this article to be a relatively fair discussion on the values of college for computer scientists, so I have no intention (but, as we all know, the subconcious is a real pain) of glossing over the problems I encountered during my four years.
My biggest complaint is that I felt the pace was too slow for me
. I like to be working hard, all the time, on new projects. I don’t enjoy leisurely lapping from the water-bowl of knowledge. However, the unremarkable truth is that college has to cater to a diverse range of needs, and that I was never the only person that mattered. This often made me feel like my time was being wasted.That opinion was--however--both vain and foolish. I was wasting my own time by not putting that “wasted” time to use. It took me a long time to catch on to a singular truth: to find the opportunities you want, you have to create them yourself
. This is just as true inside of an academic setting as outside of it. However, I was often willing to settle back in my moderately uncomfortable chair and complain they weren’t teaching me quickly enough. This is one of the dangers of college: you can easily fall into the trap of expecting the school to guide you from start to finish. To point you in the right
direction, and to completely facilitate your learning.Well, this isn’t what college does. It gives you resources, and you have to take advantage of them yourself. Given four years to devote to intense self-guided study, taking advantage of surrounding bright people, knowledgable(ish) teachers, and a flexible schedule, and you can learn a hell of a lot. Or you can learn pretty much nothing. Its all about the person who is there learning.
Inabillity to Specialize
Another downside in college is that you can’t really specialize to the degree you might like. The courses available are the courses available. Unless you actually create the courses you want by talking to a teacher and setting up a directed or independent study. Still, it isn’t always possible to study what you want to. Sometimes this leads to learning new but unexpectedly useful thing (economics courses, mathematics, philosophy), sometimes it doesn't (whenever you close your mind and dismiss something as useless).
Being Around Unmotivated People
Over the past century, college has transformed from an elite institution into the easiest thing one can do after graduating from high school (especially true if your family is financially well off). This has brought with it an influx of individuals who don’t give a damn about learning, studying, or being productive.This can be frustrating because as Good to Great
points out, the key to success is getting the right people on the bus, <strong>and</strong> getting the wrong people off of the bus. But in college you can’t get eject the wrong people, and often you’ll end up being assigned to group projects with them (grumble grumble).So, thats a total loss, yeah? Again this is a “what you make of it” situation. Its frustrating to work with underachievers, but its going to happen to you again--a lot. This is a situation to learn from if you’re willing to learn from it; otherwise it is a situation to suffer through (or practice your heroic stoicism).
My main point in this article is that college--like everything else
--is something you can make into a positive and valuable experience. It can also be pointless and utterly devoid of value. It is shortsighted to decry college as meaningless, and its equally unfair to declare college as universally meaningful. It is not inherently good, nor is it inherently evil.I learned a tremendous amount during my four years in undergraduate school. A lot of people don’t learn very much. The difference is not entombed in institutional concrete, it is the result of how one approaches situations; to have a great experience, you must
create that experience for yourself. Nothing great will happen to you--whether you attend college or not--if you don’t create it yourself.