Ask HN: Any Hope? Developer Switching from MS .Net Development to Free and Open?

14 points by ncage ↗ HN
I have been a Microsoft .net developer for the past 15 years. I have grown quite frustrated at the direction of Microsoft and the ecosystem. I yearn for running lightweight tools (not the overly bloated visual studio that you must supercomputer to get descent performance). All the innovation seems to come out of the open source community and Microsoft just tries to copy to keep its developers happy. ASP.Net MVC came from Rails, nuget came from npm, OWIN and most of the changes for ASP.Net vNext come from node.

Microsofts’ OS direction is a joke. I’ve been running the recent. builds of windows 10 hoping for major improvements that I have not seen. How about using text files for configuration rather than overly complex APIs (WMI Providers)? How about a proper bash shell (powershell is no replacement), how about a proper SSH client?. How about fixing your OS getting slower over time?There is a lots more I could say but I will quit at this point 

While I would love just to switch over my issue is that I work in an area that is almost 100% focused on Microsoft technologies. There are still a few mainframe shops but that is about it. I’m pretty locked to my area unfortunately. Think of the married guy ((and who’s wife’s career is based in the area).) in his early 40s with a mortgage (who found their perfect home).

At this point my real passion is in node & client side javascript development. My only hope is remote work but I don’t know how plausible that is. An individual who has taught themselves node on their own getting hired for a remote gig for a somewhat descent salary .

I guess I’m reaching out to you all so I can stop spinning my wheels. I’m constantly trying to better myself by continuing education. If there isn’t much hope then I should just spend my effort on even getting better than the tools I’m stuck with other than wasting my time with technology I will probably never get to use. Any advice would be much appreciated.

15 comments

[ 3.4 ms ] story [ 52.4 ms ] thread
Maybe a side project? If you do it right, maybe you can even make a small bootstrapped business out of it. Or if you don't want to do that, just have fun playing with the technology for a fun project.
I had the same thoughts that you're having. My specialty is client-side JavaScript, but my backend experience is almost exclusively ASP.NET. Having switched to a Mac in 2012, I found myself spending more time in OS X and Sublime Text, less time in Windows and Visual Studio. I've started scratching the surface in other areas (Python/Django, Rails, Node), but I really just don't enjoy them like I do the ASP.NET stack.

That being said, with the announcement of ASP.NET vNext and the open-sourcing of .NET Core, I've decided to double-down on the Microsoft stack (installing vNext, learning F#, writing more apps in ASP.NET, etc) since I'll eventually be able to develop ASP.NET apps in OS X, with all of the tools I could ever want.

Its interesting, like my comment to the OP states I have been on both sides and prefer non-microsoft overall. But that said, I really did get excited with the recent announcements from Microsoft because I like C# and the productivity of the .NET framework just not the environments it limits me to. So I will be anxious to see if Microsoft does truly make/allow .NET to run on OSX and Linux reliably without it being a pain in the ass for developers or clients. I am skeptical but hopeful.
My career started in SCO Unix, Solaris and SGI then went to Microsoft for years and finally in the past 5 years I am back to almost exclusively Linux and non-microsoft tech stacks. So I have been on both sides, and can say that each has their blemishes and beauty, but I greatly prefer non-microsoft stacks overall.

Like you, I am limited in some ways because I have kids in school, shared custody of my daughter and also really enjoy where I live, so moving isn't really an option. To make it work I do a ton of remote work and collaborate with people from all over the place.

To get started, just release some simple things into the wild on GitHub or pick your platform. You could write your own tutorial on learning node doing different common tasks, like reading files, writing files, network communications, API definition, project structure etc. It would serve two purposes, you learn how to solve real problems via node, and you help others with that same transition. You could even do the tutorial idea but use iojs (https://iojs.org/) to show how it differs etc. People would like that and you would be learning something of value.

As for remote work, it is doable especially now. Nice part about Javascript in general is even the diehard Microsoft shops will accept node more readily then they would say Rails or other tech stacks. Honestly, it does and doesn't make sense to me why that is but I have found it to be true overall.

If you have time to study, you have time to build a project resume with the technologies you like.

It's not easy, but build a few apps, starting with the trivial and then increasing in complexity.

Is there a node or open source users' group near you? If it is a major city, the answer is probably yes.

Go there and ask folks about node jobs.

Another alternative is to focus on the client side javascript that your work has you do already. Even the MS toolset still uses javascript in the browser.

I would actually say that Microsoft is going in the direction that you want to be in. You may be able to jump a little ahead of the curve, and be in an excellent spot.

Everything from WinRT apps using Javascript for native development, to Windows Azure Mobile Services using Node for cloud code.

Why don't you work on how to bring the new open MS technologies into your area (probably something like back end systems at a credit card bank, for instance)?

With a 15 year .NET background, you'll get taken more seriously than a developer who just graduated from a 10-week MEAN bootcamp, for instance.

Do you live within commuting distance to a city that has more opportunities for the type of technologies you want to use? If so, what I've found is that a vast number more companies are open to part-time remote than full-time remote. You might have more luck if you widen your parameters there. If not then there are definitely full-time remote positions out there. They are just harder to find.

Also I would look for positions with a well-funded startup or a small company (opposed to a large company). They are the best bet for getting to use cutting edge technologies while also allowing remote work, in my experience.

I've never even learned ASP.Net MVC. I'm sticking with ASP.NET Web Forms. But I've done a lot of interesting things with web services and web requests using ASP.NET. Recently I've gotten a big project which requires getting into .NET Components, an enterprise architecture domain space which is extremely challenging.
> you must supercomputer to get descent performance

I find an SSD helps a lot. Visual Studio runs fine until I install ReSharper then it absolutely needs an SSD and 8 GB minimum of RAM.

> How about using text files for configuration rather than overly complex APIs (WMI Providers)?

The Windows Registry is more akin to /etc than WMI is. The Windows Registry is clunky, however at least you only have a single interface to program against rather than one per configuration file which is nice. Even XML doesn't resolve things quite as nicely as the Windows Registry.

Do I wish the Registry was better? Sure. Organisationally it is horrifying and there are some strange bugs and workarounds. However I think /etc style text files are a step backwards.

> How about a proper bash shell (powershell is no replacement)

I agree Powershell is not a replacement for bash. It is in fact one of the best command line interfaces ever designed and leaves bash well in the dust (although bash is a bad example of the best the unix world has to offer anyway).

> how about a proper SSH client?

Putty?

If you wish to use Linux, BSD, or OSX the more power to you. There is a lot of great tech' around on those platforms. That being said, your post reads a bit like a troll, you don't seem to know a lot about Windows and seem to be spouting very bland generic "benefits" of UNIX-style operating systems out of context.

Almost like you read someone else say these things then just decided to repost them to get a rise out of people? Some of your complaints (e.g. Powershell sucks) are pretty laughable. As someone who is quite familiar with both Linux in particular and Windows, it is a hard complaint to take seriously...

find a service vendor then sub contract; they might let u work remotely. after several projects u can be on ur own.
Remote work is easily attainable. Build something of your own, throw it up on Github, and make it nice. That, combined with your 15 years of experience in other technologies, should easily qualify you for a pretty nice position.

Sidenote: it's insanely stupid for hiring managers to disregard people because they have 15 years of experience in the wrong technology. Someone with that much experience ought to be able to learn pretty much anything relatively quickly. If it's a sticking point during the hiring process, I'd bring that up.

Nothing prohibits writing code using Node outside of the workplace.
You may want to check out Mike Gunderloys blog[1]. He was also an MS developer for 15 years before he switched to open source technologies.

1. http://afreshcup.com/about-me/

The grass is always greener on the other side.

Bash is usable, but is a bit of a pain, its scripting facilities are very bad, for anything serious you will probably want to use another scripting language anyway.

Most tech looks quite good from a distance, once you really start using it you will most definitely run into issues. That might be one reason a lot of us are always jumping to different tech without getting proficient in anything.

Also, unless you live on the Microsoft campus and aren't allowed to leave there are bound to be a lot of options available, maybe you didn't find them or you are too focused on node.

You might want to look into Cygwin to get some Unix tools going. Putty is also pretty good. If you need more you can install Ubuntu on virtualbox or any other combination of OS and VM you might prefer.

By all means keep pursuing remote node work, but keep an open mind and don't miss out on easy improvements available to you right now.

I was in a very similar situation 4 years ago when I switched from 100% .NET work in my local area to 100% Ruby/Rails work remotely.

The first suggestion would be to join a Javascript developers meetup in your area. If there isn't one, start one on MeetUp.com. Network with other folks who are interested in these technologies and start collaborating with a few of them on some interesting side projects. You may even find an development manager that wants to hire experienced folks interested in learning Node, EmberJS, etc.

Once you have something significant to shop around to more influential folks, it's just a matter of time before you'll land your first gig away from .NET land.

The only caveat is you should plan to take a pay cut for your first non .NET gig, because it will likely be at a small company or startup and they will discount your experience. Once you have a bit more experience, you should be back to your old .NET salary in no time by switching to a larger shop within a year or two.

Good luck!