9 ms·
.NET: So long and thanks for all the fish
- mullethunter 15y agoGotta 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 15y agoIs there a support group for folks like us? :)
- mmcconnell1618 15y agoI 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.
- jader201 15y agoAfter 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.html http://www.tiobe.com/index.php/content/paperinfo/tpci/index....
- dexen 15y agoInflux of new developers != increasing utility of the language, especially for seasoned devs. As the OP notes, It seems as though the whole philosophy of .NET centres on catering to the novice, but even as the novice evolves into the “advanced beginner” they inevitably find they want and need more.
- elemeno 15y agoWith everything that's been and being added to C#, I'd argue that it keeps getting more and more interesting for experienced developers and further away from novices. Your typical novice developer is going to have a hell of a time trying to understand any non-trivial C# projects these days with all the function features that have been added - especially with things like PLINQ and TPL. The utility for experienced developers has increased over the years, it's accessibly to inexperienced developers has, however, decreased.
- recoiledsnake 15y agoI think the argument is about viability of a career choice. New developers don't come up in a vacuum if there's no demand, they'll quickly switch to something that pays the bills. Is there any indicator(other than a few HN posts) that .NET (or # of seasoned devs in .NET) is actually in decline?
- tikhonj 15y agoI 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.)
- 127001brewer 15y agoThe "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.
- untog 15y agoI'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 15y agoI'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.
- jpastika 15y agoFunny to say you miss "compilation errors", but as someone who works with ASP.NET MVC during the day and RoR at night, I know what you mean.
- vyrotek 15y agoI'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! :)
- spamizbad 15y agoI had the same frustration, until I finally broke down and just fed my JS through jshint (http://www.jshint.com/ http://www.jshint.com/). Keep a JS console open while developing and have it display relevant parts of the returned object you care about. Unfortunately there's no reSharper for JS but eh... I feel like it's not as necessary with JS as its a fundamentally simpler language than C#.
- vyrotek 15y agoI'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 15y agoWhy not try F#? That's a genuinely awesome language, an ML usable in the "real world".
- lucisferre 15y agoI 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).
- apg 15y agoFrom what I can tell the biggest issue you (and many others have) is the environment/culture issue. The stuff you see or some of the ways that you are expected to code with C# in many .NET shops will make you want to claw your eyes out. (And though I don't have any first hand experience, I reckon it's the same way in Javaland.) F# is a mighty fine language but introducing that into an established shop just isn't going to happen. It's personally my favorite language but there is a very steep learning curve coming from C#. For my projects I use Windows & Linux, C#, Python, JS (client), and F# all over the place. I keep the programs small with a service orientation so it's easy to switch languages. Anyway, all frameworks have their problems. It's hell to make a program of any appreciable size in Python. Javascript/Node turns into callback hall of mirrors. Avoid creating a mammoth framework with these and it all works out great. And while it doesn't have everything in the world like the Python ecosystem, .NET OSS ecosystem, which is really coming around. And Microsoft itself is encouraging exploration of other frameworks, e.g. NodeJs and WinRT's first class Javascript support. My take is the problems usually aren't framework/tech related. It's about people and process. Diving into a new framework really isn't about the tech, it's about learning the tech, and thereby giving your brain some much needed stimulation.
- pragmatic 15y ago.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 15y agoYou 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.
- pragmatic 15y agoThis 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-programmer/ http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pro... 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."
- InclinedPlane 15y agoThat's a nice ideal but it doesn't work very well in practice. It takes an enormous investment to become an expert in any given technology stack, easily on the scale of attaining a college degree. When a restaurant needs a baker, or an executive chef, or a pastry chef they hire specifically, not generically. So does the tech industry. If a company has a rails stack and they need someone up and running quickly it does no good to say "I can do it, just give me a few weeks to get up to speed and a few months to get really good".
- Retric 15y agoPlenty of companies go for talent over niche. When you expect the average person to last 5+ years it's dangerous to only higher people that know exactly the stack you work with every day, because it narrows everyone focus and they ignore edge cases where it's really better to use some other tool.
- InclinedPlane 15y agoSure, but there are limits. If you have a company that is heavily focused on web dev, you are naturally going to want people who have web dev experience. Maybe you won't mind too much if someone with a lot of talent has a history with Python or PHP and your current systems are based on Rails, but you will probably be a lot more cautious if someone applies with a background in programming IBM/360 systems and knows nothing about html or the web? I do think it's important to hire on talent, but I think the other extreme of a super generic "computer-based problem solver" is very unrealistic. Not every company can afford the delay of bootstrapping someone into having expertise with the technologies the company uses.
- jpastika 15y agoTwo 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!
- jister 15y ago>> 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 15y agoThey 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. ;-).
- frou_dh 15y agoI 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.
- powertower 15y agoAs 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 15y ago"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 15y agoIf 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&lang=yarv&lang2=csharp http://shootout.alioth.debian.org/u32/benchmark.php?test=all... 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.
- macca321 15y agoI love c# to bits.
- bediger 15y agoI'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 15y agoIn 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.
- Craiggybear 15y agoSee this all the time. Its astounding what some of these people get away with.
- hello_moto 15y agoThis 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 15y agoI 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.
- baggachipz 15y ago"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 15y agoI'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 15y agoThe 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.
- radicalbyte 15y agoFunny 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 15y agoMany geeks/hackers don't understand or won't accept the fact that you just mentioned regarding maintenance and Enterprise.
- Craiggybear 15y agoWell, I don't ... and it isn't just me who thinks claims made about the "enterprise" are pure marketing BS.
- hello_moto 15y agoThere 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
- deleted 15y ago[deleted]
- Craiggybear 15y agoI 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 15y ago> 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.
- funkah 15y agoI 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 15y agoC# 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.
- deleted 15y ago[deleted]
- pmarsh 15y agoIn 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.
- dazbradbury 15y agoI'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...!
- plasma 15y agoMy 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 15y agoVisual Studio compilation times are ridiculously fast for me, are you talking about Mono/Linux in point #2 also?
- grout 15y agosigh Scientists stand on the shoulders of giants; programmers stand on each others' feet.
- adamc 15y agoThis 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 15y agoI 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.
- ilaksh 15y agoTo 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 15y agoI'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 15y agoSorry 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.
- sakopov 15y agoI 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.