You can build a scalable in C#, and if you want to avoid lock-in, put your data in an open source database (I would choose pgSQL). Windows servers aren't that much more expensive if you host in the cloud, and BizSpark makes it free for the first three years. What you want to avoid is being locked into SQL Server, and other proprietary things that get expensive.
To make it scalable you can use different types of storage where it makes sense, use CDN's, etc, all the best pratices for making it scalable.
The best argument against building in .NET would be: How easy will it be to find good developers who code in .NET?
I sometimes feel stuck in .NET. I like C#, and I use OSS alternatives and generally accomplish whatever I need to. I see projects similar to what I build by myself bungled by consulting firms that employ teams of "enterprise" developers to build .NET solutions for a company that my employer partners with. I interact with and/or follow as many of the dev's in the OSS .NET community as I can online, but I have never met another one in person. Because of that I feel like I'm alone. I don't consider myself a great developer, but I'm the best overall developer compared to all the .NET dev's I've worked with in the past decade. .NET isn't bad, but the talent pool there seems to be really poor. I don't know if the same is true in the non-.NET world. It could simply be that great developers are all working for the big & cool companies and startups. Maybe impostor syndrome keeps me from feeling like I'm good enough to jump ship over to those companies.
I think the stigma of .NET has some merit in some areas but is very exaggerated, and while it is prevalent in the dev community, it bleeds over into the business side as well. It actually even gets worse there because business users are even more prone to misinformation. Someone looking to acquire your company will say "Oh, but it's built in .NET. I heard that .NET is: slow/ is really bad / only makes websites with ugly fonts / costs 100x as much / etc." Some of the things they think are pretty ridiculous. Attribute that to the game of telephone that passes the exaggerated hatred for .NET from the technical community as information to the business side, becoming even more distorted on the biz side.
Some of the things biz guys think are rational too. For example they might be concerned about integrating your .NET stack with their ruby/java/python stack. That would be an unattractive proposal to many. Companies looking to acquire might also nix a potential deal because their CTO will be uninformed about .NET. They will automatically think the code was bad, that you're using viewstate and web controls and Sharepoint, and all the other horrible things that people hate about the .NET world. They might be worried about the licensing cost of SQL server. I see no reason to use SQL Server unless you are locked into it by an existing system.
If i were building a company right now:
- I would go ahead and build in C#.
- I feel like I could find good enough C# dev's if i needed to (rather pay senior dev salaries for 3 good-great C# dev's than 5-6 guys who are 1/3 as good but cost 80% as much).
- I would avoid SQL Server, and just design things to be able to use non-MS techs for the critical pieces like the databases/key-value stores, etc.
- I would follow the best practices for perf/scaling
- I'd use a framework like ServiceStack or NancyFX.
To make it scalable you can use different types of storage where it makes sense, use CDN's, etc, all the best pratices for making it scalable.
The best argument against building in .NET would be: How easy will it be to find good developers who code in .NET?
I sometimes feel stuck in .NET. I like C#, and I use OSS alternatives and generally accomplish whatever I need to. I see projects similar to what I build by myself bungled by consulting firms that employ teams of "enterprise" developers to build .NET solutions for a company that my employer partners with. I interact with and/or follow as many of the dev's in the OSS .NET community as I can online, but I have never met another one in person. Because of that I feel like I'm alone. I don't consider myself a great developer, but I'm the best overall developer compared to all the .NET dev's I've worked with in the past decade. .NET isn't bad, but the talent pool there seems to be really poor. I don't know if the same is true in the non-.NET world. It could simply be that great developers are all working for the big & cool companies and startups. Maybe impostor syndrome keeps me from feeling like I'm good enough to jump ship over to those companies.
I think the stigma of .NET has some merit in some areas but is very exaggerated, and while it is prevalent in the dev community, it bleeds over into the business side as well. It actually even gets worse there because business users are even more prone to misinformation. Someone looking to acquire your company will say "Oh, but it's built in .NET. I heard that .NET is: slow/ is really bad / only makes websites with ugly fonts / costs 100x as much / etc." Some of the things they think are pretty ridiculous. Attribute that to the game of telephone that passes the exaggerated hatred for .NET from the technical community as information to the business side, becoming even more distorted on the biz side.
Some of the things biz guys think are rational too. For example they might be concerned about integrating your .NET stack with their ruby/java/python stack. That would be an unattractive proposal to many. Companies looking to acquire might also nix a potential deal because their CTO will be uninformed about .NET. They will automatically think the code was bad, that you're using viewstate and web controls and Sharepoint, and all the other horrible things that people hate about the .NET world. They might be worried about the licensing cost of SQL server. I see no reason to use SQL Server unless you are locked into it by an existing system.
If i were building a company right now: - I would go ahead and build in C#. - I feel like I could find good enough C# dev's if i needed to (rather pay senior dev salaries for 3 good-great C# dev's than 5-6 guys who are 1/3 as good but cost 80% as much). - I would avoid SQL Server, and just design things to be able to use non-MS techs for the critical pieces like the databases/key-value stores, etc. - I would follow the best practices for perf/scaling - I'd use a framework like ServiceStack or NancyFX.