top | item 3848512

Can you build a startup on .Net?

79 points| rudyl | 14 years ago |rlacovara.blogspot.com

110 comments

order
[+] kogir|14 years ago|reply
Yes, you can certainly build a startup on .Net[1]. That said, there are some things you should consider carefully before you do:

* Will you be able to recruit top talent? In Seattle, not likely a problem. In the Bay Area, it's harder[2].

* Does the licensing cost make sense for your business? BizSpark is awesome, but it's not forever. In most cases the answer is yes, but not always[3].

* Are you willing to learn Linux too? You're going to run across something cool you want to use that only works on Linux, or works best on Linux. Redis, MongoDB, RabbitMQ, etc. come to mind.

I've built a startup on .Net before, and may do it again. The documentation for the whole Windows/.Net/SQL Server stack is amazing, and they're very predictable. With little effort you can learn enough to know how they'll perform, where they'll fall down next, and the next steps to move forward[4].

[1] I co-founded and was CTO of Loopt. We may have had product problems, but the tech never held us back.

[2] It's hard to find really good people willing to work on .Net in The Valley. They know their next gig will likely be at another startup, Facebook, or Google - .Net won't likely help you there.

[3] After BizSpark is over, look into SPLA licensing. It allows you to pay monthly for only what you use, and allows you to always be running the latest version. During all of Loopt Microsoft Licensing never cost more per month than an engineer, and the software saved us at least as much time and money. Remember, each time "The New Hotness" breaks, the time you spend debugging or migrating to something else is time you're not spending on your product.

[4] For example, Windows and SQL Server have great performance reporting. You'll know you need to get more RAM in a month, or switch to SSDs soon, long before you actually have problems.

[+] chaostheory|14 years ago|reply
My only concern about working with .NET has nothing to do with the language or the underlying tech. They're both fine. The problem is that the open source community on .NET (both C#, ASP.NET, & VB.NET) is anemic compared to virtually every other language, and I'd rather not reinvent wheels whenever possible.

I know one way around this is use java open source, by either a source or bytecode translator from Java to C#. Is there anything good to know in terms of limitations of this approach? Are there alternatives?

There's also the problem of using stuff that's targeted primarily for Mono, instead of .NET proper, and vice versa.

That being said a good carpenter can still crank out a nice table with a rock and some wood, but the question is should he?

[+] untog|14 years ago|reply
Of course you can. People spend far, far too much time worrying about what programming language they should use for their project. You should not spend your time learning Ruby/node.js/Scala, you should launch your MVP with what you know.

If you have to, you can change later- though from experience, there's little need to with .NET. I work for RecordSetter (http://www.recordsetter.com) and we use ASP.NET MVC- back in the early days of the company, the CTO knew .NET very well, so he just used his existing knowledge. C# is a great language, Visual Studio is a great IDE, MVC is a great framework. And so on and so on. We aren't really suffering any ill effects as a result of our choice, and as others have noted, BizSpark membership is actually a great bonus.

If anyone out there wants to play around with C# for the web but feels like the ASP.NET stack is too heavy (it can be), take a look at Nancy.FX (http://www.nancyfx.org/). It's super lightweight and allows you to keep most of .NET out of your way.

[+] web_chops|14 years ago|reply
I really love NancyFx. It's such a well thought out framework. If there is some feature missing, all you have to do is hook at the proper place. It really simplified building our startup (http://designduke.com). Best part is that using a REST framework encourages you to move out most of the logic and functionality to client and it scales pretty well.
[+] rudyl|14 years ago|reply
So is recordsetter still on ASP.Net MVC?

Regarding the language doesn't matter thing I think that's mostly true. If you're choosing between Ruby and ASP.Net MVC I don't think you can loose. But sometimes the framework does matter, like if you want to build a startup on webforms (don't).

[+] mwsherman|14 years ago|reply
There are surprisingly few arguments about semicolons in the .Net community.
[+] Edootjuh|14 years ago|reply
You've never seen a VB.NET vs. C# argument? Call yourself lucky.
[+] bigdubs|14 years ago|reply
a lot of that is because msft says it's a certain way and we all have to deal w/ it. not necessarily better.
[+] hkarthik|14 years ago|reply
Listen to the middle days of the first StackOverflow podcast and you'll hear that for a long time they ran StackOverflow on a single server. They were serving a million uniques with the web app and database running on a single box! It wasn’t even a very big box.

As a former .NET guy, I think the hosting part of deploying .NET wasn't well addressed by this post.

Jeff Atwood built and colocated a dedicated 2 or 3U server to run Stack Overflow. I certainly wouldn't call that an easy or recommended thing to do for a startup, especially if none of the founders have enough hardware and system administration experience.

Compare this to signing up for EC2, Linode, or Rackspace and spinning up a Linux instance to run Rails, Django, or Node. Even easier to just spin something up for free on Heroku. These are mature, solid solutions being used by many startups today.

There are a few providers like AppHarbor that are trying to make .NET hosting a bit more startup friendly, but there weren't any mention of those in this post.

[+] lusr|14 years ago|reply
It's just as simple to spin up an EC2 Windows instance as it is for a Linux one. Just costs you a bit more, and as a .NET developer, the only thing that still bugs me about .NET are the licensing fees for Windows - but if my business isn't making enough to pay for that then I have bigger problems.

As for deployment, if your .NET app doesn't have highly specialised dependencies you're likely to get away with a simple file copy deployment. Even if you do need to install some frameworks/packages, offerings from e.g. ScaleXtreme (who allow you to manage both Windows and Linux servers from a single dashboard, private or in the cloud), make managing instances (via templates, scripts and integrated monitoring and patching) extremely simple.

This is great because I prefer writing my code in C# and running it under Windows but prefer Linux for the heavy-lifting (PostgreSQL, memcached, nginx for static content, etc.). I do accept that not everybody knows how to use both platforms or would like to learn, however that is a matter of preference not practicality. I'd say the two platforms are on par with practicality.

[+] biot|14 years ago|reply
Spinning up a Linux instance does not require system administration experience?
[+] j45|14 years ago|reply
I'm not primarily a .NET guy (I have done a fair bit though), but why wouldn't it be possible or reasonable to spin up a VPS instance of Windows if it's a platform you're totally familiar with (much like someone being familiar with a linux instance?)

Firing up a linux instance does require more sysadmin skills from the command line (this can be non programmer skills to some), compared to a gui based OS.

Disclaimer: I use linux myself but have spent enough years in the professional world to know that there are things that windows can do equally well, just don't ask it to do everything. A basic startup stack of IIS (included), mysql, and a framework (download asp.net MVC) doesn't take much setup.

[+] benologist|14 years ago|reply
You never had to get and configure/maintain dedicated servers to do .NET. The only two reasons that dictate dedicated or VPS hosting on .NET are the same as not .NET - you need more hardware or more privilege.

Deployment's always had a variety of simple-to-complex options just like everything else.

[+] web_chops|14 years ago|reply
But its equally simple to spin a windows server and even more simpler to setup (thanks to RDP). Amazon even offers a free microsoft micro instance (I even got a $50 windows credit for april month) :)
[+] richardw|14 years ago|reply
My impression is that the SO crew knew about running machines in front of them more than they knew about running cloudy things that depend on people they didn't hire. They like to reduce leaky abstractions, not add to them. So getting the biggest badass server and slapping SQL Server on it is exactly what I'd have expected them to do.
[+] mindcrime|14 years ago|reply
I'm pretty sure you can build a startup around almost any mature, real-world tech stack... so, basically, exclude "esoteric" programming languages like Brainfuck, Intercal, Whitespace, etc. Otherwise, I think you could - if you chose to - build a startup around RPG/400 on an IBM iSeries, Fortran, COBOL on MVS on an IBM zSeries, Ada, .Net, Prolog, Pascal, Perl or whatever floats your boat. It's a question of the tradeoffs and the economics of each decision. Can you hire programmers? What are the licensing costs? What about the "ilities," like scalability, interoperability, reliability, etc?

Maybe for some startups the right decision is .Net, or RPG, or Forth or Rexx or what-have-you. But I'm guessing for most startups, there are better choices. I'm also not sure that - even on a per startup basis - there is one ultimately right choice. More likely there are a handful of really good choices, a pile of so-so choices, and a long-tail of fairly ridiculous choices.

[+] rudyl|14 years ago|reply
Visual Studio, especially when paired with Resharper is a tremendously productive dev environment. C# is a fantastic language and it's got a host of new features that make it possible to write in a more functional style, stuff like lambdas, expressions, type inference, dynamic types, anonymous types.

The main problem is that people don't think about any of that when they think about .Net. They think about that festering bog of evil and spaghetti code that is WebForms.

[+] j45|14 years ago|reply
You can absolutely build a startup in any language that has a capable framework for the web.

As mentioned in the article, StackOverflow is one prominent .net startup that comes to mind.

Generally, customers don't care what you code in. It might matter if your customers are developers, but even then, there's API's.

How well you code in your tool of choice may be relevant when you hit a million whatevers you want measure, but by then you'll probably be scaling anything you built.

The most important thing is to have great momentum and see it through to a real result. You'll always do that best with the tools you're most familiar with, with the caveats listed above.

Use decent habits to be friendly to your future self to keep the codebase reasonably something you want to keep working on. Don't strive for perfection, it never happens the first time.

Sometimes as developers becoming entrepreneurs we get a little too focused on making our tooling so great that the attention doesn't always end up on the user experience and getting rid of their pain-points. Instead we can fall prey to solving our own pain points and staying in analysis paralysis.

[+] fleitz|14 years ago|reply
If you ask this question then the answer is no, however, you probably can't build a startup in any language as you're too worried about what everyone else is doing rather than what your customers want.

Seriously think about a young mark zuckerberg making facemash and worrying whether it could be a $100 billion dollar company if he wrote it in PHP.

If anyone worries about these things just change your server headers so it looks like you're developing in whatever language they want.

Its usually a good idea to change the headers anyway so that any automated attacks run the wrong scripts. Change your postfix to Exchange, change your nginx to IIS and vice versa.

[+] dirkdk|14 years ago|reply
speaking technology wise, of course you can use .NET to build a startup product. C# is a very mature and nice language, Visual Studio is the best IDE out there, beating Eclipse, XCode and TextMate hands down.

Another issue is in what fields that these languages are used, what type of developer works there, and what kind of developer you need to hire next month to scale your products. Java is for banks, very big projects with integration with lots of legacy systems. .NET is more used inside of companies, integrating with Sharepoint, MS SQL server. Ruby on Rails is for hip independent developers that teach themselves and go for productivity. PHP is for easy web development.

All these fields have different kind of developers that work in it. Figure out what kind of company you are, and choose technology accordingly.

[+] rudyl|14 years ago|reply
BTW, Azure is a nice scaling solution but it slows initial development way down, it's a pain to debug, and it locks you into a single hosting provider. Not a good solution for me and I think it's crazy that Microsoft keeps pushing it as a platform for early stage startups.
[+] mattcole|14 years ago|reply
Would you be able to elaborate on how it slows initial development way down (and is a pain to debug!)?

I've only played with it a little but the deployment story seemed quite nice.

[+] vladpetroff|14 years ago|reply
Just some quick numbers - in 1 week flat I've been able to create a working prototype for our start-up with the stack mentioned, coding in my spare time (after work and on the weekend). If you know your stuff you can get up and running in no time :) Our start-up (collectifly.com) is built exclusively on the .NET stack, with ASP.NET MVC as frontend and using a bunch of open source libraries like Twitter Bootstrap, jQuery, KnockoutJS and a few more. For the backend I'm currently experimenting with RavenDB not because I don't like SQL Server but because we're building a social graph, so a NOSQL database seems to fit better.
[+] abrudtkuhl|14 years ago|reply
We are a BizSpark startup using a combination of free tools and open source technology. Haven't spent a dime yet.
[+] Khao|14 years ago|reply
I recently discovered about Microsoft's BizSpark program and I must say, I'm really tempted to try and build up a side project just so I can apply to BizSpark and have tons of free resources to build my side project. I love .Net and I think Azure is really good, even if the article says it's too cumbersome for a small project. I think the fact that developers can forget all about server configuration and implementation and just start a VM in one click is nice.
[+] lomaxx|14 years ago|reply
We've built our app (http://keypay.com.au) on .net and have zero complaints so far. The best thing is that with AppHarbor, it makes it easy to spend less time focusing on "the stack" and more time focusing on just getting stuff done.

We build fast, release often and the .net stack is so mature that we spend very little time thinking about it and the majority of the time solving business problems.

[+] drcube|14 years ago|reply
"Bizspark is proof that Microsoft loves programmers and startups"

No, it isn't. Not anymore than MS giving away free licenses for Office, VS and Windows to college students is proof that they love college kids. Not anymore than giving poor schools in Africa free licenses for Office and Windows means they love African schoolchildren. And not anymore than the junky giving free dope samples to kids means that he loves kids.

It's just business.

[+] jf|14 years ago|reply
Yes, it's just business. I agree that you shouldn't ascribe the emotion of "love" to Microsoft, or any large corporation. But in the same vein, I don't think it's fair to equate them with a "junky giving free dope samples to kids".
[+] perssontm|14 years ago|reply
Microsoft does the right thing here to give licenses away to startups. However, I would try to stick to their mainstream products which are likely to survive a few years ahead and avoid the "to-new-unproven" ones, mainly to make sure the product is still developed and maintained 3+ years down the line.

I'd go for open source any day, but that brings other challenges instead. :)

[+] sakopov|14 years ago|reply
Honestly, 3/4 years ago i would pick another platform because deploying code in .NET was a complete nightmare. Nowadays things have changed a bit. You have transforms. You have TeamBuild with TFS, which is very solid, but can still be a pain in the rear to get stuff going. Changing the build workflow and messing with MSBuild always seemed odd to me. I'm not even going to mention setting up and troubleshooting Web Deploy Service which is undocumented disaster. I personally use GIT and deploy to AppHarbor. The process is amazingly smooth and the entire experience with AppHarbor folks has been wonderful.

In addition, I would agree with the statement that more knowledgeable and skilled devs have switched to ASP.NET MVC. There is no doubt in my mind. You need to have decent understanding of OOP to do pretty much anything in MVC. Not to say that you can't write bad code. You can, but folks that work in MVC are typically more serious developers.

[+] shade|14 years ago|reply
As someone who's currently an experienced .net developer (based in NE Ohio), prefers working for smaller companies, and is getting the urge to look around and see what opportunities are out there, I have a question I'd like everyone's input on: is staying mostly .net-focused a viable idea, or am I taking on a serious career risk?

I've worked with python and ruby a bit and am currently working my way through Programming Clojure, but right now I'm much more experienced with .net and it's where my comfort zone is. I try to keep abreast of what's happening elsewhere, but don't have as much time as I'd always like to try other technologies.

I'm curious what people think - am I better off pushing harder on new stuff and hitting meetups, or is C#/MVC still a viable option despite Microsoft's current struggles? (Not that they're on the verge of disappearing or anything, but they definitely don't have the buzz in their favor right now...)

[+] noveltyaccount|14 years ago|reply
There are untold corporations whose entire enterprises are powered by .NET and Windows Server. You'll have an income stream on .NET for the remainder of your natural life, nothing to worry about. As for the small company bit, maybe. Small teams within a large company, sure.