
Who Needs a Computer Science Degree When There’s Wikipedia? - nreece
http://www.geeknews.net/2008/06/21/who-needs-a-computer-science-degree-when-theres-wikipedia
======
oz
I hate school. With a passion. I find I learn best sitting quietly alone,
thinking, reading or experimenting. This applies not just to Computer Science,
but most subjects.

Between the Internet, amazon and a good library, an above-average intelligence
person can teach themselves many subjects, including CS. The point about not
knowing the order in which to learn is invalid: Easily solved in <5 minutes by
going to a few university websites and trying to establish a common
denominator. For the really gifted ( and I should think enough most who are
motivated to learn CS autodidactically are), they may probably discover new
things by simply playing around, noticing interesting phenomena and use our
famous OCD tendencies to add to the field. That's how most scientific
discoveries are made. Ramanujan, the great Indian mathematician, was not
formally trained, yet made important contributions.

I'm also reminded of the anecdote where a student who had not attended class
got a copy of the homework from a colleague, not knowing that the professor
had told the class the problems were unsolvable. OF course, he solved them;
the other students had a mental block. But to be honest, if you learn things
from books, they will consider certain problems 'unsolvable' as well.

Ultimately, it depends on your IQ, aim and financial situation. If you've made
up your mind, like me to be an entrepreneur, you don't have to care about a
degree. In fact, I would like to make a ton of money while young, so I can
spend lots of time later delving deep into both the sciences and humanities
(in many ways an artificial distinction; Google "Lockhart's Lament").

If you plan to work for others, its safe, but not absolutely necessary, like
anything else, it depends. In this case, the employer in general and the
specific interviewer. If s(he) has had many good experiences with non-degreed
employees, your chances are better.

From a purely acquisition of knowledge standpoint, yes, you can teach yourself
CS. If there's something you're not sure about, I'm absolutely sure that you
can develop a good relationship with a good professor local to you or even
online. My gut feeling is that good professors wouldn't mind, they love smart
students.

Ahhh, my friends, the journey of self-discovery!

~~~
vitaminj
Believe it or not, formal education and self-study aren't mutually
exclusive... you can do a combination of both and benefit from the value of
each style of learning.

One of the good things about most tertiary institutions is that you're not
obliged to show up to any of the lectures, so if your preferred learning style
is self-study, then you can skip the lectures and just learn the material by
yourself. But you can still take advantage of aspects of formal education that
are valuable for autodidacts, whether it's clear course structures, access to
good professors, hanging out with smart peers (ie. learning by osmosis),
access to expensive journal subscriptions, deadlines to motivate your
learning, etc.

Anyway I wouldn't write off school so quickly. A really motivated autodidact
can use school to their advantage, instead of lamenting its obvious flaws.
Study the required material, but then learn beyond the basic necessities of
the course, study whatever interests you. Don't be too concerned about grades
and don't bother studying just for the test. If you're learning for the love
of it and for a true, deep understanding of the subject, then let me assure
you that you'll have no problem passing.

------
coglethorpe
The formal learning environment and external motivation to learn (exams,
projects) helped me learn a lot about computer science as well as many other
subjects. I'd do it again, even in the internet age.

That being said, the internet has been an incredible resouce for my continuing
education. It's more than just a way to look up javadocs, I've gained more
breadth to my knowledge than books or classes could offer.

It's the combination of the university and internet 'courses' that have
propelled my abilities like never before.

~~~
jey
I had the opposite experience: the formal education system systematically and
carefully sucked out the beauty of the subject and replaced it with boring
monotonous busy work. I wish someone would've just stopped me from going to
college altogether instead of having to suffer for two years before realizing
that self-study was far better for me.

Obviously school works for the vast majority of people, but I wish there
wasn't such a prejudice against self-directed study. Right now society doesn't
even admit that self-study could possibly work, they just tell you that it's a
path to guaranteed failure.

There was one significant gap in my skillset that I can directly blame on
being self-taught through Wikipedia and other web resources: I didn't know how
to take a textbook and systematically study from it. I was too used to jumping
around or starting from some thing-to-learn and just reading the specific
concepts it depends on. This works great when you're studying subjects that
are well-covered by online resources or looking up reference information, but
it really falls short for more advanced or esoteric topics. Over the last few
months I've been consciously trying to develop the ability to study from a
textbook and I've been getting better.

~~~
oz
Amen. I remember loving math at age 12 (grade 7 here in Jamaica), and hating
it up to recently. I honestly don't know how I passed my high school exams. I
got the lowest grade you could pass with.

I started a CS degree at the University of Technology in Jamaica in August
2005. We had to take an aptitude test to get in, which included some math. I
passed, not because I understood the math, but because I could reason things
well.

I started programming (in Python) at age 14 or so, and knew I was good at it.
What bothered me at Uni was that I knew somewhere that I was good at math,
because I understood programming. I actually told my classmates so. We had
PreCalculus in the first semester. I failed of course; I'd stopped attending
classes and took the time to learn some things from scratch. I actually picked
leaves and played with them till understood how number systems, basic
operations, fractions and exponents work! I was working out of an American
elementary school textbook. My friends thought I was crazy, but I knew,
somewhere, that I was right.

During the summer after year 1, I got offered a job by a man working as
technical consultant to a telecommunications startup. I went to his house the
Sunday afternoon, and Monday morning I reported to work, in the only 'work
clothes' I had. When the summer was up, I stayed on. The pay sucked, but I
would have done ANYTHING not to go back to school. Luckily, the man who had
hired me was also 'anti-school.' He knew his telecoms well; self taught. My
parents, naturally, wanted me to go to school, but they didn't push me,
knowing I can be quite...strong-minded.

It was at that job I first realized just how good I was. Within a few months,
I was conducting interviews for the IT department. I interviewed university
grads, and most of them didn't even come close. I remember asking one of them
about the Nyquist Theorem (which I knew only cursorily). I swear he nearly
jumped out of the chair! I was obviously younger than he, and asking advanced
questions. I loved it.

What I discovered about myself at that job was that I TRULY love to learn!
Most people just. dont. care. They only want to know that they pass the exams.
They don't have that child-like curiosity about how things work. I didn't have
a computer at the time, so I stayed at work till 11pm most nights, just
reading online books, whitepapers and tutorials. I was walking lonely streets
to get to the taxi stand after work, but I didn't care. I was learning. Safety
second. On some nights, I'd call a cab to take me home, which cost the
equivalent of $5USD. We were paid weekly-the equivalent of about $60USD. But I
didn't care. I was learning, and loving it.

In the past few months, I've experienced what can best be described as a
'creative awakening' (insert moving music here). I've started writing and
drawing again, and am actually starting out in graphic design. I'm listening
to more classical music and operas, and listening to less rap, dancehall and
reggae. I came across Lockhart's Lament, and it rang so true that I had to put
it down a few times. Vindication tastes good; you can believe that.

Lockhart makes the point that mathematics is a creative endeavor like any
other. I remember always wondering why the quadratic equation equaled 0. Why
not 543.98? I didn't understand what exactly they were trying to accomplish. A
few months ago, before my 'creative awakening,' (sounds esoteric, doesn't it)
I started spending my days at the library. (I was fired from the job, a few
months before the entire group of companies crashed, the CEO is now on bail,
go figure). I came across a book about the history of Mathematics, from the
Egyptians and Babylonians to Hero of Greece,and his postulate that all lines
are equal since they have corresponding points(Google it). It then talked
about the Hindus. Turns out, they have to build their altars with specific
proportions, and developed quadratics as a means to that end. I was furious.
Why hadn't I been taught this at 15? But I was also delighted: I'd always felt
that many of those who got good grades in Maths class didn't really understand
it, they could only apply formulas to specific exercises. I felt that I was
now in an exclusive club. I haven't visited the library since that day; got
distracted, you see (you know how nerds are).

But this is why Lockhart's Lament rang so true. He's also not the only one to
criticize contemporary Math education. Google "Morris Kline" who's written
books on the subject. Richard Feynman also wrote on just how abominably bad
most textbooks are.

Damn, is it 8:55 PM already? I'm actually at a friends house; I came to get me
some cake and icecream.

------
wallflower
Short answer: A lot of companies (read: most non-startups) have an HR
department that requires a 4-yr bachelor's degree in computer science. Yes, I
know people who have made it without a bachelor's degree (and even a high-
school) but these people did not need it - they could code (and more
importanly, self-market).

Are 4-year institutions are almost mafia-like in their influence?

"Writer Noel Weyrich compared college administrators to the mafia. "Call it La
Alma Mater," he suggested. "Cultivated and well-connected, its kingpins are
masters of what amounts to a high-stakes protection racket. 'Nice kid you got
there,' goes the shakedown. 'What a shame if he ends up flipping burgers
without a degree.' That's an offer most parents can't refuse."
[<http://www.incharacter.org/article.php?article=3>]

~~~
icey
I've worked at a lot of places that required a degree as a consultant. I have
no college but a thick resume (read: blood, sweat and tears) which got me in
the door.

Every single one of those places was stifling to work for, they were
inevitably steeped in bureaucracy. To a certain degree, some of the
bureaucracy was warranted for sure; but the problem is that a lot of these
companies can't figure out when it is appropriate and when it is not.

------
msg
It's really a question of whether you prefer supervised learning or
unsupervised learning.

Supervised learning is one-off and expensive, unsupervised learning is cheap
and widely available.

Supervised learning converges over a much shorter time frame than unsupervised
learning.

Supervised learning introduces bias in the quality of the teacher signal that
unsupervised learning cannot run afoul of (or take advantage of).

An interesting middle way might be active learning. It is a technique where an
unsupervised learner has the ability to ask a supervisor for useful tasks to
train on. In academia, sadly, this doesn't seem to happen below the PhD level.

<http://en.wikipedia.org/wiki/Supervised_learning>
<http://en.wikipedia.org/wiki/Unsupervised_learning>

~~~
mechanical_fish
* ...an unsupervised learner has the ability to ask a supervisor for useful tasks to train on. In academia, sadly, this doesn't seem to happen below the PhD level.*

That isn't quite true. You're describing much of my high school math and
physics education: I had teachers, and I "took" the official classes (i.e. I
sat in class, most of the time, and I took the exams and did much of the
homework...) but my teachers (who were quite awesome) recognized that I was
ahead of the class and enjoyed teaching myself, so they threw me books like
_PSSC Physics_ and _What is Calculus About?_ and told me to have fun.

That was, however, unofficial and sort of under the radar. I expect such a
style of learning to continue to rise in popularity now that the Web is here.
It's just easier than ever before to run an active learning program: There's
so much stuff online to steer the students toward, and even the offline stuff
is easier to find -- there are book-recommendation services and blogs to help
you find the best print books, and used-book services to sell them to you
cheap. It really is getting to the point where I could set myself up as a
"professor" right here in my home office and mentor folks over Skype as they
go from one online resource to another, at _big_ savings over paying a college
for the same services.

~~~
msg
Point taken. If I say your experience is the exception that proves the rule,
though, I don't think that's too far off.

I had a similar experience until midway through high school. I was about three
years ahead of my peers in math, due to the efforts of one particular
instructor who encouraged me to get ahead and stay ahead. After my ninth
grade, he moved to another school. About the same time, my high school ran out
of courses. I ended up taking throw-aways instead of vector calculus,
differential equations, combinatorics, etc. for three years.

I wonder if the push towards one-size-fits-all standardized testing has
eliminated the possibility of making active learning official, at least in the
public schools. Overworked teachers don't have the time to dumb it down and
smart it up at the same time, whether the kids could handle it or not. There's
a lot of generalizing here, sure, but I think the basic outline is true.

Even my MS seminars were more teacher-directed than self-directed. Maybe I
have a knack for choosing the wrong learning situations.

------
tarkin2
Well, I gained a lot from my fellow students. I doubt our current best modes
of communication can match the insight I gained from the friends which I
gained during my degree.

Other than that, a self-taught student may be tempted to tackle easy problems.
For instance, I don't think I would have ever attempted a ray tracer in c++ if
I had learnt from home.

And what about teachers? It's not like wikipedia would say, "hey, looks like
you're creating a 2d game. ever thought about this mapping algorithm? it may
make your code simpler?" You could get that information from the internet, but
you'd have to realise you had a potential problem to do that, and without a
teacher, who'd tell you that?

Most of all, a lot of this thought comes from retrospect. Of course I now know
what subjects make up a good computer science degree, but before my degree I
wouldn't have known the significance of compilers, for example. Nor would I
have known where to /start/, and where to go after that.

It's not that it's not possible to be self-taught, but you'd need a hell of a
lot of passion and motivation for the subject to shack off all the problems
you'd encounter without a teacher aiding and guiding you.

~~~
PieSquared
> "Other than that, a self-taught student may be tempted to tackle easy
> problems. "

I completely disagree, and I'd say the opposite. If someone has the motivation
be self-taught, then they will have the motivation to try difficult things.
Though I would agree that you can't really be well self-taught unless you
really have the determination for it.

~~~
donw
All of this depends on the person. Somebody who is self-taught because they
want a job in programming is going to tackle easy problems. For the same
reason, and I know I'm speaking to the wrong crowd to say this, someone who is
just in a hurry to slap an application together so that they can sell it will
also not tackle anything really hard.

Somebody who has a problem that isn't solved by any current software will, by
definition, tackle something harder than someone who is just trying to make
money.

------
ratsbane
A lot of job ads which are very specific in listing degree requirements do so
to fulfill legal or policy requirements to advertise a job and are really
designed to exclude everyone except for one specific person the company wants
to employ. I've learned this recently in the process of sponsoring an H1B
employee; now I look at job ads a little differently.

We've hired programmers with degrees in CS who weren't very effective and
programmers without degrees who are brilliant. A history of hacking with
results seems like much better predictor of efficacy than a degree although a
good CS degree improves the odds a programmer will be effective - at least,
that's what I've noticed.

------
watmough
That is a great collection of articles, but reading from Wikipedia is never
going to teach you _taste and style_ in programming like having Simon Peyton-
Jones as a guest lecturer, or having your professor call PASCAL a steaming
pile of cr __p ...

A computer science degree will also expose you to people _much_ smarter than
you, that serves as a useful humbling experience. This is assuming you are not
the next Bill Gates (holds entire 8080 BASIC interpreter in head).

~~~
swombat
Reading Wikipedia won't teach you that, true.

But hearing any lecturer or professor make any sort of statements about
programming is never going to teach you _ability and competence_ in
programming, not like sitting in front of your computer and trying to convince
it to make some cool trick that you saw or read about, or leaping into the
open source community, or doing any kinds of hands-on, no-need-for-university-
stuff programming, will.

Any degree at a good university will expose you to people _much_ smarter than
you. No need to study computer science for that.

Despite my strong interest and ability in programming, I did a physics degree.
I don't regret that. It's given me a breadth of knowledge that I would never
have achieved had I studied pure computing.

I believe that if you're a passionate programmer, you'll learn everything you
need "on the job", so to speak (whether that job is paid or a hobby). However,
there are many interesting things that you'll never learn unless you study
them at university.

~~~
wallflower
> Despite my strong interest and ability in programming, I did a physics
> degree. I don't regret that. It's given me a breadth of knowledge that I
> would never have achieved had I studied pure computing.

Do you feel that you could solve almost any problem (maybe not even technical-
based) given enough time?

Despite the strong campaigning by my parents to declare CS, I entered the
civil engineering program. It was tough to land my first real programming job,
but I had trouble staying interested (and sometimes awake) during 8am
structural engineering classes.

I believe undergraduate engineering is masterful at teaching problem solving.
That can be applied to anything technical.

Honestly, after years of spending 3-4 hours on painful homework problems (like
finding the forces internal to a wind-pushed power transmission structure),
developing software can be a joy.

1st year - well-defined small problems (e.g. Physics 101).

2nd year - bigger problems, labs, basic hard engineering concepts (this is the
weed-out year).

3rd year - problem-based projects. teamwork/collaboration. You're smart+lucky
if you can solve/get the homework problem - even if you don't you're learning
the process. Zero-force members..

4th year - Here's the situation. You define the problem. Go design a solution.
Write a 100-page report. You have three months.

~~~
krschultz
Exactly, I'm doing Mechanical Engineering, and I picked up a minor in CS to
pump up my GPA. It seems like a much better combo than pure CS because it is
much harder. (Isn't there a PG essay about staying upwind of your goal, an
engineering degree is certainly upwind of CS. Not knocking on Computer
Engineering here, that is one of the hardest engineering degrees for sure). As
for "meeting smarter people", I don't know, I was 100% self taught when I got
my job at my startup because I hadn't started CS yet, and the smartest people
I have ever met are the guys in my company - much more so than professors. All
are computer and electrical engineers though, we only have one CS major, and
hes a self taught guy too. My roommate is a CS major who never taught himself
anything - and though I like the guy, he is 2 years "ahead of me" and I
program circles around him.

------
rplevy
There's also open courseware, which goes a lot deeper into the material than
Wikipedia can or would want to go. And then there's public library.

My grandfather, who was a civil engineer often made the joke of giving the
abbreviation for the public library in his hometown (UPL) as the place where
he got his education. And it was true, but that was post-Great Depression,
circa New Deal era when a civil service exam was enough to start a real
career, and a college education was not considered necessary for most
occupations.

~~~
calpaterson
OCW is close to worthless on about 70% of the courses. There is a "lost in
translation" effect when you remove the course from it's institution.

------
gizmo
Nobody needs a Computer Science degree. But if you want to be really good,
then you need to have a thorough understanding of all parts within a computer.
Get a mental model of a computer from the transistor to the hardware
architecture to the boot sequence to the memory models to the operating system
internals to the virtual machine and garbage collector of your language du
jour.

If pieces from the chain are missing you'll be programming by trial and error.
And that way you'll never reach your full potential. Could you learn
everything on your own? Absolutely. But without the external pressure you'll
simply skip on a lot of tough topics because you don't think you need to know
them. But you do.

------
MoeDrippins
"Who needs a CS degree when there's all the books that have all the
information, and more, that Wikipedia does?"

Having the information available is not a substitute for the things one does
to get a degree.

~~~
ajross
To be fair: neither is having a degree evidence that one has actually mastered
the subjects it covers.

Hell, I have a degree _and_ regularly read wikipedia articles on all sorts of
subjects, including computer science. Does that invalidate my degree?

------
babul
One of the best things about doing any degree is the people you meet and the
interactions you have with them.

Many a friendship/company/network are born from these relationships and often
are beneficial to you throughout life.

No matter how good they are, Wikipedia et al cannot offer this.

~~~
gojomo
But maybe other networking and cooperation forums, online and off, can also
replace that function of degree programs?

If you can decompose traditional degree-granting education into its
constituent parts -- true learning, certification, networking, socialization
-- each may in the future be better served by new structures that take as a
given the computer and communications technology we have now.

------
pfedor
Everyone who wants an H-1B visa or an employment based Green Card.

------
zandorg
So, having done a degree to get a job in computing, only to find that it's not
enough, I wonder why I wasted 3 years when all I came away with was good
Scheme experience. Now a self-employed Lisp programmer.

------
randomhack
If you are self-learning, then wikipedia is not a good way to do learn
computer science. Its way better to actually read a good book, think a great
deal and read/write code when appropriate. Computer science is not history
where you learn just by reading. Thinking and problem solving are very
critical too.

------
bluelu
Why do we need a school? Nearly all information we learn in school is on
wikipedia as well.

~~~
eru
"Teenagers now are useless, except as cheap labor in industries like fast
food, which evolved to exploit precisely this fact. In almost any other kind
of work, they'd be a net loss. But they're also too young to be left
unsupervised. Someone has to watch over them, and the most efficient way to do
this is to collect them together in one place. Then a few adults can watch all
of them." -- [<http://www.paulgraham.com/nerds.html>]

------
pageman
learn as much as you can and validate it with a degree, learn some more and
validate it with a masters learn a little bit more and validate it with a PhD.

