top | item 2005867

Leaving .Net

151 points| bry | 15 years ago |whatupdave.com | reply

119 comments

order
[+] fleitz|15 years ago|reply
Compared to anything except rails, ASP.NET is pretty good.

Yes, the viewstate / gridview bs is annoying and should not be used. The problem is primarily that corporate dev departments want interchangeable parts. They want to be able to hire a developer and him to know the API that everyone is using. They don't want magic. They want everything spelled out so that the code looks identical to the UML and identical to the Use case document as signed off in triplicate by a committee of managers. In corporate dev you get promoted for doing everything to the letter not something new and exciting. I've seen pages with more than 100 checkboxes on them and arranged in a grid, it was like someone when mental with excel putting a checkbox in every cell.

To be honest, if rails were adopted by corporate dev you'd see things like not being allowed to use haml / sass, etc. You'd have a corporate list of approved gems in specific versions that were 3 years old (probably whatever comes with a default install of RedHat)

I'd bet if you look at what Atwood and Spolsky are doing over at StackOverflow on ASP.NET it's probably a reasonable choice of defaults and open source. There are a lot of stupid decisions you can make with .NET and I agree that the community is definitely lacking, but largely it's a mindset issue that stems from the socio-political environment they program in.

At my last job you should have seen the shit show that ensued when someone in management found out the DLLs I was handing off to other teams were written in F#, even though it was the .NET team and not the C# team. Apparently, unbeknownst to me, the largest cause of developers leaving a company is due to being hit by buses, and a dependency on FSharp.Core.dll is just unacceptable and could never be part of the automated build process.

[+] okaramian|15 years ago|reply
My company is currently getting folded into a dev shop with... sub par developers/management that follows pretty much every paragraph you've written (except the F# thing, but I have similar newer code that would weird managers out to some degree).

It's depressing, the framework is great but it's like there are external forces that cause the framework to be used poorly.

I feel like .NET is solid for smaller shops, but once you get bigger those shops seem to want to fold weaker devs in and that tends to put up a lot of barriers/management.

[+] Pewpewarrows|15 years ago|reply
It appears you've never heard of Django or Pylons/Pyramid.
[+] jister|15 years ago|reply
>> In corporate dev you get promoted for doing everything to the letter not something new and exciting. I've seen pages with more than 100 checkboxes on them and arranged in a grid, it was like someone when mental with excel putting a checkbox in every cell.

That is because organizations have their own set of company rules/policies that you have to follow to the letter. Mess one up and you end up being scolded or worst, fired. People that don't have enterprise experience often say things like development should be "fun" and "exciting" without considering that working in an enterprise means that you have to develop "Business Applications" not web 2.0 stuff. This means less graphics, more business rules to follow and tons of reports to generate. At the end of the day what matters is that the accounting department or HR people used the system correctly based on standard policies of the company.

[+] ronnier|15 years ago|reply
Stackoverflow is built in ASP.NET MVC, which is magnitudes better than normal ASP.NET (and ships with Visual Studio 2010).
[+] lhnn|15 years ago|reply
"You'd have a corporate list of approved gems in specific versions that were 3 years old (probably whatever comes with a default install of RedHat)"

You made me choke on my cola. SO TRUE! I'm laughing out of sadness.

[+] kenjackson|15 years ago|reply
Dave has some reasonable points, and frankly I think MS is going where he'd like them to go.

But he does miss the boat on a few things.

One thing that I do think he discounts too much is the surprising effectiveness of small focused teams. In the same way a small startup is more effective than a lumbering machine, a small team of devs is often more effective than 1000 loosely organized volunteers. The classic example is GCC which has probably 10x more people working on it than any commercial compiler, yet the Intel and MS C/C++ compilers generally kill it. Not to mention other less popular compilers like IBM xlc and DEC's Alpha compiler.

The contribution list to RoR is impressive, but the quality of the product doesn't scale with the number of contributors.

I think the question MS has to ask is "do we forego control to possibly get an incremental increase in product quality?" What I've found interesting is the speed at which Silverlight and ASP.NET MVC have improved over the past few years. With relatively small developer teams, they've increased in quality as fast as any open source projects I know of.

The other thing he gets wrong is he conflates framework developers with application developers. And I think this causes him to see a skewed world-view that developers are "waiting" for Microsoft. In general, app developers, are not waiting for MS to do anything. You have tight deadlines and are trying to find the best solution today. You take a snapshot of the world right now and pick the best solution (or starting point). You don't have the time to ponder what might be available in eight months.

Most ppl on the MS stack are app developers. Always has been the case.

[+] marknutter|15 years ago|reply
I think the core rails team is pretty small and focused. The benefit of it being open source is that an army of people wanting to make a name for themselves are combing over their code to make sure all the I's are dotted and T's are crossed. The quality of Rails obviously doesn't scale with the number of contributors - there are only a few core contributors and a heckuvalot of casual contributors. Makes sense to me.

So it's not about incremental increases in product quality, it's about responding to problems quickly and promoting new core developers from the community, rather than through Microsoft's opaque hiring processes.

I'm relatively new to web development, and I've never worked in an enterprise environment using enterprise software/frameworks, but I honestly cannot understand why anyone given the choice and assuming the cash is the same would choose to go the MS route. I admit naïveté.

[+] bad_user|15 years ago|reply

      GCC which has probably 10x more people working on it than 
      any commercial compiler
Citation?

Personally I think you pulled that figure out of your ass; especially since the GCC codebase is a mess (on purpose), it's been stable and good enough (and arguably stagnant) for quite a while and all attention shifts lately to LLVM.

     With relatively small developer teams, they've increased in 
     quality as fast as any open source projects I know of
When speaking of both Silverlight / ASP.NET MVC ... they are copying other projects. And we aren't talking only about high-level ideas here, but actual implementation details.

They are great followers, yes, but what did you expect from a company with virtually unlimited cash?

[+] gcr|15 years ago|reply

  > The classic example is GCC which has probably 10x
  > more people working on it than any commercial
  > compiler, yet the Intel and MS C/C++ compilers
  > generally kill it.
Oh? Interesting; I thought that gcc was one of the better ones. Could you elaborate?
[+] rubinelli|15 years ago|reply
In (good) open source projects, the frameworks developers are also app developers. The difference is obvious when you compare the architecture astronautics of a framework built following "best practices" and one extracted from living code. WebForms looked great in developer conferences, but it made stuff that just comes out of the box in Rails like nice URLs or common layouts a royal pain. I left that world behind 5 years ago, and I hope it has improved, but I have no intention to go back.
[+] kaffiene|15 years ago|reply
GCC targets way more platforms and compiles way more languages than the Intel and MS compilers do. That's not an apples and oranges comparison.
[+] huertanix|15 years ago|reply
I've been waiting for someone to say this; Every development language includes a development community, and in this case, .NET communities are more or less stenciled across internal department lines and rarely extend much further. When I first started working as a developer, I thought it was just my then employer's department tribalism, but no. These patterns are things I've seen in every .NET shop I've ever worked for. Each shop had their own interal closed-source data logger, data mapping, and some other frameworks that were shared internally, but accomplished in an unpolished, mediocre manner. Each shop's code was redundantly similar and none of it was impressive.

The internal frameworks developed in .NET shops are inefficient and mediocre not because the Ruby or Python communities are full of pure genius, but because they have more than a single person continuously working on improving them. Pythonists and Rubyists have a culture of sharing and coding in a constant loop of feedback. They talk to and work with each other. People in .NET culture do not. As a .NET developer I have rewritten code that has been created several times before, and it will die in obscurity behind the closed doors of the companies I've worked for.

This is something I only begun to realize by talking to JS, Ruby, and Python developers. I've been teaching myself Ruby since September and hope to leave .NET as soon as I can.

[+] Encosia|15 years ago|reply
It sounds like you've been working in soulless corporate sweatshops, which would be just as miserable regardless of which platform they adopt. Policy is the only thing preventing you from using log4net for logging and NHibernate for ORM (assuming that's what you mean by data mapping), for example, not .NET.
[+] dschobel|15 years ago|reply
His description reads more like an indictment of mediocre enterprise code shops than anything specific to .Net.

It seems self-evident that the farther off the beaten path you go with languages and tools the higher the concentration you'll find of people who care and think deeply about the tools they use.

[+] DanielBMarkham|15 years ago|reply
I'm a .NET programmer, and i really don't hold allegiance to any one technology or platform.

There are some good points here, but who cares? The real issue is that Microsoft treats developers as if they were a separate marketing channel -- with promotions, partnerships, walled gardens and the like.

So don't play that game. I'm working in F# on mono, on my own stack. Do I care about branch commits, bad abstractions, onerous licenses or such? Nope, not in the least.

Look, there was a day where you had to take the entire MS stack or leave it. But that day is past. Now you can pick and choose a bit. Sure, not as much as we'd like, but it's still open enough for developers to control their environment.

If you don't like the game Microsoft plays with the development community? Then don't play it. But that doesn't necessarily mean you have to walk away from the entire thing.

[+] alnayyir|15 years ago|reply
I don't enjoy being a lone gunman. Being able to lean on other peoples' libraries and works on Github is an incredible boon and timesaver.

Reinventing everything yourself on F# is scarcely an option, especially if you're seeking a valuable community to collaborate with.

You might as well tell everyone who doesn't like the government to go buy a farm and live off the land.

When I am in the mood for being adventurous, I go with something that makes me feel truly transcendent in productivity, like Clojure. Plus, I still get an awesome community.

Hell, I've had Rich Hickey answer my questions before. Where else could I possibly have such a grin-inducing experience?

[+] thecoffman|15 years ago|reply
Amen. This pretty well articulates what I experience at work with .NET on a day to day basis. When I code other stacks there's always a library or a plugin to do X. At work its always "we can buy something or build it in house." Frustrating to say the least.
[+] evo_9|15 years ago|reply
Yeah, I dunno I like/love c# (depending on post/pre 3am...). Plus Mono really kick's ass and is a lot of fun to play with (esp. monotouch). I seem to be able to find free stuff off codeproject or stack whenever I need it. Even on the UI it's pretty painless if you avoid MS's stuff and just go with jquery and open standards. I kinda dig it to be honest, and monodevelop is a pretty nice IDE for mac now. All in all coming along quite nicely.
[+] eddiegroves|15 years ago|reply
Mono is where the innovation is happing now, e.g projects like Manos de Mono
[+] xpaulbettsx|15 years ago|reply
As much of a bummer as it is, I have to agree with many of the points in the article - it seems as if many people in the .NET community simply don't get the F/OSS mindset, that they should share code and build the future of the platform together, instead of building something solely for themselves until Microsoft releases a fully thought-out solution.

Finding contributors to projects is really, really difficult because of this, and the main OSS site (CodePlex) until recently had a lot of friction in doing so until they implemented the Mercurial integration.

[+] lone_coder|15 years ago|reply
I think that the recently announced NuGet (http://nuget.codeplex.com/) will be a big boost to the .net community. Having the global library repository like Perl's CPAN will be huge in bringing the community together. More users of libraries will mean more improvements too them.

It also seems like the existence and success of sites like codeplex and stackoverflow negates his thesis.

Was glad to read that he was leaving for purely non-technical reasons. I bet he'll be back someday.

[+] russellperry|15 years ago|reply
Romantic, starry-eyed, hopelessly idealistic and mostly true.
[+] kaiuhl|15 years ago|reply
This post perfectly frames why I pushed the organization I work for to move from ASP.NET to Rails / Sinatra for our web development.
[+] keyle|15 years ago|reply
Funny, but I felt the opposite. I'm sick of open source software that's documented like a donkey's ass and that never works. And all those 'developers' that can't be productive and create things, instead all they're doing is plumbing joomla with jquery while high on json.

I guess it's like a mid life crisis, you just have to flip side.

[+] treeface|15 years ago|reply
I, too, am sick of open source software that's poorly documented and never works. Fortunately, I use open source software that is quite well-documented and almost always works.

What's your beef with jQuery? What better closed-source JavaScript libraries are there?

How is JSON even relevant to this discussion?

Why use the disaster that is Joomla as an example of open source when you could have picked any number of other good CMSs? Besides, Joomla uses MooTools, not jQuery.

Maybe you need to reevaluate the landscape.

[+] patrickaljord|15 years ago|reply
Is that how you think of the open source world? A bunch of people writing jquery scripts for joomla? You may want to investigate a bit more (hint: google, facebook, yahoo and a bunch of other all rely on very solid and well documented high quality open source projects).
[+] jules|15 years ago|reply
I agree with you. The languages, documentation, and standard libraries of .NET are awesome. The community is definitely lacking though. These days you can get excellent help on IRC about F# and on stackoverflow for everything, but there is not really a spirit of "lets build something cool" outside of F#.
[+] wlangstroth|15 years ago|reply
It would be great to hear back from Dave after a few years with Rails, which as many know, has its own drawbacks.

I'm not saying he shouldn't be excited for a change, but in a couple of years, who knows? Maybe he'll be checking out Haskell, and we'll hear about how great that is.

[+] angrycoder|15 years ago|reply
Funny timing.

I've been a .net developer, mostly web - some desktop, since the first release. I am currently going through the interview process with a company that focuses on rails.

Part of me is excited, I've been wanting to get away from MS technologies for a couple of years now. Part of me wonders if I am going to miss the safety net of the compiler and IDE, and if the grass truely is greener. I started out doing perl/cgi and the asp/vbscript, so it almost seems like a step backwards tool wise, but with much better languages and libraries than I had the first time around.

If anyone has any insight, it would be much apprecaited.

[+] maheshs|15 years ago|reply
Being as a core asp.net developer for 7 years and now working as a python/django from last 5-6 months; I can say every .net developer should change his development platform at least for couple of months, because it make you more mature developer.

.net is a good platform, but the real problem is you have to wait for MS to develop something. For example before "asp.net mvc" there is no option to use mvc in MS world.

For me learning python/django was not a big pain; but running them on ubuntu is a real pain; and i think this is true for every ms developer who want to change his platform.

On linux platform options are great and there are lots self motivated developers and fun projects which is not true in the case of MS.

One more thing - lots of start-ups work on the non ms platform. Once people talk about asp.net mvc they only talk about http://stackoverflow.com/, but we can find more successful example in rails, or django or php; which makes every ms developer on back-foot.

PS: I love c#, asp.net mvc and VS as a developer tools.

[+] savoy11|15 years ago|reply
This is not correct. There were multiple MVC frameworks on top of ASP.NET years ago, including Monorail and FubuMVC and a lot more actually. All of them were open source. Some of them were quite good, actually.

Were you active there? Did you contribute something? Did you commit fixes/features. No, you did not. But of course you do contribute to the complaining.

[+] gcr|15 years ago|reply
Interesting how the author questions why nobody's working together in .NET and then responds by leaving the .NET community rather than sticking around to help fix it. A bit of a circular argument?

(to be fair, I'd probably do the same thing, and I bet most of us would too)

[+] dennyferra|15 years ago|reply
I'm in the same boat but for different reasons. I find learning a new language challenging and fun, I've just become bored with .NET and decided to pick up Ruby on Rails. I've seen great community in RoR, beyond what can be found for .NET, but that's not to say .NET has no community.
[+] ergo98|15 years ago|reply
I love .NET the platform -- the VM is absurdly efficient (almost too efficient, making egregious algorithm choices functional), and C# the language is superb and absolutely first class. There is nothing that shames either of those contenders, and I would argue that there are few that even legitimately compete with them.

Having said that, I couldn't agree more regarding the community. When MVC came out my only excitement about it -- given that I had been doing something better with .NET for closing on a decade -- was that the default baseline would hopefully be better than the terrible abomination that is WebForms (a construct either made to cripple web development, or to hold the hands of Visual Basic developers with a big viewstate diaper). But otherwise the excitement was hard to accept because it wasn't like it was actually something new, or something that you couldn't already do yourself with minimal effort. I'm seeing the same thing with some of the concurrency additions in .NET 4, where some trivial constructs are blessed with some syntactical sugar and it's treated like it's a new revolution in development.

Which brings up another oddity of the .NET community in general: There is a tendency to embrace and vigorously adopt whatever abstraction Microsoft grunts out, regardless of merit or actual value that it adds. The simplest need becomes layers of poorly contrived, poor fitting abstractions, where developers instead of asking "why should I use this?" instead are too busy worrying about "why didn't you use that?" The former question is much more valuable, but the latter is the defensive reaction of too many. LINQ is such a tool that is, in my mind, used for evil far more than good, but because it's a part of the gamut you have to mash it in wherever possible.

[+] rbanffy|15 years ago|reply
> another oddity of the .NET community

I think the word we are looking for is "fan club". A community participates, a fan adopts and loves. A community is bidirectional. Whatever interaction happens around Microsoft's products is not. It's interaction between fans, not between the fan and the object or the creator of its devotion.

[+] alexro|15 years ago|reply
I develop on the Windows platform since its inception and I'm not aware of any Microsoft community you refer to. I know that there are millions of people who develop with the Microsoft tools and obviously the more people use something the more that something gets abused.

On the other hand try getting a job in a decent company based on tech that is also a Microsoft partner and you'll be torn into pieces with the questions about deep platform understanding.

[+] alnayyir|15 years ago|reply
I was a .NET dev before Python/Django.

All of this is accurate, and he's wise for leaving .NET

It's just not the environment or kind of people you'd prefer to work with, given better communities and concentrations of driven programmers you could be working with.

[+] savoy11|15 years ago|reply
Another day, another leaving .NET/Java for Ruby/Python post. This very link btw got posted twice, the first post was 3 months ago. Aren't you guys tired of that? We get it - HN is the place where people will go at great lengths to contribute/code all night rather than use something that works out of the box and juts move on. I am always surprised on the often hardcore technical problems discussed here and the relative lack of in-depth startup/business topics - and this is what starting up a company really is all about.

ASP.NET MVC is probably in the top 3 web frameworks created, and WebForms is not that bad either. ViewState/Page-Lifecycle - you can use this or not - it is up to you. You can always do the HTML5 stuff in ASP.NET too, and most of the code is jQuery now anyway, so why the big fuss?

And what do you mean there is no community around ASP.NET? Have you heard about StackOverflow? The majority of the devs are ASP.NET developers there, with ASP.NET and C#/Javascript being the most tagged posts - literally every single question gets answered asap.

And what's wrong with the 3rd party vendors? They exist, support and enhance the eco-system producing some great tools along the way. Like Rasharper. Like UI widgets. Like database tools. How many times have you seen an open source project with great potential just die because there was nobody to take over and maintain it? Understand - some companies have REAL business out there - not the next social this, web that average crap startups have on $0 revenue. They want REAL partners that they can rely on and WILL pay for that. Heck, you are paying $100K to your developers, why not pay $5K for a proven software and win some time/use the resources of the partner? What is the friggin' deal with that?

Grow up. Is it like mid-age crisis? You just need switching things now and then and trying to figure out the reasons? One of the top reasons I've seen companies fail is to switch technologies just for the sake of switching and "keeping it fun" - from a business point of view it is ridiculous to invest 8 years in a framework and then just switch, like that.

[+] lone_coder|15 years ago|reply
I think this story is so interesting because so many of us could never imagine leaving .net. It's got a real shock factor to it. Like someone winning the lottery and throwing away the ticket.
[+] papertiger|15 years ago|reply
I wish I could downvote you.