Ask HN: Is it okay to build a startup in ASP .NET?
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 ] threadIf 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?
Tongue in cheek...
If not, time to learn another, more appropriate language :-)
I think the answer to your last question is: "Yes".
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?
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.
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 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!
You mean is built?
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.
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
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!
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.
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.
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.
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.
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...
The add-on program seems pretty cool too. We're planning on adding EffectCheck to the list of supported APIs soon.
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
But if it's working for you, awesome. :)
So really, your technology stack fits in at stage 4. Defer decisions that lock you in as late as possible.
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.
.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)