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.

Does learning COBOL still make sense?

share

locked by Yannis Rizos Sep 3 at 11:28

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

closed as not constructive by Mark Trapp Jan 14 '12 at 11:46

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

9  
It will be around 9990, not sure if you live that long. –  Toon Krijthe Sep 17 '10 at 12:18
4  
@Gamecat---Only if the Y10K problem isn't solved by non-lazy companies or individuals before then, right?! –  Mark C Dec 6 '10 at 6:44
2  
Remember that COBOL alone would not get you far. You need to laarn the stack for the OS you want to work with. For example, on IBM machines, you'd need VSAM, MVS Or Z, CICS, ISPF, may be IMS and ISPF, Panvalet/Easytrieve, JCL in addition to COBOL. –  Emmad Kareem Oct 29 '11 at 15:28
2  
cobol.com looks really Web 2.0-ish and they give away a coffee machine! If that's not modern and pragmatic and insert buzzword then I don't know what. –  Raphael R. Oct 30 '11 at 21:52

17 Answers 17

up vote 26 down vote accepted

I don't think so, unless you are already in the niche market where COBOL is still maintained.

share
13  
70% of the existing infrastructure runs on COBOL. From swiping a debit card on an ATM, to making an online airplane reservation, to even routing a cell phone call. All those run on COBOL (or significantly depend on it.) It is hardly a niche or a legacy environment. Most of these systems have been run almost uninterrupted and well for decades (a much better track record than what we have on Java and .NET), and the number of COBOL programmers is decreasing. Want to make lots of $$$? Position yourself for tremendous COBOL shortage that is to occur in about a decade. –  luis.espinal Oct 18 '10 at 16:16
14  
@luis.espinal: no, this is a common myth, and a 70% percentage is no longer true. COBOL usage is steadily decreasing, and eventually we will get rid of it. And... COBOL involved in phone call routing? I don't think so. Perhaps in phone call billing, but even there it is unlikely these days. –  Lorenzo Oct 18 '10 at 16:25
6  
@Lorenzo - 70% a myth? Not involved in telecommunication? Can you can back up those claims? We are not even counting its involvement in shipping (tens of K of containers/year), nor in the Health Care industry. I don't know how it is where you work, but here in North America (and in many other places), COBOL exists in large numbers, and works well. Why would someone entail risk in re-writing something that works and that is mission critical? I would love to fantasize I will rewrite all in Java or C++, but there is fantasy, and there is software engineering and the economics of software. –  luis.espinal Oct 18 '10 at 18:53
9  
@luis.espinal: as I have worked in the telecommunication industry, I do know fore sure that telephone exchange devices don't use COBOL... they are based on dedicated hardware and firmware. Some companies still use COBOL for billing and accounting, but new ones (like mobile operators) rely on different technologies even for that. The switch over is ongoing. –  Lorenzo Oct 18 '10 at 20:43
8  
@luis.espinal: my bro-in-law works for a major telecomm company, writing software for new switches. I absolutely positively guarantee you he does NOT use COBOL! –  Bob Jarvis Oct 29 '10 at 12:16

Nooo, of course not. COBOL is a dead language, after all. Or is it?

The problem with that view is that programmers at sites like this one usually work with high tech, fast-running (and equally fast burning-out) companies. For them COBOL is a dead language - it is nowhere to be seen. Has not been for some time now, 'tis true.

But COBOL was not meant for them. There is more to the software industry than this. Computers were not invented for people with some irrational need for upgrading and replacing old with new all the time. They were made for business purposes.

You want to see COBOL? Go to a company that processes payroll, or handles trucking of goods, or shipping (as in ships), or handles your bank account. There is a huge invisible system of code out there that's practically invisible to the users, and most of them never think about it although they encounter it in one way or another everyday (ATMs?)

No, it is not dead. But it is "legacy" for sure... or is it?

Again, depends how you look at it. Nowadays, a lot of people will use Java, C, or anything else instead of COBOL, rewriting from scratch... introducing new bugs as they go along, naturally. That is not saying COBOL doesn't have bugs, and quirks. It does, as much as the next language. Of course it does. But in "COBOL times", companies which took bugs more seriously than usual (insurance, banks) tended to produce higher quality code with special quality service groups; today, there are deadlines where time and budget always wins over quality. Also, these systems were originally developed for longer periods back then compared to the equivalent now.

If some software has been working for 30+ years, where is the incentive to switch? Whole companies went out of business because they ignored the old adage of "if it ain't broke, don't fix it." Many tried to rewrite the thing... then the first rewrite cost a lot, then the second one cost even more... and none of those new & improved managed to replace it. As I said, this industry is fast-burning, and it also tends to forget fast.

In the 70s COBOL was dead or dying soon, C/C++ were going to rule. Then again in the early 80s Pascal was taking over. Then in the 90s it was Java as THE Language...

Think of Unisys Mapper, dBase, Clipper, Cold fusion... do people even remember those? Each one of them was going to be the gravedigger for COBOL.

Taking that into account, and the fact that it is great for processing high volumes of transactions, batch processing or record/transaction-oriented processing, and that one can compile (without errors) a subroutine written 30 years old as managed COBOL code and call it from a managed COBOL.NET should one wish to go Windows and .NET, I'm having trouble finding a suitable replacement for it. (I'm also having trouble finding a Microsoft technology that lasted more then a decade.)

Yes, new COBOL code is being written today. One just has to know where to look.

For those laughing at COBOL, IMHO, it is like laughing at the Egyptian Pyramids, they are there from 5000 years and they still will be there in next 5000 years, while today's "hello world" housing needing 24 controls to work will be deleted, replaced, forgotten next month.

So where are all those COBOL programmers?

Ah, for here lies the rub. The thing is that a lot of them don't have any computing science background. A lot of them are not professional programmers (as in university graduates from a CS/SE program). For the most part, they are people in their late 30's-50's, from all areas of expertise, trained entirely by the company specifically for that job. So they aren't "COBOL programmers" - the training they got is specific to the company which so heavily promotes from within. And that makes them pretty much invisible.

share
9  
Having a iPhone/desktop/Web 2.0 mindset is a good way to forget about the vastness of the computing world. –  Paul Nathan Oct 14 '10 at 23:45
8  
So where are all those COBOL programmers? Driving taxis. –  johnc Oct 15 '10 at 4:28
1  
@johnc - where did you get that from? 70% of the existing infrastructure runs on COBOL, and there is a shortage of COBOL programmers. It might have been hard to get a job if you only knew COBOL back in the dot-com days (we are talking a decade now). But now??? Man, COBOL is going to be in high demand in about a decade just because of the criticality of those systems and the shortage on software developers that know (or are smart enough to take the chance) to work with COBOL. –  luis.espinal Oct 18 '10 at 16:19
2  
@luis.espinal I am completely (and painfully) aware of the issues we are facing with the lack of COBOL programmers, however my comment was spoken, somewhat frivolously I admit, from experience. In Australia, at least, pretty much every taxi driver I have met, in the last decade, who was not a recent immigrant (and possibly some who were), has been a former COBOL programmer. Coincidence, perhaps, and I say this making no personal judgement on taxi drivers, immigrants or COBOL developers. It is simply an observation. –  johnc Oct 18 '10 at 21:16
2  
@johnc - I don't doubt your word, but I find that observation extremelly hard to believe. –  Rook Oct 18 '10 at 21:39

If you can see yourself as COBOL programmer, then go for it. There are still billions of lines written in COBOL that require maintenance.

Actually, there is no such thing as unnecessary knowledge, so broaden the knowledge and wider opportunities you (will) have.

share
1  
Given that there's no such thing as unnecessary knowledge, I nominate Intercal for the next language you learn! –  Tikhon Jelvis Jul 17 '12 at 5:36

COBOL

Does learning it make sense?
Well, it's a niche and there's tons of working legacy code that need to be maintained and can't just be rewritten. So while it's not really an option for the vast masses of all programmers, it's a perspective for a steady income for individuals.

However, if you're interested in creating new solutions, rather than slowly improving those that have been around since decades, COBOL probably isn't the right language.

share

A lot of european companies still rely heavily on mainframes running like z/vse and cobol programs. There is a demand for skilled cobol programmers that noone thinks the market will fill which drives up the salary, a lot.

The question should be, "will I ever develop something new using cobol?" since pretty much everything is maintenance or variations of existing mission critical stuff.

share

I used to work for IBM where COBOL and PL/I code was written every day. Also from big companies relying on IBMs mainframes like many banks which require thousands of transactions per second those languages are still heavilly used.

If you don't want to work in a place like that (That's why I just worked there for 6 months) then don't even think of learning those languages.

share

We write new Cobol code every day, and we are on a constant lookout for new programmers. The supply is too small around here.

share
5  
That is really scary but interesting. I never met a real live cobol programmer (and I am no spring chicken) –  Tim Oct 14 '10 at 21:49
3  
Why scary? You probably never met a Lisp programmer either... –  user1249 Oct 14 '10 at 22:45
2  
@Thorbjorn - I used to code in lisp and know lisp programmers. Perhaps I am just ignorant and biased but what I know of cobol does not induce me to think highly of making MORE code in that language. –  Tim Oct 15 '10 at 1:51
1  
Lisp is used for interesting projects, and is an interesting language in its own right. So are C++, Ruby on Rails, Smalltalk, and Haskell. Cobol is used for dull business applications, and is interesting only to people who have to create compilers and tools for it. Fundamentally, the cool kids don't use Cobol, and I'm using "cool" so loosely as to include me. You'll have to go to different places, such as a business school, to find Cobol people. –  David Thornley Oct 15 '10 at 17:17

If you want to have a job as a COBOL programmer, then sure, go ahead and learn it.

For any other reason, like trying to learn something useful that might help you with modern programming techniques, no, don't bother.

share

In the year 2000 I read a statistic that there were more lines of COBOL written than all other languages combined.
Add to that the IBM guarantee that any TEXT deck (object code), compiled on any MVS system is executable on all of their MVS systems and you have a guarantee that there will be COBOL programming around as long as the sun shines.

share
6  
If you think about the fact how verbose COBOL is, it's no wonder ;-). –  Oliver Weiler Nov 27 '10 at 12:49

I can tell you how I "learned" it:
I was employed to work with it, having no clue what it was about, and had no difficulties learning it overnight.

So, if you need it you can learn it. No need to overload yourself with useless knowledge. There is nothing interesting in it or its engagements unless you have real practical need for it.

The generic answer: learn coding principles, not their specific implementations (like languages, etc.)

share

I would not spend time over it.
Anyway, COBOL is the building blocks of many legacy application programs that are mission critical for several Big Company started 20\30 years ago.
So, if you are hired for a company that has part of its core business in COBOL, there are chances that you have to start to learn it.

share

Learn it if you like, after all, knowing how things work (or used to work) cannot be a bad thing.

However I would recommend against emphasizing your COBOL skills too much in your resume.

In some places (for example, in the Silicon Valley where I live) having COBOL in your resume is going to be a liability. Oh sure, you might find a place here and there who need your expertise, and in that case go ahead and advertise it to those places only. But in general, do yourself a favor and forget to mention that you know COBOL.

So yes, learn it if you're curious, just don't tell anyone.

share

Maybe not worth from a work market perspective, but you might want to have a look at it just to get a feel of how stuff was done "in the good ol' day". ^^

share

From a personal perspective I would say that there are better things to learn first. However, many large companies have very large investments in their COBOL code base which they'll probably never really be able to leave behind, creating an industry for COBOL programmers to maintain the code base as well as write new code. The company I work for is a large financial company and our technology split for developers is roughly 30% COBOL, 40% Java and 30%C#.

share
2  
able, yes, but why - working code is working code. –  user1249 Oct 14 '10 at 23:08

I just did a search for "cobol" on Australia's largest job website. It returned 87 results, and (from a quick skim) they mostly seem to be legacy maintenance positions in banks and financial institutions. Mostly distinctly better paid than more "modern" language based jobs - presumably due to the rarity of Cobol experience.

So yeah, it seems like Cobol would be worth learning if you 1) don't mind doing legacy maintenance and 2) you want to get into a niche which is well paid and probably not very competitive since it's something few people are learning anymore.

(I'm assuming the Cobol market would be similar in most First World economies, but could be wrong?)

share
1  
@Lorenzo - No, not really. The fact that they're not mainstream in cs univ.'s doesn't automatically make them niche. It just means you don't move in circles where you encounter them. How many workers that work on automobile line production do you know? Naval architects? Plane pilots? Do you think they're niche as well? (and also, for both of these example categories you'll have trouble finding job ads). One has to know where to look. –  Rook Oct 15 '10 at 23:16
1  
@Lorenzo - do you actually believe all that COBOL and FORTRAN code and knowledge base will eventually be rewritten? I mean, seriously. I've never met anyone in the industry and academia who believes such a thing is possible, much less desirable. As ugly as COBOL looks like (a subjective reaction), those systems work well, much better than the e-crap we have been building since the dot-com days. That's a testament of industrial quality. It is better engineering and economics to maintain those systems as opposed to rewrite them (assuming zero risk and infinite economic resources.) –  luis.espinal Oct 18 '10 at 16:35

Think about the kinds of problem domains you want to work in. Typically those domains have a set of languages that are generally used for the purpose. If COBOL matches that then go ahead.

There is no way I would touch either cobol or the problem domain(s) that use it heavily with a 10 foot pole. I'd rather flip burgers.

Also consider if the language offers some bonus/improvment to your programming ability/concepts. I can't think of anything COBOL can do/implements/features that isn't done better or can be demonstrated better in another language.

You and others may feel differently.

share

There are still plenty of legacy system out there written in COBOL. Whether you want to maintain them or port them to other programming languages, it is still worth learning COBOL.

No matter what it is, some knowledge in multiple programming languages will be a plus because the knowledge you have allows you to choose a programming language or approach for different project needs. You can use your knowledge in programming languages to construct better, cleaner and more efficient codes and to avoid pitfalls.

share

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