Saturday, March 24, 2012

Should you use .Net for your Startup Company?

I get this question a lot, from both people inside and outside of the .Net community, and it came up again the other day on Quora.  Below is my answer.  Please keep in mind that this is my opinion, and I can’t promise that I’m right, but I can promise that this is what I really think and if you walked up on the street and asked me “should I use .Net for my startup?” this is what I would tell you.

In spite of the fact that I’m a pretty high end .Net guy, I would caution new startups that are considering using .Net.  I think .Net is awesome, and I use it for my own startup HireFlo.  However there's one big landmine that could handicap your startup before it even gets going, webforms.

You see, ASP.Net development is divided into 2 camps, and there are major architectural differences, and cultural differences between them.

 

ASP.Net MVC is awesome for startups

ASP.Net MVC is the awesome new framework that is heavily influenced by Rails and is the platform of choice for startups like StackExchange.  It’s a breath of fresh air for skilled .Net developers who want a framework that embraces the way the web works instead of struggling against it.  This camp is full of people who care about the craftsmanship of writing code and who like to actually ship software.  A programmer in this camp is likely to be familiar with lots of open source projects, and is most likely a great fit for your startup.

WebForms is death for startups

The other camp is WebForms, a festering bog of evil, spaghetti code, and hate. It's the domain of corporate developers who prize process and documentation over shipping code and hope that the glacial pace of WebForms development will hide the fact that they haven't shipped a product in years and can't tell the difference between an HTTP GET and an HTTP POST.  I mean it.  WebForms and it’s poisonous PageLifeCyle pattern are a sink hole of productivity and they are going to resist you every step of the way as your startup struggles to find the right fit between your application and your market (product market fit).  Plus Webforms and the cursed UpdatePanel make it incredibly difficult to do the fancy new style of client side javascript app that tools like Backbone.js, Knockout.js, and jQuery have made possible. 

So the answer is…Heck yes you should (as long as it’s .Net MVC)

So .Net is awesome, C# is amazing, MVC3 is hugely productive,  if you find a .Net developer who works with those, I'd recommend using them.  But you've got to be careful.  A WebForms developer with a corporate dev background is most likely going to be death for your startup.

 

There are three other points I want to add that I think are relevant.

Don’t use Azure for an early stage startup

Microsoft is really pushing Azure as a platform for startups.  I strongly recommend that early stage startups do not use Azure.  Azure development is significantly slower than straight up .Net development that runs on a windows server or VS.  Deployment takes longer, debugging takes longer, the Azure environment is difficult to replicate on your local dev computer, backups are a pain, and you're locked into a single hosting provider.  It all ads up to a lot of inflexibility and friction at a time when your startup needs flexibility and speed over all other things.  Azure can have a place later, when scale is your problem, but at the beginning of your startup that isn't the issue.

The ASP.Net MVC/C#/SqlServer stack scales like a madman

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.  This is consistent with my experience with .Net.  It scales well. So, if your startup does make it, you'll probably have a much easier time scaling the .Net stack than you would with say Ruby or PHP.

Bizspark is proof that Microsoft loves programmers and startups 

If you want to build a startup on the Microsoft stack, they will give you free licenses to basically every product they make, including SQL Server, and a free MSDN gold subscription, for 3 years.  They figure 3 years is long enough for you to get going so after that they want you to pay for new licenses, but here's the great part, they let you keep the licenses you're already using.  So you don't wind up in a situation where you're just scraping by, then 3 years is up and you have a big Microsoft bill to pay.  They don't do that, they just let you keep using the software. So Microsoft has basically taken the cost factor completely out of the equation for new startups.

Saturday, March 3, 2012

HireFlo, an actual startup built on .Net

What have I been doing for 10 months?

I’ve gotten a number of emails asking for part 2 of the ValidationLabel post that I wrote 10 months ago, and a number of people have said there’s problems with the sample code on aapl.codeplex.com/ and asked for updated code samples.  Sorry about that.  There is a reason I’ve dropped off the face of the earth for the last year.

dashboard800

That reason is HireFlo.  I took all of the principles I’ve been discussing here, the techniques for creating an architecture that embraces change and can quickly adapt to massive changes to the application, and I put them into practice with my own startup.  HireFlo is an Applicant Tracking System designed for the small business market.  It takes all the tools that recruiters use like jobsites, aggregators, social networks, resume databases, and wraps them up in a simple app designed for small business users who probably don’t even know that most of those tools exist. 

I’ve been building HireFlo for about 18 months. It’s an ASP.NET MVC app that uses AAPL for persistence, and I have to say the MVC and AAPL combination has been a huge success.  I’m on version 4 of the app and I’ve made some massive changes since version 1.  That’s what happens in startups, and why an architecture that embraces change but can still scale, is so incredibly important.   Each time I’ve made major changes, MVC and AAPL have made the experience as quick and painless as possible.  

The last major change was November 2011 when I decided to completely throw away the old UI, and rewrite a simpler, streamlined version based on a Kanban board, and also make it a single page Javascript app in the style of backbone.js and knockout.js apps.  I completed the complete rewrite of every page, controller, HTML template, CSS file, and Javascript file in the app in just 14 days.  This would never, never, NEVER have been possible if I’d used WebForms or a more Microsofty approach to persistence that used a bunch of sprocs and hard coded mapping logic in my data and business layers.

So anyway HireFlo is up.  It’s been officially launched since August 2011 but I would say the real launch was end of December 2011 when I released version 4 of the app and the redesigned marketing site.  So far there about 300 companies using it.  It’s a start.

What’s coming next

So the first thing I need to do is write Part 2 of my last post.  This part details how to take a helper method and turn it into a strongly typed helper method by using expressions and lambdas because…. well because doing that is awesome.  After that I’ve got a lot of tech problems that I’m solving for HireFlo and I’d like to share them.  I just need to find some time and get back on a somewhat regular schedule.  BTW, I’d also be happy to give updates on HireFlo if you’re interested.  Just let me know.  -rudy