Tuesday, February 13, 2007

And you thought COBOL is dead?



Think again! Contrary to a popular misconception by the current generation of programmers that are deep into open systems languages such as Java/J2EE, .NET and faintly familiar C++, COBOL is growing at a rate of 3% to 5%.

No one is learning COBOL in school anymore, and new applications aren’t built on COBOL any more – it’s like Latin over English! Yet, the growth is real – How? Maintenance of existing mainframe programs. It makes sense, right? Thousands and thousands of legacy applications constantly go through enhancements including change in core business logic to accommodate changing business needs.

Having written over the past 40 years, , the total value of the COBOL applications residing on mainframes today exceeds $1 Trillion (ref: Computerworld April 24, 2006). Some amount of PL/1 and 4GL languages are in the mix, but COBOL’s has a lion’s share.

Sure thing, there are efforts around the globe to modernize legacy systems from mainframe to distributed systems. But, most of the effort is still in either infancy stage or early on thought process. You would think that today’s distributed systems offer scalability and manageability – but the five 9s of reliability and the blazing performance these mainframe systems offer for a complex transaction processing application, today’s distributed system just don’t stand a chance to match. For example, when I worked to rearchitect and prove a Model-Type-Option computation system for a large automotive company in Japan on a Java based custom system, the performance of the new system stood at about one-twentieth of what their mainframe system offered.

Just to give you all a flavor on how those white elephants are recognized, there are three categories of mainframe systems:
(a) Under 500 MIPS; (MIPS = Millions of Instructions Per Second)
(b) Between 500 and 1000 MIPS and
(c) Over 1000 MIPS.

Of these, enterprises those use systems of over 1000 MIPS, are not even willing to touch the big irons for modernization – particularly where the computing algorithms are complex non-linear ones. The category (b) is a grey area – CIOs/CTOs are brooding, waiting and watching. Category (a) is where the thought processes and early attempts are focused at and taking some shape. Enterprises are willing to identify applications that are less critical in nature under category (a) and make an attempt to modernize them on either J2EE or .NET based platforms.

So, you wonder: where are the high end big irons heading? For now, it is predicted that they are there to stay – for a decade or even two. However, there is some form of transformation strategy that is being mulled around:
(1) Enterprises that consider the current user interface as a clunky tab-tab-tab text screens, are looking for technologies to develop web user interfaces. Screen scraping tools – a sort of pig-with-lipstick! – make a living out of this approach.
(2) Organizations that consider the business processes and the data needed exposure to other systems or other parts of their business, are looking at SOA as an option. But it’s a long way to go.

Now you got a glimpse of the landscape – sort of Back-to-the-future Part II. Here’s a thought for those who want to be popular and most sought after in the coming years: If you are a J2EE/.NET/SOA junkie, with experience in COBOL/CICS/Mainframe, get yourself familiar with legacy transformation strategy. Who knows, you might take a “consultant” avatar!

5 comments:

pebbles said...

Ram..is it about the performance of Mainframe as a hardware machine or performance of the cobol as the language. I guess the performance is due to the mainframe machine. if i run Java program in mainframe I should get the same performance. Now distributed system does not means that mainframe can not be part of that distributed system(or can it be?..). So why should we make a category of Mainframe Vs Distributed systems. If you want better processing power and want to use more popular language use java over mainframe? What additional power does cobol brings in over contemporary languages?.

Ram Ravishankar said...

Well, the point on performance is not from hardware infrastructure standpoint, but the software stack and the inherent constraints in the software stack and application.

pebbles said...

Ram..I don't understand what is special aboutt cobol stack...I meant once it is compiled and the byte code is generated there should not be much of percievable difference in the performance of software stack..I agree that JVM brings an additional overhead, but I don't think that a cobol application should perform faster than a java one on a given platform..

Unknown said...

Ram..I don't understand what is special aboutt cobol stack...I meant once it is compiled and the byte code is generated there should not be much of percievable difference in the performance of software stack..I agree that JVM brings an additional overhead, but I don't think that a cobol application should perform faster than a java one on a given platform..

Anonymous said...

From http://www.brainbox.com.au/brainbox/home.nsf/link/17062007-The-top-10-dead-or-dying-IT-skills

COBOL is dead
Hi,

I am a fairly recent graduate, and guess what I got my first job as a COBOL developer. I have been a COBOL developer for three years since graduating. I can truly say I wish I stayed away from COBOL and so should all you recent graduates.

It really doesn’t matter whether or not there are 70 billion lines of COBOL and all that other stuff; if you can’t get a job in this area (trust me I’ve been looking). All you have to do is type COBOL in a job search (and there we have it – the last time I got 100 hits) – “COBOL IS DEAD” if you want to get a job. When you narrow down your search to say London and you only get about 12 hits – so if you want to work as a software developer stay away from COBOL.

It really doesn’t matter if some developer says “COBOL is not dead, I’ve recently got a job in COBOL”. These people probably been programming in COBOL for a life time (that’s like 25 years) so you are competing with these guys for those handful of jobs.

It really doesn’t matter if one says “there will be plenty of jobs when these old people retire and a company will give you loads of money if you have COBOL experience”. They may give people with COBOL skills loads of money to fix a bug but how often do these bugs cause faults (remember if its working don’t touch it). So you maybe sitting unemployed for years before anything goes wrong, waiting for your one off big contract payment (sounds like too much of a risky investment).

Anyway I’ve been looking for work out their and finding it very hard (almost impossible) to find a job. I am a First Class graduate and have a Masters and even with these academics three years of doing COBOL has crippled my chances. I wish I had not done COBOL and stayed with the skills (what you should be learning at university) that have jobs. I have got 3 years COBOL and someone has 3 years of Java or C or C# etc.. so I am out of the competition when looking for jobs. Don’t listen to those that say it don’t matter what the language is (because it does), all you have to do is look at the job specs (they generally mention the programming language because it really does matter).

I am now hoping to build on those skills at university and then will keep trying to apply for jobs. I am also hoping to do some courses to refresh my knowledge in areas I have neglected over the last three years (which from my experience you don’t get from COBOL and my opinion is this language should not be taught at university). Certainly its IT and you have too keep up with recently skills set (that’s RECENT!! skills set), but why get into the position I am in and many (I hope not too many) recent graduates may be in.

I know this is very negative and may not read well, but COBOL has made it very difficult for me to forward my career and I really don’t want this to happen to any other graduate.

Basically “COBOL is truly dead” if you look at it from the perspective of your career. Go out there, do the research and see the truth for yourself !!