Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've heard this statement thrown around a few time by technology/science pundits on the web. Does it have any merit? What exactly do they mean?

share|improve this question
4  
.Net 1.0, 1.1, 2.0, 3.0, 3.5, 4.0, 4.5. It's crazy... –  user774411 Oct 11 '11 at 0:30
22  
@DeeJay: What's that got to do with computer science? –  Sedate Alien Oct 11 '11 at 0:47
4  
Most of the stuff im learning in a CS degree is conceptually sound, but still try's to teach a lot of platform specific stuff. I find that anything they are teaching that is platform specific is dated. –  Alex Hope O'Connor Oct 11 '11 at 0:54
1  
It is a chance that what you are learning now will be obsolete when you graduate: most of the work in software engineering is to maintain legacy code. –  mouviciel Oct 11 '11 at 7:46
2  
Yes, I heard that some *"·$"% just created a Turing-complete language which has such a strong typing system that it can decide the halting problem. What a waste of time learning diagonalisation. :( –  Peter Taylor Oct 11 '11 at 8:41

11 Answers 11

up vote 52 down vote accepted

Knowledge of specific platforms does get out of date pretty quickly. However, if that is all you are getting out of your education you are doing something wrong.

The theoretical stuff that makes up most of a good CS course is not tied to a specific technology - a lot of the basics have remained much the same for decades already.

share|improve this answer
18  
And a lot of stuff we call CS has been around before computers existed. –  Pubby Oct 11 '11 at 0:40
5  
also the psychological grit / skills you build up to be able to cope w the typical annoyances and frustrations of understanding and persevering long enough to solve a hard problem doesn't go out of date - most ppl encounter this rarely in their jobs, but when they do encounter it, it's very important to be able to handle –  Peter Ajtai Oct 11 '11 at 6:37
    
@PeterAjtai I'm not sure you get that from a course - I certainly never had an assignment where the requirements changed completely the day before it was due. When you are learning they don't give you hard problems, only those that actually have solutions. –  Tom Clarkson Oct 11 '11 at 7:47
1  
AFAIK, the most recent branch of CS theory that most people will care about is a little over ten years old - cache-oblivious algorithms and data structures. It probably isn't taught in a lot of courses yet. –  Steve314 Oct 11 '11 at 8:15
1  
I don't think even this is entirely true. Most platforms have a core that is pretty stable over the long term. Some shiny new toys are bolted on in each reversion but for the most part knowing the core platform is transferrable. And for some languages like C++ reversions take a long time.... Java has been steady state for 5 years and is only now picking up. C#/.NET have gone through changes but a lot of the core is the same, it is just shiny side libraries that have come and gone WPF, WCF, Entity Framework, etc.. –  Cervo Oct 12 '11 at 1:49

Nope. Things like Algorithmic Analysis never go out of style.

share|improve this answer

Computer science has some targets:

  1. It needs to be useful in 30 years
  2. it needs to cover every major recent development
  3. it needs to be suitable for beginning students

While these targets can sometimes conflict, most of the stuff they teach are only coming to be useful. Companies are working in half year cycle, so what you learned in CS is not immediately useful, since it's supposed to last 30 years, not half year.

share|improve this answer

No. The 10 best algorithms you learnt do not get outdated. In fact many algorithms are proven to be as effective as the can be. For instance learn radix sort and when you need it and that won't change between implementation versions and UML and SQL are already very old and still much in demand.

And if you know C and if you can solve all of your problems in C then your knowledge probably will be regarded as updated while C is an old language and Java is not very now either.

I learnt python and YAML for new stuff. If those get outdated I'd be happy to switch to something better, as long as the change is for the good.

share|improve this answer

A degree in CS should provide you the basics you need to become a rockstar developer - assuming you are interested anyway.

Most of the fundamentals of CS are language-agnostic and algorithms can be implemented in virtually any language.

With a CS degree; you should have a deep theoretical understanding of how computers work and this should give you an edge over others who don't have such knowledge.

All these assumptions only hold if you are interested in pursuing a career in software development and really love to learn new solutions...

share|improve this answer

Becoming a programmer is a huge commitment. You will have to earn a great deal in addition to what they teach at school. Believe it or not, once you really understand some languages and concepts similar tool are easy to pick up. Take c#, if you really know Java you are halfway there before you even tough your first c# book.

Colleges vary greatly in the quality of their CS programs. When researching schools don't research the school as a whole research the CS department.

Here's a trick: Think of some question to ask the professors. I really doesn't matter what. Ask them about the syllabus or something. Email a bunch of them. If you get no answers, defensive answers, or even snotty insulting answers... I got news for you that department sucks.

Don't be afraid to play around with stuff and ask question on sites like this.

Also it's not 1999 anymore. Finding a good job can be tough even with a degree. Wages are pretty low. Where is live in New York State a high school teacher can easily make as much as a mid-level programmer. Be careful about debt.

share|improve this answer
1  
"You will have to earn a great deal in addition to what they teach at school" - do you you really mean earn? Freudian slip, I suspect ;) –  Rich Oct 11 '11 at 9:11

What you are learning now is not that important in computing. A developer learns each day of his working life and loves this unending knowledge acquisition.

A degree in computing does not provide knowledge that you will use in your job: they don't teach version control, they don't teach testing. A degree in computing aims at selecting people that are already dedicated to software engineering.

The best programmers in the world are not from famous universities, they are self taught.

share|improve this answer
    
I learned about version control and testing in the Software Engineering program that I went through... –  Thomas Owens Oct 17 '11 at 18:35

The specific version of Visual Studio or whatever will be out of date, and your sense of the industry will probably be a little behind whatever is the cutting edge, but most of what you learn will last. Things like algorithms, OOP concepts, etc. don't go out of date. Just to pick one of the many many examples, notice how many current languages owe much of their design to Smalltalk? Well Smalltalk was developed in the 70s.

Now, my point about your sense of the industry is important, but then that's why most employers don't expect new graduates to know a whole lot about the industry at first. They expect to have to train new recruits in development practices and current trends in development frameworks and what have you.

share|improve this answer

As some answers already suggested some will and some won't. Also it depends greatly on where you study. The following should be static to an extent: OS stuff, algorithms, COBOL, SQL, basics of Java and .NET, concepts of database design, HTML and CSS (basics).

New versions are coming every few months, but each of these subject is large and in no way you can be taught all this stuff in a school. So, yes things will change but it does not mean that it is useless. In other words, don't worry, no hiring manager would expect you to know the latest advances in SQL Server 2008 R2 or Silverlight SDK 5.0.

share|improve this answer

It depends on the college (university, whatever) you go to.

If they're teaching you the details of a Java 1.7 or .NET 4.5, then yes, it's going to be out of date before you graduate.

If they're teaching you big-O notation, and basic algorithms like QuickSort, binary search, B-trees, and so on, then no it's probably not going to be obsolete before you graduate -- or, probably before you die. Quite a few of these have been proven to be within at most a constant factor of optimal. Many of the basic algorithms have been known for decades. While there have been improvements in the way they're implemented since, changes at this level happen relatively slowly and when they do they're generally fairly minor.

If you are in the one of the former programs, my advice would be to simply find a better school. If you care, you can find one that's worthwhile.

share|improve this answer

No it isn't true, provided your undergrad education has focused on fundamental skills and principles and not just learning the latest flavor of the month programming language.

What they are implying though, is that certainly technologies can become hot relatively quickly and then equally as quickly fade into obscurity.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.