Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Yesterday I was watching a iphone development video and this developer started telling about how he has worked on 17 different languages from the days of mainframes in assembly/Cobol to now on iPhone Objective-C.

My question is how do these developers keep shifting to new technology, without fearing the loss of experience they already have about a particular technology.

I am trying to shift to Java from PHP and market considers this as non-relevant experience. How do these guys do it without losing the pay and not being considered a fresher in a particular technology.


migration rejected from Dec 2 '13 at 3:58

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as off-topic by gnat, MichaelT, World Engineer Dec 2 '13 at 3:58

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." – gnat, Community, World Engineer
If this question can be reworded to fit the rules in the help center, please edit the question.

Guys i think i am misread here. I am trying to ask how to keep your existing pay and not how to learn a new language. – pankajdoharey Feb 13 '11 at 15:28
Maybe instead of shifting to Java, where you are competing with about a million programmers with ten years experience, you should learn something newer, like mobile app development or Ruby on Rails or HTML5 or ExtJS or ... Anyway, if you are really good, they will hire you anyway, and if they won't, you didn't want to work there. – kevin cline Mar 1 '11 at 21:13

10 Answers 10

up vote 19 down vote accepted

Most companies see developers who are proficient in multiple languages as a big plus. It makes for a much more rounded developer who will likely have better insights into their code and be able to work with a much broader array of technologies. Personally I've used 8 languages over the past 19 years.

As for how you learn a new language and keep your current pay. It's sad but simple. You learn on your own free time. Developers who have worked on that many languages do so because it's their passion. They stay up late nights trying out the latest language for fun. You don't ask Michael Jordan why he plays basketball, he does it because it's his passion. It's the first thing he thinks about when he wakes up and the last thing on his mind when he goes to sleep.


Usually a lot of what you know as a developer using language A is transferable to language B. The basic computing constructs are the same across languages. Yes, you do get languages that are completely different (Lisp for example) but with exposure to more languages these exceptions become rarer. This will give you a head start on the new language - but you do need to be aware of "gotchas" or pitfalls where things are subtly different.

Yes, you need to learn the basics on your own, but what you should be demonstrating to potential new employers is not your skill in PHP (say) but your skill in solving problems, meeting deadlines, eliciting requirements from customers. It's these skills that should be important, not how many years you've coded in Java, PHP, C# or whatever.

I wish the HR thought the way you think, but cold harsh reality is that these people count how good you are based on number of years you have programmed on xyz technology. – pankajdoharey Feb 13 '11 at 15:58
Depends on your company. Most companies I have worked for HR cares how much work experience you have, regardless of what you were actually doing. In fact, HR shouldn't be determining technical ability anyways. – Pace Feb 13 '11 at 16:22
@pankajdoharey - that's why I emphasised the "should". – ChrisF Feb 13 '11 at 19:13
@pace - Exactly. I'm interested in HR looking at education, basic skills, checking honesty of the CV (it's amazing how many people lie and then fold at the first question), reasons for leaving, attitudes and so on, but they have no place in determining technical competence. – Jon Hopkins Feb 15 '11 at 12:50

I have lost count of how many languages I have used since I started doing this (circa 1993) But the list includes, Perl, PHP, Scheme, Javascript, and probably a few others.

Learning new languages gives you new insight on how to solve problems. There are problems that are very hard to do in C but easy in lisp, so by knowing lisp you get a new way of attacking a problem.

And yes this does mean putting in time after work to keep current.

But would you want to go to a doctor who had not learned anything knew since he finished Med School in 1983?

I would probably go to an general practitioner who had only had work experience since then, yes. – Henrik Feb 20 '11 at 19:53
@Henrik "work experience" is not a bad thing. Just such a thing as knowing when to delegate to an expert requires quite a bit of experience up front. – user1249 Jul 25 '12 at 12:20

A relatively foolproof way to change the technology and still have a job is to stay within a non-trivial problem domain. For example, I have a lot of experience in warehouse management systems. During my career, I've used several different languages and plattforms to implement those systems, but my employers were willing to accept the learning curve, because they knew that I know a lot about the domain.

In another career step, you can take the technological know-how to another domain and become an expert there, too. By alternating those steps - same domain, different platform and different domain, same platform - you can get a broad knowledge without ever becoming a total beginner.


The person in the video probably had many years of experience so he did not learn those 17 languages overnight.

Also, after you have learned a programming language or two, it gets easier to pick things up. Some programming languages complement each other, so you learn them together because they solve different problems. One tool does not fit all, you need to have a set of tools to be efficient at your job. It all adds up at the end if you have been doing this for many years.

really nice answer – pankajdoharey Feb 13 '11 at 16:02

I hate to tell the new guys this, but the only way to keep employed is to assume whatever cutting-edge knowledge they have will be obsolete in two years. Even if they manage to hang on longer, the march of development will eventually make this true. You should always try to increase your knowledge. Let's say you know Java. Learn Android programming. It's mobile, which is hot right now, and it's Java. Follow a similar path throughout your career. I strive to learn at least one new language/framework/technology every two years. It's kept me employed for 27 years so far.

Next year? Ruby or Python.


In the years I've been a professional developer, I've programmed about 20 different languages. Once you're proficient in 2 or 3 though, you should be able to see enough crossover to be able to tackle any mainstream language. (APL, Lisp and Forth spring to mind as tricky ones, but not that much harder to learn, than say Regular Expressions.)

I'm not entirely sure when I began to say this, but I've developed the belief that the real skill you need is the ability to learn, and if you're a good developer, it'll be your saving grace in life, since it's a skill you can apply to any domain.

This skill of learning can be developed in the usual way, learn something a little bit challenging, and incrementally increase the challenge, and always remember that once you know it, it's easy.

How do you maintain the same level of salary while continuously working on new languages? Well, that's often luck, but that can be engineered too, if you pay close enough attention to opportunities.


Before I graduated I had programmed in APL, FORTRAN, ALGOL/W, PASCAL, PDP-10 assembler, COBOL, SAIL, C, and LISP. Since then I've worked in assembly language, C, C++, Ada, Visual Basic, Perl, Emacs-LISP, Tcl, C#, Java, Ruby, Javascript, Python, and Groovy. Learning new languages and APIs is no big deal. I don't sell myself as an expert in some technology stack. Instead I sell myself as an expert programmer who can learn whatever is needed in short order. Sharp teams hiring for the long term are happy to find me. IT departments looking for someone to fill a six-month contract in ASP.NET maintenance aren't. I'm fine with that.


Some of this involves learning on your own time. For instance, I know IT people who run their own servers in their garage, write apps on weekends, etc.

Some of this is just luck. Start working at a shop that uses technology X, and they acquire a company that uses technology Y, or someone sells IT management some software that requires technology Z. Then the Z programmer is overloaded, quits, etc. and the boss asks if you can help put out a fire. Or they suddenly decide they need an app, and can't find a consultant, do you know anything about that?

Choosing to work for companies that aren't stuck in a technological rut helps.


For me it's about models and abstractions. I learn new languages because they present better paradigms to solve interesting problems. I get rusty in all things, but once you know why you use one abstraction over another and where one breaks down then transferring experience is easier. I can nearly always see more than one feasible solution to a programming problem, but experience in multiple technologies lets me decide why one is a better choice at a particular time. For example

"Do I write this script in SED, or a macro in XXXX or powershell script or a batch file or blah or foo?"

At any time differing concerns will apply and being able to apply the theory of why one over another helps me keep my knowledge sort of up to date.


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