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.

A little background:

I am working at a large company, using Windows XP and coding Winforms in VB6/VB.Net and some WebForms in VB.Net (95% maintenance code). I have one 4:3 19" screen. A more modern version of Windows isn't happening soon, neither is any greenfield work by the sounds of it!

I wasn't told about any of this when I joined the company, I was mislead to think I would be working with much more up to date technologies and frameworks.

I have much more up to date experience from previous jobs, both with more modern frameworks and other programming languages, and when I am catching up with developer friends from other companies all I hear about is how they are using the latest ASP MVC framework, or Vagrant/Ruby on Rails/etc and I am getting the green eyes!

I could sort myself out with another job pretty quickly, but I feel as though I should give this one more of a chance.

The question:

I am trying to convince myself that my current job isn't that bad. So what are the advantages to this sort of role? Are there advantages to working with outdated technologies? Maybe some techniques that I wouldn't pick up working with more modern ones? Or is this the sort of place where careers go to die, and I should get out while I still have my soul?

share|improve this question

closed as off-topic by Robert Harvey, gnat, Jim G., GlenH7, Kilian Foth Jan 17 at 11:21

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – Robert Harvey, gnat, Jim G., Kilian Foth
If this question can be reworded to fit the rules in the help center, please edit the question.

1  
You may want to re-word the body of your question, to cleanly separate the personal history form the core question. –  DougM Jan 14 at 22:31
2  
You can pretend you are building rockets or working on air traffic control. Those fields generally use really old technology as by that point all bugs are either fixed or known. But even rocket or air traffic control engineers wouldn't touch VB6 with a 10ft pole. :) –  DXM Jan 14 at 22:31
3  
Job security? .... –  Robert Harvey Jan 14 at 22:34
2  
I used to code in Delphi way over a decade ago. I enjoyed it, it was a good language, better than VB yardy yardy, but it wasn't the way things seemed to be going. I jumped. But to this day Delphi jobs keep bubbling up and they are paying good money! Dang it. –  w3d Jan 14 at 22:49
11  
Although I admire the fact that you're trying to make the best of a bad situation, please don't take trying to convince yourself that your current job isn't that bad too far. Speaking from experience: staying too long at a job with outdated technology can easily turn into a hole that is really hard to dig yourself out of employment-wise. At least try to play with more modern technology on the side if possible. –  Evicatos Jan 15 at 1:07

8 Answers 8

all I hear about is how they are using the latest ASP MVC framework, or Vagrant/Ruby on Rails/etc and I am getting the green eyes!

Ah, but there they are playing with their toys, and there's you doing real work, using a tool that does the job to achieve a solution.

That's what you should be considering - software is too often an amateur affair with people jumping from one cool new tech to the next latest fashion. Then there are others who treat it as a much more professional career where the tools don't matter so much as the product or solution you create.

There are places where old tech needs to be replaced with something new, but its generally just upgrades, not wholesale replacements. Eg VB6 gets upgraded to VB.NET, Visual Studio 2002 gets upgraded to Visual Studio 2012. Anyone who goes into a complete rewrite always finds that things aren't quite so fantastic with the new tools. (which is why Joel, amongst others, say the rewrite is always the wrong answer)

So concentrate on achieving things, and upgrade where you can, slowly and carefully where it makes sense - not because you want to play with the newest toys (which will be discarded soon enough anyway, and the absolute last thing you want is to maintain a system written by people who coded in last year's cool tech)

share|improve this answer
1  
VB6 was no more upgraded to VB.NET than DOS was upgraded to Windows NT. FWIW. –  DougM Jan 16 at 22:16

There are, indeed, several benefits for a company to stick with outdated technologies:

  1. Legacy stuff sometimes doesn't work with new stuff

    A company may have invested a large amount of money in systems which simply don't work with newer languages or operating systems. A classical example is many intranet web apps which are compatible with IE6, and IE6 only. The choice between sticking with Windows XP + IE6 and throwing away a working system and investing money in the new one is not obvious.

  2. Changing for the sake of change is not a wise choice

    Example: many banks still continue to maintain applications originally written in COBOL. When the stuff works, why would a business decide to rewrite it in another language, given the cost of rewriting a large business critical system, as well as the risk to get it wrong, introducing a bunch of new bugs? (One of the reasons is described below)

  3. Licenses are expensive

    Let's say a company has a few hundred desktops which use Windows XP. They want to move to Windows 8. What is the cost of a single license of Windows 8 Enterprise? What if we multiply this cost by the number of machines?

    It becomes even worse for servers. A single license for Oracle or Microsoft SQL Server costs about $30 000 - $40 000. If a company has, say, fifty database servers, it becomes quickly very expensive even with Volume licensing.

    At my company, we are stuck with Visual Studio 2010. We suffer from its numerous bugs, and we know they will never be solved, since Microsoft abandoned this version. But $13 000 (given that we need Ultimate version because of its unique features which are unavailable in other versions) is too high for us to update to Visual Studio 2013.

Having said that, there are also important drawbacks.

  1. Legacy stuff doesn't attract new talents

    That's one of the issues of the companies which are maintaining COBOL apps: they have a hard time finding inexpensive developers. Also, working on mainframes and writing COBOL code is not something attractive for creative persons.

    While being a good choice for backbone systems which require to stay solid, those systems and languages won't fit well for products which require constant innovation.

  2. Old doesn't mean secure

    As rewriting a product in a new language may introduce new bugs, keeping old systems which are not supported any longer can be dangerous as well. Imagine a bug is found in Windows 98, which could compromise the whole system: would Microsoft release an update to solve it?

  3. Legacy is viral

    Incompatibility between legacy and newer systems means that often, when you're stick with an old product, language or infrastructure, you'll be unable to upgrade somewhere else. An old intranet app which works only on IE6 leads to Windows XP on all desktops, which means that you cannot migrate to a new Active Directory version, which means that you can't use new apps which require the most recent Active Directory version, and so on.

  4. Productivity

    New versions of products bring new features which, sometimes, increase productivity. A task which would take one hour with Visual Basic 6.0 could be done in less than an hour with Visual Studio 2013, because Visual Studio 2013 and .NET Framework 4.5 bring improved Intellisense, Entity Framework, and thousands of other things which reduce code one has to write, increase the speed of writing code and decrease the risk of introducing bugs.

    If the example is not clear enough, here is another one. In Windows 3.1, system administrators would setup every machine one by one, by hand (unless there was some automation I'm not aware of). Today, they would use PXE and Windows Assessment and Deployment Kit to deploy within minutes a new OS and software over thousands of machines automatically.

    Using older versions may simply become cost prohibitive. It may not be obvious to some users who are happy using Windows 95, but is much more obvious for developers, system administrators, designers, scientists and other persons who heavily rely on the power of hardware and applications.

share|improve this answer

There are some advantages to developing with outdated technologies, but whether or not these outweigh the cost you suffer for losing fluency with their replacements and the pain of working with them is a personal choice between you and them.

I can think of three benefits of working with obsolete, replaced technology:

  1. Familiarity with the older technology itself

    The only old technologies still in use are those that someone, somewhere, has decided are cheaper to maintain than replace. Being able to list work experience with such older technology can, in and of itself, help you gain another job working in the same area. And as more and more developers move on, the premium you can charge for working on such goes up.

  2. A chance to practice learning something new

    You're not really a programmer if you can only program in languages someone else taught you. Being able to adapt your techniques and models to older technology requires much of the exact same skills you would need to adapt to new technology.

  3. Deeper understanding of why they were replaced

    It's hard to explain to a non-programmer HR or Executive type why VB.NET or C# is superior to VB6 if you're not familiar with the technology itself. And if you're not entirely familiar with the latter, learning what they replaced can help understand some of why the replacements were written how they were.


All of the above said, there is absolutely no reason a company should persist in maintenance of any application written in technology that has become so outdated.

If it can be left alone until the runtime fails due to some undocumented bug, that's one thing--but each hour a developer spends on old tech without a transition plan is technical debt the enterprise will have to eventually pay.

share|improve this answer
8  
I disagree with "there is absolutely no reason a company should persist in maintenance of any application written in technology that has become so outdated." If it is making the company more money than it costs to maintain, then they should maintain it. They should be looking to replace it with a more modern solution, but while it's making money and can't be easily replaced it should be being maintained. –  Stephen Jan 14 at 23:34
    
Sometimes true, but if the software is "making" money instead of "saving" money someone's doing their customers a disservice all the same. –  DougM Jan 15 at 1:21
    
Software can save money for the customer and make it for the company that develops it. Not everything is an in house application. Heck, software can also make money for the customer too. Look at Visual Studio. It makes money for both the seller (Microsoft) and the buyer (software houses). –  Stephen Jan 15 at 1:30
    
Yes, that's why I said it like that. And to repeat, if you're selling software built on a ten-year-dead platform, you're doing your customers a disservice. –  DougM Jan 15 at 1:47
1  
I would disagree. As a developer, I wish to always be using the latest technology. But from a user's point of view, they may get great value out of an old VB6 program that is being maintained. It might not be economical or practical to redevelop it from scratch, but it may be worth maintaining (this is particularly true for specialty software that only has a very small niche market). –  Stephen Jan 15 at 3:57

At some point the company will need to be concerned about end of life of VB6 but sadly VB.NET has some breath left.

Is there any related reason you need to work on a single small monitor? That sounds more like the company being cheap than being concerned about well tested technologies. It's not like a couple of 21" monitors are going to introduce bugs.

To keep your skills sharp and get paid for it, I would suggest looking at your build, test and deploy setup. This may be an opportunity to start introducing some newer technologies by using rake, powershell, and/or nant for build and deployment. If you don't have unit tests, start adding them.

At the end of the day, if the company is not in the technology space then it will always be secondary to them. It makes total sense for them to maintain stability to protect their core business operations.

I'll avoid giving any career advice, I'm sure others have covered the bases.

share|improve this answer

For older people, moving towards the end of their professional career, selling their profound knowledge of a older technology to company that still uses the old stuff, may be financally attractive. For example, if you are experienced in PDP-11 you may want to move to Canada.

However, earlier in your career, I would recommend moving on.

share|improve this answer

There are multiple advantages:

1) There will be lots of resources available for the technologies as long as they were not obscure ones that were not widely used.

2) Hopefully others at the company will be well versed in the technologies as they haven't changed.

3) If there is not a lot of new development, you can work on refactoring old code to be cleaner, or faster. Note that the type of shop that keeps this old tech probably will be against changing any code that "works" despite how abhorrent it may be.

share|improve this answer
5  
If the code works, it shouldn't be changed if you can avoid it. Every time a developer makes a change there is the possibility of introducing new bugs -- and new bugs largely negate the benefit of using old code. –  DougM Jan 14 at 22:45
    
Change for the sake of it obviously isn't a good idea. However, once the software reaches a certain level of maturity, attention often turns to tuning slower parts of the application. –  Robbie Dee Jan 15 at 12:59

I'm going to concentrate on the flipside of this question i.e. the disadvantages of using new technologies, as the advantages of outdated technologies have been sufficiently covered in other responses.

We still have a large Visual Studio 6 code base and it doesn't look like it will be replaced any time soon.

However, we are pressing ahead with new technologies where we can for new developments.

As I think you allude to, it is possible to write VB.NET that interfaces quite nicely with legacy VB6 code using COM.

Using cutting edge technologies is undoubtedly fun as they often bring significant productivity benefits. However, the flip side is that you can come across a bug/glitch that puts you back days/weeks. It is called bleeding edge for a reason!

Even if the company were to stump up the cash to upgrade the software, this (as I've found from personal experience) can be a bit of a drag whichever way the company chooses to go:

Software Port

The software is rewritten but has to look exactly the same as the old software so as not to upset the users. The joy of working with new technology is overridden by the fact that you can't use any of the new GUI wizardry.

Visual Studio update

You don't really get to use any of the new features properly as you spend a lot of time ironing out glitches in the code where it works fine in one version of studio but not the other.

Functional migration

You migrate the software keeping the core functionality. This allows the most freedom from a developer point of view but bugs might be introduced which might cause the company to question the value of such an exercise unless new value-added features are also included.

Nirvana for most developers is quality training on modern technologies, a chance to practice what you've learnt and then a greenfield project to cut your teeth on.

What you should do depends largely on the type of person you are. Neophiles will always want to work with the new stuff whilst the luddites think old technology is best. Most of us are somewhere in between. You need to work out where you feel comfortable. If you feel you can live with the status quo then great, otherwise take the coin for now and keep half an eye out for a more suitable position.

share|improve this answer

This may not be exactly what you are asking, but I have some suggestions:

I think the greatest benefit is what you can offer your employer in terms of expertise when they eventually realize that they need to migrate. XP will be discontinued this year, so I imagine your IT department is already considering a migration strategy. (If not, get your resume ready, because they company is not going to be around long.)

With that in mind, it might be prudent to start compiling a list of advantages for migrating the primary software toolsets in conjunction with the OS/platform migration. Help educate your technically-unsavvy management chain as to the ROI with regard to new technologies. Your managers won't give a hoot about whiz-bang frameworks and tech-toys, but they should be very interested in your long-range projections regarding the comparative costs of ongoing maintenance expenses, future development, etc.

Along these same lines, you might take this opportunity to find out the satisfaction level of your customers (the employees using your software). What improvements would they love to see? What bugs drive them crazy? What features would significantly improve their efficiency? If you can show your employers that a new investment in technology would demonstratively impact their bottom line, you may well earn the title of Technical Migration Manager.

And THAT would look good on ANY resume.

UPDATE: Looks like you're not alone in your industry: "95% of World's ATMs run XP". Don't get me wrong: XP is great - I was always a fan. But reality is, once the security patches and updates end, XP will not be a viable product for a bank. Your job (for the sake of your bank's customers) is to graciously but persistently inform your managers that they will end up paying far more (in extended service arrangements or attack mitigation) to maintain XP past its retirement date. As @RobbieDee's link pointed out: you've got until 14 July, 2015. That's just enough time (if you start now) to design, implement and deploy a replacement system.

(But do NOT try to sell this idea to the guy who just signed off on the enterprise-wide XP-install. He is not your ally. With judgement like that, his days in that role are numbered. Just quietly work around him until wiser heads prevail.)

share|improve this answer
    
FYI - support (in part at least) has been extended beyond the original 2014 deadline: bbc.co.uk/news/technology-25758308 –  Robbie Dee Jan 17 at 0:01
    
Hi, thanks for the response. This quite simply isn't happening sadly, the company (a bank) recently (latter part of 2013) went through a PC refresh, in which they spent a lot of money replacing every computer in the chain with new kit from Dell. They then paid people from IBM to wipe all of these machines, and install XP! Way I figure, if they wanted to upgrade to a more modern OS, that was a golden opportunity. Normally your answer would be solid advice though so +1 –  prisoner24601 Jan 17 at 1:52
    
@RobbieDee -that gives user114764 just enough time. –  kmote Jan 21 at 16:00

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