
Don't major in CS: 5 reasons why - lpmay
http://edn.com/electronics-blogs/measure-of-things/4431764/1/Don-t-major-in-CS--5-reasons-why
======
greenyoda
_" CS can’t even be expected to cover the principles of systems you’ll
encounter in the next 20 years, much less your lifetime."_

The theoretical parts of computer science - computational complexity, parsing
with context free grammars, etc. - are not likely to go stale any time soon.
(I'd forgive a physics major for being ignorant of these, but not not one who
writes an article claiming to know something about CS.)

Even the fundamental design of operating systems hasn't changed much in
decades: Unix, which some of the most popular operating systems today (Linux,
OS X, etc.) are based on, has been around since the 1970s (probably long
before the author of this article was born). A process is still a process,
virtual memory is still virtual memory, a device driver is still a device
driver, and semaphores, which Dijkstra invented in the 1960s, are still used
today.

Relational databases have also existed since the 1970s, and most of the
computer languages we use today were invented before the turn of the century.
So I don't think there's much danger in everything we know about CS today
being useless in 20 years. (I got a CS degree over 30 years ago, so I have
some perspective on this.)

------
onetimeusename
As a person with a degree in CS I have to say this is bogus.

The writer doesn't explicitly state what CS skills are but he says they will
be outsourced. I take it he thinks CS means you only learn basic programming
or how to install software. He then says it is good to spend time in the lab
learning how stuff works. I had to learn plenty about how computers work from
low level details to theory of computation to high level specifics of software
design.

His second part about languages coming and going so therefore don't study
languages?? seems odd since someone is apparently making all the new
languages. Apart from that, understanding concepts such as oop or functional
'paradigms' are not as easy to wing although admittedly things are becoming
freely available on the web.

Then he said people who build OS's are ditch diggers but if you look at how
hardware has changed, building software that can handle different devices and
allowing them to interact with the OS is huge! Just look at the evolution of
super computers that physicists use. From vector processors to multicore cpu
to gpgpu, there needs to be people who understand computer science to work on
these things because computers require someone to know about computation
itself.

Lastly, I had to learn computer architecture, physics up to quantum mechanics,
and I had to take all sorts of deep math courses so the writer is completely
wrong about the CS major.

[edit] and I forgot to add in algorithms and data structures which are
themselves deep topics and no, algorithms are not useless, knowing which algo
or data structure to use can save a lot of time and therefore money. I should
say that theory of computation and algorithms really distinguish the major and
add that currently in demand are skills such as machine learning or data
mining which are subsets of the CS field.

If I was to give a reason not to major in CS it might be that the degree is
very popular right now and the demand for the degree might at some point be
larger than the demand for persons with the degree.

~~~
balor123
I graduated in 2002 and at the time people were really scared about
outsourcing. I chose to go EE however. At the time what scared me was actually
that my college education would be useless. I saw too many 13 year olds being
invited to conferences, friends who never went to college becoming software
engineers, etc. So I picked a field where I felt my college education would be
an advantage.

In the end I got the CS masters anyway and now I realize that neither is
really a threat and, despite what people say, the degree was very valuable.
Depends what you do with it I guess.

------
gnunez
This is exactly what happens when people speak on topics they have little or
no knowledge of. Some of the reasons given not to study cs in "reason 0...
Formalism of mathematics ... probablity and statistics ... circuit design" are
topics taught in CS curiculums along with formal logic, langauge theory,
discrete math, etc. Try determining the average runtime complexity of some
algorithms without using probability or combinatorial math. Sadly, it seems
some of his readers are just as ignorant on CS and will continue to spread
this misinformation. One comment questions the validity of software
engineering without mentioning the difficulty of the anology lies in the fact
that our craft is unlike anything seen before -- as noted by Dijkstra long
ago.

------
alialkhatib
I'm actually not that concerned about CS jobs being outsourced particularly
soon. I think the impulse to do it will be there - it seems like a readily
outsourced job, right? just committing boilerplate code, right?! - but the
reality is that determining requirements and co-located work is crucial (this
is backed up by decades of research which I can go dig up if someone wants).
You can no sooner outsource the development team than you can management and
everyone else interacting directly with those developers. And at that point it
sounds like you're just talking about a company in another country.

Reason 1 (about human culture etc...) should actually strike a cord with me
since I studied Anthropology for my undergrad degree[0], but even _still_ I
disagree with this article's premise. Don't take "you should be focusing on
HCI and culture" and conflate that with "you shouldn't study CS". This is a
stronger case for the argument that social scientists should be taking CS
courses (and vice versa) than it is for anything else.

In STEM fields I sometimes find people who condescendingly talk about social
sciences and humanities students because their job prospects seem (and indeed
are) grim. It's rarer that someone in one of those fields derisively fires
back with crap about how shallow a CS (or related) education is, but it
happens as it has here. It's not just unproductive; it's toxic. People
instinctively respond by digging deeper into the trenches and preparing
defensive, even offensive responses in retaliation for what seem like attacks
on their intellectual passions. These posts polarize us and discourage us from
engaging with people from other fields for fear that we're in for yet another
flame war.

We should all be talking about how we can enrich our discourses with wisdom
from other fields, not taking pot shots from our respective camps about how
much better ours is than the other's. There's a lot that Computer Science can
do for other fields, and a lot that other fields can do for CS.

0: to be fair, I double-majored, but I associate personally more closely with
Anthropology at the moment (although for credibility's sake, I'm studying CS
now).

------
je42
I believe one of the key items that they are missing is that while "hip"
technologies change quickly in CS, that you don't need to start from scratch
when a new technology comes around. Usually, new tech is similar to an older
or is a combination of older ones. So the more experience you have in CS
fields the quicker you generally are to pick any new technology.

------
hamburglar
This article is so laughably boneheaded that anybody convinced by it is
probably best steered away from any kind of engineering study.

------
msie
There is a sniff of arrogance in the article. Coming from a physics major, of
course. Because they know everything, right?

~~~
lpmay
I absolutely agree about the tone. Non-CS major myself, but I don't get the
impression that things like operating system design count as "ditch digging".
I do think the question of whether CS is intrinsically useful in the same way
as physics or engineering is an interesting one. Hope to hear a CS major's
response.

