Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Where did the Microsoft tech stack disappear? (michaelscodingspot.com)
84 points by eadmund on Aug 1, 2018 | hide | past | favorite | 144 comments


Excluding 77 of the results because they were PHP and so probably "weren't software at all" is silly, to be polite. I understand the assumption is that they are probably ecommerce frameworks or WordPress sites but a) that's a pretty bad assumption and b) for an eCommerce framework, how is that not just part of the stack like any other framework? They are never off the shelf solutions at that scale, and surely it would be interesting to note that a majority of the top 100 were using a particular framework in the stack.


All the more condescending considering some of the biggest software companies in the world (such as facebook) use PHP.


Yes, slack uses PHP as well...


What Facebook use these days is a long way away from PHP. Hack is quite different in various non-trivial ways.

The more typical “99th percentile” PHP is not used by any of the biggest tech companies to deliver their core products.


> Hack is quite different in various non-trivial ways

[citation needed]. In what non-trivial ways is Hack different to PHP?

Of the three distinguishing features highlighted on https://hacklang.org/, PHP has two (the exception is generics, which I don't think PHP has added... yet).


Hack has async.


PHP7 has closed the gap on Hack quite a bit.


Yeah; the few people crazy enough to try to switch to Hack from vanilla PHP in the past few years just went to PHP 7, which is faster and fixed a number of the gripes devs had with PHP.


> The more typical “99th percentile” PHP

What does this mean?


Facebook basically doesn't use php anymore. It is a minority and dwindling part of their codebase


Matt Mullenweg mentions in a recent interview with Kara Swisher that Facebook run most of their non-facebook.com sites on WordPress nowadays.


they use a lot of php, look at the requests on the site, also phabricator is in php and they use it a lot.


Just because a file as the extension .php doesn't mean it is. Facebook has liekly moved a lot of things around and rewritten a lot, but wanted to keep the same URL paths.


true...Zalando and Facebook use PHP but they aren't worth for this classification.

That's blatant bloggging


Blogging isn't technology? You can't start a company based on writers? Have you not been following tech very long? Blogging is way bigger than Uber and Airbnb combined.

But to actually get to the point you want to talk about, I worked at a startup in 2009 that was a microsoft shop. We committed to some version of .net/visual studio, paid for a bunch of windows server licenses, built multiple data centers, etc etc. So it did happen, at least one time.


I do not think HNNewer implied that what Zalando and Facebook do is blogging, not technology. It's more a pick on OP author's discount of PHP, as it is used by companies, big and small that actually do software.


It didn’t, it’s the backbone of a lot of enterprise companies and organizations that aren’t primarily focused on tech. Like most of the European public sector.

Coincidentally, companies that aren’t tech companies rarely share their tech stacks, because why would they? Technology isn’t what they are selling and IT people are the guys who tell you to reboot every time you call them, even if that’s not really true.

Take the municipality where I work as an example. I manage several software developers, and we’ve build around 400 minor systems and services over the past decade. Last year when I was working on my masters in public administration I discussed our in-house development with one our eight CEOs. This is the guy in charge of efficiency, which is where my digitization department resides, and while he knows me and what my department does in general terms, he was surprised to learn that we develop software ourselves.

It’s different for Netflix and Airbnb, because they are tech companies and I’m fairly certain their CEOs know that they employ actual software developers. ;)

That’s the public sector, but look up Volkswagen, Maersk or similar and notice how they don’t have entries?


It’s the licensing. It’s always been the licensing. The cost is untenable for startups (and yes I’m aware of the various bizspark and developer offerings). Those special deals are awesome in the beginning but they have nasty teeth when you’re two years in and you’ve just started to get traction and out of the blue you need to pony up for sql server or windows licenses.


The whole "stack" thing is dumb as hell to begin with. Just because someone is using Linux, do they have to use Apache MySQL and PHP? Just because some is using Windows, do they have to use IIS, SQL Server and ASP? Where do Go, Rust, C++, serverless and containers fit into these handcuffs? Why can't someone run netcore on Linux? Why would someone use SQL for all their database problems?

Stacks are an incredibly bad idea and need to go away. If you organically end up with LAMP because those technologies were best-in-class for your problem, then great. Use the best tool for the job, else your solution is categorically enterprise.

"Stack" is merely an FOSS euphemism for enterprise behavior.


I agree in principle but in practice stacks end up "organically" being chosen as defaults regardless due to the benefits of having an active ecosystem. Tools that are technically better but not actively supported end up being sidelined by popular tools everyone knows plays nice with their chosen framework.


The best tool for the job depends on which other tools you are using, synergistically.


I could never understand this point of view. Can you elaborate?

Windows tax amounts to about 30% bump in AWS ec2 costs. Typical CRUD startup will have their costs dominated by payroll, not hosting. If I can get my engineers 3% more efficient at the cost of making my hosting 30% more expensive I will do this in a heartbeat.

What is the situation where you experience onerous Windows tax?


> If I can get my engineers 3% more efficient at the cost of making my hosting 30% more expensive I will do this in a heartbeat.

How do you quantify engineers’ productivity? A Java or a Python developer (much easier to find than a .NET developer) will be a lot more productive in Java or Python. And it is not a universal fact that .NET developers are more productive than others. Python developers would argue the other way round.


Who said anything about universal facts? I said if my engineers will be more productive then I will make that choice. Note the “if”.

Point is - if a team is more productive using python they should use python. If it’s c# then they should use c#. Licensing cost doesn’t figure into the decision. People who complain about exorbitant licensing cost leave me confused because I do t see those costs.


And my point is — how do you, as a startup founder, judge whether .NET — or any other platform, for that matter — increases your developers’ productivity by N percent? You certainly don’t have the time or resources to build the MVP on every major platform and measure. More often than not, startups go with whatever their first few developers are comfortable with.

And, once you have started with Java/Python, why would you want to spend your money on licensing costs AND .NET developers who, from personal experience, often tend to be more expensive and harder to hire than Java/Python/Go developers?

Licensing costs don’t matter a lot if you already have a team that is proficient in .NET. It’s a Catch-22 situation. Why would want to spend money on building a team of .NET developers in the first place unless you have some hard evidence that using .NET is going to help your business significantly?


I say this as a .net dev, but when I look at hosting stuff for myself, the few extra dollars influence my decision.


Why do you think they will be more (as opposed to less) efficent? Also, particular stacks attract a particular type of developer, and some are better than others. In particular, a lot of the ones that are good have been switching to Linux for the past decade and a half, and once you do that, going back to Windows is such a non-starter. It also doesn't help that Windows dev work typically pays substantially less.

Stacks also have the varying number of "batteries" included, and on Linux, the Microsoft stack comes with very few "batteries".


SQL Server/Windows Licenses costs shouldn't really be a problem if you've factor them into your business plan and expenses. The businesses that get into trouble are the ones that naively assume software is free.


SQL Server and Windows licensing are actually major inhibitors, even at large enterprises. We have to manage our VL/CALs conservatively to control costs.

Wanna spin up n VMs for production / distributed computing? For Windows, you have to license each VM, whereas with Linux, the incremental cost of another node is nearly 0.

(Side note: I had high hopes for container support on Windows Server 2016 because unlike OS's, containers don't require individual licensing. Unfortunately Windows Containers are still immature, and are ironically second-class citizens in the Microsoft ecosystem compared to Linux containers)

Wanna spin up a n database servers? A single SQL Server (Enterprise) instance is pretty pricey (and it's licensed per core, minimum 4), whereas Postgres is free for any number of users and any number of processor cores. You want several replicas of your SQL Server? It is $$$. With MySQL, every replica is free license-wise (there are other costs of course).

The cloud has changed these calculations somewhat, but if your infrastructure is on-prem, Microsoft licensing can be prohibitive at scale.


Do not forget — Microsoft licence costs also increase with the number of CPU cores in your server.

In addition to costs themselves, Microsoft licensing is a highly complex topic. One of my colleagues who deals with Microsoft jokes that someone well versed with MS licensing deserves a PhD. A lot of people simply don’t want to deal with all that when they have a thousand other things to worry about.


And because of the cost the accountants demand tight centralised control, which ends up being slow and unresponsive, and you find yourself spinning (emailing, writing business cases, managing and reporting expenditure) instead of doing. It is a huge negative.


The horror! Fill gazillions of forms in triplicate and get them approved before we’d let you do anything useful.


The problem and the cost is not just the licensing. It's also the logistical overhead and the complexity tax.

Imagine a parallel world, one where you could spin up Windows and SQL Server installations with ease and you just get a bill at the end of the year for your licensing costs, with easy payment and financing terms. If that were the way things work (and it is to some extent for the cloud, one reason why azure is so popular) then it wouldn't be terribly bad to deal with MS technology. But in large part that's not how things work. Instead you have to deal with the overhead of finding out exactly what you need (do I want Windows Server 2016? what's the advantage of getting the Data Center SKU? do I want SQL Server clustering? etc.) then you have to go out and buy it, install it. And then, after all of that, you have to occasionally put up with Microsoft barging into your business and doing an intrusive audit to make sure you're not stealing anything.

Compare that to the alternatives out there. If you have a big beefy server you can spin up a VM host and infinity linux VMs, you can run as many copies of nginx, postres, and all the other great technologies out there that you want. And you don't have to be burdened about the complexity of licensing, let alone the cost. When you are paying developers 500, 1000, 1500 bucks a day that complexity cost, and the opportunity cost from not just feeling free to experiment and try things out can easily be more expensive than the actual licensing.

I love C#, coding in VS with the .NET stack behind you almost feels like cheating or like "easy mode" because there's just so much available to you and so much you can do trivially in that world which takes so much work and pain with other tech stacks. But ultimately the truth is that nginx is pretty much just a better web server than IIS and linux is a better platform than Windows, especially for services. Docker on windows is light years improved today compared to where it was a year ago, but it's still an also ran compared to Docker on linux. The Microsoft platform just doesn't have the edge it used to, which makes it hard to justify the cost.


The "new" Microsoft and .NET Core has solved much of the licensing issues and burden. Direct support for MySQL/Postgres and containerizing your app is only like 3 lines in your Dockerfile.


The problem of Docker on windows isn't a matter of the size or complexity of Dockerfiles, it's everything else. You can easily have images on windows that are tens of gigabytes and take hours to build. I'm not talking about "crazy, psychopathic examples", I'm talking about running stuff that are examples that Microsoft itself publicizes on official websites. That sort of thing simply doesn't happen when you're dealing with linux, it's just a much better experience all around.


No one is (practically) using Docker on Windows. It’s all Linux and .Net Core is built from the ground up to be a first class framework for Linux.


To be fair, building the average Windows Container image doesn't usually take hours -- that sounds like an unusual build. However, it is true that Windows Containers are very heavy compared to Linux Docker images, and for the most part they aren't production-grade (yet).

The microsoft/windowsservercore image is currently ~10-12GB.

The lighter-weight microsoft/nanoserver image is ~600MB, which sounds more reasonable, but there are certain limitations.

Compare this to the Alpine Linux Docker image at ~5MB.

It takes significantly longer to provision an Azure Container Instance (ACI) running a Windows Container than a Linux Container. That said, if you need to run Win64 or .NET Framework binaries (say from a proprietary vendor), Windows Containers are your only choice... else you have to spin-up a full blown VM.

That said, .NET core running on Linux containers and connecting to open-source databases are a reasonable alternative. Devs tell me that .NET core itself is still pretty new so while it works for the most part, teething issues are to be expected.


Agree entirely. However docker for Linux running .net core is a good option.

Automating Windows is the biggest cost in these environments. It’s just not worth the hassle because even on the best of days with the best tools at hand it barely works.


They can be problematic if your growth doesn’t exactly match what your licensing growth plan is.


You shouldn't be in business if you don't know what your growth will be. That is all part of your business operation's and deployment strategy.


You might know exactly what your growth will be and realize that you cannot afford to license certain software after a certain point.


How do you figure in the chance that some birdbrain from Microsoft is going to call you up and demand that you participate in a "voluntary" audit of your license compliance, which you agreed to as a term of your Windows license agreement? I know many of you don't really remember the 90s, but Microsoft was and is evil. I wouldn't touch anything from them, or Oracle, with a ten-foot pole.


If you're going to go down that line of reasoning you are going to find out that no company is trustworthy, especially those at the top.

Microsoft is much easier to deal with now vs the 90s precisely because they are no longer the top dog and know they have to compete with the FAANG companies for many of their offerings


Last I looked, MS volume licensing terms were just as bad as in the early 2000's ; If you want the 50% discount, you have to agree to an external audit of any MS software.

The licensing is even more complex than it was.

I have no statistics about them being "easier to deal with", so I'll take your word for it; But they still hold the same power once you sign, and can use it at their discretion.

No company is trustworthy, but some are much less than others - a few at the "trustworthy to be evil" level.


Honestly if some licensing is that problematic, your start up is doomed from the get go. Granted I will never use Microsoft products or service again because they just aren't my style or very good. That minimal cost should be the least of a startups concerns.


That's such a silly SV mindset. Not everyone wants to raise a boatload of vc.


I grew up in Wisconsin, not exactly the heart of sv. The fairly minimal costs of servers pales in comparison to actually running a business. If licensing and servers are a cost issue vs normal business expenses. You are not going to be around very long


Depends whether you use Oracle or not


What licensing? You can develop in VS community edition (less than 250 PCs and 1 M$ revenue) and deploy to Linux. You can use any DB you like with that.

bizspark has been cancelled last year because of too much abuse - MS offers alternative program only for startup incubator alumni.


> deploy to Linux. You can use any DB you like with that

I don't think Linux or "any DB you like" fall within the OP's definition of "the Microsoft tech stack" that disappeared.


You forgot this part:"In non-enterprise organizations, up to five users can use Visual Studio Community."


Yep, we had to ban VS Community because it really isn't community (as in, lacking some features but free as in beer) but hobbyist. If you want to use it, budget for VS Pro.


If one could bet money & not just time/effort/knowledge on tech stacks, Microsoft's would be a great discount right now.

They've been employing large amounts of very well known devs to become dev advocates in every popular language/field out there.

Visual Studio Code has overtaken Sublime & Atom as the most popular text editor in just about any demo I see in most front side web development.

MS is now friends & compatible with many of the other cool tools out there. MySQL, PostgreSQL, Linux, etc. A lot of demos I see use .NET with PostgreSQL on Linux.

If you've never used Visual Studio's Full IDE or Azure or the .NET framework, you're missing out on some huge productivity gains. I use JavaScript more than .NET. I'm better at JS than .NET by far. I really dig hosts like Netlify. That said, if I need to spin up a MVP for a project, it's faster, better quality & easier with VS, Azure & .NET for me at least. Startups really underestimate this one I think.

From what I've heard, it's also a great platform with Xamarin for mobile, with Unity for Games, etc. Add on the experimental work going on with compiling to Web Assembly & the .NET framework has a great chance to be running anywhere & everywhere.


> If you've never used Visual Studio's Full IDE or ... you're missing out on some huge productivity gains.

I've yet to see anything standard Visual Studio does better than Netbeans or JetBrains tools (besides language specific things) but I am yet again willing to be enlightened if someone can explain it to me.

Background: I have months of experience with Visual Studio (more if you count back to school), months on IntelliJ and years on eclipse and Netbeans.


Visual Studio / C++ 6.0 (from 1998!) was by far the best C++ environment at least until 2013 came out (The last version I used was VS2012) - You never had to wait for it even in 2000, when I first used it, and definitely not later.

VS2005 (or 2008? can't remember), which I had to switch to because for x64 work, was unbearably slow and unresponsive in comparison -- although the general standards of responsiveness have come down, so today it might not be so bad (see, e.g., Atom, VSCode, everything JetBrains compared to old-guard Sublime)

From my only-slightly-nostalgia-tinted experience, I would correct GP's post to say "If you've never used VC++6 full ide" ...


I didn't want to comment on the others because it's been years since I've used Eclipse or JetBrain's IDEs. They were sluggish back in the day but so was Visual Studio. They made me jump to Sublime.

The latest release of Visual Studio has performed very well for me as long as I avoid ReSharper (somewhat ironic). Fortunately they've included a lot of those features in the professional & enterprise versions.


> If you've never used Visual Studio's Full IDE or Azure or the .NET framework, you're missing out on some huge productivity gains.

We recently switched from VS2017 to JetBrains Rider at $dayjob.

The productivity gains from NOT having to wait around for VS (slowest UI contender in my opinion once your project gets sufficiently complex) were off the charts.

This statement may have been true a couple years ago, but it no longer is (at least in my opinion).


My company sells dev tools to software companies. Whenever I have talked to a startup about their tech stack and they reveal they’re on .NET, I later find out that none of the founders are technical, and they’ve outsourced development to Eastern Europe or India.

This is not to say that a startup founded by technical people couldn’t be successful using .NET; I just haven’t seen it.


I’ve been making a living in the MS world for over 20 years. But, when I started focusing on AWS and cloud hosting in general, the Microsoft Tax becomes real. I see how much more costly Microsoft is than a Linux in terms of licensing and resource requirements.

Besides, with AWS and all of the services being hosted, the only servers you really have to manage are your own app servers.


Of course you're paying the AWS tax now...


Either I pay the AWS tax or I pay the colo tax and either spend time doing netops or pay someone else to do. My hourly rate is much more than I would pay AWS to do the "undifferentiated heavy lifting" (https://joshlowryblog.com/2013/12/12/undifferentiated-heavy-...).

And there is the whole global infrastructure thing for regional redundancy.


I'm not saying its not worth it to use AWS (or GCE etc), but depending on your scale it can be quite exhorbitant, and you get quite dependent and coupled to those externally provided services.


You're always dependent on something. It's like the developers who use the repository pattern because they don't want to be dependent on Oracle/Sql Server, etc. Your entire enterprise is built on top of your infrastructure. You're not going to just change out to save a few dollars. The costs and the risks are too great.


Maybe not startups per say but.

- jet.com uses F#

- stackoverflow is C#

I don't get why a startup couldn't just use .net for the application layer hooked up to a MySQL or Postgress backend. The drivers for both Db exist so someone must be doing it.


I work with C#/.NET but if I had to start from scratch I wouldn't use it. With a lot of platforms you are a second class citizen with .NET because most APIs get released as Java, Javascript or Python. The .NET version often comes much later. After working with MS for 20 years I am also not convinced they will sustain long term what they started with .NET Core.

With a startup I would stick to open source. It's the more vibrant and reliable option.


Really surprised on your comment when it has so many amazing things going for it.

- state of the art language features from .net (linq, async&await,powerful generics)

- Multiplatform runtime and SDK, even development is great via Vscode + omnisharp.

- MIT license

- llvm backend via Ryu jit compiling straight to machine code (Wow!)

- unparalleled language server capabilities via Roslyn's API, even available on Linux / Osx via omnisharp.

And more stuff I'm not thinking of. Almost everywhere you turn .net is the toughest beast in the arena if you exclude ecosystem. I don't see how you could possibly think it doesn't have a fighting chance.


Compared to popular open-source options like Python, Javascript, and Java:

- Linq is great but less unique than it once was, and almost everyone has async and await (or some equivalent) now -- javascript & friends and python almost exactly, and Java has a wealth of options in this arena.

- .NET is "multiplatform", but clearly second-class in terms of tooling and perf on non-windows platforms.

- Congratulations on the open-source licence?

- This one is legit, but other languages do some pretty interesting stuff too

- VS might be ahead in this regard, but Java IDE's aren't far behind, and even the dynamic languages are starting to get really impressive tooling.

I have used and liked .NET, but I have no need to pay the premium it imposes. .NET is just another very capable platform among very capable platforms -- and then throw in the single-ecosystem thing.


People who think Linq is "less unique" think of Linq as just pretty syntax to work with collections.

No other language that I'm aware of has duplicated the fundamental power of Linq -- expression trees.

Expression trees allow you to express your query logic in Linq and let a provider at runtime translate that expression tree to SQL, MongoQuery, REST calls, etc.


Well, C# LINQ inherits laterally from F# which pulls it from a long tradition of ML languages, which in turn inherits it from granddaddy Lisp and it's OG code-is-data-is-code principle.

I agree that most people that think of LINQ as "just another set of collection functions" miss the "code-as-data" bit that can make it truly shine, but .NET isn't the only place that can be found. The most unique thing about it is that C# was the first ALGOL descendant deigning to add some modest code-as-data chunks to its compiler. ;)


Congratulations on the open source license because..

> Compared to popular >> open-source << options like Python, Javascript, and Java:

Even in your comment you can see there is still that stigma that separates .Net from the rest of the languages. .Net core has many non MS contributors. It truly is a project in the spirit of open-source.


> - .NET is "multiplatform", but clearly second-class in terms of tooling and perf on non-windows platforms.

I agree, and we found this out recently the hard way.

For example, the CoreCLR does NOT build on 32-bit Linux as of now [1]. While our software has absolutely no reason to complain (and doesn't on Windows!), we can't target 32-bit Linux users.

[1]: https://github.com/dotnet/coreclr/issues/9265


I am very much a .Net fan and have been using it for most of my work for the past 10 years and with .Net Core, I can leave Windows without leaving .Net. Technically, I think .Net Core is better than the reasonable marketable alternatives in every way.

But, when you look at the jobs that are out there, while there is no salary difference between .Net and NodeJS, at least in my market, there are a lot more jobs from well funded small companies for Node. Besides, JavaScript isn't going anywhere because of the web. I plan to stay up to date on C#, but also add Node to my tool belt - just to increase my options.


C# is great, no question. The Roslyn stuff is also great.

But if you also need other libraries or systems then things get thinner. For most cloud providers that aren't called Azure the .NET support usually is behind. A lot of popular libraries are either written in Java, Javascript or Python with maybe an outdated unmaintained .NET wrapper. Most CI/CD pipelines are not geared towards .NET.

To me MS is a warm cozy place but the open source world is more chaotic and much richer.


I'm using AWS, the SDKs for the most part are in lock step with Boto3. The SDK for Python.

There are a few gaps like troposphere for cloud formation.

What do you mean most CI/CD platforms aren't "geared" for .Net? Which CI/CD platform are you using?


I was looking at Jenkins a while ago. All samples were for git and PHP, JavaScript and others. .NET, TFS and windows just felt like second class citizens. You can make it work but I feel that the main work is done for things other than .NET. Same for AWS.

C# is a fantastic language, .NET framework is good but in my view the ecosystem is too weak.


I’ve seen companies do it for years. There is both an MSBuild plug-in and an Nunit plug-in for Jenkins.

I really hope no one in 2018 is using whatever Microsoft’s old version control system is with TFS. TFS has had first class support for git for years.

As far as AWS, using CodeBuild and CodeDeploy, AWS has provided a .Net Core Docker Build image for Linux for awhile (https://docs.aws.amazon.com/codebuild/latest/userguide/build...)

They just recently added Windows support for CodeBuild, they have a prebuilt image for .Net Core for Windows and they have instructions for how to create a .Net framework image (https://aws.amazon.com/about-aws/whats-new/2018/05/aws-codeb...)

I had never used Docker before and I was able to create the .Net Framework Docker image following their instructions.

For deployment, AWS has a code deploy agent for Windows and Linux. There is no “support” for any language. Just a yml file that you use to specify the batch files/Shell scripts you want to run during each stage. Actually the same is true for CodeBuild. You just specify the commands you want to run in a yml file and the output srtifacts.


Sure you can make things work. My original point was that if I had to start from scratch I wouldn't use .NET. What would be the advantage of using .NET over open source stacks? I just don't see why I would want to do that.


You "make things work" with .Net the same way you "make things work" with any other language. In the case of Jenkins, you choose the correct plug in, in the case of AWS, you choose the correct Docker image.


Lotsa FUD here.


I think it help if you added some substance to your comment.


.NET Core is open source and is the flagship development environment for Microsoft. They have no other alternative and have publicly announced multi-year roadmaps and support agreements spanning nearly the next decade.


I hope they will stick to it but after seeing what they did with Winforms, WPF, WinRT and Silverlight I have my doubts. We'll have to see.


So much irony.


This probably also depends on when the startup was founded.

A 2018 startup choosing .Net is very different from a 2005 startup choosing .Net, IMO. (I would place a higher likelihood/possibility of technical cluefulness on the latter.)


Is that...bad? I mean, the point of a startup is to start a business, not to write code, isn’t it?

I’d bet that there are many startups that don’t need technical founders, and many who have them are building technology that isn’t really differentiated. One thing that is important is obviously fine-grained control over the business, so I could see how outsourcing might make that slightly harder to manage.


> Is that...bad?

For Microsoft and .NET community — yes.


Depends on the startup and product. Assuming the product is software, not having technical talent and outsourcing means the quality of the code could suffer. The problem with this is if the company/product grows it can be harder to work with in the future.

Even if one outsources, having someone doing reviews, QAing the code being introduced and setting guidelines on what’s production quality code is a good thing. This could also be outsourced to someone else though. Doesn’t have to be a founder.


Not only fine-grained control, but as they grow they need to consider the cost of growing and maintaining a system built with antiquated tech.


Do you mean with antiquated? That the APIs aren't changing on a weekly basis and you can concentrate on developing instead of updating your code?


Homie.com is a startup. We use .Net (C# specifically)


.NET is fine. Visual Studio is the de-facto IDE.

Microsoft's problem has always been Windows. Software made for "A PC on every desk" doesn't fit so well into a wall of servers running the internet. They should have gave away Windows Server for free. Heck they should do it now. It should be as free as .net core.


Why would they give away a product that creates a substantial part of their revenue?


Why install an Exchange server when I can use Office 365? Even Microsoft is cannibalizing their server offerings. Everybody is moving that stuff off prem. Windows server licensing doesn't make sense off prem.


Everybody is moving that stuff off prem.

Even if that does happen we are nowhere near it yet, there are a lot of servers out in corporate offices and will be for the foreseeable future. If this wasn't the case then Microsoft wouldn't be releasing new versions of Windows Server.


I agree we aren't there yet, but I could see maybe a new sku? Windows Cloud Server or something similar. Windows Nano Server supposedly fits this bill, but businesses are going to want the real deal, not the stripped down nano version.


.NET is demonstrably a great environment (judging by effectiveness) and licensing is hardly an issue since .NET core. So it must be partly cultural. First of all, unless you have macbooks, you're not really a startup. and if you're a new developer who needs to pad out the CV, naturally you will be attracted to the most buzzwordy tech stack available - if it isn't dockerised scala->graphql->redis->whatever so you can code while you code, nobody's gonna hire you afterwards man.

Also that awkward, sad reaction when you reveal to other burgeoning developers that you work in .NET


In 2008, I looked at where the market was going and decided to tie my horse to Microsoft, .Net and enterprise development. It’s been a good ride, but it’s clear that JS is eating the world. I’m slowly moving over more toward JS and Linux. I am taking a brief detour to Python and AWS though.

I’m not touching Ruby. There are jobs for it but they don’t pay well.


> I’m not touching Ruby though. There are jobs for it but they don’t pay well.

Source? I know I’m an N of 1, but I just got hired to work on a Rails app and the pay and other benefits are pretty competitive...


To add to your sample set, I'm a rails developer and also get paid handsomely. My salary is higher than it would be for a C# or Java dev of the same experience. There's a shortage of rails developers in my area I think, but plenty of C# and Java devs.


It seems like different languages top out at different amounts. For instance, a junior PHP developer may make the same as a junior .Net/Java/NodeJS developer, but the PHP developer is going to plateau long before the Java developer.

But they are all going to plateau if they don't get some architecture/team lead/full stack skills.

I think I have maybe a good three years before I plateau as an individual contributor. At a certain point, no one is going to want to pay me more without forcing me to lead a team (been there done that didn't like it) or becoming a consultant.

I'm not saying it's impossible to make at the top of your market with Ruby, but the odds are stacked against you.


I think that Ruby has lost its “cool“ factor whereas .NET is back on the rise due to the release of .NET Core and TypeScript, so a lot of people have moved away from Ruby which leaves those of us who still have an interest in it to fill in the gaps.

It also seems like every year we hear that “Rails is dying”, but I don’t think I’ve seen those claims materialize. It’s maybe not as popular as it was 5 years ago, but I’m not hearing any death knells.


Not saying anything about Ruby in particular but you never want to skate away from the puck unless you’re near retirement and want to make some quick bucks - like people still writing COBOL.


Probably not in the same salary ballpark as that of a C# developer working on a line of business app for an enterprise shop.


According to the Stack Overflow survey results[0] Ruby actually comes out ahead of C# in terms of average salary. It’s also ahead of JavaScript.

[0]https://insights.stackoverflow.com/survey/2017#top-paying-te...


There is a balance between number of available jobs and the pay. Go is the top paying job but you may find yourself being unemployed for awhile or stuck at a job you don't want looking for Go jobs.

Ruby may pay more but once you get to the higher end of the scale, you'll find many fewer jobs paying the amount you want.

EDIT:

In 2008, after being at one company way too long, I was what would be considered a top C developer and there was a company offering me $20K more than I was a making. But I saw the pickings were slim. There were more jobs paying the same amount for “Enterprise C# developers”. But I wasn’t qualified for them. I took a job paying only $7K more than I was making as a high entry level C# developer.

10 years later, there are no jobs in my local market paying $65K more than I was making in 2008 for C or C++ developers. There are some paying C# developers that amount (I have one).

I’m not bragging. According to all of the data I can gather, I’m making the median for my market for a “.Net Architect”.


That seems totally reasonable (and I don’t see your sharing some experience as bragging).

I guess my point is that high salaries aren’t limited to .NET and Java jobs. I guess I’d also challenge the idea that a Ruby job paying $100k+ doesn’t “pay well” (outside of SV anyway). Fast food doesn’t pay well. Working in the higher levels of tech absolutely does. My very first job was working the drive thru at a Taco Bell, and it still blows my mind when I think about how much I make now... (also not bragging, just trying to add some perspective).


It’s not just about pay. For instance, I could go into management. There are a lot of reason I don’t want to. But one reason is that managers seem to get “stuck”. It’s not as easy to leave because there aren’t as many jobs for managers and if you are forced to leave, it takes longer to get a job. I can have another C#/Java/NodeJS job within two weeks (if I was qualified).


I am sure if the website included majority of fortune 500 companies, then .NET usage would reflect favorably (it still won't overtake java but it would be up there).

There is a place for technologies and associated stacks where the demand exists. The whole .NET and Microsoft ecosystem is super useful for large enterprises who have plethora of data and somehow need to accommodate employees who are both IT and non IT (think of typical IT Business Analysts and scrum masters and product owners -- they are usually involved with microsoft-based tools as I find it).


When people say "Oh but now Visual Studio is free for small scale use, .NET core is officially supported on linux" etc. I really just have to ask one question:

So what?

This whole conversation somehow reminds me of the old iPhone vs Android conversations about 5-6 years ago when Android phones started catching up on iPhone in features such as non-lagginess etc. and people were like "So now Android has it too and you have no more excuses not to change to Android now!"

Well...hahah...it doesn't really work that way. Even if Android could do everything that iPhone could...why would I still change? Why would I see all that trouble just to gain _NOTHING_. It's same with MS tech stack. Why would I change from tools I know and trust to MS stack when it would take time and money, but I wouldn't get anything?

In addition MS has been fucking over people for about two decades and just because they have been seemingly friendly for last few years why would I trust them?

Also if one were a software engineer, more or less experienced, and was thinking what tools to use, what do you think? Would he pick the tools used by top engineers and tech companies or embarrasing enterprise tools designed for senile bankers and municipality sinecures who are afraid of tech and want to use tools made by big company they have been repeatedly told since 1980s?


I don't think the MS stack is going anywhere. It's true that startups tend to avoid MS due to the (real or perceived) high upfront costs and its general lowness on the hipster curve, but once you look outside of SF/Bay Area it normalizes out, and you'll find plenty of .NET/C# jobs at tech/software companies in whatever city.


Now that .NET Core exists, it is possible to develop on the .NET stack without licensing fees (By hosting on Linux and using an open source database) or using a third party implementation (Mono).

It remains to be seen whether this will help it gain traction with more companies or not though.


Yeah but why bother? Unless you have some legacy code and are forced to use c# I wouldn't waste my time anything Microsoft.


There's an overwhelming majority of developers who recently majored in CompSci or went to Bootcamps that have never touched a Microsoft development ecosystem, let alone Windows before. Schools/Camps are mostly teaching Python, JavaScript, or Java although that's starting to change now with .NET Core being open-source and cross platform and being one of the fastest frameworks out there on TechEmPower Benchmarks.

I founded a startup on the Microsoft tech stack (.NET Core, VSTS, and Azure). Why? It's an incredibly productive dev/tooling environment that Java/Python/AWS doesn't even come close to. The downside? It's really hard to find good C# talent that isn't stuck in an enterprise development mindset.


> It's really hard to find good C# talent that isn't stuck in an enterprise development mindset.

That's also the reason I avoid Java personally, I find the language alright but the community around is kind of "enterprise" focused.


The flipside is also true; as a C# / MS stack focused developer myself, it's quite difficult to find satisfying work that isn't enterprisey, and it seems to be mostly because Microsoft isn't Cool.


The only thing "cool about a company is that they deposit money into my account every two weeks. I don't look for "cool" jobs.


Do you like your work boring?


After developing professionally for over 20 years and as a hobbyist for 10 years before that, there is nothing "exciting" about software development. I don't hate my job or my career by any means, but at the end of the day, it just funds my lifestyle.


That's fine, but plenty of us choose to work on systems we find intrinsically interesting and/or on problems we consider important. Sometimes that comes with a financial penalty. Personally, I'm happy to get slightly less money in exchange for more interesting and meaningful work.


The cost is something too. I enjoy developing in the Microsoft environment, but by using Microsoft you actually have to pay for your tools.


Like in other professions! What a strange thing!

I enjoy being paid to develop software, so I also want the producers of my tools to be able to pay for their bills.

I wonder how may that use FOSS on their business actually pay/donate anything, even a penny, to the developers.

My experience consulting says pretty much no one.


When I started work engineers has $10k RISC workstations and $50k/year in software licences, we did external training regularly. We were expensive, and mgmt were loathe to waste our time on crud because of that, and because we delivered. Now they talk about cloud synergies and ITIL processes and outsourcing and tech partnerships -- tech costs WAY MORE but devs/engineers aren't seen as delivering value. No one pays anything for the open source that makes it all work. It's enough to make you want to run away and join a startup.


> It’s really hard to find good C# talent that isn’t stuck in an enterprise development mindset.

I’ve found that C# devs manage quite well in F#, and the ergonomic way of doing things is sufficiently different to break people out of the 3+ levels of inheritance I’ve seen some small C# projects devolve into.

That said, the community is smaller.


> It's an incredibly productive dev/tooling environment that Java/Python/AWS doesn't even come close to

Could you tell me what the Windows/C# stack has that the aforementioned stacks don't?


It's a statically typed language meaning it's much easier to refactor using guaranteed safe automated refactors and there is a whole class of errors that will be caught by the compiler (unlike Python) and its overseen by a competent company (unlike Java)


There is some really excellent tooling that is available for .Net that I haven't been able to find real equivalents for other languages. You have to pay for it with money, rather than with time and aggravation, however.

Microsoft-centric devs seem, on the average, to be less averse to paying for software tools than your average Python/Java/JS dev.


"There is some really excellent tooling that is available for .Net that I haven't been able to find real equivalents for other languages."

Care to give some examples? I keep hearing this, but I don't see those awesome tools when working on .NET projects.


Visual Studio is really unmatched, with all of the things that it can do. I still use Resharper and a few other plugins to tweak things out just the way I like them. You could do all this with a customized vim or emacs or whatever editor, but the learning curve is much lower. And while visual UI editors tend to be a trainwreck, the VS ones are about the best.

RedGate makes a really nice .net performance and memory profiler. One of the things I haven't seen elsewhere that it does is being able to drill through any ORM libraries to see the SQL that is being generated and executed against your databases.

LinqPad is a REPL, but it does intellisense, Nuget integration, rich output options.

It's generally just a little bit more finish and usability than OSS options


Having recently finished university, we needed to use C, xC, C++, JavaScript, Java, Python and Haskell. Nothing Microsoft there at all.


Microsoft is doing their darnedest to own JavaScript as a language. TypeScript + VSCode is making inroads.


It's weird that the author would include Shopify in a list of companies that don't create their own tools.

Shopify is one of the most prolific technology creators in the tech community. Their CEO was on the original core Rails team and is directly responsible for several common libraries and concepts that have been picked up by other tools.


Netflix too. Fairly certain they develop a fair amount of their own stuff in house.


I've been developing with .NET since 1.1. The initial appeal of ASP.NET WebForms was due to the fact that you could build software similarly to the way you build Windows desktop based apps. State was managed in an unmanaged environment. You didn't have to worry about varying browser capabilities / quirks due to the lack of standardisation at the time.

Fast forward a few years and all of a sudden you have browser standards and amazing MVVM frameworks. Everything you needed ASP.NET for was no longer required.

I still work on enterprise .NET systems and it's no surprise as to why startups look to alternatives. Sure the tooling is amazing but so are many of the other tools out there. After using simple web frameworks like AdonisJS I see no real reason for building your service layer (let alone your app layer) in .NET.


I'm not sure why the author is surprised about Ruby. Rails was the darling of startups for years and is probably still a common choice of backend.

This data is also rife with bias: stackshare isn't representative of startups let alone companies in general.


Also, Ruby has Jekyll which is probably close behind Wordpress (php) in terms of usage by blog/ecommerce.


More damning to me is that the stack components in a couple examples that aren't languages, such as databases (MySQL, Postgres, Mongo, Cassandra, Elasticsearch, etc), cache fabrics (Redis, memcached), tooling (Chef, Puppet, etc), data pipelines (Hadoop, ELK, etc)...

None of it is written in .NET except for interface drivers. Java, the butt of all jokes, is responsible for a number of the key stack components, and C++ might not be a lingua franca of the startups, but foundational components are written in it.

Can someone name a major OSS project/tool/database/etc that is written in C#?


I think a lot of it is that there just aren't as many developers that know it compared to the other tech stacks.

Part of the reason for that is that if you're starting out as a web developer trying to build stuff for fun, you're probably not picking .NET as your tech stack when there are options that are freer (both as in beer and in speech), easier/cheaper to deploy, and have a more active online community that can help you if you get stuck.

And ultimately, if you're a company that is picking a tech stack, you ultimately need to hire people to work with that stack, and it's a lot easier to find people that know Node/PHP/React/whatever than it is to find people that know .NET.


.Net Core is fully supported on Red Hat Linux.

If it gains serious traction, that could change the development landscape for a fair chunk of Enterprise development.


Why are Javascript and Node.js different here? Especially considering this is back-end only. Who is using Javascript on the server without Node.js and how? I think they should probably be combined and if so, you would see absolute dominance by Node.js


C++ is alive and well at all those companies, yet the bar chart shows zero. This immediately makes the rest of this “data” suspect.


You were downvoted pretty quickly, but I agree with what you're saying: I don't trust this data. Out of curiousity, I searched up Apple. Of course I got Xcode, Swift, and Cocoa…but not much else. No mention of the hundreds of technologies Apple uses to keep its services (Maps, Siri, iCloud) running, no mention of even Objective-C, which probably outnumbers lines of Swift code ten to one. It seems like this website is just a collection of public perception about companies' tech stacks rather than being an accurate source.


Not sure if you need to work at a company before you can submit the data, but it also seems like this scans the website and GitHub repos you give it to identify the stacks.

This seems like a bad source. Specially if anyone can submit a company they don’t work for and only use the url scan feature.


As a Microsoft and all the closed-source software hater, I feel reassured


I understand the hate on Microsoft given the recent abominations they produce (Windows 10, "improved" version of Skype, etc) but why the hate on closed-source software in general? People need to eat too.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: