
Ask HN: Why is .NET often avoided in the startup world? - yulaow
I am a devops who love to explore almost any platform in which I enter in contact and, for this and others reasons, I ever prefer to work in a startup environment and not in a corporate one.<p>So in the last months i was exploring for my first time .NET using c# and, wow, it&#x27;s an amazing platform! Then I started to look for a job in a startup in which I could learn it better and with more motivation but... it seems no one is using it. I also looked for some startup based on mobile platforms thinking that, thanks to mono, someone is starting to use xamarin products to target the three main mobile os (android, ios, wp) and share some code. But it seems also in the startup world they prefer to have a team for each language&#x2F;os rather that using that solution.<p>So, after a month of research i am curious to get the real reason behind it. It&#x27;s because no one like Microsoft &#x27;cause it seems no cool? License costs? Support? Community?<p>I would like to hear your opinions<p>edit: I forgot to say that, in contrast, in the corporate world, i found a lot of jobs in which .NET is used. Almost as many jobs as those who require java knowledge.
======
HillRat
License costs are definitely an issue -- at the enterprise level and in
regards to internal development, there are strong institutional biases towards
MSFT for a variety of reasons (the key driver being that all your employees
have Windows desktops, so adding Windows servers, SQL Server, SharePoint, etc.
isn't much of a leap).

Second, .NET is generally seen as a heavyweight technology that slows
development (the MySpace guys are _still_ flogging that dead horse). Anyone
who experienced multi-megabyte pagestate data with ASP.NET is probably going
to be extremely gun-shy, especially since everyone these days starts out
trying to build "web-scale" apps before they get their first ten customers.
But Stack Overflow proves that you can build huge, responsive, hyper-
trafficked sites on MVC.

Having said that, C# is an absolute beaut of a language; the library support
infrastructure is top-notch; NuGet has filled most though not all of the roles
performed by Maven, &c.; the MVC* frameworks are a joy to work with; and MSFT
initiatives like SignalR are fantastic. As long as your pet technologies
haven't been EOL'd by Server & Tools ( _cough_ Silverlight _cough_ ), then
there's no technical reason _not_ to use MSFT. (For me, there's definitely a
productivity value -- whenever I have to drop back to pure Java from Scala or
C# I feel like I'm trying to run through waist-deep mud.)

The licensing costs are still a significant problem for any startup
(especially since MSFT is crippling lower-priced versions of SQL Server these
days), but if you're a startup the BizSpark program goes a long way to
ameliorating costs for a few years. Perhaps more serious is the fact that many
of the key infrastructure projects such as NoSQL data stores treat their
Windows forks and .NET bindings as second-class citizens at best, and running
them on Windows always feels a bit ... precarious to me.

~~~
alipang
Regarding the nosql, RavenDb is awesome in my experience, using it for a
passive income project that does ok. It's not prohibitively expensive to
license even for me.

~~~
junto
Another up vote for RavenDb from me. I also like MongoDb as well though.

------
aespinoza
We are using it. We love C# so much we built a platform around it. But as a
startup owner, .Net gets expensive because of the Windows dependency. And even
thought mono is out there to run C# on Linux, the company behind it (Xamarin)
only cares about Macs and Mobile right now.

The ecosystem for Mono is also not there, meaning that most solutions focus on
favoring other frameworks like Python's Django, Ruby on Rails, etc. People
prefer to invest more time in open source frameworks and platforms, specially
in the startup world.

In other words, it is easier to create startups in frameworks that have a rich
community and focus on open source. It is not easy (not impossible though) to
create a startup based on a technology that is limited to one platform,
specially when that platform is expensive to operate.

~~~
twotwotwo
So here's an idea: it's in Microsoft's interest to buy, or clone, Xamarin, and
make it work on WP8/Metro as well.

That's because, frankly, platform lock-in is killing Microsoft's chances now
that they're the distant third-place touch app ecosystem, for the same reason
it helped them as the strong first-place desktop OS. App makers will target
the top platform or two, and only those, as long as it's much extra work to go
broader. Solid, free-as-in-beer tools to target WP, iOS, and Android all at
once make it less work to support WP so more devs will do it.

Having built or acquired the tech to run .NET off Windows, maybe they should
release some more of their ecosystem to make it viable for more startups to
use .NET. Someone small using some free compilers/libraries and MySQL may
eventually be a prospect to buy VS and SQL Server. (And whether they ever sell
these startups anything or not, folks releasing .NET libraries make the
ecosystem more attractive.)

Who knows; they decided Azure should support Linux and Office should be on
every platform, so anything's possible. Times have changed and maybe the
argument for closing off ("fully integrating") their dev ecosystem is weaker
now.

~~~
groundCode
>>maybe they should release some more of their ecosystem to make it viable for
more startups to use .NET. Someone small using some free compilers/libraries
and MySQL may eventually be a prospect to buy VS and SQL Server

And there's the thing right there - I don't think Microsoft really cares much
about startups - after all, the success rate is fairly low for startups and it
probably doesn't seem worth it to them to "invest" in businesses that are,
more often than not, going to fail. Putting their marketing budget behind
large corporations and governments is far more lucrative for them.

~~~
junto
Cough...
[http://www.microsoft.com/bizspark/](http://www.microsoft.com/bizspark/)

~~~
Avalaxy
Not to mention Microsoft Ventures
[http://microsoftventures.com/](http://microsoftventures.com/)

------
staunch
It has numerous _major_ disadvantages (expensive, proprietary, closed-source,
lock-in) and virtually no advantages over a number of other open source
technologies.

I suspect there are very few people who have extensive experience on both
sides of the fence and would choose the Microsoft route for their own
startup/company. It tends to be almost exclusively people who lack experience
with open source alternatives.

~~~
jamespcole2
100% agree, I have extensive experience with both and I would never recommend
.net to anyone. Unfortunately many of the larger companies I do work for will
only use it. In general the SOE of an organisation is usually defined by non-
tech people and "no one ever got fired for recommending microsoft". So I find
that these larger organisations are hobbled by using sub-par tools, hopefully
this will change in the next 10 years or so though.

------
ayers
The startup that I work for is built on .NET using C# and ASP MVC. Licensing
costs were not a barrier/concern as we were part of the BizSpark[1] program.
This gave us free access to all the Microsoft software we needed. We only
recently graduated out of that so it will be interesting to see what affect
that has on some of our future tech decisions/directions.

Visual Studio is an amazing IDE and C# is a top notch language. The price you
pay for that is worth it and shouldn't be an issue for a profitable startup
(which you should be by the time you graduate the BizSpark program). Like
others have said, the bigger issue is that it ties you down to all the other
Microsoft licenses such as Windows server.

I know of other startups that are using C# and .NET and run a mix of Windows
and Linux(Mono) servers. This has forced some decisions for them though, such
as rolling some of their own frameworks/tools that work nicely with Mono.

[1]: [http://www.microsoft.com/bizspark/](http://www.microsoft.com/bizspark/)

------
mataug
It is mostly because of the ecosystem, due of the proprietary nature of the
.NET Framework not many are willing to put in their personal time to build
libraries and other supporting software around it which results in the lack of
any real community.

Most startups today are well connected with some community or other and to
them .NET is mostly invisible. On the other hand if a person from an
enterprise builds a startup and if they have a .NET background that is when
they try to get into bizspark.

------
speeder
Funny, and I was wondering why so much people still insist in using .NET ...

Personally I avoid .NET like the plague, after learning it first of course
(not for servers, I don't do server side stuff) because of its horrible
windows dependancy, and mono is NOT a adequate substitute.

~~~
Zigurd
About 13 years ago I was writing mobile apps in C# with a toolchain that
didn't crash as often as Eclipse and, at the time, ran about 20X faster, and I
was running those apps on a device with something like a modern smartphone
form factor, although the phone was separate, and using a real-ish browser,
over GPRS, with Windows CE and NETCF.

It's not .NET technology that sucked in the years between when I was doing
that and when Android was released. It was the failure to capitalize on .NET
in mobile.

WP8 still isn't as architecturally elegant as Android. Android's userland is
all based on instances of the Dalvik VM. The CLR does not play that kind of
central role in WP8.

~~~
_random_
Another fun fact is that CLR (well Mono) runs faster on Android then Java.

~~~
Zigurd
Be careful of those comparisons. I expect a port of Hotspot to ARM would beat
the snot out of Dalvik on any synthetic benchmark. It would also use up your
battery doing it.

Dalvik was designed for small battery powered devices from the beginning. In
early versions of Android the advantage it held over Java VMs is that Dalvik
bytecode is (claimed to be) half as big and twice as fast to interpret
compared to Java bytecode.

A useful comparison would have to, at least, take into account battery
efficiency, if not space efficiency, how much you can get away without using
native code, etc.

Then there are issues of how the VM is used. The CLR in Windows Phone is,
AFAIK, not used for a middleware layer the way it is in Android. That is, a
lot of the Android APIs are implemented in Java and run in a Dalvik VM
instance.

------
hkarthik
Simply put, because Microsoft lost two generations of progammers; first to the
web and then to mobile. These are the platforms of choice for most startups
today.

A programmer in his/her early 20s back in 2007 might have cut their teeth on
PHP, while the same age programmer today may have hacked on Android or iOS.
Both are familiar with using Macs or Linux and open source tools that work
with both.

I spent years only writing .NET and the tooling is pretty incredible. But when
I switched to open source the first thing I noticed was how quickly I went
from being the youngest guy in the room to being one of the oldest.

------
jamespcole2
Having been a dev for 10 years, 5 of which were almost exclusively using .net
and the other half using open source web tech I feel like I can add something
to the discussion. I've recently got back into .net for a couple of recent
projects after a few years away from it. First off c# is awesome, it's a great
language.

The main problem I have have with it is the clunkiness of the tools. Windows
itself is pretty poor as a server OS and dev environment(IMHO), it's
unnecessarily heavy, has too many useless features, is difficult to automate,
and more. Powershell is ok but not really as simple/powerful/portable as bash.
SQL server I guess is ok as a db engine but using it is clunky(again feature
bloat really hobbles it). I find getting an environment set up with vagrant,
capistrano etc. with windows much more complex than it needs to be.

Also one of the really noticeable differences is the overall quality of the
community. It's much harder to find good answers to problems when using
.net/Windows than with other environments and platforms in my experience. In
general I find .net devs more interested in maintaining the status quo than
exploring new ideas and tech(massive generalisation but I'm sure I can't be
the only one to notice this). Also nearly every tutorial about modern web tech
is written for *nix environments as the general community support and interest
in .net/Windows seems to be non-existent.

An observation that I've noticed lately when attending tech events and
conferences is that Windows just isn't even on the radar. It's not that people
actively dislike it or openly criticise it, it's just not even considered or
discussed, it's old tech, it's boring, it's clunky.

------
electrichead
There are quite a few startups that use MS but they are largely using it
because of the bizspark programme. I think it is largely to do with cutting
costs and thinking down the road.

It also possibly has something to do with the type of person that decides to
branch out to working in a startup - its my opinion that vested .net
developers are more oriented towards working in the enterprise than in a
startup.

~~~
aespinoza
You have a point to a certain extent. I think the biggest problem is that when
you look into launching your startup, you become more practical and some of
the disadvantages of .Net push the advantages out far.

I know a lot of .Net developers that do launch their startup, but they prefer
to learn a new framework and platform if it is cheaper to operate. Basically
my point is: It is not a type of person that decides to branch out to work in
a .net startup, it is about accomplishing a goal without focusing on
technology.

------
jister
>> it seems no one is using it

or maybe you're just looking in the wrong places like, for example, here in
HN? Here is a list of startups using .NET:

[http://www.microsoft.com/bizspark/partners/Startups.aspx](http://www.microsoft.com/bizspark/partners/Startups.aspx)

------
joshanthony
I work in a startup that chose .NET for our product and admittedly we only did
it because one of our developers had a lot of experience with .NET. I
definitely wouldn't use .NET a second time, mostly because as a startup I
value open tools and freedom. I started working in startups to get away from
corporate bureaucracy. And now with hindsight I now know that "just because
your dev has experience" is never a good idea to do anything.

On that note - I'm working with PHP's Laravel framework for my next project,
and despite the performance tradeoff it's an absolute dream to work with.

~~~
krapp
What sort of project, and how bad is the performance?

I've got a couple of things cooking with Laravel 4 myself but haven't finished
anything yet. I'm curious about your impressions.

~~~
joshanthony
I don't have any proper metrics but I can say it's not bad at all - only when
compared to C# :P

I built a small system for internal communication (sort of like a an internal
twitter/facebook)

I could not say enough good things about Laravel. It really is the future of
PHP.

The only issue I've had with it is in deployment - because of composer it's a
bit fiddly - I ended up using the PAAS Engine Yard for testing deployment (and
I will use them for proper deployment) because it was super easy with them
(just more expensive).

------
AznHisoka
For me, it's not .NET that I want to avoid, but Windows and other Microsoft
technologies. I feel much more productive hacking in an Unix shell. Simple
things like grepping is a burden in Windows, but an ease in Unix.

------
sahil_videology
I worked for a start-up that was a Java shop. A .NET shop acquired it. Our new
big projects are moving away from .NET and to Java on Linux to avoid the
Microsoft licensing costs. We use hundreds of AWS instances, and the extra
cost of Windows instances adds up.

Personally, I prefer not using Windows simply because I love using the *nix
shell, and I don't see the point in using something like Cygwin when I don't
need the MS stack. However, Outlook on MS365 is quite good.

------
knocte
This has already been discussed in the past [1], and most people agreed that
the reasons are bullshit because, yes, Mono [2] is alive and kicking.

[1] [http://www.aaronstannard.com/post/2010/07/03/NET-Culture-
Sho...](http://www.aaronstannard.com/post/2010/07/03/NET-Culture-Shock-Why-
NET-Adoption-Lags-Among-Startups.aspx) [2] Not Xamarin.

~~~
knocte
s/Not Xamarin/Xamarin too/

------
dpmehta02
Hiring is also a consideration. Young, talented engineers often pick the
latest "trendy" language/framework as their first, so if you're starting a
company and want to hire young talent, you will be at a disadvantage if you
don't use Node.js, Rails, Go, etc.

------
rektide
I get a kind of jQuery feel from .NET, but I haven't been following along for
9 years. By jQuery feel, I mean a fairly uneducated developer base that is
happy to be well served by rote practice and already-engineered tooling. It's
not an engaging or creative work environment, it's a get things done world
where you kind of wade through "solutions" until you cross paths with some
existing code that does whats needed, and use that. There's a bazillion people
around all kind of muddling through with various backgrounds who pop up to
regurgitate whatever tidbits they themselves have picked up. Both jQuery and
.NET do a decent job of providing some componentizing, so you can pull stuff
in without having to understand it. You certainly don't have to understand the
target platform either: the web. RoR has a lot of similarities too in being a
culture that remixes the available, and in hiding the real workings, within
and of the target.

Before losing my sense of place in .NET, I was heavily enjoying alt.net stuff,
largely owing to Boo (Python-alike .NET language with fantastic
metaprogramming, AST, macros). Rather than take the normal webstack with Boo,
I was using CastleProject's MonoRail (Ruby Sinatra alike) + Jayrock
(old+excellent JSON omnibus lib) and Spring.NET to build json rest web-
services. For me, it was easier investing in my client side and web
application skills than it was learning how to dive into the engineered
WebForms and ASP.NET and prototype-era ASP.NET MVC work to make them exhibit
the behaviors I wanted. It was a great environment to code in, I liked the
toolchain I'd come to use, but it was far afield the large .NET world and I
had only scattered groups of practitioners (in these various techs I'd elected
in) to work with & no overarching place to for myself as a developer of this
Boo+MonoRail+Jayrock+Spring.NET thing I liked doing and thought fine.

I tend to believe ASP.NET MVC is probably in great shape by now and serves
getting shit up very quickly. At the same time, I think culturally MS- alike
jQuery, RoR, and let's throw in Apple- remains monocultural, with people
invested heavily in fixed technologies that already define a huge amount of
the experience and whose use won't port "out," (monoglot) and there's not a
creative community base that celebrates those striving & seeking less beaten
paths, the polymaths. The intellectual level of engagement is, in short,
pretty shit, and the community is at end to help the far-ranging. Too many
end-developers (end-users of dev kind), not enough well-motivated, working-
for-it journeymen, and mastercraftsmen far removed and few between, with too
few to sound out the practice with broadly and not situated for helping the
weirder polymaths below experimenting with weird shit. Tall organization, huge
fat base with low minimum bars to entry, and monocultural to boot: death.

Or rather, undeath: sustained, undying yet no longer alive quite either.

