I was reading the article about "Why Startups Could Use .NET, But Don’t ". Essentially the article says that it comes down to culture.
I don't want to start a holy war, I just want to know the core reason start-ups would be against using .NET could it really because of culture?
I mean StackExchange was built on .Net right from the beginning, which is now one of the top 200 sites in the world with millions of visitors. Obviously this proves .Net is a very capable platform. I would be curious to know if S.E. would have had the same success or challenges if it had been built with other technologies.
If you are a start-up and you're against using .Net, what's your reason for dismissing it?
Although my current startup DOES use .NET (because we're all mostly MSFT people by day), a previous one did not.
The main reason was cost.
Finding a reasonably priced slice/virtual from a good provider is very tough.
If you decide to buy a server, you have to make special decisions as to what flavor of hardware and software you buy/install.
Server 2008 is pretty expensive unless you stay with one of the lower options.
SQL Server 2008 is VERY expensive unless you stay with Express ($free). Express has limitations on the memory and database size and CPU supported.
Pre-Azure, there was really no "cloud" for .NET/MSFT hosting. And I'd say that Azure sucks (even as a MSFT partner, I say it sucks). The development model for it blows. But that's a different subject.
Another good (likely non onstartups question) is how does a startup that wants to use .NE/MSFT technologies limit their licensing and capital expenditures.
There is a stigma attached to anything Microsoft. As the article says, its a cultural thing.
Please remember that
There is another side to this. Not everyone is so much deciding against .NET as they are deciding in favor of another platform. I am not anti-.NET but my background and my contacts are on other platforms. For those who grew up with PHP or Rails or Java or something else, it might not be a conscious choice against .NET but rather just a lack of considering it.
I'll add one other thing that is somewhat related to the others - MS is a technology that is mostly shunned in colleges - thus the linux stack and OSes are more comfortable and thus the development tools of choice for the recent grads are not MS based.
Many startups are skewed to younger founders and employees, thus another reason for the bias in startups.
(The bizspark and other programs were a way for MS to address some of the issues. They finally saw the danger of the open source development stack.
Ballmer's "Developers developers developers developers developers developers developers" rant/speech becomes void if you lose developers.)
NOTE Given the nonsense arguments in the comments and in the answers I do have to point out that the choice of OS and development tools has almost NOTHING to do with the success of the company or product. As long as there is no complete mismatch of technologies then the overwhelming considerations for success or failure are the people, the execution of the idea and the relationships with customers. I have rarely, if ever, seen a project fail because of a choice of technology stack.
I assumed the original question was not meant to start a religious war, and I am giving it the benefit of the doubt. Unfortunately it seems to be headed that way.
The main reason: Vendor lock-in Choosing .NET means vendor lock-in with Microsoft, both for development as for servers. Mono is just not compatible enough to be drop in replacement.
Server market is dominated by Linux. If you're startup interested in cloud hosting, there are plethora of Linux based ones, and only a few Windows ones. And if some platform offers both, Windows is more expensive (for example with Amazon EC2 standard instances its +50% to the price). Of course MS is trying to address that with Azure. But that means you'd be getting even deeper into vendor lock-in.
On the other hand, if you choose different technology, you have your options wide open. You can run Python, Ruby or even PHP on about any web server there is. You can develop using any tool stack you like. On any developer OS.
Your question assumes startups (or most of them) do not choose .NET as their technology stack and this is incorrect.
While it might be true that most startups that visit this site might not be using .NET as their technology stack, it is also true that the reason is not cost, or culture, or dislike of Microsoft but instead the fact that most startups will use whatever they have experience with, whatever they have immediate access to, because that is what will help them get their product out sooner than later.
The idea that startups do not use the Microsoft stack because of the high cost makes no-sense. Microsoft has always offered ways for starting companies to get their development tools, and server licenses at a very low cost, that is a fact.
The vendor lock-in argument is also not valid, because the same apply to any technology stack you choose to use. While some technology stacks might not have a license cost, they all will cost you money, in the way of support, learning curve, difficulty to find experienced people, etc...
My personal opinion about "what technology stack to use for my startup" is, use whatever helps you get your product out the door quickly, nothing else. The technology behind your product is not what will make your product either a success or a failure, period.
My guess is that most startups that use .NET were founded by people that had previously used Microsoft technologies in a larger enterprise setting.
The younger generation of startup founders, without enterprise software experience, are probably using the same technologies for their startups that they used as hobbyists: Rails, Django, Python, Linux, MySQL, Postgres.
Startups DO use .NET, actually. I know quite a few .NET-based startups and I even co-founded several NET-based startups, including my main software business (in my profile).
The reasons we chose (and keep choosing) NET over the alternatives are:
You have also got to consider the available workforce for your development team. One of the reasons MySpace failed where Facebook became wildly successful is tied to the amount of talent that either company could find for developing the product. Consider the following:
In a lot of ways the MS/.Net platform is the very best available tool for the job... if you are willing to pay for it. And let's face it, Facebook, LinkedIn, Wikipedia, and hundreds, if not thousands of other successful programs have come from PHP.
Turn the question around. Those that have gained enough experience with .NET (Usually a requirement before getting into a software startup is knowing how to program.) are not as likely to venture into startups. Most get this experience on the job working for medium to large businesses. I'd like to see some numbers on what people were doing before their startup. Not that there aren't any people who switched from the corporate world of .NET shops, but this is a huge pool with a small percentage who ever leave.
If you are fresh out of college, worked at a university, have been working with an open source project or were with a previous startup, you're less likely to have used Microsoft products. If you have to spend the time to learn something new, you don't want to take on the additional cost.
A large number of startups are iPhone/Pad app developers; you have to go the Apple route.
Microsoft's BizSpark campaign is trying to combat this by making the cost of entry into their development suite less expensive.
There's a lot of cr@p being posted here about the supposedly huge differential between building a start-up atop Windows vs. *N*X.
This is not necessarily true.
Rackspace virtual machine hosting for Windows instances is $8 per month more compared to (otherwise identical) Red Hat instances. If you want to host a cloud/web-based solution, there are a ton of Windows hosting providers offering everything from shared (@ $2.99 a month) to dedicated hosting (@ $150 a month) and everything inbetween which should allow you to find a solution to fit your needs and budget. Explore some of the options here: http://www.microsoft.com/web/hosting/home.
Also, take care to do your own research - don't mistake the ignorance of others as actual reality.
For example, Azure is, increasingly, a really kick-ass infrastructure. The enormous investment Microsoft is putting into this infrastructure & the associated tooling is now really starting to pay off with the introduction of the Azure CDN, eventing & pub-sub delivery network, elastic scalability and availability, etc. And if you wish, you can host .NET, Win32, PHP, Java, Ruby and anything else you can run in Windows within your Azure instances too.
In general, the costs for your hardware, software and licenses are going to be dwarfed by your costs for legal, HR, accounting, travel, marketing, rent, supplies, etc. If they're not, chances are that you're doing it wrong! Buying all your founding members MacBook Pro's so that they can write Ruby/PHP/Perl, for example, is just stupid.
Building a start-up with astronomically high IT costs is only going to lead to ruin, but investing in tools and technologies that reduce your time to market (e.g. Visual Studio) is often money well spent. I've spent a lot of times in Eclipse, NetBeans and XCode recently - they don't even come close to VS when the going gets tough.
Augmenting some of those investments with judicious use of additional free and/or commercial offerings (e.g. Mercurial/GIT, BitBucket/GitHub source private/public hosting, an effective task & bug tracking system, etc.) is wise and effective.
Regarding .NET on non-Microsoft platforms, I have been VERY impressed with Mono of late - particularly the platform-specific bindings to iOS & Android that Miguel & Co. created in the now sadly defunct MonoTouch and MonoDroid (thanks Attachmate ... not!).
I'll be one of Xamarin 's first customers when they ship their new products to replace the now defunct MonoTouch and MonoDroid and I plan on contributing to Mono where I can. Being able to reuse a very significant portion of my code across PC/Laptop, Windows Phone, iOS, Android, Linux, OSX, BSD is a wonderful thing.
Mostly due to:
From my experience there are pretty clear cut reasons people don't use .NET. There's no doubt that .NET is capable and awesome, scales really well and is a dream to use, however the following issues prevent it from becoming more widespread;
One reason is that IIS is really not that good. Seriously, it's overengineered and fiddly and not as performant as one would like to be. So if we assume that IIS is out of the window, then you suddenly do not need Windows! (Windows is a requirement for IIS.) SQL Server, you say? Seriously, a startup is far more likely to go for a MongoDB+Redis combination which means, again, Windows is not required.
As for the front-end technology, yes, lots of people are doing Rails, but lots of people also think about HTML+JS single-page-AJAX solutions and let's face it, it doesn't really matter what you serve this with, so long as you can keep some RESTful back-end to consume data from.
So the only attraction that remains is the C# language (yes, you can use it with Mono, but still). And I'm not sure if the language alone is enough to sway people towards building .Net-based startups.
.Net platform is strongly related to Microsoft workstation. On most of the startup i've been, developpers have the choice of their system, and often they prefer to have a powerfull workstation with a linux in it.
Futhermore startup founders choose technologies based on the cost, and often, they choose a classic [L|M|W]AMP stack wich is powerful and easy to develop.
Lastly asp .NET is just a me too of php by microsoft, it benefits of huge investment by microsoft, but is still a technology supported mainly by a private company. Developpers of libraries and other stuff for the technology, should not invest to much in it, as they are not sure it the company will continue to support it.
In term of cost, i cannot be more accurate than TheBAdDawg
StackOverflow is the only website i know which is built on ASP.NET, if you think about website buildt with PHP technologies, there are plenty : facebook, wikipedia, wordpress
First of all, lets get one assumption out of the way -- if you're using .NET, then you're using a Microsoft stack. And if you're not using Microsoft, you're not using .NET. No two ways around that one.
So the real question is, "Why don't startups use Microsoft in their server environment?"
Well, the simplest reason is cost. Using Microsoft tools costs more -- it costs more to license, it costs more to maintain, it costs more to scale, it costs more to manage. Microsoft servers are more difficult to automate, they lack some of the more advanced performance tools, they lack the diversity of options found in the Unix world, and dozens more reasons.
As someone who manages server setups for startup companies (both Windows and Linux), I can tell you that the ones who use Windows have more trouble cause because they use Windows than the opposite for Linux users.
While .NET is a great platform and C# is a great language, the fact that you can't realistically run it on a Linux server makes it no longer a viable option for savvy developers.
For us, the answer was agility . You don't know if anyone is going to use your product/service. You will make numerous changes to the database schema, classes and functionality of the site. I think the easiest way to deal with the unknown but certain changes is to use Ruby on Rails.
Coming from a background in C#/C++/PHP/Perl, it didn't seem to be a great idea to try a whole new technology. But Ruby on Rails is all the rage in San Francisco, and there is a good reason: it is easy to make changes. It's designed for everything that makes the programmer cringe and for everything that you didn't plan.
Interesting question. And yes, Stack Exchange is awesome.
It's not about the startup, It's about the community. There's this connotation in computing that .NET developers embrace the closed-sourcing philosophy, thus making their software resources not available for everyone. Startups would gladly go into technologies which they know they can get great talents that indulge in a full sharing community.
Yeah, S.E. is a great project and many domains have already implemented it like Answers.onStartUps.com and askubuntu but wouldn't it be nice if SE is a deploy-anywhere platform like wikis and wordpress?
Let me offer a bootstrapper's viewpoint. I have previous experience on Java (<10 yrs) and C# (2 yrs), but I still decided to use RoR for my startup.
Why? Productivity and because RoR is de-facto for SaaS.
You'll get things like SaaS authentication and authorization almost out-of-the-box and if there's anything you need tutorials for, they are easy to find and target SaaS-specific problems. You'll get Heroku and tons of different services that are easiest to integrate with RoR apps.
Now, it may be that I have to rewrite my apps with Java or C# later, but I rather spend that investment of time after I know that those apps can earn me money.
When I'm building my MVPs and searching for product-market-fit, I need the extra productivity and flexibility that RoR gives me. I still like Java and C# better than Ruby, but I think we should pick the tools to match what we do - and RoR matches building startups quickly.
Well, you could point to costs and you'd be right, but that is only a small part of the equation. If you look at hosting just at rackspace you have $16/month vs $160/month (If you want SQL Server Web). That is a factor of 10x right there. And a 1GB windows server is going to have serious performance issues where a 1GB linux server will support a pretty hefty load. Rackspace server pricing. Bizspark gives you for 3 years what Linux gives you for life. What about when you need 1000 servers? And if you use Linode like we do, you save 50% on what Rackspace charges making the cost factor 20x instead of 10x.
Developer tools are worth spending for, but you don't need Visual Studio, unless you are targeting MS products. We have purchased very good tools for about 25% the price of the Visual Studio that do exactly what we need.
A Linux server outperforms a Windows server on I/O. We have both types of VMs in our shop, and both types of Hypervisors. Windows loses on disk I/O on BOTH Hypervisors, and our Linux hosted VMs on openstack are at least 2x faster on I/O. Linux needs less RAM to do the same things as well. I'd say more bang for the buck, but I'd get a divide by 0 error on the cost of Linux.
But my primary reason for not using MS products is Trust.
They want you locked into their platform, where you can't go elsewhere. Face it, they only make money if you buy their server software; until recently the only divisions of MS that turned a profit were Office, and OSes, XBox recently began turning a profit as well, but the cash cows are still Office and OS.
When you do your startup on MS, you are getting into bed with one severely mean operator who has the money and muscle and the proven lack of scruples to do anything they want to squash you like a bug. Do you really want to fund someone that could easily decide to run you out of business?
I read that C# is really a pretty nice language, that it has some really nice features and that you can supposedly run it on linux using mono which is only a few versions of .NET behind. Our experience has been that it is slower to develop on, adding months to development. Maybe it's just our people, but we came from a MFC/C++ environment to .NET and things got slower to develop. We've since moved to Python and Django as we move to more web based products, and productivity has soared.