Ask HN: Are Microsoft development stack and Azure a dead-end career path?
1) Microsoft dev stack is really a dead-end, any new startups or even large corporations starting new initiatives are more and more are moving away from any kind of MSF tech or Azure cloud development, and 2) no developer really wants to work with MSF tech.
I have lived in the Microsoft world my entire career, although MSF is increasingly open source/polyglot. Also, I spent a couple of years doing node.js, react, salesforce dev and integrations, Heroku, etc. I found it a breath for fresh air in some ways but lacking in others. And I have to say that I do 'like' working with C# and Azure and the rest, but I am at the point in my career, and with the market the way it is, that I could still possibly make a move and not take a major hit salary-wise, but I probably not for too longer.
For context I am approaching 40 and live in a major US city in the southeast, and I do not have an interest in going into management.
146 comments
[ 3.3 ms ] story [ 227 ms ] threadYour recruiter only cares about fields that can get candidates placed. Of course he needs to drop hot buzzwords to get people interested.
Secondly, some recruiters are liars who will tell you literally anything to try to get you to apply for jobs they're recruiting for. A recruiter saying MSFT stack is a dead-end just means they don't have many MSFT stack jobs on their books. If they had one they'd put you forward for it, and not tell you that they think the stack is a dead-end.
MSFT's stack is not going to disappear any time soon. It's growing just like all the rest of the industry. There's definitely no harm in learning other things, but don't write it off if you want to carry on with it either.
Based on my own experience, you probably don't. They tend to be legacy companies in low-growth areas and lower pay.
It's also worth noting that a lot of consulting companies focus on Azure. This is because of perverse incentives, but still worth noting.
So much so they will have you go through the job process to meet their targets or even when they know better candidates are being put forward.
They employ so many unethical tactics it's best to always check with the company directly if the role still exists.
We work with many recruitment agencies and having seen and heard what I have I no longer would take any at face value if I was on the other end.
Sounds like typical recruiter-speak to get you to ignore others and take one of their jobs.
This has been my experience as well, and on both side of the fence (as a potential hire and as a recruiting manager).
In both case, this does great harm.
I really miss my windows phone :(
It's just that at large scale it becomes noticeable, small orgs can float through unnoticed.
Plus, few competent people like working on it, they prefer sexy open source things, it means it's easier to stand out.
Hardly a way to have a happy career, but surely a way to have a happy (and early) retirement.
The node/react world tends to be more popular with younger companies and startups.
You'll find overlap in these worlds but it is a hard road to go against the overall direction of a market. It'll limit opportunities but can be done. It's up to you to figure out which is more suitable. But it's not a dead-end. If you're looking around and noticing your peers aren't into the same things you are, you may be trying to go against the direction of the market. You could try changing your peers.
Eh, both of those sound equally terrible.
By conservative I mean not rushing into new shiny things all the time, finding out later down the line that it isn't fit for purpose and having to rewrite it. If anything they are the other way round (too much .NET framework dev still going on IMO). The JS ecosystem is terrible for this and I find it really frustrating.
I would agree though that it is seen as quite an uncool stack and I don't see many startups use it, which is a shame as .NET core really changed the equation for me on the whole stack (I really disliked having to use windows server before).
However, there are still an enormous amount of corporates and SMEs that use it, so I can't see the work drying up. Often the pay is better as well at these firms than startups (but probably less chance of a big equity payoff).
I am in the Houston area btw.
In short, Microsoft has the best B2B software sales engine that has ever existed. This has been true for at least 30 years. It’s the main reason for their success — they know how to get people to pay for their products. It’s not the flashiest tech but it’s enough of what their users need, and the sales engine makes doing business with Microsoft easy. AWS has a lot more friction in their enterprise sales process, so they rely a lot more on developer inertia and word of mouth.
But there are plenty of solidly middle-class developer jobs in the IT departments of traditional companies, and a robust ecosystem of small consulting firms all around the country; I would guess that your best bet for optimizing lifetime earnings on the Microsoft stack is to grow some business savvy and start one of those.
Maybe at Microsoft?
MS stack will be high quality and used by clients with $$$ for the rest of your career.
With that said, any serious non-MS shop will be happy to have your experience and so switching up stacks shouldn't be a problem either if you find a good team.
I would just apply broadly and go from there.
As someone who has used the MS stack, I have yet to witness anything I would call high quality.
It has regular improvements and is LEAGES more well-design than JavaScript and I'd say Java.
Sure, it's no GO, but it is ever evolving.
Blazr is relatively new compared to Microsoft's other libs but I'm sure in 5-10 years, it will be solid. It took .net core years before it became decent.
I've yet to experience a MS product that I would consider to be "high quality" (including Azure)
random incomprehensible error messages, near constant UI timeouts and terrible UI performance and experience (artifact deployment has been "skipped"? why? no way to know), etc
the Windows VMs are also extremely slow compared to my employer's non-azure VM, with the Azure VMs having double the VCPUs, disk IOPS and RAM (despite having the same "stack" deployed on it)
The VM speed I can't comment on.
Most aren't. Some are. As with all software/ecosystem providers.
I imagine in two or three hundred years though we will have moved past COBOL completely. That being said the idea of some future advanced civilization trying to wake up some old programmer from cryo sleep so they can decipher an ancient mainframe that is still somehow running does make me laugh!
And i thought dot net has never been as popular as now.
Simple search: https://www.zdnet.com/article/programming-languages-this-old...
:)
Likewise C# has been around for a while, sure companies may move away from it, but it will always be used, but again someone who can do C# are probably in a good position to pick up another language as well.
From what I can see Microsoft stack is used mostly by enterprises that are not engineering centric.
For all of the largest engineering centric companies that pay top of market only one heavily uses Microsoft....and that is Microsoft. Furthermore most VC funded startups also tend to shy away from Microsoft stacks. (Exception being parts of Azure compatible outside of the MSFT stack and other polyglot tools like VScode)
So while I don't think you need to worry about employability I wouldn't recommend investment in the stack to new graduates. Obviously my perspective is limited so I'm curious to hear counter points.
Firstly, I guess we can ask whether Azure is genuinely the Microsoft "stack". Most Azure servers are Linux and the services they provide are mostly web, ML, RDBMS related. I don't think that's what the OP had in mind.
If by the Microsoft stack we mean Windows, SQL Server, .NET etc. Then it's definitely looking more and more dead end. In the past few months I've been working with MS tech a little bit again, getting back into a bit of Windows development. It's a mess. I am constantly left astonished by the state of internal decay that evidently exists inside the Windows divisions. Basic subsystems have serious bugs, even after being pushed for years. Their docs are a mess. Their platform is absurdly complicated - look at the schemas for an AppX manifest for an example [1]. UWP and Windows Phone are deprecated/gone yet references to it can be found everywhere. The recommended way to write Windows apps is still C++. The most exciting things they're doing with Windows are upgrading the command line support to match what Linux was doing 20 years ago. dotNET is some kind of mess with many forked versions, a language that's behind Kotlin and a runtime that's behind the JVM. And the problems just continue.
One thing that becomes clear when you look around is that very few people are really writing Windows apps at all nowadays. They exist, but they're mostly older codebases. Their attempts to move beyond Win32 have mostly tanked for this reason - the people who would once have been writing against the new APIs switched to cross platform tech.
So in this regard I feel it's a dead end stack, yeah.
[1] https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uap...
Where I'd disagree strongly is dotNET being a mess of forked versions, the language being behind Kotlin, and the runtime behind the JVM.
The DotNet versioning annoys me, but it is actually straightforward. The Windows-only framework stopped at v4, then cross-platform Core began at v1 and now we've reached the point where Core v6 is just DotNet v6 because there is no non-core alternative at this versioning point. If you set aside naming/numbering confusion, you have a forward-moving framework up to v4 being overtaken by a rewritten cross-platform framework catching up then replacing it. There were some mishaps on the way, but this is not a mess of forked versions it is actually a pretty fast deprecation and replacement of a huge system with a massive high quality effort.
As for the main DotNet language, C#, it is generally not considered to be behind any other language out there. Perhaps in some areas different approaches have been taken when it comes to syntax, structure, tooling, but it is a very well designed language that is professionally respected, advanced, and innovative.
As for the runtime, it really isn't behind the JVM. It is supported on fewer platforms, but those it is supported on are very well catered for. Including not needing a (shared) runtime at all as builds can produce single binaries too, as per Java.
So no, the problems don't continue.
I do wonder if your recent experience of it may well be true, but is influenced by it being Windows development. Outside of internal enterprise tools, the main work is on the web/network (not Windows) and that's where it excels.
I agree it's not really a bad stack or dead end for writing Linux web servers, but I wonder how many new projects are adopting it at this stage.
I'm going to counter this anecdote with my anecdote. I have spent roughly half of my time in the boring world and half in the HN "sexy" tech world. 25 years of programming experience and have had immense failures and some pretty good successes.
Unquestionably, the sexy tech people were—and to this day are—worse technologists than the boring enterprise software people. I have worked at two unicorns.
One of things I believe to be true (and which is probably offensive but here goes) is that the sexy work is a direct result of over-financialization of the sector. It's a form of signaling: "Hey, our business model is so successful we can afford this shitty niche technology and hiring too many people."
There is a direct correlation between people using trendy yet mediocre technology and comments like "let's be practical" and explaining why your software can be worse than it is, because those companies don't actually need technology. As well, the people that manage those organizations are not particularly impressive because they need large groups of people to scale. (It's also why people like a16z can have the gall to claim 10x devs is not a thing, because if it were, the SV model of get-big-quick and hiring huge amount of devs with big capital and unsustainable unit economics would not be a successful proposition.)
Since the late 90s, the governing model has been: "Hey, that's cool what you do. But have you thought about putting it on The Internet?". It's the Portlandia bird sketch but with Put a Web On It. Apply this to Big Data or ML etc. This model has been very good for growth, but it requires absolutely minimal technical expertise.
I absolutely agree with your opening statement about the flashy new operations usually being crap engineers, but cannot follow any of the rest or see ho it supports that assertion.
Or what little I can parse, seems backwards from my own experience.
For instance, the most I hear the word "practical" is to justify doing something inefficient but safe, ie use a microsoft product or service and accept it's limitations and cost, or some other safe inefficient choice like vmware before azure was a thing, etc.
So it doesn't support the idea that it's something the ignorant kids say, OR the opposite that the better engineers say it, it's just sort of a non-sequiter or something.
Personally I've grown to hate the word even though of course one has to use it and it's a valid concept to be practical. I just see it way over used to justify predictability over goodness.
The manager types don't really care about advancing anything. They do lip service to the idea of making more money by making something more efficient, but really any change at all is worse than any promised gain. Really they would love nothing better than to just keep cranking the machine they have now exactly the same way forever. They only change by force when the machine stops producing.
Sure, I hear you and I've experienced this too. I've been on nightmare ASP.net spaghetti code projects that would be good fodder for programming sites. VB projects that are a stitched-together set of tools with a frontend full of a million buttons, etc.
But on the flip side, have you never worked at a company full of Ruby/PHP/Python engineers that have trouble getting their software to build and run correctly? People with billions of dollars who find the prospect of putting something on a web page—for a business model that has existed for a century—challenging? I have many times, and it's a reflection of how insular that segment of the industry is that they don't find anything weird about this.
In contrast, there's an army of JVM engineers out there that don't spend any time on HN because the JVM solved the problems HN talks about 20 years ago. They don't need to talk about it or consider it "news" because it isn't. For instance, the technical level of InfoQ is whole echelons higher than here. This is not to disparage the very real benefits that the "Hacker" mentality has provided to the world. SV are accomplished business and product people, and they've managed to impress the world with the type of organizational scale they can deliver. But technical it ain't.
Ohhhh yeah. Yes.
How much of that was a result of companies wanting to use Linux server-side and MS not supporting it?
I was simultaneously an open source advocate (using FreeBSD 3.0) back at the point when NT4 was supposed to take over the world, and using VB and the Microsoft JVM. Back then and still today there's a lot of cruft with the MS ecosystem.
What I'm getting at is if you look at truly advanced software and what might be called "engineering" practices, there seems to be no correlation with marketing hype. Cosmos is to me the most advanced cloud NoSQL database out there feature-for-feature. I think Citus is the coolest sharded database in its particular space. C# has been pretty advanced relative to say Java for quite some time. Windows systems engineers did in fact know quite a lot, despite all the crud they had to put up with the endless parade of new MS features. The best ops person I know that built a huge unicorn that runs on Linux uses Windows as his laptop when everyone else uses Mac.
There's a bad habit in tech news of looking at the success of a company and equating it with the talent or technology choices of the engineering team. Very often, successful businesses provide enough padding for unsophisticated trendy technology to fail without consequence to the business. Likewise, many low-margin, crummy businesses are only around because they have high tech talent which can compensate.
So many businesses and governments are using the stack that it is going to be around for quite some time even if it isn’t the new hotness.
C# for non-backend scenarios is a different story; no charts but IMO it's been going downhill since WinForms (WPF, UWP, Blazer, etc. all dead in the water).
In general MS still seems like a safe bet given how tightly it's integrated across many large corporations.
From a carreer PoV, you'd better experimenting with everything
Being vendor locked is no good, it prevents you from adopting opportunities quicker than your competitors
>> From a carreer PoV, you'd better experimenting with everything
This is not great advice either, especially once you're more senior. Experimentation is a great trait, if it's intentional and directed. Otherwise you're a magpie who leaves a messy trail in your wake.
If you think Azure and a lot of what MS is producing today is vendor lock-in you've never used AWS or GC. The MS developer experience is still superior to any other single company.
To the recruiter's second point: It sounds to me that, like most recruiters, they only interact with people inside the zoomer web dev bubble. Sure, MS and Azure aren't sexy, knowing them won't get you free drinks at Silicon Valley parties, but the software development world is much bigger than that.