
.NET: So long and thanks for all the fish - pitdesi
http://lucisferre.net/2012/02/08/dot-net-so-long-and-thanks-for-all-the-fish/
======
powertower
As a .NET developer that's currently working on a 100,000+ line application
that uses all parts of Windows, .NET Framework, and the C# language, I suspect
this person is pointing his finger in the wrong direction when he's blaming
Microsoft, VS.NET, and C# for "getting in his way".

Best case scenario, is he has been using the wrong tools to solve the problems
he works on. But can't admin his own fault.

If anything, what I'm working on now would be downright impossibly complex and
infuriating if written in Python (his example of a language and ecosystem).

To me VS.NET is incredible. The .NET framework is incredible. And
documentation and information is readily available. But more importantly, the
problems I'm solving can't be more easily solved using another stack.

And every time I blame one of the above, a few days later I realize that the
real issue was just a stupid mistake I was making myself...

As an example, just the other day I was using a BackgroundWorker (new thread)
to do some work outside the UI thread. I needed to do 3 or 4 tasks and decided
to re-use the BackgroundWorker for each task (instead of using a new one each
time).

Of course problems started showing up. For a while, I was convinced that
VS.NET was debugging on the wrong thread, and that there was an issue with re-
using BackgroundWorkers in NET. I mean I'm a good programmer, it can't be
possibly my fault!

Basically, I forgot to unsubscribe to the BackgroundWorker events. Which
caused the previous DoWork attached anonymous functions to run multiple times.

.NET is the way Windows applications are built. VS.NET has no rival on this
platform. And this stack is not any weaker because people such as the author
leave us. Referencing a few negative blog posts does not prove .NET is dying
and that "developers are leaving for greener pastures", which by ALL METRICS
is completely not true. If the author wants to think that Python and whatever
other choice of IDE will now solve his pain... Then let him eat his cake.

~~~
simonw
"But more importantly, the problems I'm solving can't be more easily solved
using another stack."

Can you expand on that a little - what are the particular characteristics of
the project that make it better suited for Windows than for a web stack of
some sort?

~~~
acqq
If OP actually cared about the execution speed, he'd be able to have the .NET
code running often almost two orders of magnitude faster than Ruby:

[http://shootout.alioth.debian.org/u32/benchmark.php?test=all...](http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=yarv&lang2=csharp)

If he says that Ruby fits him better I can just conclude that he trades the
execution speed for ease of the development, which can be a reasonable trade-
off. I'd still like to hear him talking in a year if he actually worked on
really comparable problems in .NET and in Ruby.

~~~
rbanffy
I'm not very familiar with Ruby, but with Python, I can profile my app, map
the hotspots and easily rewrite them in C. Probably, I'll be done with the
rewrite before the .NET version reaches RC quality. There is no reason to
assume Ruby would be much different.

In reality, I very rarely have performance problems. I have heard Ruby got
much faster with the 1.9 release.

~~~
acqq
If you "rarely have performance problems in reality" that explains a lot.
Speed differences between Ruby and NET (see the link in my previous post)
translate to having one server instead of twenty. If you make low traffic
solutions, that's OK. If you move bottlenecks to something outside of your
responsibility (like for example, your app waits on sql server because no
caching is done) OK, not your problem. If somebody doesn't have problems in
buying more hardware, OK.

Still it's approx. 20-times (see the link before, it is for Ruby 1.9) trade-
off between development convenience and the hardware involved.

~~~
rbanffy
If you really need a rack full of Ruby servers to do the job of a single .NET
server, your Ruby programmers are doing something (hint: most probably
everything) wrong. Language choice excepted.

Server performance is only very rarely tied to CPU performance. There are a
whole lot of factors other than that that impact performance.

------
radicalbyte
Funny to see this considering my opinion is pretty much a polar opposite to
Chris'.

In the last couple of years C# has gotten better than ever. LINQ, Lambdas &
Generics combined with the IDE's autocomplete and refactorings have made the
language really nice for power devs.

The next release will include a _Compiler as a Service_ which could be a game
changer if it's embraced by the community and if it's not borked by Microsoft.

A good _rule of thumb_ for .Net is that anything from Microsoft which is built
around a tool should be _avoided like the plague_. For example _Entity
Framework_ and _WPF_ are horrible tool-bound monsters. They don't play well
with version control, don't play well with clean coding (POCOs) and almost
feel designed to sell other tools ( _SQL Server_ / _Expression Blend_ ).

Entity Framework is especially bad. It combines terrible performance, terrible
scaling (it has terrible support for large schemas) and until recently didn't
even support "code first" development.

Thankfully, like other dinosaurs that kind of thing is going the way of VB6.

To add a bit of context: I have a pretty broad background - been coding for 21
years (started at 10) and have experience implementing something significant
in: C64 (BASIC/6510asm), Pascal/Delphi, VB, Java, PHP/HTML/JS, TSQL/SQL, C#
and ActionScript/Flex. I've dabbled with Ruby and the beautiful Python.

I abandoned dynamically typed languages for serious projects (those expected
to work for > 5 years) because of the poor refactoring support and the
dominance of style over substance in the community. I work in the Enterprise,
and there software maintenance quickly dominates the cost of projects making
the big two static languages a better choice.

I still, of course, turn to dynamic language when they're the best solution to
the problem. For example for situations where speed of development dominates
returns (think opportunity cost) or where a language is deeply embedded in a
specific community (Python and NLP).

~~~
hello_moto
Many geeks/hackers don't understand or won't accept the fact that you just
mentioned regarding maintenance and Enterprise.

~~~
Craiggybear
Well, I don't ... and it isn't just me who thinks claims made about the
"enterprise" are pure marketing BS.

~~~
elemeno
Perhaps that's because most people who think that the claims are BS have never
worked with codebases that are expected to exist and be maintained for at
least a decade with minimal downtime.

Within large companies those types of codebases are normal. The upfront
development cost of applications is significantly less than the long term
maintenance cost - especially once you've factored in the cost of hardware
over the time period, and having to keep institutional knowledge of the
applications amongst development teams, sys admin teams and network teams.

~~~
Craiggybear
Oh I have worked with codebases (in large financial institutions and in
engineering applications) that are meant to be contiguously maintained for
more than a decade. They have been working nicely 16+ years and are easy to
maintain with no downtime. Obviously, none of it involves the CLR or .Net. On
the other hand, I've also seen seriously big projects ruined by .Net with no
handover or documentation. But worst, no accountability. I've also seen a few
successful ones but I would expect that culture to deliver continuous quality
-- but it surely hasn't.

That's why I am saying that most of these claims people bandy around about
enterprise computing are nonsense.

------
bediger
I'm not a .NET person. Heck, I'm not even a Windows person. I found this
sentence interesting:

 _Things like the Microsoft "professional engineer" who advises you at your
invitation, and then sends e-mails behind your back to executives to inform
them of his concern about the "business risks" of non-Microsoft technology
choices._

That's really weird. Who finances these commissars? I mean, I've seen this
sort of thing take place, but only when a two-letter consultancy was gunning
to take over some director's entire department. What's in it for the
commissar?

~~~
hkarthik
In the .NET ecosystem, there's a number of individuals that enhance their own
self-promotion by hitching their wagon completely to the Microsoft train. They
present themselves as "experts" and justify high hourly rates by presenting
their Microsoft sponsored credentials.

Often such folks have little in the way of open source contributions,
commercial products, or shipped code that they can point to. But they've
probably spoken at a number of events promoting "The Microsoft Way" and have
likely been awarded a Microsoft MVP award as a result of those efforts.

In general, they get by simply by advocating the Microsoft toolchain, and
moving on from consulting engagement to engagement just before they're
exposed. Or they focus their consulting services on large corporate IT where
even their meddling makes little difference in the grand slow scheme of
things.

~~~
hello_moto
This is how most mid-size traditional consulting companies work. You can
switch the word Microsoft to IBM or Oracle or something else.

This is how you get referrals. Like it or not, it's business.

~~~
bediger
I realize that traditional consulting companies hitch themselves to particular
vendors or sets of vendors. I was surprised that consultants would act as
Party Commissars, reporting developers or groups that depart from their
preferred vendor(s). I thought reporting people for deviation from a party
line went out in 1989, when the Berlin Wall fell.

~~~
hkarthik
A lot of the folks that I referred to are actually independent consultants, or
switching consulting companies regularly.

That phenomenon transcends the typical consulting firm loyalty and is more of
a culture around Microsoft products.

------
vyrotek
I'm a .Net engineer who feels like this day will also come for myself very
soon. Don't get me wrong, I love .Net. It has treated me well and I love the
direction that Microsoft is going with Azure, their adoption of open source,
and the resources they provide for startups.

Sometimes it's just hard to 'switch over' like the author as done. I've done
plenty with Java and PHP too but there's nothing there that excites me really.
So now I'm dabbling with Python to see if there are any sparks there. Have I
made a good choice? I guess we'll see.

I do find it interesting that you don't seem to hear people say things like
"I'm done with Ruby, switching to Python". People make a bigger deal of
leaving .Net and Java as if it's something you'll never go back to.

~~~
gaius
Why not try F#? That's a genuinely awesome language, an ML usable in the "real
world".

~~~
lucisferre
I tiptoed around this a bit, but I think F# is great. I have little experience
with it, but I work with someone who has been using it pretty extensively for
a bit and we've talked about it a number of times.

This, however, is where the environment/culture issue (that I also danced
around) comes into play. In most .NET shops it would be extremely hard if not
almost impossible to bring in another programming paradigm like functional,
let alone mix it. This is perhaps a bit ironic considering most of the same
places use javascript, but if they could write C# instead of javascript on the
client side, I'm certain most would (in fact when ASP.NET first made this
somewhat possible it was the norm until people got bitten by all the
pitfalls).

~~~
gaius
Believe me, the cultural issues you will face introducing F# will be 1/10th of
those of introducing OCaml, I speak from experience!

~~~
lucisferre
Well fortunately that won't be an issue for me anymore ;-).

------
pragmatic
This is the problem that you define yourself by your programming
language/environment/OS of choice, versus just being a really good problem
solver.

See: [http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-
pro...](http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/)

I would say don't call yourself a [Java|Javascript|C|C++] developer.

If your career were a blog post, languages are more like a tag than a title.

Contrast "I Solve Problems" with "I Only Solve Problems with PHP."

~~~
cek
There may be a population of developers who can jump super-easily between
tools/languages. But I think the population of developers who, simply because
it's what they have spent the most time with, are more productive in one
environment is larger.

The OP is basically saying "I'm super comfortable & productive with the MS
stack. It's been fun and good. Now I get to focus on something else. The
change will be good for me."

Nothing wrong with that.

------
mullethunter
Gotta admit that I'm getting to that point too, so good for you. I've been
working with the .NET stack since the beta, and at this point in my career I
dabble in other languages, but keep coming back to the bread and butter since
"that's what I know". All the while I'm involved in the ALT.NET community
secretly eyeing Rails and Python wondering when and if I can take a hard left
and make the jump. I'm sick of working in the .NET box where we get excited
about tools and features that were released years ago on other stacks, just to
have a port done that's about 3/4 as good as the original.

tl;dr; good for you man.

~~~
vyrotek
Is there a support group for folks like us? :)

~~~
mmcconnell1618
I released a commercial .NET app 2 weeks after the official 1.0 release and am
still using the framework. I've dabbled in Ruby, Java, JS, written an iPad
application, etc. I have my gripes with some of the .NET tools but I really
like C# as a language. My biggest gripe is the business decisions made by
Microsoft over the past few years. Under Gates, Microsoft really understood
the developers created their monopoly. Under Balmer it feels like Microsoft
wants to extract every ounce of blood from developers which is ultimately
going to bring down the house.

------
127001brewer
The "tl;dr;" version:

 _I just want languages, tools and frameworks to help me get work done and
then get out of my way. Is Rails a clean code panacea? Is Javascript elegant?
No. However, am I more productive, less burdened and do I have more options
and flexibility? Absolutely. I am far less frustrated trying to produce
elegant, clear, extensible and maintainable solutions in these dynamic
languages. I also find that dynamic languages, modern web frameworks and -nix
is just more fun._

------
jpastika
Two years ago I began developing a large web application and I had to choose a
language and stack. Having built applications on .NET and PHP most recently, I
knew I could fall back on either and be safe. I decided to investigate RoR and
.NET MVC. For whatever reason, RoR felt strange and I knew it would have a
steeper learning curve initially, but probably be more efficient to develop
with in the long run. On the other hand, .NET MVC felt a bit more familiar,
and had many attractive qualities that "appeared" to mimic RoR. I went with
.NET MVC. Now 2 years later I find myself spending my day job in .NET MVC and
my side projects are all RoR. I found that .NET MVC was a great bridge from
regular .NET to RoR. I am frustrated that I didn't pursue RoR harder 2 years
ago, but hind sight is 20/20. I am extremely happy to be working on side
projects in RoR because honestly it is more fun. Don't get me wrong, RoR isn't
all roses, I'm just finding fewer weeds!

------
untog
I'm also primarily a .NET dev, using ASP.NET MVC. But for my most recent
project I used node, and I'm hooked. Probably because it allowed me to take
existing JS knowledge and apply it, but still. ASP.NET MVC just feels too
heavyweight afterwards.

That said, whenever using something other than C# I miss LINQ. It's awesome.

~~~
benologist
I've been working a lot with node lately as well, there are some things I like
but some I miss so much from C# ... there is nothing anywhere near as good as
VS for node, and god I miss ReSharper and compilation errors.

~~~
vyrotek
I'll admit it. Losing that is a bit scary in some ways. It does lead to some
laziness though. But sometimes it's awesome to remove a property from an
object and have the compiler tell you all the places that are broken now.

On a similar note. I've followed your Playtomic blog a bit and it helped me
make the jump to MongoDB for our gamification platform. (We still use
SqlServer for lots of things though) Here's to trying new types of kool-aid!
:)

------
adamc
This reminds me a lot of posts I used to see on Javablogs 5-6 years ago. Not
sure what that means, but I don't think it's the language so much as where
people _are_ with the language. In 2005-2006, there were a lot of folks who'd
spent almost a decade with Java. They were good at it, but they were also
getting bored and looking for new horizons, and Ruby and Python were
available. Beta versions of .Net rolled out in 2000, so we might have the same
kind of phenomenon.

None of which is to say other languages might not be better. But being better
has never been enough, on its own. If it were, C++ might never have gotten a
start. Language popularity depends a lot on history. But
boredom/dissatisfaction with a dominant language can help give a new language
a chance.

~~~
nahname
I think a big part of it is also the dead weight that accumulates with older
technologies. Sometimes it is a person just making a decision for the
stability of their household or because they've been at it so long it is all
they know. Whatever the cause, as a technology (particularly a language) ages,
more and more people that are change adverse remain and those (many times the
best and brightest) move on. Not really surprising, but a bit unfortunate for
those who remain.

------
dazbradbury
I'm using .Net (MVC3) for my current web startup. I thought about python, I
thought about RoR, I thought about Java, but I decided on .Net.

Why?

I knew C# well at the time, maybe not the best out of the languages I know,
but well enough to hit the ground running. And I knew with MVC3, I would be
running in no time. Visual Studio is an awesome environment IF you have a fast
PC. I have a fast PC. LINQ, and LINQ to SQL, is incredibly powerful. I can
drastically alter my SQL DB, and have my ORM code auto-generated immediately.

Out of the box, .Net takes care of a lot of the detail. I can optimise this
detail later if I need to (I hope).

With the aim of this code being maintainable, and having hated maintaining a
large python code-base before, I wanted to use a statically typed language.

Importantly, I knew .Net was going to be scalable when I needed it be
(stackoverflow.com as an example).

How is it going?

Very well. But I've not launched yet. I have no regrets, and think C# is an
amazing language to work with.

I would generally consider myself language agnostic, so whilst the decision
was hard, I was confident it wouldn't matter too much in the end. Hopefully
that will remain the case, but you never know what's around the corner...!

------
baggachipz
"It seems as though the whole philosophy of .NET centres on catering to the
novice... .NET, and specifically C#, both coddles you and then scolds you at
every turn."

Perfect summary and exactly how I feel about .NET.

~~~
munificent
I'm trying to figure out how a language which features reified generics,
covariance and contravariance, lambdas, expressions-as-data, type inference,
both static and dynamic types, reflection, and anonymous types could be
considered by anyone as "catering to novices" or "coddling" you. Say what you
want about MS, but C# is an incredibly powerful and expressive language.

~~~
pdwetz
The image in the link sums it up ("...all without writing a single line of
code!", which I've heard personally in Microsoft events). It's not that the
languages or the framework lack advanced features, it's that Microsoft/MVP's
constantly tote the "beginner" features. I find C# to be very fun to code
in... so long as you avoid anything that the tool will do (or only the tool
can do) for you.

------
jader201
After seeing a few blogs like this, I was starting to get the general
impression that C# and .NET were dying out.

However, according to the TIOBE Index [1], C# was actually second in growth in
2011, just behind Objective C. Not sure how reliable that is, but thought it
was an interesting (and unexpected) trend.

[1]
[http://www.tiobe.com/index.php/content/paperinfo/tpci/index....](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

~~~
tikhonj
I think there's some significant selection bias on HN, particularly against
Windows and Microsoft. It seems a disproportionate amount of the people here
are using Python/Ruby on OS X, so naturally you'll get more articles about
moving to that sort of stack and away from .NET and the like than the
opposite.

In reality, .NET is actually a very interesting platform. LINQ is actually
really cool and C# is largely a better language than Java. If this isn't
enough, you can always use F# which is a _very_ nice functional, statically
typed language based on OCaml. On top of this, MSR produces interesting
research in programming languages, which can easily be subsumed by their
product languages. There is actually a healthy exchange of ideas between
Haskell and the .NET languages, for example, even going _both_ ways. (Haskell
recently got some features from LINQ, for example.)

~~~
thesz
What are those LINQ features you're talking about?

~~~
tikhonj
I was particularly thinking about things like order and group in list
comprehensions[1]. Turns out the paper introducing them was actually from
2007, so maybe it's not _that_ recent :). (I thought it was newer than that.)

[1]: [http://research.microsoft.com/en-
us/um/people/simonpj/papers...](http://research.microsoft.com/en-
us/um/people/simonpj/papers/list-comp/list-comp.pdf)

Here is a random video I found earlier where SPJ talks both about this in
particular and the exchange of ideas between Haskell and .NET in general:
<http://www.youtube.com/watch?v=iSmkqocn0oQ>

------
sakopov
I too have second thoughts about .NET. I absolutely love C#. I've worked in
just about any language & dev stack out there and, to me, nothing comes close
to the immense power of C#. My biggest gripes with .NET is tooling and
deployments. I do agree that sometimes you wait for ages for tools that are
already available in other development stacks (think EF or Team Foundation).
Deploying on .NET is an absolutely atrocious experience. Dealing with MSBuild,
XAML workflows and WebDeploy is just a royal pain in the butt. On the other
hand, I do have to say that when you have a rock-solid group of engineers
working on a complex .NET solution, the architectural patterns are much easier
to implement and bring new people into than other stacks I'd worked on.
Everything just looks cleaner, plus you have some pretty solid frameworks you
can tap into such as MVC for web, LINQ for powerful querying, WCF for service-
oriented needs, WPF for beautiful desktop apps. Moving from all of this is
certainly pretty tough. But I sometimes feel the need to embrace the cool
stuff that's happening with the speed of light in other stacks. It's just too
big to disregard.

------
jister
>> You’d probably have to have been living under a rock to have missed all the
previous blog posts from others leaving .NET for greener pastures

Well some people have the opposite experience and also have written posts as
to why they are moving to .NET.

~~~
lucisferre
They do? I'd would actually love to read them (I'm sure so would others) so
perhaps you would provide some links?

On this note though, I should probably mention I didn't reference those posts
to prove there is a deluge of people leaving .NET (in fact I highly doubt that
there is), but for context and to demonstrate just how cliche and unoriginal
mine was. ;-).

------
ilaksh
To me its about trends as much as anything. I noticed a few years ago that the
kids on reddit were not interested in .NET but were interested in JavaScript
etc.

So, honestly one of the main reasons I got out of .NET was because it seemed
like it wasn't as cool as I thought it was anymore.

Another reason, although this is probably a secondary rationalization, is that
open source isn't really that big in .NET, and open source seemed important
(and cool).

Which isn't to say that there aren't lots of rational reasons to get out of
Microsoft development, but I just think that we should acknowledge that people
don't usually do things for rational reasons. They mostly do what other people
seem to think they should do.

Anyway, I don't see anything wrong with drag-and-drop components or
intellisense or even compile time checks. That stuff is really helpful. I am
working on composable drag-and-drop widgets for JavaScript/CoffeeScript web
applications. And I think that less code is better, and if you can accomplish
the same thing with a GUI designer, drag and drop and some property editing,
then that is better than writing source code to do it. Its better engineering.

IDEs that are slow are not great, of course. The biggest issues for me are
that most everything is closed source and generally the language C# is much
more verbose compared to CoffeeScript or JavaScript. Also your software will
only run on Windows desktops and not over the web.

~~~
jmcqk6
I'm trying to understand your last few sentences. Microsoft has open sourced
huge amounts of code in the last four years or so. The entire MVC framework is
open source, for example. Nuget (another open source project, but built with
the community) is really driving the adoption of many open source projects in
the larger .net world. You have companies like telerik (huge .net shop)
releasing some of their own software open source now.

Microsoft even redistributes jquery. The culture (at least in the web side of
.net) has really changed in the last few years.

Which brings me to your last sentence. Any software built with .NET will not
run over the web? Where are you getting that from? I've been programming .NET
for 8 years now, and I've only programmed stuff that runs over the web.

~~~
ilaksh
Sorry that last part was a mis-stated. A lot of .NET is Windows desktop
programming.

A lot of the "web" stuff is XBAP or whatever which is basically desktop
packaged to go in IE.

Sure there is plenty of ASP.NET development going on, and that is over the
web.

But come on, you can't say that most .NET software is not closed source. Sure,
some of it is being 'opened up', but for the most part, ASP.NET and C#
libraries and components are not open source. Especially when you compare the
ratios to other platforms.

~~~
jmcqk6
>But come on, you can't say that most .NET software is not closed source.

Which is probably why I said nothing even close to that.

I can only really talk about the web related tech. Huge parts of ASP.NET are
open source.

Then you have projects like F# which are open source.

Nuget package manager is open source (formed out of two community open source
projects).

The Dynamic Language Runtime is open source.

IronRuby and IronPython are both open source.

MEF is open source.

The Orchard CMS is open source and control has actually been given completely
over to the community.

Silverlight controls was open source.

I could go on and on. Open source is bigger in microsoft than you give it
credit for. When you imply that most .net software is closed source, it's
true, but you can say that about any language. Most software written in ruby
is closed source. The one exception might be javascript, because you can't
really close the source to that.

However, you can take a look at the big .NET open source projects, or just the
AltDotNet community for the counterpoint.

>Especially when you compare the ratios to other platforms.

That is a meaningless metric

>So, honestly one of the main reasons I got out of .NET was because it seemed
like it wasn't as cool as I thought it was anymore.

How in the world can C# not be considered cool? It's statically typed and
reflective. It's got generics (reified) and delegates. Those things led
directly to anonymous types, anonymous functions (lambdas, if you wish), co &
contra variance, and type inference. Those things led to expressions which
enabled Linq. Then you throw in dynamics. The next version will have the
compiler as a service and the 'await' keyword which vastly improves multi-core
and event drive programming.

Yeah, there are other languages out there that are doing some cool things. I
don't see how anyone could think C# isn't cool, though. BTW, while microsoft
is still working on their C# 5 compiler, Mono (the open source .net
implementation) has already completed theirs and it is available today. They
had compiler as a service before microsoft even announced it.

------
pragmatic
.NET is finally mature enough to get the "I'm leaving" posts.

There were plenty of these in heady times of '06 and the Ruby rush. Except
with Java.

I'm sure at some point there were some for Cobol and Fortran and C and C++.

~~~
lucisferre
You seem to be defending .NET with a lot of handwaving. How exactly does one
demonstrate that "I'm leaving" == maturity. By your reasoning then, anyone
leaving what they feel to be a failed language/framework automatically proves
it's maturity by doing so. I don't get it.

------
pmarsh
In the end it all boils down to use the best tool for you for the job you're
working on.

That aside, going from Rails to .NET MVC has been a lesson in patience. While
I am glad to have skipped Webforms, there is still something about .NET MVC
that weighs on new ideas.

It's just easier to get up and running with a Rails stack and get your idea
out there.

But that's just me, maybe for you it's Python, or C or Assembly. Whatever it
is you work best in that's what you use.

Posts like this can help a community identify weak points though so I'm always
glad to see them.

------
grout
_sigh_ Scientists stand on the shoulders of giants; programmers stand on each
others' feet.

------
plasma
My biggest pains with .Net C# are:

1) Not runnable properly on Linux (I always have trouble with mono - maybe its
just me)

2) Compilation and app restart time etc are annoying when wanting to develop
rapidly

LINQ and the syntax of the language, VS etc are all awsome though.

~~~
brosephius
Visual Studio compilation times are ridiculously fast for me, are you talking
about Mono/Linux in point #2 also?

------
frou_dh
I have a lot of fondness for C# (version 3+) even though I don't use it any
more. VS is a good IDE, too. Windows itself is meh.

Overall, you can do a lot worse.

------
hello_moto
There are probably 2 reasons why I would look at .NET and one of them is not
pure .NET/Windows anyway.

1) Consulting/Contracting gigs

2) Mono for cross-platform GUI development

------
macca321
I love c# to bits.

------
funkah
I have worked pretty much my whole career in .NET, and I think it's pretty
good in terms of actual coding and development. It has gotten better by leaps
and bounds in recent years. .NET and C# aren't the problem, the insanity of
the Windows stack is the problem. So many stupid little things unrelated to
your code can go wrong, the toolchain is paltry, and deployment is still a
mess.

If you're actually using drag-and-drop you probably already lost.

~~~
InclinedPlane
C# is an awesome systems language, hampered primarily by official support
being limited to windows systems. But a lot of other technologies swirling
around the .net stack are horrific. EF, workflow/xaml, wpf, and even the build
infrastructure such as team foundation and msbuild are not a pleasure to work
with and in many cases generally inferior to free open source alternatives.

Worse yet, sometimes you get the feeling that building expertise in all these
tools is limiting because it has little commonality outside the windows
bubble. Working on improving IIS performance won't help you much in a wider
world were apache and nginx expertise is more useful, for example.

------
Craiggybear
I no longer do .Net development and leaving it all behind was a breath of
fresh air. It was ridiculous.

I find it monstrously overblown and while its proponents/fans call it elegant
I think its a horrible inelegant mess. Great if all you do is Windows, no
doubt.

Plus I don't trust Microsoft on Mono (which at one time I thought was a neat
idea) and I don't trust them not to dump their existing .Net devs like they
did with VB6 sometime down the line and without warning as soon as they and
their marketing department decide the next shiny-shiny programming paradigm
has arrived. There are plenty of rumours about this and I frankly don't
discount any of them as being too far-fetched.

~~~
eropple
> I don't trust Microsoft on Mono

The FUD on this issue has been tirelessly debunked. Microsoft would have to
contravene its own covenants and agreements in order to do this.

There are reasons to dislike Mono. This is not a legitimate one.

