Let me break down my concerns about Microsoft's tech stack.
Very few desktop applications are surviving the mobile and cloud migration. Though VB.net still has takers in context of those legacy application who don't want to make use of the Java for desktop.
It's very strong but often tied to Windows server. It's yet to be popular on linux server. There are few desktop based application making use of it but Node and Electron can pretty much replace it.
Considering how expensive the ASP.net is still today in 2018 compared to PHP. I don't see why any company would still want to invest in this. PHP and even node with express is much cheaper and maintainable over ASP.
I find azure platform extremely expensive for developers who want to build on side projects. The reason being Dot net core is not matured yet to deploy on say digitalocean and other cloud platforms. And Azure is not really worth it after 12 months of free service as the usage prices rise quickly compared to other cloud hosting platforms.
Though I am not completely discarding .NET stack, I find C# more faster and easy to deploy than slow RAM hanging java code.
What's still worth it in my opinion -
- VS Studio and VS Studio Code
- C# and Dot Net Core.
- Other testing and management VS tools which I ignored above.
I know I may not be viewing things correctly but what's your opinion on Microsoft's tech stack (including any service which I have listed and/or missed).
Do you think new developers and the college or university or even mid aged developers should invest their time into microsoft stack in 2018 onwards?
Oldest comments (14)
I have very narrow experience as I've only worked in financial services but your standard commercial bank is heavily invested in the Microsoft stack, specifically C# + SQL Server since we're so dependent on Excel and Outlook. Type C# in glassdoor and you'll be amazed by the diversity of open positions. After speaking with some friends, it appears that most non-software companies depend heavily on the MS stack as well.
I'd say that if you want to cast a wide net in the job market, Microsoft products are still a great thing to have on your resume.
I would treat Azure as a separate topic, compared with AWS is coming strong from behind.
As for the .NET stack, you have to be more specific, what is your career path? In what industries you want to work? What kind of projects? How many jobs there are in your area?
Because you didn't specified any of these, I will answer from a statistics point of view, No.
Less popularity means less jobs available, less career opportunities, less projects to handle and so on.
If you want to be more specific, like in banking industry, we may have other answer. Except for VB.net and ASP.net, I will say no regardless.
"Less popularity means less jobs available, less career opportunities, less projects to handle and so on."
What you're not mentioning here is that "less" isn't necessarily a problem. "Less" than a helluva lot is still a lot. I've been working as a C# .NET developer for a whopping 7 months, and my LinkedIn inbox gets about 3 or 4 unsolicited messages per month from people looking to hire. This has been going since my second week on the job.
Might there be less C# jobs than JAVA jobs in the market? Sure. Will you struggle to find work as a C# developer? I seriously doubt it.
Sure, but in a small city, less could means there are only 3 jobs compared with 30 in Java, and that could be a struggle.
Less in a small industry could be the same.
Anyway, learning a strong type language like C# is a strong addition in any developer arsenal.
I think different stacks have different popularity by region. Here in Stockholm (and Sweden in general) nearly every job listing is for either a JS full stack type position or C#/.NET. Java is way less popular here. So OP should definitely check their local listings first.
Whether it is 'worth it' is dependent upon what you want to achieve. Are you looking to get a job from this learning investment? Are you trying to broaden your knowledge by seeing how different technologies solve different problems? Are you just looking around to mess around with something new for the fun of it?
My read of your post that you are focusing on the first option, to help landing a job. In which case, as others already stated, it really depends upon if the companies using these technologies are ones that you want to work for. In general C#, ASP.NET and the Windows platform are more popular in the Enterprise crowd, not so much for startups. If you want to work for startups then focus on technologies popular with them, which tend to not use the Microsoft stack. If you want to work where-ever, as long as its good than focus on what's the most popular.
As a former hiring manager I do want to point out one thing that less experienced people sometimes gloss over; technology is always changing. So even if you are really good with the technology that your prospective employer is currently using, that doesn't automatically mean you'll be as good with whatever they are using in 6 months, a year, etc. Depending upon the place they put more or less importance on that adaptability.
The reason I think this is relevant to your post is one of my favourite personal example of this issue, which is kind of the opposite of your question. Years ago my team hired a developer whose main experience was C++ with some C#. He had never written a line of Java in his life. What was his first big feature? Design and implement a complicated drag-and-drop dashboard UI...in Java. And you know what? Not only did he do a fantastic job, we weren't that concerned he wouldn't be able to. Why? Because his background and experience had taught him enough about OO programming and software design patterns that a brand new language barely slowed him down.
So to loop back to what I think your question is: is it worth it to learn MS technologies when you don't think you want to work for companies that use them? Well, one reason to do so is to prove that you can learn new technologies and that you are not a one trick pony. Whether its from MS or not is beside the point.
I wouldn't write them off. Azure is the second leading cloud provider, behind AWS and as such, many enterprises are using it. For example I currently work at IBM and we use Active Directory in Azure for auth as well as we use Azure for provisioning user workstations. Before IBM I was at Verizon and they used AD as well as ASP a lot for internal sites.
As an unpaid Microsoft shill, know that my opinion is bias but for web, I have bet all my chips on C#, ASP.NET Core, Linux Containers and Azure.
As for hosting on platforms other than azure... C# and F# on .net core top the performance for langauge choices on AWS Lamda, and since you can deploy .net core applications to containers, you can run them anywhere that runs containers... i.e. Any hosting service worth using.
From what I've noticed, a lot of the people moving to .NET Core aren't coming from being .NET Framework windows devs, they're coming from the node/python world hoping to run scalable services in the cloud.
My TL;DR answer would be 'yes' but I'd like to point out some issues that I think you got wrong:
It depends a lot on where you want to work. I'm mainly talking about the US job market here.
If you want to work on the cutting edge, work for the 'cool' tech companies and so forth, you won't find much so far as Microsoft goes.
However, if you want to work within the much larger corporate IT world, then the Microsoft stack is a lot more common than anything else else. There are a huge number of in-house legacy applications that businesses depend on daily.
For example, where I work, a 20 year old VB6 app that's been patched and enhanced nearly to death is what keeps products going out the door. There is also a patchwork of C# .NET apps, desktop and web, running. Keeping them running is more important than replacing them. This means that the service API replacement project moves along very slowly. About 3/4 of our sprint capacity is spent on supporting these legacy applications. Many companies are in this situation and this creates massive opportunities.
For someone of middle age and beyond, having this skill set is a significant hedge against the rampant ageism in tech. This would also apply to women and non-Asian minorities who also face significant discrimination in the 'cool' tech world. For people who work on offshore teams, knowing the Microsoft stack creates considerable opportunities when US companies can't find enough people to fill contract roles.
The main reason I stay on the Microsoft stack is F#, and I highly recommend it. There's not another functional language I can point to that strikes as even of a balance as F#. The performance of Kestrel doesn't hurt either. Visual Studio is a great IDE. Otherwise, I'm not a fan of their UI stacks like MVC, WebForms, WinForms, WPF, etc.
.NET - your platform for building anything.
That's the tagline of Microsoft. With the launch of
.NET 5.0now its more cool platform to build anything with one language
C#, in some area
.Net Coreis more faster than
Java. You can watch below Video to know about latest improvements and future plans : youtube.com/watch?v=mS6ykjdOVRg
Javaalso has more Job opportunities. So anyone new to programming can learn
Javaas mostly they are same in terms of syntax, and then in between you can switch between two as required in your career.
Why C# ?
C#is more maintainable and has more tooling support with
VS Studio and VS Studio Codewhich makes developers life easier.
Any programming language can dominate the future, So always have mind to learn different tech stack. Finally always use the right tool for the Job.