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.

I've been working with .Net since it first came out and have done my best to use the latest and greatest things from Redmond. That being said, I've been working for the past year in the Python/Unix/Web world. In order to keep myself relevant in the MS world, I've been working part-time on a WPF project but I do not know how much longer that work will continue.

So my question is: If I were to move totally to the Unix/Python/Web world, how long could I stay there before it starts getting hard to get another MS job? I am trying not to burn bridges in my career as I've found MS jobs pay better and tend to be more plentiful.

PS: I like my Python job since it is something new and I get to work from home. It has provided a different view on coding that I've found useful.

EDIT: I was out of the MS market for 12 months before attempting to get another MS job. No-one said "Gee you've been gone a while" but I did get a conspicuous lack of responses to job applications. My feeling is that the head-hunters do not bother to look beyond your last job. In the end, I got employment via my own network rather than the pimps. So, to answer my question: "not long, especially if you trust your career to head hunters."

share|improve this question

closed as off topic by Yannis Rizos Mar 7 '12 at 11:05

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

Honestly, I'd be more worried about the danger of being confined to the proprietary MS world than the other way around... MS is getting less relevant every day. –  ggambett May 8 '11 at 20:55
@ggamett. From seek.com.au: .net jobs in Melbourne: 398, Python: 69, php: 742, iphone: 58, android: 31. –  dave May 8 '11 at 21:01
@dave yup, .net is a big market but not the most interesting or best paid. –  Nazgob May 8 '11 at 21:12
@dave Java is conspicuously absent from your straw man numbers? Java + Unix/Linux is probably the best paying skills a person can have in just about any geographic region outside of Redmond, Washington USA. 837 jobs containing Java in Melbourne –  Jarrod Roberson May 8 '11 at 21:19
Let's not turn this question into a holy platform war. If you really want to discuss that, please use chat. –  Anna Lear May 8 '11 at 21:39
show 5 more comments

8 Answers

up vote 6 down vote accepted

Well, let's look backwards at the history of the .NET framework, and try to estimate forwards from that.

.NET 4.0 came out roughly one year ago. So if you have been working for the past year in the Python/Unix/Web world, I'm assuming you haven't used .NET 4.0.

.NET 3.5 came out three and a half years ago. There is still heaps of 3.5 work going on, someone who had been keeping current with .NET up until three years ago would still be perfectly capable of doing this.

.NET 2.0 came out five and a half years ago. That's a long time. I personally wouldn't want to be in the market right now looking for .NET 2.0 work (although I'm sure it's out there) if I hadn't touched the platform for five years.

So, actually, I kind of agree with Tomasz Zielinski's brief answer. Three years is probably a reasonable drop-dead time. If you'd been out of the game for three years now, you wouldn't know Entity Framework, you wouldn't know ASP.NET MVC, you wouldn't know the Parallel LINQ extensions. You probably wouldn't know IIS 7. These are definitely some things to catch up on, but by no means insurmountable, especially given how many jobs would not involve some or all of these new technologies.

But four years or more.. .NET 3.5 was such a big jump, LINQ and all the supporting technology around it (type inference, lambdas, anonymous types, etc.) is such a crucial part of .NET these days, imho, that if you'd never encountered it, you would really feel behind the times, and struggle as a result.

share|improve this answer
That's how I look at it. That being said, I'm currently working on a WPF MVVM project part time. Even though this is .Net 4, I am still not using MVC, Entity Framework or IIS7. The project just does not need them. If I was working on a Web project, I may know MVC but would not know WPF. Damn, you just know it all can you? The problem tends not to be learning the stuff. Learning is easy. From experience, unless you have the magic check-list of requirements in the job ad, you will not even get to the interview. –  dave May 9 '11 at 4:02
I think you'd only feel behind the times if you'd not encountered those language & framework features elsewhere. C# 1.0 -> 4.0? Big jump. But if you had some serious Ruby or Lisp experience under your belt as well? Not so much. –  Duncan Bayne May 10 '11 at 3:04
@Duncan - good point. Big difference between needing to learn an unfamiliar syntax for familiar concepts, and needing to learn something totally new to you. –  Carson63000 May 10 '11 at 22:16
add comment

You have to be a little careful about confirmation bias. MS jobs are higher paid and easier to find for you because you have more experience and contacts there. Some other factors you might not be considering:

  • MS developers tend to be more monolithic and specialized. So while you might be able to search for .Net to see most MS web developer positions, a similar search for Unix might require a combination of keywords like php, python, perl, django, drupal, joomla, apache, mysql, and so forth.
  • .Net has only been around for 9 years. 9 years ago literally everyone who wanted a job using .Net had zero experience with it, yet the world survived. Who knows what the big thing will be 9 years from now?
  • Python is not a huge primary language. A lot of people use it even though they didn't get hired as a "python programmer." If you want to work on unix, I suggest you pick up php as well to be able to get your foot in the door.
share|improve this answer
PHP Developers seem lower salary. –  FireCat May 9 '11 at 2:53
Personally, all my PHP work has been pro bono, so I can't necessarily argue with you on salary, @SilverNight :-) However, I think you're overgeneralizing. Entry level positions, maybe so. The PHP developers who work on sites like whitehouse.gov, I'm sure are compensated well above average. –  Karl Bielefeldt May 9 '11 at 3:05
PHP is not a path to making more money, it is probably one of the lowest paid skills you can have, it will get your foot in the door of a highly saturated market of low paying high risk customers. –  Jarrod Roberson May 9 '11 at 14:47
+1. bullet #2 is a really interesting point –  Todd Main May 9 '11 at 15:44
It might be worthwhile to mention that pre .NET, IIRC VB6 was pretty standard for bussines app development - so there was some carryover knowledge (sometimes to the detriment of vb.net projects, read: no-oo). –  Steve Evers May 9 '11 at 17:30
show 2 more comments

OS dependant development?

There is no need for you to tie your choice of development platform to an OS or vendor. There are plenty of cross-platform technologies that follow standards. The problem with Microsoft is that they rarely follow standards when implementing their technology, and of course, they are not cross-platform.


When starting my development career I carefully chose to not use .NET or Windows-only technologies for anything. The reason being that I didn't wanted to limit my freedom to choose tools to what a vendor has to offer or allows there to be. Also because I found more value in open-source communities rather than vendor support.

When you have large communities standards —formal or informal— emerge; look at Java and python, both have very well defined and consistent API design as opposed to the many APIs of .NET. Look at web technologies such as HTML, javascript and CSS.

Don't limit yourself to one language

There is no reason a single information system cannot rely on several languages and technologies, specially when you consider the web. Right now I'm developing a solution that uses Java (for a desktop frontend), PHP (for the backend and to render a web frontend) and javascript (for the widget-oriented web frontend).

Once you understand languages as tools you will know which one is best for each job.

Talk to people; think cross-platform

Ask others —even here— of what technologies do they use for each task, and start trying to map your current knowledge. Are you more into system programming?, look for cross-platform libraries. Do you program in C#?, study Java; do you program in Visual C++? start using g++; are you into web?; try PHP (object-oriented PHP, test out frameworks like Symfony not sloppy functional PHP); are you enjoying python?, stick with it and study its market (e.g. Django for web).

The world —as opposed of what Redmond would like you to think— does not live and breathe Microsoft, specially in the web world.

Welcome to the outside world

It might not be that hurtful at all to stay away from MS if you learn fast enough to feel comfortable looking for a Python or whatever-non-ms-technology job. I don't think there is a definite answer, but I'd say that if you lost track of the details of a major release of .NET, you could start feeling like a stranger to the MS market. Also, and IMHO, having other languages as part of your skills description in your resume will give you extra value as a developer.

Edit: As Conrad suggests and/or implies in the comments, Mono might be a way to ease your transition.

share|improve this answer
How does this answer his question? –  Carson63000 May 9 '11 at 3:49
My experience has been that the programmer has little choice in the greater infrastructure that can be used in a company. My current project is in a Microsoft shop. I got to choose the architecture but it was always going to be microsoft technologies. Similarly, when I worked in an Oracle shop, it was always going to be Unix/Oracle. I managed to introduce perl into the admin side, but the core product was Oracle. If I was doing direct consulting with a small business with no invested infrastructure, there may be a choice. You can only choose the platform by choosing the company to work for. –  dave May 9 '11 at 4:09
-1 I think the question was "how long could I stay there before it starts getting hard to get another MS job?" Not "Why are you glad you don't use MS technology" –  Conrad Frix May 9 '11 at 19:59
@Dave As you may alredy know, a few years ago, software shops do their customers apps, in the progr. lang. they wanted. Today, its common the customer company choose the language... –  umlcat May 9 '11 at 20:34
"...I carefully chose to not use .NET or Windows-only technologies for anything. The reason being that I didn't wanted to limit my freedom..." -1 for making no sense whatsoever. –  Aaronaught May 9 '11 at 22:56
show 5 more comments

I think that you are falling into a trap here by assuming that Microsoft is the queen mother of computer technology and that everything worth knowing comes as an endowment from the Gods at Microsoft.

I know a lot of truly great programmers. I know a lot of mediocre programmers. The funny thing about it, is that I've never met a truly great programmer that specialized in .NET. Everyone I've known who labeled themselves as a ".NET Developer" always freaked out whenever you whispered C++ and usually produced grade B code.

I know a lot of really great programmers that know how to program in .NET, but their skills are not a result of the overflowing generosity of the Gods of Microsoft. Their skills came from their own desire to learn and their never-ending desire to get better.

Now don't get me wrong: I'm not saying there is anything wrong with .NET (I do a lot of work using .NET technologies). I'm just saying that you should never be afraid to expand your skill set beyond the borders of Redmond. There is some great technology out there that did not come from Microsoft and there is some really crummy technology that did come from Microsoft.

If your career path is taking you away from .NET, don't sweat it. The old saying is, "When the only tool you have is a hammer, then everything looks like a nail." There are more tools than just hammers out there, so don't be afraid to learn how to use a screwdriver.

Go ahead and do what you want to do. You'll probably find yourself learning skills that will make you a better programmer in every aspect--including when using .NET :)

share|improve this answer
I have no problem expanding my horizons. In my career, I have been an Oracle DB, systems C++ coder, VB6 business coder, c# app architecture coder and web developer. I started off writing assembly on the 6502 as a kid. The issue is finding a job that pays the bills. Last time I looked for a job (GFC) I found that unless I had exactly the right skills, getting a well paid .Net was difficult. I don't see an employee paying the big dosh for someone with zero commercial java experience. In your experience, how accepting have employers been towards a giving a job to coder with a skills mismatch. –  dave May 9 '11 at 18:23
@dave, I was lucky enough to receive a job offer from Microsoft at one point, and during 8 hours of interviews, they never once asked me a question that was specific to any technology. They were very interested in seeing if I was a good programmer. They were not interested in whether I had the newest features of .NET memorized. –  Stargazer712 May 9 '11 at 20:06
Same with my missus - they flew her from Melbourne to Seattle for the interview to ask about linked lists.I only wish that other companies were as open minded. Unfortunately, most ads I see these days are very specific as to what skills they want (even if they may never use them). 18 months ago I had to find a job as I was made redundant - I applied for 50 jobs, got 3 interviews and got 1 job. My skills and CV were excellent but just not excellent enough :-( –  dave May 10 '11 at 0:08
add comment

3 years and nothing (bad happens).

share|improve this answer
More words please. Are you saying there is a 3 year drop-dead time? If so, that feels about right. I have also noticed as the MS world gets more fragments, you have to have exactly the right skills. My WPF job aint gunna help me get a MVC job. –  dave May 8 '11 at 21:33
i think he is just sharing personal experience, that he has stepped out of the MS world for 3 years now and has no regrets. i wouldnt try to extrapolate –  jon_darkstar May 9 '11 at 2:02
@dave: jon_darkstar got the point :) I answered the question from title, not the one from your post. –  Tomasz Zielinski May 9 '11 at 13:22
+1. 9 years for me (my own company - we did make Windows products but developed on Linux and then compiled on Windows and Mac), and even less MS for me in the foreseeable future (new job at Linux-mostly company) –  ggambett May 9 '11 at 21:00
add comment

It really depends on exactly what you were doing...

For example: my last workplace was an MS shop, but the bulk of the products (and a massive internal application framework) are written in MFC/VC++. Some of the new stuff that talks to the back end is more modern .NET, Web Services, etc. But still, some 80% of the programmers at that shop are old skool Visual C++ developers. And I don't think this is going away anytime soon.

Moral of the story: You could have left MS technologies ten years ago, but in theory you can still get jobs doing "MS stuff" (if you can somehow demonstrate not being rusty, and pass technical interviews), because a lot of the real world work doesn't move on quite as fast as the latest and greatest out of Redmond comes out. Of course, the problem with more established technologies is that most of the workforce is senior and deeply connected, which means that a lot of roles get filled via internal alumni networks instead of being advertised. And of course, working with "legacy" isn't everybody's cup of tea.

share|improve this answer
add comment

If you want to be at the top of your field in a particular language/technology, quit your job and get another in that field. Skill is quickly forgotten when little practiced, and time is short.

See Teach Yourself Programming in Ten Years, which I would argue applies also to particular skills.

share|improve this answer
I was working in Common LISP for a few years, which was invaluable, but I want my mainstays to be primarily C# and secondarily Java, so I switched to a job which works with both of those (primarily C#). –  Matthew Rodatus May 9 '11 at 15:36
In the past, I have strategically chosen jobs to move my career in the direction I wanted to go. Working in the Python world was more of a tactical choice - the lifestyle is better (work from home) but the pay is crap (about 70% of what I can earn elsewhere). The question relates to how long I can stay out of my mainstream choice before it becomes a negative. –  dave May 9 '11 at 18:39
add comment

Been in that situation. It depends from several factors. Like how much non MS technology and how much MS technology is used in your area. Or, if you are willing to relocate.

Sometimes, developers are "pushed" to work in MS stuff, and sometimes are "pushed" to work outside MS stuff.

Worked 2 years in PHP, outside U.S., In an area where there is not many jobs outside MS. But, there where also many MS jobs that where stuck in VB6, not more recent ".NET" . I took it because I turn a hobby open source skill into a full payed job.

There also the payment and benefits stuff. I used to work in Delphi, a few years ago. I recieve calls from "headhunters" from time to time, and even that I like to work with Delphi in my pet weekend projects, I don't take them, 'cause its not very well payed.

Many developers take MS related jobs as "pay the rent / food", and other stuff (Java, Delphi, Open Source, choose yours) as hobby or ocasional projects.

It's good to get out of the "Schrodinger's M.S. cat box", sometimes...

share|improve this answer
add comment

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