
Why Startups Could Use .NET, But Don’t - trooon
http://www.piehead.com/blog/2011/05/why-startups-could-use-net-but-don’t
======
bcrescimanno
There is a strong perception (whether accurate or not--and I honestly don't
know the answer) that it's the same old story with Microsoft: if you go the
.NET route, you've gotta buy into the entire Microsoft ecosystem. It's not
just .NET that you're choosing; you're also choosing Windows servers, IIS,
Visual Studio, etc.

If that perception is accurate, it's entirely reasonable to say, "Despite
liking a lot of what .NET has to offer, we don't want to buy into one specific
company's ecosystem that deeply."

If that perception is inaccurate, then there should be some serious marketing
around changing that perception (and not just from MS--but more like this type
of grass-roots post).

~~~
djjose
Not so sure that's the driver here. Many devs have bought into the iOS
ecosystem. This certainly isn't cheap: macbooks, imacs, iphones, ipod touches,
ipads. It's also a pretty deep dive to get into.

On the web side, I really think cost is the driving factor more than anything.
As long as there's a free (open source) solution to MS's framework that is on
par (we can argue either way which frameworks/platforms are better) there's
little incentive for startups to go .NET. If a LAMP stack started costing as
much as a .NET stack the landscape would be very different. .NET faces the
problems going against the Java stack.

In the end, it's about the money. Which platform can I make more money on and
does it more than pay for the costs to be on the platform? Right now on mobile
it's iOS and on the web it's typically LAMP or lately a Ruby on Rails stack.

~~~
bcrescimanno
"Not so sure that's the driver here. Many devs have bought into the iOS
ecosystem. This certainly isn't cheap: macbooks, imacs, iphones, ipod touches,
ipads. It's also a pretty deep dive to get into."

There's a pretty big difference here: lack of choice. If you want to deploy
native apps to iOS, you literally have no choice but to get into that world.
If you want to deploy web applications (as many startups, especially HN
startups do) there are dozens of options to choose from aside from buying into
a single vendor's full stack.

~~~
djjose
True. The point I was trying to get across is that lock-in doesn't necessarily
stop devs or people from jumping in. The potential to save or make money is to
me the more powerful driver.

------
vyrotek
Our startup is based on .Net and hosted on Azure. I don't think I realized
just how uncommon this was until we were invited to Microsoft in Redmond and
saw the excitement from the developers when they learned that we were a
startup.

We love the framework. But its definitely not the only stack we use. I also
agree that there are _bad_ .Net developers that spoil it for the rest of us.
In my opinion, most of the issues seem to be associated with ASP.Net and
claiming to be a web developer without understanding how the web actually
works. Many of them are so into just using the tools that they never bother to
learn Javascript and instead insist on doing Postbacks for everything.

I feel that we're starting to see a new side of Microsoft when it comes to the
web and startups.

Things like ASP.Net MVC, Azure and BizSpark give me hope.

~~~
bmj
I agree, and the shop where I'm employed is the same--we do lots of .NET
development, but other products are built on other technologies.

As far as bad devs go, don't they exist for most platforms? I mean, is every
Ruby programmer a genius?

~~~
igorgue
"I mean, is every Ruby programmer a genius?"

Yes, they are geniuses, because of this:
<http://www.paulgraham.com/pypar.html>

~~~
chrisaycock
That was written in 2004, when Python was nowhere near as popular as it is
now. Ruby is also really popular today too, and thus fits in the category that
PG was lumping Java in.

If you want a _comparatively esoteric_ language today, try ML or Haskell.

------
d0m
With rails or php, developers can use the editor and the OS they want. With
.net, you're "forced" to use Visual Studio and Windows.

Also, I feel like .net teams are a bit _closed_ to the rest of the programming
community. Lots of C#/C++ programmers think that everything that is not C#/C++
is a joke or a little scripting language. "Omg, I would never build my 2D game
on Python and save 100 hours" - says the C++ developer.

Also, startups and big companies think and act really differently. The
mentality of a startup is: "Go faster!!" while the big company is: "Don't
screw up or you're out". I know it's not _that_ black and white, that's just a
simple way to say it. But basically, the python philosophy is "Programmers are
smart and they'll do their best to use the library correctly" while the C++/C#
mentality is: "Imagine that an idiot will use your library so play it as safe
and defensive as possible".

Finally, I feel like C# is like a big package deal. Maybe I'm wrong, but I
feel like it'd be hard to use CoffeeScript or Compass (for instance) with a C#
project. And, it's not _that_ much about the technology, but the mentality of
the big company. From my experience, I know that had I told my boss: "I'll use
CoffeeScript", he wouldn't have understood why.

~~~
gte910h
>while the C++/C# mentality is: "Imagine that an idiot will use your library
so play it as safe and defensive as possible".

That may be the C# mentality, but the C++ mentality is generally speaking
"We'll have some guys on the team build the tools of gods, then everyone else
will use their classes following their coding standard".

Or the mentality is "wtf are all these bugs"

C++ is only possible really in environments with strict standards and the
ability to fire those who don't or can't follow them.

------
pnathan
I don't know about startups. I work for a mid-sized company.

I consider open source to be a better choice in my discussions for these
reasons:

* Vendor lock-in avoidance. This can induce some pretty harsh long-term effects, especially with maintenance fees, inflexible users, and data isolation.

* Code escrow. If your customers are relying on a particular component being available for you, it's not a really good thing if that component is 'disappeared' by an API rev. Open source provides trivial code escrow facilities.

* Speed of development. Open source projects seem to move faster than enterprise-level software.

* Company risk: there's no risk of the source code simply going away because the company folded or was bought out. If needed, we can maintain an open-source component if it's that critical.

* Standards-compliance: most open source seems to think about standards more.

* 'Wave of The Future': many novel developments are in open source. If we make sure to ride that wave, we won't obsolete ourselves by locking to a single company.

These reasons all relate to software maintenance and agility in some fashion.
Being able to maintain software and to shift platforms (when appropriate) is
important. Open source allows those qualities to be there more than non-open
source, in my opinion.

I have seen enough Java/MS revs pass through that I don't think it would be
professional to recommend solutions based on those platforms, in general.

Best wishes to those those do venture out onto the churny waters, though.

------
joelangeway
I use both .NET and the LAMP stack everyday. I love .NET and C# is a beautiful
language. But I have to use Windows to use .NET. There is nothing wrong with
Windows, except it doesn't have a very good shell; it doesn't come with the
GNU user land; I can't just grep and sed and awk on one line to solve problems
and answer questions; when I google for help with stuff like mysql I don't
find near as many answers that would apply to windows; I can't just type "apt-
get install ..." somewhere to try out a new programming language or other
large program for free; I can't solve problems with SSH. All of these problems
can be solved to a large extent, but not in a well known, well documented and
Free way. Maybe that's just a matter of culture, but until the not-
artificially-limited version of Windows can be downloaded for free, I can't
give it a fair try.

~~~
yread
> it doesn't have a very good shell

Get a better one then: <http://jpsoft.com/tccle_cmd_replacement.html>

and terminal: <http://sourceforge.net/projects/console/>

>it doesn't come with the GNU user land

just unpack this in PATH <http://unxutils.sourceforge.net/UnxUpdates.zip> it
has grep and awk and sed and all that

> I can't solve problems with SSH

from client side (putty) or server side
(<http://sshwindows.sourceforge.net/>)?

~~~
joelangeway
Thank you for the suggestions.

------
kenjackson
Another answer is it's because most startups are consumer web-focused and MS
traditionally hasn't been.

ASP.NET was traditionally an enterprise framework. Which got long in the
tooth. ASP.NET MVC is quite good, but probably just caught up with the leading
FOSS with MVC 3. Give it a year. And in general people aren't doing startups
for desktops anymore, although they're still huge in the enterprise, which is
why .NET is bigger in the enterprise than for startups.

The other big space for startups is mobile, but MS isn't big here at the
moment. Why are startups using Cocoa now? Well because iOS is huge. If WP7
becomes huge, guess what happens? C# becomes a hot language for startups.

The author of the referenced blog (not the Piehead one) clearly doesn't
understand that domains tend to dominate language. And further doesn't seem to
understand that you try to pick the best tool for the job. A manager
begrudging you for selecting the best tool for the job is not someone you'd
want to work for.

~~~
chrisaycock
Agreed. _Distribution_ is the primary concern of most software vendors (big or
small), so mobile developers are going to target Android, iPhone, and in some
cases BlackBerry. Microsoft's mobile market share today resembles Apple's
desktop market share back in the 1990s.

------
sofuture
_The real answer is just as much about our industry’s culture as it is about
technology._

No, it's _entirely_ about our industry's culture. Which is a shame. It's a
fantastic framework that should and could supplant the JVM. It never will
though, thanks to Microsoft's boneheaded choices and the blog posts like 'Why
I don't hire .Net developers'.

~~~
guard-of-terra
The problem is Microsoft. .Net would be a perfect thing if it wasn't fully
owned my MS, in which case it probably won't be far as perfect.

However, you have to use MS OS, MS development tools, MS deployment - and it's
pretty painful especially because you can't use shiny macbooks any longer :)
If you try to replace any element of that chain, you're on your own entirely.

On other hand, MS ecosystem is smaller than non-MS. For example, what does it
have for non-relational storages? Stack Overflow started from pure-MS
infrastructure and it's 50/50% already - redis, linux frontend proxies.

~~~
tansey
_However, you have to use MS OS, MS development tools, MS deployment_

You can use Mono tools if you'd like. For deployment, AppHarbor is just
awesome.

 _...you can't use shiny macbooks any longer_

I'm on a brand new Macbook Pro right now and I just pushed to AppHarbor.
Bootcamp is great.

 _For example, what does it have for non-relational storages?_

MongoDB works great with .NET. I'm actually about to switch my .NET-based
startup[1] over to it from SQL Server.

 _Stack Overflow started from pure-MS infrastructure and it's 50/50% already -
redis, linux frontend proxies._

Everything breaks at scale. This is the same kind of argument people used
against Ruby on Rails regarding Twitter. No matter what technology you use, if
you reach the massive scale that StackExchange has, you'll delve into
optimization voodoo as well. It's one of those good problems.

[1] <http://effectcheck.com>

~~~
guard-of-terra
I believe that if you would have a problem with some third-party library and
mono, you have good chances to be replied with "just drop mono and use real
.net" I would glad to be wrong. But with Mono, you would always have slower,
less reliable and less supported platform. Would not you?

It might be no big deal for some developers, but the difference between java
and c# might be no big deal, too, for some developers. At least when I have my
Eclipse on kubuntu with clojure code inside, I know that 1) Eclipse on linux
is a supported, solid configuration. 2) clojure is experimental, and it's
experimental for everybody, not just me.

On other hand, mono is wonderful if you like tinkering (dotgnu probably is
even funnier), but if you like tinkering you might as well take factor, common
lisp or dozens of other fun platforms.

------
kinofcain
A couple years ago when I was working for a mostly rails shop, We built a
medium sized e-commerce system in .NET MVC.

It was our first C# project (though we'd done java before). It was actually
quite nice.

.NET MVC is, as some others have mentioned, a rather shameless rip off of
Rails-style mvc, but they did a good job, and they published the source, which
is handy.

C# is pretty nice, after working with it I actually prefer it to Java.

When we finished the project we were so pleased with the .NET MVC stack that
we tried to see how we could make it work for other projects, but it came down
to tools and platform:

We had to run windows for development and deployment if we wanted to run
Visual Studio and IIS. VS is a decent IDE, but having a *nix system is
necessary for literally every other thing we do, which meant we were either
running windows in virtualization or dual booting (we have no desire to run
linux virtualized for development).

We looked into the mono tools, but trying to get our code running there was an
exercise in translation: all the tutorials and documentation are focused on
the windows world, so it's difficult to find resources for working with .NET
on mono for web development.

In the end, .NET MVC is nice, but it's not such a game-changer that we were
willing to put up with the windows-centric toolchain and, just as importantly,
the windows-centric culture surrounding it. Unfortunately I can't see
Microsoft making the effort to push it to a wider audience.

------
strlen
I'd love to use C# or F# for development: they're in my opinion, superior
languages to Java and Scala (respectively) -- although Scala has several
salient and interesting points (implicits, traits) that F# doesn't.

However, I am fairly well wed to Linux/OS X, and don't see myself being
productive with Windows (whenever I used Windows, the first application I'd
install is Cygwin), nor (having never done Windows Systems Engineering) do I
know how to find a great SRE/operations engineer for a Windows system (or how
to train a great Linux SRE to be a great Windows SRE). Nor can I legally setup
a small cluster of Windows Server machines in my apartment (or on Ec2) to
prototype the application _before_ I officially start a company (and qualify
for bizpark) without paying extra costs. Ditto for setting up a developer
desktop with MS Visual Studio.

I am watching Mono seriously, but for now I'd stick to C++, Erlang/OTP, OCaml,
and Java/Scala as my choices (with Python or Ruby for scripting) were I to
start a new project.

Addendum:

Microsoft: if you're reading this, buy Miguel De Icaza's startup. Make Linux
and OS X a first class side deployment platform. Market SQL Server (which,
from what I recall is superior to it's primary competitor, which is Oracle) as
a way to "upsell" customers using Mono on Linux to use Windows Server (if it
makes business sense for them).

~~~
icey
If you haven't looked at it yet, you may also like Nemerle -
<http://nemerle.org>

You don't really need Windows to write C#, F#, etc. There are emacs modes for
them if you like emacs. I'm pretty sure there's an F# module for Monodevelop
available.

It doesn't help you with the OS situation at all, but Visual Studio express is
free from Microsoft should you find yourself on Windows.

I know C# better than most of the other languages in my toolkit, and it's
pretty great, but I don't think that Windows is very enjoyable to use when
compared to an OS with unixy underpinnings. Should you decide to check out C#
or F# in more depth, I'd recommend staying on the OS you prefer.

Mono is production quality today, you don't have to wait for it.

~~~
strlen
> Mono is production quality today, you don't have to wait for it.

Having looked at it myself, it just doesn't seem to the case: the only
_recently_ got support for generational garbage collection and only plan to
support tail call optimization (for F#) in an upcoming release. It's still a
technical risk to "bet" on Mono, much more so than on JVM or Erlang/OTP.

------
arjunnarayan
Why wouldn't a startup that I start use .NET? Because it's too late. The time
to catch me was 5-10 years ago - when I was a middle school/high school code
monkey playing with the Linux/GNU/gcc stack.

Now it's simply too late. Sure, I could and would invest time and money if
your stack was orders of magnitude better. And I often do learn and use new
stacks (the ML family; common Lisp) if they happen to be by far the right
environment for the problem at hand. But if .NET is just "Java, but a little
better", it's really not worth my time.

~~~
woogychuck
This is very true. Microsoft has not done a good job reaching out to younger
developers, which probably hurts them far more than they realize. While I like
working with .NET now, I was 100% PHP & Perl dev through high school and
college. When I graduated I was hired at a company that built CMS products and
needed me to know PHP, ASP.NET and ColdFusion. I realized pretty quickly that
my PHP and Perl skills translated pretty well. The hardest thing for me was
getting used to writing real apps in an object oriented language.

------
kylec
I think the Achilles Heel for .NET is Windows - the only way using .NET to
develop makes any sense is to use Visual Studio, and to use Visual Studio, you
need to use Windows. And that's a hard sell for a lot of people - most people
in the startup scene use Mac OS X or Linux, and one of the reasons why is
contempt of Windows. In many ways, .NET is better than Java, but I can't
seriously consider using it if it's tied to Windows.

------
mixmastamyk
.Net doesn't make sense for most web startups no matter how good it is. Why?

* The floss stack is good enough (sometimes better) and more flexible. Can scale up as well as out: [http://www.codinghorror.com/blog/2009/06/scaling-up-vs-scali...](http://www.codinghorror.com/blog/2009/06/scaling-up-vs-scaling-out-hidden-costs.html)

* Unix is more elegant as a headless networked server, as it was designed that way since the early 70's.

* Researching bizspark will never beat the efficiency of: sudo apt-get install postgres

* AKA, time spent worrying about licensing, product codes, and activation is time wasted.

* EC2 (for example) charges ~25% more for Windows thanks to license fees.

The choice between (free, freedom, and elegant), almost always beats (cheap,
restricted, and (at times) clumsy)). If there is an aspect to your startup
that makes .net a better fit, by all means. But to act as if it is a good
solution for the average startup (that intends to grow rapidly) does the
community a disservice.

I'd go so far as to say that the "Web 2.0" boom owes its existence to the
combination of the floss stack and cheap commodity hardware. In the 90's it
took millions to do what today takes thousands (or even hundreds).

------
mmcconnell1618
As a Microsoft developer for more than a decade I can say without a doubt the
biggest complaint is that you operate on Microsoft's schedule. If they say
LINQ to SQL is dead. It's dead. If they say, you must build Windows apps using
XAML, you have to use XAML. I've had to learn at least 5 different data access
frameworks over the years.

What I've learned is that core functionality (like arrays, strings, math
libraries, etc.) are great but when you adopt higher level Microsoft
frameworks (like authentication in ASP.NET) you have to be prepared that at
some future point MS will pull the plug.

Open source projects can integrate very well with .NET but if you're starting
from scratch at a startup I don't think there is a huge value in the tool
chain the Microsoft offers v. OSS tool chain.

------
Ruudjah
-Not OSS (note I didn't include the F)

-Cross-browser pains

-Vendor lockin (getting better with mono, but not officially supported by MS)

-Non-(f)OSS tools or less (F)OSS tools

-Non-OSS risk (can't patch if needed)

-No support for WebGL/other html5 tech

-Useless pushing of Silverlight while industry shifts to HTML5

~~~
elbelcho
I think your opinions are based on out of date info.

There are no real "cross-browser pains" when developing ASP.NET. I think you'd
really have to go out of your way today to develop something that "works
better" in IE than other browsers.

MS contributes to and supports Jquery and includes it by default in new
projects.

Silverlight isn't really being pushed at all except on WP7. It was more of a
flash competitor anyway and never was meant to compete with HTML5.

There are quite a number of FOSS tools for .NET development, and incredible
amount of 3rd party support that's not FOSS.

Granted, most of their stuff isn't being released as OSS. I believe some of
their newer tech is releasing source through codeplex.

Overall, most of the complaints I've seen in this thread about Microsoft are
better directed at the Microsoft of the 90's and early 2000's than the
Microsoft of today.

------
bad_user

        However, Microsoft has been running their 
        Bizspark program for a few years, which 
        eliminates most of the startup costs normally 
        associated with employing a .NET framework.
    

The problem with BizSpark is that it is a ticking time bomb.

When starting a business, you don't really know what will happen in 3 years,
but only one thing is certain -- the path to success usually takes more than 3
years.

And unless you've got VC money to burn irresponsibly, why build on top of a
stack that you'll probably have to replace? Does it provide more value than
the alternatives? When it comes to web services, all evidence is to the
contrary.

    
    
        At Piehead, we build web applications on a faster 
        pace than almost any startup
    

This is an unsupported anecdotal evidence.

It also seems incorrect based on the sheer number of businesses I've seen
doing kick-ass work with non-MS technologies.

    
    
        programmers start to choose technologies based
        on that cultural perception, rather than focusing 
        on the best approach for the kinds software they 
        want to build
    

This implies that .NET is the best approach for certain kinds of software -
the article does nothing to name them. Which is IMHO, not the best way to
advocate for the usage of .NET.

And again, all evidence is to the contrary - most popular web-services online
are not built with MS technologies, with a few exceptions that you could count
by using the fingers on one hand. And what else, other than ASP.NET-powered
web applications? For client-apps targeted to consumers? For mobile apps?
Again, all evidence is to the contrary.

Besides the price and the interoperability story - another reason would be
that Microsoft is currently a follower.

Besides a couple of exceptions, which are small in scope, Microsoft currently
does nothing but to copy ideas taken from (shock and horror) open-source
projects. Sorry, but innovation happens somewhere else.

I also like being able to be in control. Even if I don't know the internals of
some component I'm using, I like being able getting in touch with the core
developers of that component and ask them nicely or pay them directly to fix
it for me. And if that component is valuable to me, I also like being able to
improve it myself.

Open-source gives you that, Microsoft software doesn't.

~~~
woogychuck
Hey Bad_User (if that is your real name),

Just to back up what I wrote in the article.

I've worked with 2 start-ups. Both had a major feature release every 4-6
months with minor releases every month or two. At Piehead, most of our
projects are less than 2 months from client sign-off to launch. Based on
talking with other developers in the Boston area, these timeframes seemed
pretty similar to what they were seeing at start-ups and agencies.

I didn't list a huge number of start-ups because I felt the post was getting a
bit long and didn't want to jam a bulleted list of start-up names in the
middle of the article. There are about 20,000 start-ups listed in the BizSpark
directory. Granted, they aren't all web start-ups, but I've only got 5 fingers
on one hand and I bet there are more than that in the directory. If you want
to see a bit about running a web startup on .NET, the guys at
<http://www.stackoverflow.com> have posted lots of articles outlining the pros
and cons they've encountered.

It's also worth noting that almost everybody is a follower in the tech world.
PHP and Ruby both evolved from Perl. MVC was in use before half of us were
even born. In the end, these are just tools and the power comes from what we
build with them.

You use the phrase "all evidence is to the contrary" a lot. If you only see
evidence supporting open source tools, you're likely not looking too hard.
There are pros and cons to both ecosystems and blindly tying yourself to
either one will only hurt you in the long run. My main point was that many
developers make decisions based on opinions not facts, and your comments seem
to re-enforce that. If PHP, RoR, Django or some other platform is best for
your project, use it, but don't hide behind hyperbolic psudeo-facts.

~~~
bad_user

         I've worked with 2 start-ups. Both had a major 
         feature release every 4-6 months with minor 
         releases every month or two.
    

Great, so you've extrapolated your experience to the whole ecosystem. I'm not
saying that at Piehead you don't build websites at a faster pace than others,
but even if you do, it's a selection bias, since you're only comparing others
that are similar to yourself.

Here, I'll give you an example - suppose you want to do natural language
parsing, a fairly hot topic these days. Try finding me supporting libs that
would do that and that are better documented or mature than NLTK (the Python
library), which doesn't work on IronPython btw.

    
    
         didn't want to jam a bulleted list of start-up 
         names in the middle of the article
    

That's too bad, as it would have done more for the point you were trying to
make than all the other blabering you wrote.

    
    
         almost everybody is a follower in the tech world
    

Yes, but most valuable projects also add things of value that the original
projects didn't.

How's the deployment story these days for .NET? Does it have something like
Capistrano yet? Why should I use a half-baked clone of Ruby on Rails, when I
can go for the real deal and have thousands of cool plugins to choose from?
Why should I use NuGet when you can have the really mature Debian repository
and rubygems.org/CPAN/PyPi?

    
    
         PHP and Ruby both evolved from Perl
    

Both innovated in certain ways over Perl, I'm not advocating for revolutions.
In both cases you can see clear benefits that those languages / ecosystems
provide over Perl.

That's not the case with .NET - it's a proprietary technology, having all the
cruft of Java, while not having all the benefits of Java - like a strong
community or integration with anything under the sun.

    
    
         MVC was in use before half of us were even born
    

Funny you mention that, because ASP.NET is not MVC. It also makes you jump
through hoops to have MVC, mostly because of that braindead postback
mechanism.

And not all MVC frameworks are created equal. If you can't see the benefits
introduced in ASP.NET MVC that were copied from others and that weren't in
existence when half of us were even born, then there's no point in debating
any further.

    
    
         There are about 20,000 start-ups listed 
         in the BizSpark directory
    

Then what was your blog post about?

    
    
         There are pros and cons to both ecosystems
    

You aren't showing me any pros of .NET, and that was my whole point. Article
is vague and filled with hyperbole.

    
    
         If PHP, RoR, Django or some other platform is best for
         your project, use it, but don't hide behind hyperbolic 
         psudeo-facts.
    

Well, hyperbolic pseudo-facts are countered best with hyperbolic pseudo-facts.
Am I right or what?

~~~
blackman
I think you have not seen the latest Asp.net MVC 3, it is pretty much
something like rails.

------
fleitz
I'm using rails for my company but ruby is definitely not my preferred
language. Blocks/Procs/Lambdas (why are there three almost identical
constructs?) definitely don't compare to function application / currying. I'd
much rather write in F# but I'm worried about all the nice to haves that come
with the rails stack, like capistrano or the plugins to serve/upload your
assets to S3. (e.g. ASP.NET has HAML but not sass)

I definitely foresee at some point switching to ASP.NET in a similar manner as
twitter is moving over to the JVM / Scala, but rails still has a lot of legs
in it for us.

~~~
xpaulbettsx
> (e.g. ASP.NET has HAML but not sass)

I fixed that this past weekend :)

[http://blog.paulbetts.org/index.php/2011/05/16/announcing-
sa...](http://blog.paulbetts.org/index.php/2011/05/16/announcing-
sassandcoffee-0-5/)

~~~
fleitz
You rock! You've tempted me to start using F# / ASP.NET MVC again.

------
toast76
I've been a .NET developer for close to 10 years. Our last product
(UsabilityHub.com) was written in .NET simply because it is what I know.

In reality it doesn't matter how good .NET is, there are two reasons why we
didn't use it for our latest venture (BugHerd.com).

1) .NET is always one step behind. When people say .NET for web apps, they
really mean MVC. I love it, but the reality is that it's a .NET implementation
of what was long since done elsewhere. .NET will always be a step behind.
Although I must say, sometimes being the second to implement something is a
good thing for stability.

2) Hiring .NET developers means hiring enterprise developers. A huge
generalisation here, but that means engineers that have worked in big teams
under constant direction. They don't do open source, they don't read other
people's code and they aren't used to working autonomously.

------
erikstarck
Agree on the culture thing. Wrote a blog post about a year ago:
[http://www.softwaresweden.com/2010/04/28/picking-a-
programmi...](http://www.softwaresweden.com/2010/04/28/picking-a-programming-
language-based-on-personality/)

"They don’t tell you this in school, but there’s a certain organizational
personality connected to each language... It’s not a matter of the powers of
the languages themselves but how they are used and who uses them and what kind
of projects will you be doing with the language."

------
famousactress
I dunno. I get confused, easily. Every few weeks something like this kicks
around, I get tricked into saying something unfortunate (but true) about the
MS development community, no one changes their mind and the process repeats.

I guess what I keep forgetting to ask is why _should_ I ever consider using
.NET for a server side application? I'm totally boggled as to why it's not
just a redundant, expensive, risky idea compared to the legions of
alternatives. That's very different than suggesting the language or platform
is bad... They're not at all. In fact, I think they're great. I just don't
understand what makes them worth the trade-offs that come along with signing
up.

------
gfodor
Closed source. If it breaks (really breaks) I (or anyone without a Microsoft
badge) can't fix it. And if they do fix it, it will take a while for the patch
to get to me. Pretty simple if you ask me.

~~~
MichaelGG
Well, the number of engineers that can actually patch something, in say, the
JVM, are rather limited. So I'm not sure open source is nearly as big a deal
as it's made out to be, as far as patching goes.

You do have a point on release cycles, but that's not inherently about being
closed source.

~~~
bxr
>Well, the number of engineers that can actually patch something, in say, the
JVM, are rather limited. So I'm not sure open source is nearly as big a deal
as it's made out to be, as far as patching goes.

Rather limited? Thats just not a good excuse where I'm coming from. If I need
a bug fixed, it doesn't matter I don't know jack about the JVM today, if the
cheapest way for me to fix the bug is to jump in myself, I'm going to become a
member of that very limited group that can patch the JVM.

It would be nice if we were developing in an environment that we could throw
our hands up and walk away, but in the project I'm working on, we've already
had to dig very deep into opensource components of our stack to fix their bugs
that would have blocked us from shipping.

------
snorkel
It all goes back to everything Microsoft offers is tightly coupled to
Microsoft's ecosystem, and frankly I've played in that space for years and
just got bored of it, plus I got tired of investing in learning Microsoft-
specific APIs that Microsoft itself kept obsoleting.

Nothing really new or interesting is happening in Microsoftland. Instead every
new offering is just an incompatible counter-offer to some other established
technology (eg. Silverlight vs. Flash, .NET vs. Java, Windows Passport vs.
OAuth, and so on). Boring.

Perhaps the only area Microsoft has truly offered anything new and interesting
is DirectX but I'm not a game developer so I don't have any use for it.

~~~
gabbo
I'm not really trying to refute the broader point you're making, but Passport
existed _long_ before OAuth. Late 90s I think.

They're only trying to do the same thing in the most superficial way. Passport
was Microsoft's attempt to do single sign-on across the internet by
centralizing authentication. It never really caught on. The only place I saw
it was on eBay for a few years, nowadays I think it's mostly for MS
properties.

------
pbz
As much as we like to think of ourselves as cold and calculated, able to cut
through emotions when making decisions, more often than not we're just like
everybody else.

------
jswinghammer
My startup uses .Net which I chose for the basic reason that I know it very
well and I didn't have time to go learn something else while I was trying to
get work done. Any server I add is in response to more paying customers so the
cost doesn't matter at all. It cuts into the margin a little but I only add
new servers when we add a lot of new business. The initial cost of VS.Net was
annoying but it wasn't bad and I was able to run off of SQL Server 2008
Express for a very long time.

~~~
vyrotek
Are you still working on Aterium.com? Or do you have a new startup that you're
working on now?

~~~
jswinghammer
Yep still working on Aterium. Going really well.

------
eibrahim
It's just a perception. Use whatever tool/framework/service that work for your
situation.

My latest project was a Windows Phone 7 app with a backend written in Python,
hosted on Google AppEngine and using Google's Bigtable database.

A few years ago, for my startup, I used asp.net mvc for the web app and joomla
(php) for the website because they had great themes.

So, open your mind and try different things, you will be surprised how much
you will learn. But honestly, there is NOTHING that can't be done in either
platforms. Technology is really irrelevant. Look at wordpress and facebook.
Look at basecamp, look at office live and google office... Look at the crappy
objective-c ecosystem and the awesome apps that were built with it.

~~~
vyrotek
I totally remember checking out the Yonkly source code when I was first
learning asp.net mvc. :) Has it really been years already?

------
yesimahuman
I've done development with ASP.Net on Windows/Windows Server/IIS/etc., and I
just simply don't prefer it to Python/Django/Linux.

C# is a great language, but I find the point and click/cmd.exe solution to not
be as robust and quick as a *nix command line.

Visual Studio is a great tool but it has its quirks, complexities, and bugs.

The .NET stack has a lot of potential for web development (MVC being the
shining example), but there are so many technologies that make up the stack
that it can be overwhelming. It also doesn't help that they are all sold as
being equal but that developers in the know would tell you to avoid most of
them (WCF/Web Methods/Web Service files/Web Forms/etc).

------
jzoidberg
The issue i think is 2 fold:

1) MS technology is designed as if no other exist - it aims to be a self
contained ecosystem. It is the ultimate lock-in.

2) MS business practices - after the last 10 years i think many technologists
will never trust them again.

------
braindead_in
What about the reputation of MS amongst the developer community? Eg. Stability
of Windows (reboots over weekends to free up memory), countless hours spent
cursing MS for IE6 etc. IMHO that's also a major factor.

------
andrewtbham
That biz sparks program is like a drug dealer giving free samples... yeh u get
a free copy of visual studio, but then you got to pay if you exceed any of
these requirements...

<http://www.microsoft.com/bizspark/>

Privately held? Less than three years old? Making less than US $1M annually?

~~~
Elepsis
Is it really a problem to pay for the software you run when you make more than
$1M/year in revenue?

------
technomancy
> As a result, programmers start to choose technologies based on that cultural
> perception, rather than focusing on the best approach for the kinds software
> they want to build.

This seems to imply that cultural issues don't affect the way the software is
built. In my mind it's the #1 factor.

------
InclinedPlane
To be honest, I think one of the biggest problems with using a Microsoft stack
is licensing. With Linux/OSS infrastructure the only limit in terms of
flexibility is your imagination. Want a server? All you need to buy is the
hardware. Want to change the OS on a server? Just takes time and effort. Want
to change your infrastructure from a few big iron boxes to 10x as many smaller
boxes? Again, just time and effort and hardware costs.

In contrast, with an MS stack you have licensing and purchasing friction at
every step. You get mired with infrastructure inertia, you don't want to waste
the money you've spent on buying OS/database licenses, you don't want to spend
new money on new licenses. Even when the money isn't very consequential (and
in most operations it's not) the mere fact that budgeting has to be involved
in so many technical changes often reduces flexibility and development
velocity. For example, what if you want to merely investigate a potential new
server configuration? With Linux you can perhaps find some older hardware and
spend some time prototyping a new system, and if it doesn't work you've wasted
time but you've at least learned something. With Windows you have to commit
money before you've completed your test.

~~~
jf
Is there a way that BizSpark fails to help here?

------
jcromartie
I think it's a community problem. Stackoverflow is the closest thing to a
vibrant .NET community that I've ever seen, and that's not saying much.
Despite the massive enterprise buy-in, it's very lonely place to be sometimes.

Nothing really exciting happens in .NET.

------
dhechols
>Essentially, the cost differences have become moot.

What? Have you seen these prices?
<http://www.microsoft.com/sqlserver/2008/en/us/pricing.aspx>

That's just SQL Server for god's sake.

~~~
thomasz
15 bucks a month sounds very reasonable...

~~~
msbarnett
That's $15 more per month than we're paying in licensing fees for our RDBMS.

Giving away money I don't need to doesn't sound very reasonable to me.

------
teyc
As an enterprise software stack, .NET may be fine and competitive. However,
the reasons that make it a good enterprise stack work against it in the
startup space.

Take the example of a web page returning JSON. In Rails there's a prescribed
way to do this. It is generally straight forward and one gets it done
literally after 5 minutes of tutorials.

In .NET, you have to install the WCF REST stack, learn about endpoints,
bindings, the difference between Raw, and wrapped formats, then there are
authorization behaviors (tokens, windows integrated etc etc). Mess around with
service hosts in IIS and then pray it works. With everything being pluggable,
there is no simple prescriptive method to get code working and moving on to
the next feature. The stack is so complicated that blog posts even by MS
employees contain errors which stay uncorrected. I have spent two days trying
to figure out what is the best practice for uploading a large file to a web
service and the combination of options are simply bewildering and with so many
parts one wonders if it is going to work at all.

Now imagine this struggle being repeated in every aspect of your development.
You will spend the day stepping through Factories and Hosts and Locators using
Reflector.exe before finding the little bit of code that does what you want.
Then you swear at MS because it is marked "internal" and you can't monkey
patch it.

This syndrome is in part due to the size of Microsoft. MS would never dare
release software that wasn't pluggable because it has a big audience and big
audiences want a clear delineation between what is their code and what is
maintained by Microsoft. The startup ecosystem just wants to hack code until
it works and get things done. No startup developer can really devote the
necessary time to the study of large software stacks before sending out a
piece of string.

MS has done an outstanding back-to-basics job with WebMatrix and its PHP-like
simplicity. However, it is still a long way behind in other respect.

For example, MS doesn't cultivate a community the way open source projects do.
There is no central place to find able consultants, or centralized Planet-
style feeds, or given provide a site where users can contribute tutorials. The
employees are answering forums in their free time (I saw some post at
midnight, and this is devotion, but the msdn forums are literary broken - you
can see the answers being doubled up in the rendered page but no one fixes
them). The experience simply reeks of helplessness on the poor MS-employees'
part because someone else in the company has created such a shitty place for
developer interaction.

~~~
JonoW
> In .NET, you have to install the WCF REST stack

Well you don't _have_ to. If I was just writing services to only return JSON
to a web-page, I would just use ASP.NET MVC which has good built in support
for this, e.g.

public class MyController : Controller { public ActionResult MyJsonAction(){
return Json(new { Id = 1, Name = "MyName" }); } }

Now you have a url /MyController/MyJsonAction which will return the JSON
string { Id: 1, Name: "MyName" }, no stress.

WCF is complicated, but it is powerful too, especially if you need to support
multiple bindings (e.g. REST and SOAP endpoints for the same service). Also,
if you need to support the SOAP WS-* standards, it's a life-saver.

~~~
teyc
Thanks. I'm new to MVC. Sounds like MS got their act together on this one.

Complicated is usually overkill for a startup though. This means a big swath
of .NET technology is simply not applicable.

------
kno
At Busfeed.com all our systems and App are build on Microsoft platform and
.Net framework. The MS BizSpark program is a winner for us and many startups
we know. The icing on the cake: it’s waaaaay easier to hire Microsoft
professionals on the east coast than for any other platform out there.

I think the ability to find and hire good developers is the most underrated
factor in tools for startups.

------
joeyespo
> [...] don’t look for PHP programmers or .NET programmers, look for
> programmers with experience on a variety of platforms.

This isn't mutually exclusive.

.NET is just a tool. Perhaps it should instead be rephrased and generalized:
don't look for programmers who _only_ have experience with X. But that's still
a different argument.

------
T_S_
I am a knee-jerk Microsoft hater (with reasons I won't bore you with). Last
fall I saw a bank developer giving a demo of how to build a system using F#
and accessing the the windows GUIs library on .Net. I have to say it was very,
very nice and powerful. I was half tempted...

------
sradnidge
In my experience Windows ops/admins don't have anywhere near the depth nor
breadth of infrastructure knowledge that *nix ppl do, and I have yet to meet a
.NET web developer who knew anything about OS internals.

I'm not ragging on MS devs, just an observation from personal experience. The
well-roundedness of the FOSS based software engineers makes them a much better
suit for startups than MS people. I don't believe technology superiority
really comes into it.

------
evo_9
This is interesting. More startup ar using .Net than I would have thought
(including mine).

We should create a separate thread to list/show our stuff (for those ready to
show).

~~~
vyrotek
I wish there was a better way for us to meet other .Net startups. I usually
try to send an email to any companies I discover are .Net based here on HN.

Even if you're not ready to show, I still want to meet everyone!

------
antihero
Is there a way to learn .NET stack without downloading lots of stuff/having a
student license/licensing things?

I do like C# and have used it for Uni projects in the past, but I've done much
more work in Python because starting out in it was as simple as typing
"python", or making webapps is as simple as apt-getting or easy_installing a
framework and doing a simple tutorial. What is the equivalent of, say, the
Flask tutorial, for .NET?

~~~
vyrotek
<http://www.microsoft.com/express/Web/>

I'm not familiar with the Flask tutorial. But usually when you create a new
Web or Windows project in Visual Studio you just hit F5 and you're already
running a basic "hello world" app.

------
woogychuck
Hey all, I'm the original author and I saw this popup, so I figured I post a
quick comment.

A lot of people have pointed out that I didn't really include and example of a
start-up using, which is a legit point. If you're interested in seeing a good
example, check out <http://stackoverflow.com> They're a great example of a
company that's very open about their experiences with .NET (both good and bad)
and they generally post them on their blog at
<http://blog.stackoverflow.com/category/aspnet/>

If you have specific questions, feel free to reply and I will do my best to
answer them.

------
emp_
IMO, Open Source is what is going to save the .NET as a startup option, things
like Nancy, OWIN, Kayak, SimpleData, Dapper are building an entire web stack
without any Microsoft owned product.

------
6ren
PHP and ruby are simpler and easier to use for non-enterprise webapps
(particularly with RoR, and Sinatra being simpler again).

Like JSON being favoured for simpler uses where XML is not required (it lacks
schema, references and namespaces).

The usual trajectory is for technology to improve. PHP and ruby and JSON are
becoming better at meeting the needs of their specific users. It's harder for
a highly sophisticated technology, like .NET, to become _simpler_ (though
they've been much better at this than Java).

------
mwsherman
Lock-in is a bit of a myth, or more precisely, everything "locks you in". If
you start with a LAMP stack, or Rails, or .Net it's going to be very expensive
to change that once your business is off the ground. This is because the main
costs are developer time and time-to-market/opportunity costs.

Regardless of platform, a wholesale rewrite is rarely viable. Facebook is
still on PHP, and have had to take heroic measures to avoid moving to another
language.

------
hysterix
The writer of this awful article obviously has not done much web development
programming, because if he had, he'd know that microsoft is atrocious in every
respect.

Microsoft has its own standards, its own way of doing things. Microsoft does
not "play nice". When I code a site that needs to be compatable with all
browsers, I need seperate code for ie6, ie7, and ie8. They all interpret code
and standards a bit differently, leading to page inconsistancies.

And now, this jerk says we are supposed to embrace microsoft and program in
.net? Is this guy out of his fucking mind? Simply program anything thats
actually going to be useful and require cross compatability, and you will
quickly see why microsoft is looked down upon by ACTUAL developers, hated, and
is known across the lands as a large piece of garbage.

For how little microsoft has done for the open source community, for how long
it takes for microsoft to issue simple updates, for how many years certain
browser bugs were hanging around; I would never, ever, ever, support that
company.

The mere thought of a startup company using .net is laughable. Anytime I hear
any company using .net, all I can think of is some high up executive got
schwindled, and it is up to the low level developers to turn a massive pile of
shit, into something useful.

~~~
woogychuck
Hey Hysterix, I'm the author of the post.

First off, I've been doing web development for about 8 years and I've been
using both PHP and .NET for most of that time.

Based on your clear bias, I'm guessing you're basing your opinions of
Microsoft's development tools solely based on your experience with older
versions of IE. This isn't really a valid way to judge technology, any more
than it's valid to judge the quality of Google Maps based on experiences with
Google Wave. IE and .NET are two completely separate entities. It's also worth
noting that we all have to deal with cross-browser issues regardless of what
server side tools we use.

You clearly have some dislike for Microsoft as an organization, but most of
your statements here are unsubstantiated and completely irrelevant to .NET. An
actual developer knows how to choose technologies based on what best fits the
project, not based on personal opinions.

------
ianb
In the local Twin Cities startup scene I have seen several .NET startups. But
rather than make me question my feelings about .NET it has made me question
the local tech scene. (FWIW a lot of these are around medicine, which may be a
healthcare IT culture instead of an internet culture)

------
SwellJoe
This is the least substantive article I've seen make it to the top of HN in a
long time.

------
maxer
plentyoffish.com the worlds largest dating site is based on M$ tech

