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.

Possible Duplicate:
Is COBOL still worth learning?

One of my better college professors often talked about the advantages of learning an archaic language (COBOL or SAP ABAP for example) in one's free time because of the advantages it provides when looking for high-paying jobs, or if you find yourself out of the job and in need of temp work(consulting, etc.). I was curious what your thoughts are on this, especially if you work with these languages, and whether the time investment could really pay off for future job hunts.

For a little background, I am a junior software developer relatively fresh out of college, with knowledge of mostly just Java, SQL, and web programming (JS, HTML, CSS, etc.) which have provided me with no lack of job opportunities thus far.

UPDATE: I thought this was interesting. I am currently looking for jobs (always a good thing to do in my opinion, and DICE makes it simple), and was just approached by a company for an SAP ABAP position where training in the language would be part of the job. Thank you everyone who responded, I will certainly take your advice into consideration!

share|improve this question

marked as duplicate by GrandmasterB, Karl Bielefeldt, Yannis Rizos, ChrisF Dec 16 '11 at 11:08

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

    
Spend time on it if you find it interesting. There are still quite some places who keep looking for COBOL programmers. –  user1249 Dec 15 '11 at 0:32
3  
I think it's worth noting that it will take you much longer to master X language as you are not forced to use it everyday, and solve complex problems. So with that being said, would you even be in a position to take on that high paying job that is probably going to expect an expert? –  The Muffin Man Dec 15 '11 at 1:14
2  
You do not just write a few programs in COBOL and become an expert. Are you willing to invest several months into COBOL? I personally would learn something current and hard instead. With anything you do, you have to be better than the next guy in your geographical area and be willing to accept the same salary :) I personally would go through SICP lectures before I study COBOL. I would maybe learn MongoDB, Ruby, Python. If you are employable and are having fun, then you are doing something right. Who knows what the world will look like in 20 years? COBOL is mostly maintenance Would you like it? –  Job Dec 15 '11 at 1:50
6  
Cobol and SAP "archaic"? Youngsters... –  jwenting Dec 15 '11 at 7:25
3  
@jwenting: And I thought of Java when I saw this question. Different generations :) –  Tikhon Jelvis Dec 15 '11 at 8:19

6 Answers 6

up vote 15 down vote accepted

Ask the job boards

If you're asking "is this archaic skill marketable?", I'd say to check the job boards. Let's take COBOL, for instance.

If you see lots of COBOL jobs, and if they pay much better than jobs requiring skills you already have, there's your answer.

(This quick search on Indeed doesn't suggest that COBOL jobs pay particularly well, and searching for Ruby vs COBOL on Dice finds, as of this moment, 1657 for Ruby and 589 for COBOL.)

Other considerations

On the other hand, you need to ask:

  • What would the work environment be like? Archaic code working with archaic databases may be maddening. Will the money (if it's good) be worth it?
  • Will you get stuck maintaining old systems forever? Will you learn conventions that make it hard to transition to other languages, or have skills on your resume that other employers will actually count against you?
  • Are there other lucrative skills you could learn that would be more fun? For example, identify an up-and-coming technology instead of an old one, and be among the first to master it.
  • Given the possible negative factors above, how much more would COBOL jobs have to pay to make it worthwhile to you? 50% more? 200% more? Whatever that number is, does it seem like the market is offering it?

Compare search results

If all you're going for is lots of opportunities, I'd suggest you do this:

  • Make a list of all the computer languages and skills you can think of
  • Search for them all on a big job site
  • Rank them by results and/or average pay
  • Pick the top few and learn those, or pick the top one and learn that really well.

An alternative approach would be like this:

  • Do the comparative search above
  • Divide the skills into groups and pick the highest ranked item from each group: a dynamic language, a functional one, etc, and learn those. That would give you a broad base of skills, and you could reasonably say things like "I don't know Ruby but I know Python, and they're pretty similar."

This also has the advantage of seeming less mercenary and more likely to make you a great programmer. :)

share|improve this answer
2  
+1 for a solid strategy. –  Bernard Dec 15 '11 at 1:36
9  
One other thing you should certainly consider: will an employer than needs a COBOL (or other archaic language) developer want to hire a self-taught one? Will they even give your resume a second glance without solid commercial experience in that language? I'm not sure that I would. –  Carson63000 Dec 15 '11 at 2:29
    
The only problem with this answer (which is very good!) is that it looks at job opportunities today. Taking a few months to struggle with a language now for fun might translate into lots of opportunities in the future by getting a leg up on everyone else. –  joshin4colours Dec 15 '11 at 14:25
    
@Carson63000 - maybe true, but what's the alternative? If the experienced COBOL programmers start retiring, you have to hire someone. Self-taught is better than "knows nothing". You'll have to train them either way, but maybe you don't have to start from scratch. –  Nathan Long Dec 15 '11 at 15:20
    
@joshin4colours - The question isn't whether to learn something for fun with the hopes of more future opportunities; the question is what to learn. Also, job opportunities today are the only information we have. If you're trying to speculate about what will be in demand in the future, a new technology is at least as good a bet as the resurgence of an old one. Either way, you're making a bet. You could learn COBOL or Go, for instance. Either could pay off big or be a bust. The odds are anyone's guess. –  Nathan Long Dec 15 '11 at 15:25

If your goal is to be able to compete in the job market I suppose this is country specific so I will address this from the point of view of the USA.

In the USA there are lots of older programmers who have been laid off from major companies who have 10+ years experience in these "archaic" languages. If you were a hiring manager in need of a COBOL or FORTAN programmer for a complex legacy system (unlikely they would be building a new system in an archaic language!), who would you hire? Would it be a programmer with 20 years experience on COBOL or a hotshot web developer who learned COBOL on the side for fun but has never actually worked as a COBOL programmer?

On the other hand if the goal is to broaden your knowledge in general or because you want to do it for fun then I say go for it. It is always good to learn multiple languages.

share|improve this answer

You're also taking an opportunity cost by learning them. You could be learning something modern and directly useful, but you're not - you're learning COBOL instead. If you already have all the skills and knowledge you need for your field, that might be worth it as a hedge or curiousity, but you're a junior developer. You still have core skills and tools to learn

share|improve this answer

I am not sure if ABAP qualifies as an archaic language as half the fortune 500 are running at least one up to date SAP package. The design is definitely archaic.

Anyway to answer the question. Yes its definitely worth learning, not as a primary career option, but there are several projects that are either replacing a COBOL system or more commonly interfacing with an existing COBOL system. An understanding of COBOL and its environments is a definite plus even if the project itself is Java, C# or whatever.

Also a knowledge of COBOL, Basic or ABAP will let you appreciate how lucky you are to programming in Java :-).

share|improve this answer
    
Haha excellent point, the lucky to program in Java point. Up voted you just for that. I recently joined my first job as an ABAP programmer and now Java looks like heaven :D –  aml90 Nov 15 '12 at 12:11

As someone who has come into contact with archaic languages (such as FORTRAN and a couple other domain-specific languages), I'd say that you shouldn't set out to learn these languages until you need them in your job. When you need to work on that old module, learn enough to do the fix and move on. Spending a lot of time becoming an expert on f77 isn't useful these days.

On the upside, many of the older languages are much simpler in that there are very few constructs, keywords, and a very small standard library- so learning these languages is easy in comparison.

EDIT to add that you should learn C inside and out if you have not already done so. The older languages seem to live closer to the hardware (notwithstanding Lisp and other functionals or limited use ones- the ones you'll see are close enough to C to make it worth it).

share|improve this answer

If it is classified in your mind or the mind of the community in general as archaic then I'd say stay away from it unless you have good reason to look into it. As was mentioned previously, it would be hard to compete with the rusty old developers who have been using those archaic languages for decades.

I will however agree with the larger premise of learning other languages, even some of the obscure ones. Much like the pragmatic programmer I would recommend learning one new language every year. I'd also take it a step further and say you should alternate different types of languages. One year learn a new dynamic language like Ruby or Python, then learn a new desktop language like Eiffel or Delphi, then learn a functional language like Haskell or Scala, then go for a web specific language or framework like jQuery, YUI, node.js, php or similar. If you get bored take a crack at a low level language like C, HLA, PowerBasic or straight up Assembler. By the time you make the full circle there will be new languages or frameworks to try.

The idea is that you will learn new approaches to solving problems that perhaps you had never been exposed to before.

share|improve this answer

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