Fog Creek Software
Discussion Board

Reinventing a Mainframe Programmer

Okay, you mostly seem to be more-or-less active participants in the great PC development revolution. Here is a serious question which is understandably much on my mind these days. How does a mid-life mainframe COBOL programmer/analyst make the transition to some of the newer technologies? No company, it seems, will hire and train anymore. (My current company made promise after promise for a chance to develop something in Java, but reneged time and time again. Now, wholesale layoffs are looming.) The few companies hiring all seem to expect applicants to come pre-packaged, off-the-shelf, with whatever combination of things they have in mind. Informal or self-training seems not to count (and I will not lie or fabricate just for the sake of landing an interview). Is back to school the only route? Is there any reasonable way to accomplish this transition, or should I just start practicing the phrase "would you like fries with that"?

Thursday, May 9, 2002

OpenSource!  Its in demand:,1643,39361,FF.html

I assume that since you come from the COBOL world, those 2 links would be of interest, since they are biz app specific.

I find the code base very educational.  Wanna learn about VM techniques - read the kernel source, along with technical article from the authors themselves (alla that stuff is out on sourceforge - just a google search away, using the author's name gives best results).  Join ther kernel newbies list and post questions - you'll get answers (though sometimes they make assumption that you thoroughly understand all million lines of the kernel).

One of the most elegant works I've seen in some time is the opensource mpeg2dec (MPEG-2 video decoder).  Extremely robust and fast.  Read the source and get an education.  All the X windowing code is open now too - see  Anyhow, take your interests, and carve out your niche.  The world is your oyster!

Nat Ersoz
Thursday, May 9, 2002

This sounds like a good time to get some sort of certification.

Johnny Simmson
Thursday, May 9, 2002

Sounds like some of the PHB's at work might have read that Gartner Group study ($57k to retrain a COBOL programmer to Java, 60% failure rate - if I recall properly?).

FWIW, I think self training is great - provided that the self-trained person can show applicability (usually in personal/side projects) and initiative.

James Wann
Thursday, May 9, 2002

Unfortunately, it looks like you need these skills in short order.  It will take time to learn a new language from scratch, and I fear that you don't have a few years.

To begin with, I recommend that you pick a well-known, modern, high-level language -- say, C++ or Java -- and download a compiler or interpreter for it, then read some online tutorials and start writing silly little programs on your own.  You'll learn an awful lot that way.

That's the long-term approach, though.  Besides that, certification might be a very good idea, as it will give you a solid piece of evidence to reference on your resume.

Besides, school isn't *that* bad. :-)

Brent P. Newhall
Thursday, May 9, 2002

Go into project management!

Daniel Shchyokin
Thursday, May 9, 2002

I don't understand why, being already a programmer, would take years to learn a new language.

I've always tought that programming is not about a specific language, but a thinking frameset. You know, algorythms and that kind of stuff.

Once you reach some level of abstraction in your brain, learn new languages and frameworks it's only matter of time (but not years!)


Leonardo Herrera
Thursday, May 9, 2002

If I were you I'd have myself cryogenically frozen, and ask to be woken up in time to fix the y3k bug. You'll be the only COBOL programmer, so you should be able to rake it in!

Thursday, May 9, 2002

>>I don't understand why, being already a programmer, would take years to learn a new language.<<

Well, I was probably a little too liberal in that statement, but it depends on your situation and the kind of job you're looking for.

If you're (generic "you") a well-paid COBOL programmer who's fairly high up on the food chain, while you may be able to learn the basics of a new language quickly, it'll still take quite awhile before you know the language at the depth you'll need to get equivalent jobs.

OTOH, you may be much more worried about getting *any* job than getting a job that roughly matches your current standards.  I don't know.

Brent P. Newhall
Thursday, May 9, 2002

Don't know if this will help you any, but here's how I made the transition in the early 90's:

I started as an RPG programmer on an IBM minicomputer (the AS/400).  I learned a lot about good database design and how to code enterprise software, but after a while I ran out of interesting things to do and it was obvious that both the software company I worked for as well as the industry was moving to "open" systems.  (I use quotation marks since every company says their platform open, but almost no platforms truly are.)

I took night courses at a local college, and begged, begged, begged my bosses to let me transfer to the "cool" C++ - and - Unix - using division.  It was a pain in the ass to take courses while working full time, as well as to get approval for the transfer, but it was worth it.  I had to take a test in order to be hired by the division, even though I already worked for the same company.  I also got a raise by pointing out that C++ programmers got higher salaries than RPG programmers.

The downside to moving was that I was shocked how often C++ code crashed, and how often the systems had to be rebooted.  I realize that well-managed Unix & NT boxes rarely need to be rebooted, but in my experience customers with Unix & NT boxen will put up with more downtime than mini-and-mainframe customers.  Sure, they'll bitch & moan, but in the end they just bear it.  Strange.

So my advice to you is to take some kind of college course or certification course.  I would learn C++ or Java (these are pretty similar languages) or Visual Basic.  I wouldn't learn HTML design, there are a glut of web designers out there these days.  Be prepared for more change & less stability in the "open" system world -- people are less loyal to their jobs, employers are less loyal to their employees (but what else is new), and the tools and environments are far less stable than on the mainframe (but far more flexible and cheaper).

The funny thing about my old company is that even though they threw all their attention & weight behind "open" systems they went downhill anyway & were bought out a few years later.  They had enough time to make the platform transition, and enough money, but the new product was *way* over-designed and very slow to get to market.  I love object-oriented design, but the hot shots architects they hired spent *years* fussing with the product's foundation classes, and, in the end, had very little shippable product to show for it.  Our existing customers at the time got wind of it & also noticed we weren't enhancing our minicomputer product (which was bringing in all the money), and started defecting.  I think part of the problem was this was the early-90's, when object-oriented design was the magic bullet which would cure all ills.  So the company threw lots of money into new technology, but forgot Steve Job's maxim:  "Real artists ship."

So, whether I remained an RPG programmer, or became a C++ programmer, I would have ended up leaving the company, but by picking up new skills I was able to find new employment easier.

Jeff S.
Thursday, May 9, 2002

It can easily take years for a COBOL programmer to learn a new language, simply because COBOL is so unlike C/C++/Java/etc.  COBOL (at least as it's typically used) has no concept of block structure or scoping, let alone object concepts.  The very idea of variables being anything but global can take a while to shake, esp. if you've been thinking that way for years.  I once tried to train a very good COBOL programmer very basic C (this was well before Java), and ran into huge trouble long before reaching the "hard" subjects like pointers.  Even simple concepts like types were unfamiliar territory, and this was the best, most productive COBOL programmer working in this particular shop!  I essentially had to start from ground zero.

Perhaps this case was unusual, but it certainly taught me that it is NOT always easy to learn another language just because you happen to know one well.  Switching from C++ to Java is trivial, simply because Java was designed to be easy for C++ programmers to pick up.  Jumping from a language of the 50s to a language of the 80s, however, is much harder.

James Montebello
Thursday, May 9, 2002

I should perhaps add that I bought a used copy of Visual Studio 6.0, which will allow me to play a bit with C/C++ and Java (at least in its J++ incarnation). I don't see learning the languages themselves as being especially problematic as I have learned lots of languages over the years, everything from mainframe ALC, RPG, COBOL and CICS to Lotus Macros, Dbase III+ and the old QBASIC. (Yes, I know that some of these are pretty archaic, but I have at least dabbled with DB/2 SQL, VB and HTML too.) I am currently learning C/C++ on my own. (I bought the "Practical C" and "Practical C++" books from O'Reilly, both of which were recommended by various people.) The design of C is quirky, as is any language, but it doesn't appear to be overwhelmingly difficult. Pointers seem functionally little different than using registers in ALC. (And if someone had problems with understanding types, I cannot imagine that he was a very good COBOL programmer.)

Frankly, I find that PC developers who have never done anything else tend to underestimate the complexities of mainframe development and to overestimate the challenges of PC development -- although I do expect that adjusting to OOP will be a difficult step. Partly for this reason, and partly because each seems, more or less, to have been derived respectively from the others, my plan is to learn C, then C++ then JAVA. That way I can focus on the syntax and concepts of the language separately from the development approach of OOP. (I should also note that I am somewhat prepared financially for layoffs, so I have the luxury of a year or so before I get desperate.) There are some decent Community College programs in the area, but the way class requirements are designed, it will take three semesters to take the classes I would need for a certificate. (I already have a BS and an AA degree, in that order, so I am not looking for another degree. A Masters would, of course, be more impressive, but also take me longer to get.) If I can establish sufficient competency in C/C++, which is a prerequisite for most of the other classes, I might be able to finish the rest in two semesters.

The problem will be convincing a potential employer (assuming that one can even get past the HR department) to think of me as more than a mainframe programmer.

Thursday, May 9, 2002

Java is a different story, but you don't want to learn just c
or c++.  You need to add something else to the mix.  Learn
basic c++ and MFC.  Or basic c and unix.  If you don't add
something else to your skill set, you will be thought of as
an expensive entry level employee.  Frankly, the market
won't bear that right now. 
Whichever route you choose, you don't need to attend
classes to get a certification.  Buy a book and a study guide
instead.  Remember to put yourself in the manager's shoes.
Taking a year off will look suspicious.  Have a good story
lined up.  Either way, at the end of the year you had better
have either a certification or a portfolio of your own work
to demonstrate that you have the knowledge to do the job.

Good luck.

Johnny Simmson
Thursday, May 9, 2002

What about learning C++ or Java at home, from books, private projects, the web, open source, etc, and then just sitting a certification exam? That should be a lot cheaper than paying to do a whole course, and you'll learn a lot more anyway.

Darren Collins
Thursday, May 9, 2002

Not sure where you are located, but you might want to consider learning SQL/Database programming. Especially Oracle. Database programmers and DBAs are always in demand, and it would be the easiest transition. It is far easier to get better pay as an Oracle guru than it is as a Java guru..

Thursday, May 9, 2002

Also, the "middle aged Oracle guy" is a much more common phenomenon than the "middle aged Java guy." (At least it is in silicon valley)

Thursday, May 9, 2002

Starting out Python is probably going to be less of a shock than Java or C++.

Java forces you to think OO from the first second. Whether or not this is good is for a different thread (I say it isn't, but let's not argue HERE). Python let's you start out with globals (like old Basic, COBOL and Mumps people like it), and comfortably apply modern scoping and design paradigms at your own pace. It's interactive nature also contributes to being a good study environment.

If you decide to go the C/C++ route, start with plain C, and only after you feel you've mastered that, try to go into C++ - C++ is, today, a complex bloated language. Like in most cases, bloat itself isn't a disadvantage except when you have to master all of the features or duplicate them - and if you want to apply for a C++ job, you will have to master it all. Going to C first will provide real value much faster and provide better grounds for the future C++ understanding should you decide to pursue it.

And, one bit of advice most people will find shocking - lose your appreciation for quality and robustness. Even if you aren't aware of it, just by working in a Mainframe environment you come to take things like uptime, dependable deterministic behaviour and other perks for granted. If you expect to keep having them, you're in for some disappointment. If you're going to pursue them to the same level in code you write as you did in the past, you're not going to be competitive. It's bloat and features that are rewarded these days - not stability, security and robustness.

Ori Berger
Thursday, May 9, 2002

PHP + MySql

Thursday, May 9, 2002

My comments and take on jobs in the IT market can be found at:

Albert D. Kallal
Edmonton, Alberta Canada

Albert D. Kallal
Thursday, May 9, 2002

>>This sounds like a good time to get some sort of certification.

You meant LEARNING something, right?

Szasz Attila
Friday, May 10, 2002

"You meant LEARNING something, right?"

No, I didn't mean necessarily mean LEARNING something. 
If he already knows how to do something, then he doesn't
need to LEARN it, he just needs the cert to prove that he
knows it.

Don't be such a twit.

Johnny Simmson
Friday, May 10, 2002

> You need to add something else to the mix. Learn
> basic c++ and MFC. Or basic c and unix. If you don't add ..

Oh gawd, don't learn MFC. It'll seriously screw with your head if you're coming from COBOL. Plus you'll never really learn C++ from it. MFC is essentially its own meta-language implemented on top of what used to be a 16 bit C++ subset.

Now, you should really learn ATL/COM programming... (just kidding!!!)


James Wann
Friday, May 10, 2002

to: James Wann

Well, in an ideal world we would all use Erlang. ;)

However, this guy needs a new path.  It doesn't matter
that MFC is a mediocre class library that relies too much
on macros.  It matters that there are jobs out there for
people that know it. 

I agree with a previous poster about learning SQL and
some RDBMS.  Seems like that would be a smoother
transistion and make better use of his past experience.

Johnny Simmson
Friday, May 10, 2002

If you have presented yourself accurately then learing the syntax of a new language should not be too hard. Learnig the more complex aspects and becoming efficient in languages such as C, C++ and Java will be harder and take some time.

Coming from a mainframe background your 2 biggest obstacles will be to learn to think in OOP and to understand and think in an event driven environment. Just about everything in our programming world is event driven and that differs considerably from the general top down approach of the mainframe world.

I think the idea of getting certification is a good one regardless of where or how you learn. With no background in the PC world the certification should help you more than just a classes at the university when prospective employers look at you resume.

As an alternative perhaps .Net and especcially C# would be good to pickup. For better or worse (and rightly or wrongly) everyone is hot on C#. If you can pick that up quickly then you would have a better shot at competing as it has a shorter history and the playing field is more level for now. With C or C++ you have people with 10 years plus of experience. The same types of long history apply to VB and Java.

I hope this helps some.

Marshall Harrison
Friday, May 10, 2002

Soubds like you've waiting for years for someone ELSE to train you.  Stop talking, and DO SOMETHING.  Take accountability for your own career. 

Buy a book, get a decent PC, and make time, and stop making excuses.

Friday, May 10, 2002


I take back my post above.  I just read your second post.  I see you're already doing something about it.  Good for you.

I think a certificate doesn't carry much weight.  Get experience at your current job, even if it means doing a "side project" after hours, for your own benefit.  At least it will be related to something realworld, as opposed to book learning about a Bear implementing the eat() interface.

I also concur with the smooth transition concept.  Learn stuff that is at least tangentially related to your skillset. 

Friday, May 10, 2002

>>The problem will be convincing a potential employer (assuming that one can even get past the HR department) to think of me as more than a mainframe programmer.<<

IMO, having mainframe experience in your background won't hinder you in your job search too much.  That's a fascinating skillset, and I think a lot of companies will be attracted at the thought that you've worked in that sort of environment.

Also, there's quite a bit of mainframe programming around these days, particularly in the government arena.  My first job out of college (a couple of years ago) was mainframe programming with C and C++.  So, there may be a lot of places where your mainframe background is a definite asset.

Brent P. Newhall
Friday, May 10, 2002

I'm probably the odd one out here, but after spending the last 10 years doing VB, Delphi, C, Java, etc. I actually miss the mainframe world.

I recently applied for several jobs that combine PC and mainframe work....must be that mid-life crisis thing happening....

Brad Clarke
Friday, May 10, 2002

Lawson is an acct package runnning on solaris or nt written in cobol.

Big Big bucks....Real Real current.

My last company uses it and paid big bucks for conultants to come out and customize it. IN Cobal on NT SErver with Ms SQL as the backend.

They moved it from an older lawson version sun/oracle to an upgraded current version to run it on Nt /Ms-SQL.

Neat Huh?

Alot of companies use it. Even in europe.....

chris j
Friday, May 10, 2002

If you have to ask, you cannot do it. Good programmers continually learn and know how to learn.

Friday, May 10, 2002

Good on you Jeb, what wonderful advice!

JAS - Good Luck I reckon the DB skills are the way to go Oracle/SYbase/Sql Server etc, you will have no problem learning them as the principles are more generic, you probably already know most of it. Languages like Java and C++ and VB are easy too (nobody on sites like this like to admit that) just a bit more fiddly, not intellectually difficult at all. All that talk about taking years to learn is rubbish, it takes years to get a degree, not learn VB C++ Java whatever, once again people on sites like this like to think that the skillset they have is very complex, when in reality, I would allow about 4-5 months to learn C++ (just get the BEST reference material that exists) and about 3 months to learn VB, if you learn from good reference stuff you'll be at least as good as the average guy who's been at it for a few years. Good luck, software development is easy.

Saturday, May 11, 2002

Is there going to be a COBOL.NET?

If so you could learn the .NET framework classes and concepts such as inheritance, design patterns, etc whilst working with a relatively familiar language syntax.

From here it may be easier to transition to VB.NET, C#, etc and take advantage of the relative new-ness of these languages.

Walter Rumsby
Saturday, May 11, 2002

Jeb, didn't you say in another thread that you used to be a risk analyst? What kind of business guy moves into IT? Oh yeah, the ones that couldn't make any money...

Saturday, May 11, 2002

I have been a contract programmer for the past 5 years working 40hrs/wk 52wks/yr. Find out rates and salaries and you will reconsider your previous post.

Saturday, May 11, 2002

40 x $33/hr x 52 = $68,640 (I'm assuming you are a VB programmer)

I know analysts who make $150K+, easily. The partnered ones make 2 times that.

Saturday, May 11, 2002

I do not know VB and if that is what you use and 33/hr is you rate then I would quit too. I work mainly with trading systems. I do not know what you mean by "analysts" because every industry has analysts. Anyway, if you mean analysts working at investment banks $150K/yr or double is crap and they work more than 40hrs/wk and it's a closed circle (meaning it is very very difficult to get in).  Your numbers are just off.

Saturday, May 11, 2002

Do what everyone else does, and flip through the right books.  That is all you need.  If you want a C-like language, go with the K&R C book.  Maybe get some of the books people recommend here like Code Complete.  Programming Pearls is good too.  At some point, you might want to stretch to see what's a few levels of abstraction down (so you see where performance advantages come from) or up (for better design).

I dunno, if you know dbs, go with them.  Oracle ain't doing so well right now, but almost all bizapps are about doing something with big old regular tubs of information, using features that today's rdbms' supposedly provide.

corporate wage-ninja
Sunday, May 12, 2002

Learn a simple starters language like VB. With your dev background and a few months learning while dev'ing personal projects, you should be able to get a career starting job. A year later move on to C/C++/Java/SmallTalk/Needle work/Nursing...

I learnt COBOL, C, C++, and Natural programming at a tech collage, didn't work in programming 2 years, got a low level job writing Crystal Reports with a bit of side sys admin. 2 years later I'm an Analyst Programmer writing n-tier apps using VB... forget cert, forget school, personal commitment and a little patience (and possible luck) rules the world.

Jack lives over there -->
Tuesday, May 14, 2002

JAS, learn .NET. There will be a lucrative niche porting COBOL to .Net. The best way to learn would be to get it and use it, get one or two good books and actually read them and maybe then consider some sort of short course.

I wouldn't normally recommend a course, but if you've been doing Cobol for years, you might need external prompts.

Additional useful topics, as others have suggested, are DBA type things. You should learn SQL. With that combination, your existing background would be a solid foundation rather than being irrelevant, and you could capitalise on it in your job move.

You should not set out to learn C++ or Java first off. There's substantial expertise needed for the types of jobs that need C++ or Java, and you probably would not be useful for a year. With .NET, you could be useful in four weeks.

Hugh Wells
Saturday, May 18, 2002

OK, everyone has an idea and you should have no trouble picking and chosing.  Getting into something that has a MARKET would be the best use of your efforts.  Check the want ads and the job sites first and see what's going begging.

SQL should be no trouble for a guy who has DB2 under his belt.

As we both know, becoming a DBA is a "bit" more involved, but go for it if you want to make the effort to learn the in's and out's of a database.  IBM has a desktop version of DB2 that you could obtain (not cheap) and practice on right at home.  It's a bit different from the mainframe version, but should give you the type of practice you need.  You could make friends with the DBA's at work if they can find 10 minutes to breath and pump them for info.  IBM also has good propaganda on the product (consider becoming a business partner if you have your own business name).  DBA's are still in demand at just about all levels.

    Al Kalar, Viking Waters

Allan Kalar
Friday, October 4, 2002

Marshall H: "Coming from a mainframe background your 2 biggest obstacles will be..." "...and to understand and think in an event driven environment. Just about everything in our programming world is event driven and that differs considerably from the general top down approach of the mainframe world."

In the old, batch-oriented world, yes. Once you start programming CICS, things get different. If you write good CICS code, you're often trying to tie together multiple stateless transactions (or at least as stateless as web page design with it's cookies, etc) into a single transaction based on user generated events.

Then you can try working with ATM's, which may decide to go ahead and dispense $$$ to the customer 'cause the mainframe takes too long to authorize/deny the tran. It guess worse when you're trying to build a switch to interface between the ATM and the authorizing institution (perhaps another switch) and a time-out can occur anywhere along the line, causing a sequence of corections to go up and down the chain, which creates the potential for more time-outs. And no method for querying another link to see the status of the transaction. Great challange! And in BAL (Basic Assembly Language, not BASIC (or branch and link ;-) )

(Sorry, long-winded.) The point: don't assume that mainframe programmers work in a simple, batch-style world. There's still a lot of fun left. And if you don't think ATMs and switches are complex enough, I'll tell you about my last project, if you got an hour or so.

Cheers, Bryan

PS - I'm actually in a similar boat to JAS. Looking to move out of the big iron world and into the little plastic world. My skills are getting rare enough to be worth a lot of money to those who need them... but they're all in cities and I'm tired of cities. Ahhhhh well.

Bryan I Clements
Monday, April 14, 2003


Learning a new skill is always a task, but you
have the basics and it should help you.

Unfortunately labor is cheap overseas, and
India has a lot of software programmers willing
to work for $700.oo per month.


Monday, October 6, 2003

Yes, I also think so...

Visit for more info

Saturday, June 12, 2004

Yes, I have visited and found it's the best. Thank you for reffering such a beautiful site.

Friday, July 9, 2004

*  Recent Topics

*  Fog Creek Home