Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Is it okay to build a startup in ASP .NET?
46 points by resdirector on Aug 6, 2011 | hide | past | favorite | 62 comments
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.

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?

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?

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?"

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.


Maybe not their hammers but I can see a real craftsman fussing over his lathe and chisels to make sure the edges are sharp and even. Tools do matter and they shouldn't frustrate you.

I don't want to get caught up in the analogy though, your larger point definitely stands. If .NET allows you to focus on the important stuff and is productive then it's a great tool.

A useful tool needs to do one thing: get the job done. If it gets the job done without pissing me off then I consider it a good tool. Not pissing me off is a vastly important quality for me, probably for most others.


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.

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.

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.

[1] http://effectcheck.com

[2] http://www.nashcoding.com/2011/04/10/building-a-startup-part...


Incidentally, effect check is quite cool. It's a weak suggestion, but I'd look at bringing the "live demo" call to action to a more prominent homepage location. I had to search around a bit to find out what exactly was going on and how it worked, and once I did it was easy to use and kind of cool.


Thanks! :D

That's a really good suggestion. The live demo was a bit of an after thought on my part. I bought the design from Theme Forest, customized it, and launched it in a few days, then realized it would be good to see the tool in action somewhere.

We're kind of pivoting towards a more dashboard-style product for professional, highly-paid writers (lawyers and speech writers mostly), and once I'm done with that we'll certainly have a cool live demo ready. We'll also probably release a scoring API with free and for-pay rate limits, since developers have already shown some really creative applications [1, 2] in our hackathons.

[1] http://blog.effectcheck.com/2011/07/14/interview-with-joey-c...

[2] http://stalkerbot.com


Thanks for talking about AppHarbor in your blog post. I'm developing an MVC 3 site and planned on deploying it on AppHarbor and was always curious how well it worked.


AppHarbor is awesome. The development process could not be any easier. You literally just create an MVC project and push it to your AppHarbor git repo and you're done. They also have support for SSL, multiple collaborators, and error logging. There are also a few features that I know are coming that will make it all the more awesome.

The add-on program seems pretty cool too. We're planning on adding EffectCheck to the list of supported APIs soon.


Not only is OK, it is encouraged in your case.

If your co-founder is "lightning fast" at it, that is exactly what you should use.

Down the road, if the .NET stack is not suitable, you can always migrate. But why worry about it now?


Definitely. Worrying if your stack of choice scales is premature optimisation. Get up and running asap, fix scaling issues if you ever have the luxury of running into them.


As a professional C++ programmer, I wonder if your response would be the same for my case?

Tongue in cheek...


You bring up a valid point, there are always exceptions to hard fast generalizations. For example a web company is putting itself at a disadvantage by adoption C++, even if their developer is most proficient in it. The stack has to align to the domain or else your developer has a lot more work to do to get to the finish line. Certain stacks have so much inertia in particular spaces that the existing libraries and API's more than make up for the reduction is efficiency of a developer that is more comfortable in other cloths. C++ for web being one or VB for embedded being another. Choosing the right tool for the right job, should always be taken into consideration.


Hey, if you can build what you need really fast in C++, go for it.

If not, time to learn another, more appropriate language :-)


True fact. palish is wrong. I dislike C++ but develop WebApps in C, so what? My stack supports it and I'm good at C and still can use all other language libraries installed in my system. Clap Clap.


Cool, that last sentence is almost word-for-word the conversation we had.


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.

I would also offer you the following advice in reference to the major drawbacks of choosing it.

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!)

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.

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.

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.

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.

That said, Good luck with your startup!


It's worth noting that the Stack Overflow platform was built with ASP.NET. http://blog.stackoverflow.com/2008/09/what-was-stack-overflo...


was built

You mean is built?


There are a couple of reasons why other startups are not using asp.net.

1) The opensource community for .net is quite limited compared to other languages/frameworks

2) Some people have an aversion for anything from MS (this affects hiring)

3) You are locked on the Windows platform (anyone still considering Mono?)

4) Costs, the Windows platform and the .net eco system are built around licensed components.

Performance or productivity are rarely an issue. If you don't see yourself in the concerns mentioned above, go for it!


I'm a .Net developer and I have tried to use Mono in the past for a few sites, but there are always a few minor problems that are a total turn off.

I just stick with Windows hosting instead.


whats wrong with Mono? Its a very good platform and has survived the Novell buyout shenanigans.


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.

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.

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.

(Happy to answer q's, matt@stackoverflow.com)


Of course it's "okay".

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.

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.

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 perceived 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.

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).

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.

http://www.paulgraham.com/pypar.html



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.

Your choice of platform matters so much less than your ability to execute on that platform.

Biggest drawbacks:

It's not a completely open platform (e.g., ASP.NET MVC sources are "shared", but csc.exe, the C# compiler, is not)

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.

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.

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.

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.

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.

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.

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.

http://davybrion.com/blog/2010/08/how-i-feel-about-the-net-w... http://wekeroad.com/post/7468824379/i-find-your-lack-of-fait... http://osherove.com/blog/2011/1/2/the-journey-begins-and-why...

And a specific article about Rob Connery moving his startup from .NET MVC to Rails and why http://www.infoq.com/articles/architecting-tekpub

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.

If you want to launch a startup then do that, and leverage all the skills you have (you'll need them).

If you want to learn a new technology then go ahead and do that with some small scale project.

But best not to try and do them both at the same time, there just aren't enough hours in the day.

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.

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).

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.

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.

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.

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: http://highscalability.com/plentyoffish-architecture


> 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?

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.

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!

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?

1. Hiring (good) .NET programmers is hard. All of us except the founder were originally java programmers.

2. Windows is expensive. Licensing sql server and windows is much more expensive than nix servers and open source database options.

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.

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.


note that I'm not advocating using nodejs/coffeescript, it's just what we are going with. Personally, I prefer strongly typed languages so I'd probably look at the scalability/reliability of mono very very closely. I also like GWT a lot.


MVC or webforms?

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).

For those who know .Net well, the hard/novel part is the Javascript+jquery client-side code. The rest just flows.

The current iteration of the tooling with EF4.1 and nuget is a good improvement.

Some of your questions:

> Is it the cost?

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.

> Performance issues?

Nope, asp mvc is quite performant. That's one thing that's easier in a compiled, strongly typed language.

> Frustrating development environment?

Nope. VS2010 with resharper, nuget and nunit is sweet. As long as you have enough memory.

> Lack of a Hacker community?

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.

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.


I'd say, that drawback had changed drastically over past 3-4 years. Website Spark, BizSpark minimize licensing costs during the startup phase. If business picks up, the cost of software will not be an issue anyway, otherwise both programs do not have any sort of "exit costs". As for hosting - there's plenty of affordable options right now.


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 agree with peregrine on webforms--just not clean, hard to make feel like a modern web app oughtta. The good news is that ASP.NET MVC 3 makes it easy enough to completely avoid WebForms.


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

I thought that it is a Microsoft Technology and won't be that good to work with.

But in a week or so, I understood, why it is called the framework for Rapid Development. It really speeds up work.

It is true that the cost would be higher as the number of programmers in this field is small compared to the rest.

My Point of View

----------------

1. It was a good time developing in ASP .NET

2. There were not many restrictions except for site deployment.

3. There is lots to learn in it

4. MOST IMPORTANT: It is for Rapid Development


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. (http://www.microsoft.com/bizspark/)

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.

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?

It's what you're familiar with, and there's a lot of talent in that tech out there if you need to expand.

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.

.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.

It is scaling rather well with my startup.

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.


Mono is a wonderful platform (I'm using it for the project I'm writing right now!), but its ASP.NET support is kinda iffy and while I cannot prove it right now, I have a sneaking suspicion that its internals (the garbage collector, primarily) are not geared toward the sort of usage pattern you see in web applications.

But if it's working for you, awesome. :)


They've been working on a new GC for Mono that is better for ASP.NET and similar type of applications. By default, Mono uses the Boehm GC, but since 2.8 you can choose the new generational GC (--gc=sgen command line parameter). As far as I know it's very close to being deemed production-worthy.


If SGen is almost production-worthy, then most of my complaints about Mono go away. Looking forward to it.


1. Market 2. Marketing 3. Design 4. Product

So really, your technology stack fits in at stage 4. Defer decisions that lock you in as late as possible.


You can create a huge success in any language. I'd say go for .NET, if it is what you know best.

I think the answer to your last question is: "Yes".


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.

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?

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.



Wufoo is.


I thought Wufoo was a largely PHP stack?


My mistake. After looking into it further, it seems it was initially ASP and then they switched to PHP around the time they got into Y Comb.




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

Search: