Silly question, but me and my co-founder are building a startup, and we're going to do our web app in ASP .NET simply as my co-founder is lightning fast at it.<p>We're pretty confident in our choice (80% of our business is going to be a mobile app anyway)...but it begs the question, why aren't there more startups that use ASP .NET?<p>What are the major drawbacks that dissuade hackers from developing in ASP .NET? Is it the cost? Performance issues? Frustrating development environment? Lack of a Hacker community? They didn't learn it in their CS courses? All of the above?<p>Reading pg's essay on what startups are really like (http://www.paulgraham.com/really.html), he doesn't mention choice of technology stack at all...would this be because the choice is not nearly as critical as the other aspects to startups?
This matters about a zillion times less than "where are my first customers going to come from?"<p>The only thing I'd add is that you should pick the tech that keeps you focused on the question above. If you're spending a week setting up environments, spending a lot of time learning new skills, digging around to get configuration files tweaked, installing patches, etc? Every second you spend on stupid shit like that is another second you should be finding customers. So the only tech advice I have is to not let the tech get in the way of getting started. I think .NET can work wonders for you, as can any platform. It's not the tool, it's the attitude you bring to using the tool. Carpenters don't sit around admiring or obsessing over their hammers, but developers are famous for it.
My startup[1] is built on .NET (MVC 3). As I noted in a blog article [2], it's certainly reasonable to use .NET if you meet the same guidelines, and it sounds like your co-founder does.<p>I would, however, encourage you to use .NET MVC instead of WebForms. The former is very similar to Rails, Django, and other popular MVC frameworks, so if you find that you'd like to make a transition to another language/framework, it will be much easier this way. The latter is really just an antiquated technology with lots of problems and not very much of an OSS community.<p>At the end of the day, it's about getting to market fast and testing your hypothesis. Building your MVP is just the very beginning of your startup journey. You will probably have to change your product a lot, so go with what you can hack in quickly. If it turns out that you have the next StackExchange (which is built on .NET MVC) and you need to massively scale, then drop Spolsky or Atwood a line and I'm sure they'll be happy to give you some pointers. That's a good problem to have.<p>[1] <a href="http://effectcheck.com" rel="nofollow">http://effectcheck.com</a><p>[2] <a href="http://www.nashcoding.com/2011/04/10/building-a-startup-part-2-defending-net/" rel="nofollow">http://www.nashcoding.com/2011/04/10/building-a-startup-part...</a>
Not only is OK, it is <i>encouraged</i> in your case.<p>If your co-founder is "lightning fast" at it, that is <i>exactly</i> what you should use.<p>Down the road, if the .NET stack is not suitable, you can always migrate. But why worry about it now?
As someone who sold a startup which was written in .NET (C#) I can tell you that it scales very well and is a great choice for a tech stack if you're competent in it.<p>I would also offer you the following advice in reference to the major drawbacks of choosing it.<p>1. Hiring good .NET devs is HARD there just is not a major interest in learning it at this point so most of the young guys are focusing their attention on ruby and python (I am going with Ruby for the current project I'm working on now too!)<p>2. Make sure you have a very good relationship with your co-founder because from my experience many of the .NET devs who are "lightning fast" are also those who refuse to comment the code well and take the road less taken in reference to their programming styles. This is not necessarily a bad thing just something to be aware of, because if he is not around to school future devs on the code base you could be kicking yourself later.<p>3. Carefully buy the licenses you need as you need them, you can work out deals on licensing even after you have ordered others seperately.<p>4. Try partnering with a company who is a BizSpark Network Partner as it will help considerably with cost and give you a great foot in the door with Microsoft if you do begin to scale in ways you hadn't planned for.<p>I think you're making a fine decision. Going with the masses is not always the best decision and choosing another language only because it's the hip thing to do is usually not a good position to put yourself in.<p>That said, Good luck with your startup!
It's worth noting that the Stack Overflow platform was built with ASP.NET. <a href="http://blog.stackoverflow.com/2008/09/what-was-stack-overflow-built-with/" rel="nofollow">http://blog.stackoverflow.com/2008/09/what-was-stack-overflo...</a>
There are a couple of reasons why other startups are not using asp.net.<p>1) The opensource community for .net is quite limited compared to other languages/frameworks<p>2) Some people have an aversion for anything from MS (this affects hiring)<p>3) You are locked on the Windows platform (anyone still considering Mono?)<p>4) Costs, the Windows platform and the .net eco system are built around licensed components.<p>Performance or productivity are rarely an issue. If you don't see yourself in the concerns mentioned above, go for it!
I am a dev over at Stack Overflow, and built my other startup (Alikewise) on ASP.net MVC. My reasons for choosing the platform, like Atwood & Spolsky's, is that it's what I knew. The skills of the team outweigh the (largely subtle) differences between platforms.<p>An upside for us is that we've been able to get crazy performance as we've grown. All of Stack Exchange runs on around a dozen servers, all underutilized.<p>An exception I might offer is node.js -- it's really quite different and may be the right thing for a certain type of high-throughput, message-driven app.<p>(Happy to answer q's, matt@stackoverflow.com)
Of course it's "okay".<p>The biggest roadblock to .NET use in startups is, IMO, cost. It's not a cheap solution. It's also very unsexy and there's a lot of stigma around using Windows for web servers--in the past this was generally justified, but today? Not so much. I've built example/sandbox systems with three ASP.NET MVC servers behind an nginx static content/load balancer and it was absolutely awesome.<p>ASP.NET MVC is as pleasant to work with (ASP.NET WebForms not so much). "Frustrating development environment" literally could not be further from the truth; for my money, there is no development environment, anywhere, that comes close to putting as much information at your fingertips, as effectively and quickly, as Visual Studio. Microsoft does a lot of things wrong, but Visual Studio is a great example of a well-done development system.<p>And if your founder's primary tool is ASP.NET (again, hopefully MVC), it'd be stupid not to use it.
Go for it! I definitely echo the sentiments of the others saying to build on the platform you feel expressive in. I don't think .NET isn't turning up in more startups because of performance, dev environment, or lack of CS education certainly. I do think <i>perceived</i> cost might have an effect (cost of running Windows web servers, not the dev environment (note: I have no idea what running a windows server actually costs). Beyond that though I think the bottom line ends up being who you're interested in hiring and the makeup of devs in your area.<p>RE: PG, It's worth noting that he actually makes the point quite often that languages are much more important than many people think (not that the languages on the .NET platform aren't great).<p>I can't find the essay I'm looking for at the moment.. Maybe someone else can find it, the one where he argues that Lisp was a key component to the success of his site-building company many years ago. There are a number of them that touch on the reasons behind the shifting tendencies and fashions in technology among hackers... The Python Paradox essay seems especially relevant.<p><a href="http://www.paulgraham.com/pypar.html" rel="nofollow">http://www.paulgraham.com/pypar.html</a>
At Cheezburger.com, our technology stack is built on Wordpress/PHP for the content sites (icanhascheezburger.com, failblog.org, etc.) and ASP.NET MVC 3 for the site that binds the network together (cheezburger.com). ASP.NET MVC does not have "performance issues" -- we comfortably serve over 8000 requests per minute per IIS server during peak usage.<p>Your choice of platform matters so much less than your ability to execute on that platform.<p>Biggest drawbacks:<p>It's not a completely open platform (e.g., ASP.NET MVC sources are "shared", but csc.exe, the C# compiler, is not)<p>It has a stigma of being heavily used in enterprise, and there isn't a lot of excitement around C#.
.NET has a lot there in its web framework out of the box, so you if you know it well you can do sophisticated things very quickly. There is even strong javascript/ajax integration these days, and new MVC patterns. Overall, I also think C# is a very strong, modern language with tons of benefits.<p>However, the issue comes when trying to find off the shelf components. Unlike with Python and Ruby where there are tons of OSS projects you can integrate, with .NET you will have to either build everything on your own or pay a LOT of money for components.<p>Another thins to keep in mind is that working in .NET requires VS and all the suite of .NET profilers/debuggers which are not free like they are for Python and Ruby. Therefore when growing your dev team you will have to pay a lot in software per seat.
Of course it is ok.<p>onto the real question why is it not used more: I think it is partly a community based cycle the developer community has which I know I was swept along with, a lot of cool technologies are on nix first e.g. node.js, this attracts good people, the good people develop interesting stuff for nix and repeat. Cost and being open source are perhaps factors people cite for their choice but I often don't fully by into that.<p>I am about to start at a company which is 95% .NET and although everything else about them is great that was slightly turn off at first because I would be leaving the 'cool' side, then I realised how irrelevant it really is.
I'm sure if you Google around you will fine a number of opinions on why the majority of startups don't go with .NET, but I'd say it is possible it is simply because many .NET developers love in the 'enterprise' world and are far away from the startup world most of the time. As a .NET developer I'm seeing this starting to change but it is only just starting.<p>There are certainly some disadvantages to .NET particularly when developing for the web, namely it's web framework maturity, ease-of-use and the lack of a strong open source community. These things are often cited as reasons why, say rails developers, are able to go "faster". And by faster we are not talking about performance but time to build your product. I'd say I find the last one, lack of a strong community as a big factor.<p>Anyways, I probably can't help you answer this personally, but here are some recent posts by fairly prolific .NET bloggers on why they decided to start moving away from .NET for what they feel are greener pastures in the rails community.<p><a href="http://davybrion.com/blog/2010/08/how-i-feel-about-the-net-world-lately/" rel="nofollow">http://davybrion.com/blog/2010/08/how-i-feel-about-the-net-w...</a>
<a href="http://wekeroad.com/post/7468824379/i-find-your-lack-of-faith-invigorating" rel="nofollow">http://wekeroad.com/post/7468824379/i-find-your-lack-of-fait...</a>
<a href="http://osherove.com/blog/2011/1/2/the-journey-begins-and-why-it-starts-with-ruby.html" rel="nofollow">http://osherove.com/blog/2011/1/2/the-journey-begins-and-why...</a><p>And a specific article about Rob Connery moving his startup from .NET MVC to Rails and why
<a href="http://www.infoq.com/articles/architecting-tekpub" rel="nofollow">http://www.infoq.com/articles/architecting-tekpub</a><p>Again I don't mean to advocate rails over .NET, but I wanted to answer your question as best as I could and I figured some thoughts from people who have already made these choices would help.
Go with what you are most comfortable and productive in.<p>If you want to launch a startup then do that, and leverage all the skills you have (you'll need them).<p>If you want to learn a new technology then go ahead and do that with some small scale project.<p>But best not to try and do them both at the same time, there just aren't enough hours in the day.<p>There are projects out there using ASP.NET -- my (profitable) side project runs on ASP.NET. Forums like HN can become a bit of an echo chamber, it offers a great perspective but remember the tech ecosystem is much larger than what you read in any one place.<p>The main downside I had with ASP.NET is the higher hosting costs. I started out trying to host on mono so I could use a cheaper VPS. This was a mistake -- it worked for a few months, but had a number of issues which all disappeared when I switched to an EC2 Windows instance.
I've done a startup that didn't go anywhere in .NET (Approver.com) and a startup that's getting traction in PHP with an MVC framework (CodeLesson).<p>I used to be a master of the universe with .NET (spoke at conferences and wrote a few books on web development with .NET). The fact that my prior startup used .NET didn't have any bearing on the fact that it flopped.<p>However, I went with PHP this time around because I knew I would have an easier time hiring people who know PHP, and this is proving to be the case.<p>In my .NET-based startup I did use MySQL instead of SQL Server as the data store, which helped us a lot this time around. Remember that the list price of SQL Server standard edition is $6,000 per CPU. This can be a pretty steep hit to a bootstrapping startup, discounts and programs like BizSpark notwithstanding.
Keep in mind that when you choose ASP.NET you're only locking yourself to a platform, not a language. At my office, for example, we're looking forward to using F# -- by all means a well-designed, thoughtful language in the ML family -- to replace some particularly awkward and gunky C# code, and using F# won't require any more than a few tweaks to our build scripts and tools.<p>As for hiring: we've yet to hire a programmer who primarily worked in .NET before starting; good devs are language agnostic, and the people who built amazing software in Cocoa, Smalltalk, Lisps, and Ocaml prior help us build amazing software on .NET today.
PlentyofFish.com is in .NET, here's their architecture: <a href="http://highscalability.com/plentyoffish-architecture" rel="nofollow">http://highscalability.com/plentyoffish-architecture</a>
> Is it the cost? Performance issues? Frustrating development environment? Lack of a Hacker community? They didn't learn it in their CS courses? All of the above?<p>I think you nailed it. But it's probably not that big a deal. In some cases it will help you find engineers and in others it will hinder. Overall, you will be less likely to attract HN types, which is not the end of the world.<p>I like some of the other comments about how it is overwhelmingly more important to "build something that people want" or "find customers".
Glad to see a post about this, I'm doing the same because I'm fast with it, if we can get something out that works, builds up an audience, and gets some customers we can at least have option to change from there!<p>I agree with the bubble talk, some of these communities are so pro anything but MS that you forget it's still useful and always improving. It's a RAD tool which is key!
At my work, our web app is written in .NET with SQL server and we are slowly migrating away from it. Why?<p>1. Hiring (good) .NET programmers is hard. All of us except the founder were originally java programmers.<p>2. Windows is expensive. Licensing sql server and windows is much more expensive than nix servers and open source database options.<p>3. While people here are saying that .NET/IIS scales well, my personal experience is that an IIS server in general cannot handle nearly as much traffic as nix servers. As a result, you need more web servers than you might otherwise, leading back to number 2.<p>Personally, I enjoy learning new languages. We've been using coffeescript/nodejs extensively for the last few months and we've all been enjoying it quite a bit. We are tentatively planning on rewriting our web code in it in the future. So if I were in your situation, I'd consider the overall impact of ramp up now to learn a new language vs doing a possible rewrite in the future or sucking up the licensing/server costs of .NET.
MVC or webforms?<p>I'm doing some MVC work at present, and it's a good platform (I can't compare it to RoR or others, I don't know them well enough, sorry).<p>For those who know .Net well, the hard/novel part is the Javascript+jquery client-side code. The rest just flows.<p>The current iteration of the tooling with EF4.1 and nuget is a good improvement.<p>Some of your questions:<p>> Is it the cost?<p>Windows servers, Visual studio licences and some SQL server licences can add up. Some small startups couldn't afford it, but MS will "make the first one free" with bizspark. Big companies won't sweat it.<p>> Performance issues?<p>Nope, asp mvc is quite performant. That's one thing that's easier in a compiled, strongly typed language.<p>> Frustrating development environment?<p>Nope. VS2010 with resharper, nuget and nunit is sweet. As long as you have enough memory.<p>> Lack of a Hacker community?<p>Not completely lacking, but may be smaller than with other environments. But there should be user groups, conferences, etc. It may depend on where you are.<p>There are lots of resources for you to read, official docs on msdn, stackoverflow, blogs, and .net geeks on twitter, etc.
The usual drawback for using .net was the difference in cost compared to using an alternative like php/ruby,but their are cloud hosting alternatives for .net now so it seems that drawback is changing. Likewise as the others have mentioned, if your co-founder is wiz at it,then go for it, you can always change and iterate later.
If you're creating a web app then I would agree that it should be fine. If you're chasing after native applications then you'd be compiling for WP7 and in that world you won't have nearly as many potential customers on the device due to WP7 market penetration. Unless of course you consider frameworks like mono or phonegap.
Major issue here is long term costs, and webforms. Don't worry about those untill you've got customers and all of a sudden the lightning fast becomes sludgy because webforms are notoriously hard to manage. Also if its webforms don't expect very nice and clean ajax stuff...
I am not a very highly qualified individual as I am doing my undergraduate. But this summer, I had the opportunity to work with a company which solely works on ASP .NET<p>I thought that it is a Microsoft Technology and won't be that good to work with.<p>But in a week or so, I understood, why it is called the framework for Rapid Development. It really speeds up work.<p>It is true that the cost would be higher as the number of programmers in this field is small compared to the rest.<p>My Point of View<p>----------------<p>1. It was a good time developing in ASP .NET<p>2. There were not many restrictions except for site deployment.<p>3. There is lots to learn in it<p>4. MOST IMPORTANT: It is for <i>Rapid Development</i>
It's more of how you use the tools. Unless there are technical limitations or you're unfamiliar with said tools, why would you be against it? There are very large sites running on .NET so "it can scale".
I see cost is mentioned a lot- but if BizSpark still runs how it used to, you can get a lot of tooling for free to start with, until you grow to where the cost wouldn't have as much impact on you. (<a href="http://www.microsoft.com/bizspark/" rel="nofollow">http://www.microsoft.com/bizspark/</a>)<p>I have a friend in the Bay Area who started in .NET, and had so much trouble hiring programmers they scrapped it and started in a more fashionable platform.<p>I don't know what others' experience is like, but you might consider the ramifications of that potential problem.
I'm part of a startup that is all written in ASP.Net MVC and we all really like it. The costs of the licenses were our only initial concern about using it, as they are a bit prohibitive, but it can always be hosted on something like Azure. All our back end systems are written in C# as well. For us, things like the excellent debugging features in VS.Net and the fact that there was a lot more experience with Windows and SQL Server in our team, we decided to keep to our strengths, so as to get going as quickly as possible.
I guess if you can build a mvp quickly in .net why not?<p>It's what you're familiar with, and there's a lot of talent in that tech out there if you need to expand.<p>You'll probably need more than one techie though?
My startup is in asp.net, for the same reason yours will be. I am lightning fast at it and that is what counts.<p>.NET can be just as fast, it has one of the better development environments (in my opinion) and is just as great as any other languages.<p>It is scaling rather well with my startup.<p>I think the only reason it doesnt get as much attention is due to it's perceived startup costs. But no problem at all if you join BizSpark. (Best deal MS has ever put out for startups)
.NET is a great platform and I beleive Mono is quite capable if you decide to go the non-Windows route. In fact, I am currently building an Enterprise framework on top of Mono and various other technologies (Fluent NHibernate, etc). The most viable alternative for me was Java, and after a lot of deliberation we ended up with Mono. If need be, our apps can then be hosted on Windows as well.
1. Market
2. Marketing
3. Design
4. Product<p>So really, your technology stack fits in at stage 4. Defer decisions that lock you in as late as possible.
I have worked with coders who were lightning fast at asp.net, and those who wrote tested, maintainable, readable, extensible code that was an asset to the company years later. These are seldom the same person. Be careful. Still, for a startup, getting something working fast counts for a lot.
As someone working professionally on a large ASP.NET site and at home on a Rails (MVC pattern) site, I would strongly encourage you to use ASP.NET MVC 3. MVC has much clearer separation of concerns and is much easier to test.<p>Also, there is a fair amount of community/open source add-ons around ASP.NET MVC.
Why the heck don't you ask your Developer?? What does he say? If he really is fluent in ASP.NET, then he should know the ins and outs of it, especially for WebApps, no?<p>And nothing can stop your freedom to code in ASP.NET or anything else! Don't let prejudices infect your decision.
As a .net developer i have to say no its not wrong to use ASP... as long as you understand its caveats. as a startup/ your job is to make money. that should be your main goal. HOW you do that is different.