

Ask HN: Why should I study computer science? - mklappstuhl

Hey dear HN-fellows,<p>I asked this question on Quora some time ago but didn't get much from it.<p>I'm not sure whether I should copy the text or paste the link so I'll do both:<p>––––––––––––––––––––––––––––––––––––––––––
Original question:<p>Currently I'm studying computer science (first semester) at the Institute of Technology Berlin. While the university itself is great I sometimes really don't get what the real benefit of studying is.
Of course many job listings state that a B.Sc or similar is required but really: why?<p>Until I began to study I invested a lot of time in interesting technical things. I learned how the web works. I contributed to various open source projects related to web technologies.
I love to learn new things and I think that I'm quite good at teaching myself.
Now I don't have enough time to do it as much as I want.<p>In university there is also a lot of stuff that I could learn. However I don't see the need for this kind of knowledge.
While people often say: "Doing a B.Sc you prove that you can work in a scientific way.", I don't see many real-life situations where this would be a requirement or even a nice-to-have.<p>Beside studying I work for a business consultancy held by students and at a smaller startup located here in Berlin.<p>I sometimes think that I could make a living with the skills I already have. Regarding that and the fact that I'm constantly improving and extending my skillset I don't get the point of studying.<p>-----------
The first and only answer:<p>Given other factors are mostly equal, an employer might prefer a candidate w/ a degree. It proves you're smart enough to handle the math and other rigor that usually comes with a CS degree.<p>Mastery of algorithms, a topic covered heavily in most CS programs, is quite important for anyone who wants to write code as a part of their job.<p>Some would also argue that the seemingly useless CS topics like advanced complexity theory or set theory make you smarter and will help you design solutions to problems at any level.<p>-----------
A comment I wrote to this answer:<p>Thank you.<p>Regarding math:
Math is boring. I'm not attending at the lectures and when I'm doing my homework I'm learning all the stuff myself with the material that was given to me as a student.
I'm investing a lot of time into doing homework while not seeing any benefit from it (now or even in future).
While I think that I could motivate myself a lot more solving real problems and "learning math by doing" (with some guidance) I'm just solving problems that don't have any relation to life, science or anything.
In real world there probably aren't many mathematicians calculating just for the sake of it.
There is always a higher target and math is often a needed tool to achieve this target.<p>Regarding algorithms:
I learned about 3-4 algorithms by the time I started studying (I already know some of them from highschool/college). I'm personally interested in algorithms and I'd love to study things like http://sortvis.org/index.html. However I don't find the time to because I have to invest a lot of time into doing time-intensive math homeworks.
Unfortunately nobody would give me a certificate in some way that I understood what I teached myself.
Thats the reason I'm studying.<p>Regarding smartness:
I think smartness comes with experience and the will to tackle problems that seem unsolveable.
At some point of course it's quite important to be able to make thoughtful/powerful abstractions but I think that's something no one can really "teach" you.
Probably it's possible to get this deeper understanding and this ability to abstract by understanding other complex areas of science.
(What I'd love to do.)<p>I feel like studying at an university is not the way of learning that suits me best.
This makes me kind of sad, since stopping to study doesn't seem like an option but continuing would mean not doing what I think is right.
And obviously this would not produce the best results.<p>BTW; My spoken and probably also my written English gets worse every day. No courses in English and rarely people around to talk to in English. Things I also had more time for when I did attend to college.<p>I'm super thankful for any advice, whatever it might be.<p>––––––––––––––––––––––––––––––––––––––––<p>And here is the link: http://www.quora.com/Why-should-I-study-computer-science<p>If you recognize this as a cross posting I'm sorry.
However I feel like I have to do it since I couldn't get much out of Quora.<p>Thank you,
Martin
======
gawker
Hi there,

I'll give you my 2 cents worth as I definitely felt the same way and even more
so when I went out to work.

A CS degree is probably not required for most work out there. Even though some
put it as a requirement to narrow the criteria, more often than not, you won't
use the skills you learnt for the degree on your job.

Having said that, Computer Science is not about teaching your programming
skills nor equipping you with skills where you can immediately use them. All
those sorting algorithms that come with programming languages - they were
written and optimized by people with a good understanding of CS concepts
(note: they may or may not have a degree).

The algorithms in CS are motivated by real problems. The algorithms came about
when researchers faced certain issues(i.e. a faster algorithm is needed etc).
The degree just teaches you the techniques that people used in the past - and
gives insight on how you can create your own or improve one of the existing
ones. The undergraduate degrees merely expose you to the techniques but in
reality, you will most likely call some function or routine if you want to do
it.

And that's just the algorithms part of CS. There's a whole world of optimizing
this and that, how to design a fault-tolerant distributed computing system,
etc. Again, you may or may not use this. But to invent/create something like
Google BigTable or Google File System etc, it is always handy to have the CS
knowledge at hand.

Added note: Of course, you can do this all by yourself but with a professor in
front of you (who hopefully is willing to help), you can question the hell out
of him/her to get the concepts right. And assignments and tests help train
your understanding of these concepts.

~~~
mklappstuhl
Everything you said sounds to me like parts of higher semesters (6+).

We never did analyse an algorithm. We were never encouraged to find better
ones. "Designing a fault-tolerant distributed computing system" – I wish there
were a course like that.

Maybe I just don't see the relations to real world because they teach basics
first. But what do I need an engine for if I don't know that I can combine it
with 2 axis and 4 tires to make it drive.

Short story:

I have on course in which we actually program. We are programming in a bad
documented functional programming language. This language only works on Linux.
When I asked my tutor why this is as it is and that I'd like to try to get it
working on Macs he didn't encourage me to do this at all. He already worked a
bit on this but had no time at the moment to proceed his work. He could have
just send me what he has done and maybe some known problems and maybe I'd have
been able to get it working. But he didn't. (Why?)

~~~
gawker
Sadly, the teachers are sometimes not motivated to inspire their students. It
might be the case that they are teaching because of the need to do it instead
of wanting to do it. Some are just doing it to complete their MScs and PhDs
which is a shame.

It also does sound like you're much too advanced for the level that you're at.
Perhaps you can talk to some professors to do some higher level stuff or to
convince them to let you skip levels? (Not sure if it's possible but one can
try)

------
buro9
Do it because at some point you'll apply for a job that has 100 candidates
applying. And the person behind the recruitment process won't be able to read
the cover letter and CV of 100 applicants, and so to cope with the deluge they
will click the radio button on their application that says "Has Degree"... now
they only have to look at 50 applicants and you'll be one of them.

Do it because the people you're working with will be your first and perhaps
most permanent network. One of them will help you get a job later or set you
on the way with a promotion when they recall you're a solid programmer or
something.

Do it because if you learn on your own, even if you succeed, you'll always
doubt whether you are as good as someone else who got a degree. You'll always
wonder if they know something you don't and how to learn it (my answer from
that: they probably don't, but it's still very good to have a rigorous
grounding in compsci theory for completeness rather than just having
discovered most of it along the way... which is much slower than being taught
it).

Don't do it because you believe it will suddenly make you employable or teach
you everything... it won't. You remain the person in control or your learning
and your chances of getting a job, doing a degree didn't absolve you of this
responsibility to yourself.

------
limmeau
If you do not like the theory, have you considered changing from the
university to an FH? (Edit: explanation for non-German readers: a kind of
school where studies are more concrete and slightly shorter than at a
university)

