
Ask HN: Is it okay to build a startup in ASP .NET? - resdirector
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?
======
DanielBMarkham
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.

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

------
tansey
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...](http://www.nashcoding.com/2011/04/10/building-a-startup-
part-2-defending-net/)

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

~~~
tansey
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...](http://blog.effectcheck.com/2011/07/14/interview-with-joey-
carmello-from-my-moods/)

[2] <http://stalkerbot.com>

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

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

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

Tongue in cheek...

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

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

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

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

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

~~~
blantonl
_was built_

You mean is built?

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

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

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

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

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

~~~
jawher
Beating the averages: <http://www.paulgraham.com/avg.html>

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

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

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

------
lucisferre
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://davybrion.com/blog/2010/08/how-i-feel-about-the-net-world-
lately/) [http://wekeroad.com/post/7468824379/i-find-your-lack-of-
fait...](http://wekeroad.com/post/7468824379/i-find-your-lack-of-faith-
invigorating) [http://osherove.com/blog/2011/1/2/the-journey-begins-and-
why...](http://osherove.com/blog/2011/1/2/the-journey-begins-and-why-it-
starts-with-ruby.html)

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.

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

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

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

------
sayemm
PlentyofFish.com is in .NET, here's their architecture:
<http://highscalability.com/plentyoffish-architecture>

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

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

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

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

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

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

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

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

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

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

------
aniketpant
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_

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

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

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

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

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

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

~~~
eropple
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. :)

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

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

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

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

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

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

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

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

------
resdirector
Clickable: <http://www.paulgraham.com/really.html>

------
antidaily
Wufoo is.

~~~
brandoncordell
I thought Wufoo was a largely PHP stack?

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

