Ask HN: Is it okay to build a startup in ASP .NET?

46 points by resdirector ↗ HN
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?

62 comments

[ 6.1 ms ] story [ 142 ms ] thread
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".
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?

Cool, that last sentence is almost word-for-word the conversation we had.
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.
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 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?

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

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

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.

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

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!

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.

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

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

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

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.

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

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

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.

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)