Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

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

I started my career writing C#. However after an year I moved to Java and then after 6 months back to C# where I've been more around 3 years now.

I strongly believe that although the basic principles do not change and are reapplied learning a new stack (and the supporting frameworks) is always a big investment.

How often have you switched stacks in your career? Has it ever hurt your career progress? Do you like working with people who have worked on multiple stacks but have lesser knowledge of the respective stacks or with people who have worked on a single stack and have a deeper understanding of the ins and outs of it?


migration rejected from Sep 12 '13 at 9:50

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 MichaelT, Corbin March, GlenH7, mattnz, Kilian Foth Sep 12 '13 at 9:50

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." – Corbin March, Kilian Foth
If this question can be reworded to fit the rules in the help center, please edit the question.

I did it too often and got stack corruption and then a Stack Overflow. – Mehrdad Jan 19 '11 at 15:23
Would switching from ASP to ASP.Net count as switching stacks or would that be the same stack as one is a bit of a logical progression from the other? – JB King Jan 19 '11 at 15:45
I have been working in Internet Domain on stuff like Search, Machine Learning etc. Designing good Algorithms & Constructing scalable data structures is my job. Sometimes I am hooked up on Artificial Intelligence based Document Clustering stuff and the other times I am creating Google Instant like feature. Java or C++ or Haskell or Python holds no relevance to me. I use them just as tools to solve a problem efficiently and/or easily. Nothing more. If you probably start thinking in terms of good Design (I am not talking about OO here:)), Algorithms, Data Structures; thats all that matters. – Yavar Mar 7 '12 at 10:41
Also it might matter in industry verticals like Banking, Finance or to a certain extent in a Software Products companies like Adobe, Oracle etc (here you will be working on a product line like PDF, Oracle database etc. limited to a particular technology stack though I agree there are super talented people here too solving some very interesting computing problems). However if you are really passionate try to join an internet organization like stackoverflow, amazon, twitter etc. Here technology stack is irrelevant; Algorithms rocks!!! – Yavar Mar 7 '12 at 10:44
up vote 14 down vote accepted

Switching stacks was always an improvement in my career — this meant I was hired not just as another coder fluent in recent [insert technology here], but as a developer of a broader experience, which is going to tackle something new and/or cross-stack. This was not always an immediate monetary gain, but always an experience gain which increased my market value as a developer. (Usually I oscillated between Oracle's PL/SQL, Java world, and Python world, with bits of C# and whatnot thrown in.)

Unless you're hired for a completely new project, you will always invest serious time into learning its existing unique codebase and its relations with frameworks used. If your knowledge of these frameworks is shaky, this will be time to improve it. Reasonable managers don't expect from you stellar performance from day one.

Wider experience allows you to see patterns and analogies and saves you some effort and time understanding another framework. So, knowing more frameworks not necessarily mean you learn proportionally shallower parts of each.


It's great for your programming abilities, but can be murder on your career.

That the above is seemingly a contradiction belies the insidious nature of programming as a profession.


A lot of it depends on where you are in your career. If you're a JR level guy, then a few years of Language X and a few years of Language Y will make you well rounded... But once you're senior level (10+ years), then to 98%[1] of the companies out there, you are now a JR programmer demanding SR level pay.

I'm sure this will get down-voted, with people clambering on about hiring smart & get's things done, but the truth is for every fogcreek out there, there are 3k dysfunctional or borderline psychotic organizations, and we all have to work somewhere.

In my market, this aspect is generally getting better. You still need to get past the HR monkeys with the "need 10 years of ASP.NET MVC" stuff, but in terms of technical hiring managers, jumping around stacks doesn't seem to hurt that much around here anymore. The "smart and gets things done" thing finally seems to be catching on. – Bobby Tables Jan 19 '11 at 18:34
I love a requirement that can't be met. That's like asking for 10 years of "Go Language" experience when it's only been available for 2. – Berin Loritsch Jan 19 '11 at 21:11
@Berin Loritsch: One of these days, I'm going to find an ad like that, and double it on my resume. "Go Language - 20 years experince" – Steve Evers Jan 19 '11 at 22:45
Actually I have found on the west coast (at least Seattle and San Francisco) many jobs are phased x years in an object oriented language or x years general programming experience while on the east coast (New York/New jersey) jobs are often phrased 10 years Java, 10 years .NET, 5 years Hibernate, etc... – Cervo Jul 28 '11 at 17:23

There are a couple of idioms that I think of whenever I learn a new stack:

When you only have a hammer, everything looks like a nail.


Use the right tool for the right job.

I believe that learning new stacks only makes you better programmer and helps your career progress.

You as a programmer and your career can be very different things. What do you think about the latter? – Steve Evers Jan 19 '11 at 22:48
@SnOrfus: By helping your career, I mean opening more doors. Certainly a programmer with more to boast will weigh higher than one with little to boast. Learning new stacks may not move you up the corporate ladder to leadership but it can expand the horizon of possibilities. – k rey Jan 20 '11 at 18:05

I've switched stacks two times, at the same employer.

I started out in Delphi, writing windows apps. I transitioned to PHP because the PHP guys needed the help. I worked my way up to being the lead web developer. Then the edict came down that we were going to become web-centric instead of windows-centric, so we needed to up-level the usability of our web apps. Based on that, I studied up on javascript rich app frameworks and switched to Ext JS + web services.

TLDR; I've switched stacks when the job required it.

Don't worry about your resume if you're in a job that you like doing. If your worry is that switching stacks will hurt your chances at getting a different job, maybe you just need to make finding a different job a priority.

Good you explicitly mentioned "same employer". – LIttle Ancient Forest Kami Jun 4 '13 at 14:56

A good developer is going to make good of whatever tools are necessary to complete the job. A good dev knows when they need to ask something on a forum or gain a deeper understanding of abstractions and/or tools. On the other hand, bad devs don't know or simply don't care. Tools don't make the dev any more than shoes make the runner.


In summary, programming is a cross-stack skill. (I've switched at least 5 times across a number of jobs.)

Secondly, I think teams need a mix of long term 'single stack specialists' and cross-stackers. The mix allows fresh perspectives on problem solving combined with solid platform roots.


I've switched stack's two times, because I changed company's.

I switched from PHP to C#.Net, and from C#.Net to PHP again.

Changing stack's didn't specially hurt my career progress, quite the opposite I think, at this point, I'm a developer that has knowledge on two key languages for Web Development. And from a career perspective that is helpful, because if my employer throws at me, a site in either technologies I can work with both of them..

In terms of technical knowledge, the switch made some big dent's, my core language is PHP, and with two years "lost" working on C# didn't help, I've missed a lot of things regarding PHP, simply because when I got home, I had to investigate some C# library, or class that I've never heard of.. and all the time was devoted to learning all I could about C#...

Continuing with the technical stuff, I don't believe that I can be good at two languages ( or anybody else, except a few rare exceptions ), and that was felt on my freelance work, because during the day I worked on C# and at night in PHP.. and since I didn't stay that much updated, there were somethings that I did, that weren't that quite right..

Regarding your other question, I like to work with every type of person, those who have an deep insight into a stack, and those who don't, because creatively speaking, their solutions are going to be completely different and that doesn't mean that one is better than the other.. and I also like to work with people from different areas from client management to web designer's, passing by the cleaning lady that always have life lessons, that I can use on my day to day work..


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