Prototyping · .NET

Advice about continuing with .NET

Lydia Loizides Founder and CEO @GGGrit

March 24th, 2013

OK - bring it on.  The prototype/alpha (effectively the core) has been built in .NET.  We now have to make a decision:  continue development within the framework or pivot.  The is one piece of data to use in your assessment: the product is B2B and will need CIO/HR approval :)  Discuss. 

Douglas Tarr Entrepreneur and Software Architect

March 24th, 2013

As a .NET developer (over 20 years) who has built one successful company on .NET (PayScale) and am working on a second (CorpQNA) I have a different view point than many others here.  :)

There are a lot of .NET developers
Scott Hanselman estimates there are 8 million .NET developers.  This is an estimate.  That said, if it is even close, you don't have to worry about the .NET developer pool "shrinking".

There are many developers who are vehemently opposed to .NET and think it is a mistake.  You will find language and platform wars wherever you go.  .NET is a rich, well designed platform with lots of libraries, modern features and support

Matt's comments are unfortunate and somewhat incendiary.  You will rarely convince people like that to work for your .NET startup.  I experience this kind of attitude more in Silicon Valley than any other place.  But,  people are willing to say these kinds of insulting things (chlamydia, "rookie mistake") on message boards but never in person.  :/

Microsoft TCO is on par with Open Source
What Michael said was once true about scaling costs, but not any longer.  

TCO on Windows Azure (for server apps) is comparable to that of AWS.  1GB of SQL server is $10 / mo.  On AWS with MySQL RDS a Micro on-demand instance is $15 / mo.

BizSpark gives you up to 3 years of hosting on Azure for free.  This deal is better than what AWS offers

Visual Studio Express 2012 is Free.  http://www.microsoft.com/visualstudio/eng/downloads#d-express-web

Your website will still use open source + PaaS
Some of Matt's comments are true.  Some are just not.  Git works fine with .NET, as does Chef

Much of your infrastructure may be outsourced to third party providers.   You may have to develop iOS and Android clients.  You may need a rich HTML5 + Javascript client side solution.   You might use Amazon CloudSearch or SOLR to power your websites search engine.  You might use Pusher or Node.js to power your real time chat application.  

Don't write code that requires Windows Licenses per client
If you are distributing client code that requires Windows licenses, then that is certainly prohibitive.  But I don't know of anyone who does that anymore unless they absolutely have to.

Open Source tools have problems too

Jeff Muller Senior Software Engineer at URS

March 24th, 2013

Based on what you've said so far, I don't see any reason to switch. If it solved the problem, there really is no reason to change. If it is not allowing you to meet your business requirements, then I would consider changing. Otherwise, it would be wasted effort to port something that already works.

Shawn Burke CTO, Buddy Platform

March 24th, 2013

Prototype, alpha, and core are different things.

Sure, build your prototype in whatever you want, that's quick.  A prototype "should" be just that, and in a perfect world you'd throw it away and take the learnings to build your real implementation - now that might be your alpha or your core.  Obviously, this doesn't usually happen, but it's an important distinction when thinking about things that will have a large effect on the the business.

Then implementing the product that you want to sell has a different set of issues.  

Microsoft stuff is definitely easier to get into some corporate IT environments, for sure.  Much of this really depends on the specifics of the product you're building.

However, as a startup, there are some major downsides to choosing that stack.  

First, is that things (VS, SQL, etc) tend to cost money, even with BizSpark there is a cost of time if not money.  

Second, is that choosing these technologies typically limit your flexibility with other parts of the business: it makes it harder to run on linux-based cloud providers, today's toolsets (GIT, Chef, etc) weren't designed primarily with Windows in mind, MS products are often designed for enterprise usage rather than broad scale.  

But the real issue here, I think, is hiring.  The pool of .NET Developers is getting smaller all the time, and engineers that label themselves as .NET Developers often have a different skills profile than what is optimal for a startup.  If you want full-stack, cutting-edge, 10x developers willing to work for small pay and big dreams, those folks tend to be using a very different toolset.  Are there great .NET devs out there that you'd want to hire?  Absolutely, they're just a lot harder to find.

Michael Barnathan

March 24th, 2013

Ordinarily I'd say "if it's working, stick with it", but the great problem with the .NET platform is that it will most likely tie you to Microsoft platforms - Windows, SQL server, etc. etc. This will introduce additional scaling costs as the business grows. I've seen it happen firsthand, even working at one at one point. I've seen businesses that could not grow their infrastructure because of it.

As a few others point out, the developer pool also tends to come with different skillsets than your typical startup pool.

Ken Woodruff Software Architect

March 25th, 2013

Here's my quick opinion, based on a lot of startup experience and a decent amount of .NET as well.

First some pros:
  • .NET is a totally credible platform for server development, it's stable, functional and performant
  • .NET plays very well with other Microsoft technologies, importantly including SQL Server
  • .NET has a solid reputation among most large enterprises, and is a superb choice for anything deployed within a large Windows network
  • because of the extensive, formal documentation and training available, .NET is one of the best choices when you are outsourcing development, particularly to Asia

Some cons:

  • while the .NET developer community is large, it holds a relatively small amount of mind share among the Seattle startup scene.  There is far more momentum/enthusiasm around Python, Ruby, Javascript and even Java.  This means that while you can certainly find experienced .NET engineers most of them will have earned that experience in a quite different environment from the one you provide
  • while TCO of .NET apps may be comparable to FOSS software in many situations, the fact that the underlying OS is not free can introduce significant cost and frustration, especially when developing in the cloud.  For example on AWS Windows instances cost almost twice as much as Linux.

In the end my decision about whether to continue with .NET would come down to a few key questions:

  • do you expect your existing prototype's code to evolve into the "real" solution? (i.e. you don't expect to throw it away)
  • are the original developer(s) staying with you?
  • if you have a senior technical person (CTO/architect) are they experienced building this sort of app in .NET?

If you answer yes to all of these I see no compelling reason to change.  If you don't answer yes to all of those, you will probably have better luck forming a successful team here in Seattle if you leave the choice of technology up to the early senior technical people.

Joe Walling Experienced software developer, software architect, owner of custom software development shop

June 23rd, 2015

Based on what you have said, I don't understand why you are raising the question. Is there some unspoken reason you think you should change or is it just that you have spoken with a few anti-Microsoft folks who might have gotten a little over zealous and used some old reasons for why you would not want to go the .NET route?

I have been doing .NET development since 2001 when .NET 1.0 was in Beta, own a custom software shop, and I run a .NET professional networking group. However, despite my ties to the .NET community, I don't try to point everyone in the direction of .NET if it doesn't make sense for their situation. The facts need to drive your decision and not just someone's opinion or scare tactics.

In Greenville SC, there are many .NET developers and it is the prime tool used for enterprise development according to local recruiters. Microsoft has gotten much better about playing well with others. The reason I have stuck with Microsoft over the years is that the vastness of the tools and framework make me so much more effective as a developer. 

If you develop your app correctly, you can minimize the effects of lock-in.Besides, who says you have to use MS SQL Server just because you are using .NET. I am currently writing an application for a new startup we are about to spin off. For most of the custom development we have done, SQL Server Express (free) was sufficient. For this product it will not be. When I priced the current licensing of SQL Server 2014, I found that this new startup could not afford SQL Server. Because the app was well architected, it will take a week's work to convert to using either MySQL or Mono. 

Note that while you may be using .NET for the backend, your front-end can take advantage of all of the new client side functionality expected of modern web apps and use packages such as Bootstrap, Angular, HTML 5, etc... Microsoft has teams actively working on making these and tools such as Gulp, Grunt, etc... work well from within their tools.

And as mentioned above, for a startup, the price is right if you get accepted to BizSpark.


Jason DeMorrow Senior Software Engineer at iSpot.tv, Inc.

June 17th, 2013

I'm a little late to this party, but since no one's mentioned it yet, there is a linux port of the .NET runtime:

http://www.mono-project.com/Main_Page

Despite it's unfortunate name, Mono is decently mature and supports a large subset of its Windows counterpart's functionality. Should you need to run your .NET code in an linux environment, this is what I would try first. Having a large chunk of your code in .NET is by no means a death sentence, but re-writing lots of usable functionality this early in the game might be. I'm a Java/Linux guy by preference, but I have no problem working in a .NET codebase if needed. My attitude has always been that I'll use whatever gets the job done, and my first, last, and only question would be: "Can you continue delivering value to customers with what you've got?" If the answer is yes, then go with it.

Louis Hatzis

March 24th, 2013

There are pitfalls when choosing a technology stack as with anything. Everything is a tradeoff and comes with pros and cons. For a startup, shipping the first product is a bigger problem than scaling to x number of users or y number of developers. 

Developing tech startups using both sides of the world (open source vs .NET), my choice was always based on my team's core expertise. In a perfect worlds I would suggest you go with widely adopted Open Source technologies as they are free and it will be easier to find developers who are familiar with them.

But as Jeff said, since you've developed a core product on .NET, you should probably stick with it.

Matt Mireles

March 24th, 2013

You will have a difficult time recruiting talent to build your .net product. Recruiting for a startup with .net is like dating with an active case of chlamydia. Is it possible? Sure. Is it advisable? Hell no. My advice: Admit to yourself that you've made a rookie mistake. Fix the mistake. Move on. Don't look back. -- Sent from my iPhone. Pls firgive any spellng erors.

Matthew Berk Founder, CEO/CTO at Lucky Oyster, Inc.

March 24th, 2013

Hi Lydia! Unless you have a major new customer who's offering to pay for the product because of what it's built on, then there's no reason to switch.