How I Feel About The .NET World Lately

59 commentsWritten on August 10th, 2010 by
Categories: Rants

Just a little heads-up to those reading this: this post is filed in the 'Rants' category. I'm gonna rant about some stuff that i don't like, so if you don't like reading these kinds of posts, do both of us a favor and skip this one.

I haven't been too happy with the .NET world lately. I've always been somewhat critical of the .NET world, but generally, i felt it was one of the better environments to work in. But there are some things that have been bothering me for a while now, and there are some recent developments that really made me think about the future of this platform. First, i want to focus on the things that have been bothering me since the beginning. After that, i'll discuss the problems that i expect in the future.

One Ring To Rule Them All

As we all know, Microsoft has a tremendously large influence on how software gets developed in the .NET world. For many companies, this is indeed quite convenient. You can stick to the Microsoft Path (or should i say: the One Microsoft Way?) and you'll have all the guidance you can ask for. They provide architectural and design guidance for everything from your database to your business layer to your service layer all the way to your presentation layer. Unfortunately, a lot of that guidance is of a terribly low quality. Follow their guidance and odds are pretty high that either your database implementation details are leaking through all the way to your screens, or that a lot of your business details are taken care of in the database. Depending on how many Microsoft MVP's you've listened to, you might end up with both situations simultaneously.

One of the most important goals of every piece of guidance and tooling that they provide is accessibility. Lower-end developers should be able to use their products and their guidance and be able to build software of an acceptable quality. Unfortunately, a lot of the mess that is produced on a daily basis in the .NET world is the result of that very same goal. And the only people who are (knowingly) suffering from it are the higher-end developers. They are the ones who have to deal with, and clean up the mess. Customers and companies hardly ever realize how much money they're losing on this because this low standard for quality is apparently not only accepted in the .NET world, but also expected. A lot of people simply don't know that the quality of software that we, the .NET community, produce on average is really low compared to other development communities. But then again, that is naturally what you get when you want to lower the bar and try to get everyone involved with developing software. You'd think that after over 50 years of history in this business, we'd have wised up to that fallacy by now, no?

The low quality of the guidance and the tools is the reason why i have started referring to the typical Microsoft recommended development practices and products as Fisher Price Development. It's great if you're into toys, but if you wanna get serious, it's just not gonna cut it. It wouldn't be so much of a problem if the vast majority of the .NET developer community wouldn't just blindly accept everything that Microsoft tells them to do or use. Which brings me to my next point...

Developers, Developers, Developers!

There is a huge difference in quality between the higher-end .NET developers, and the lower-end. The higher-end developers are generally more open-minded to what works in other development communities and want to learn from that. And they want to take what they've learned and apply that in their .NET work. The lower-end developers however will rarely venture beyond the approaches that Microsoft recommends. The higher-end developers generally try to share their knowledge and experience with others, but in doing so, will waste a lot of time and effort going against the backlash they'll get from the lower-end developers. The lower-end developers frequently accuse the higher-end developers for making things more complicated than they need to be, while they fail to realize that their initially simple solutions (as recommended by Microsoft of course) only leads to severe complications later on.

If you think about it, it's pretty similar to the Matrix. You've got a small minority of people who have noticed that something isn't quite right, took the red pill and are continuously going through hardship because of it. On the other hand, you've got a group of people who'd choose the blue pill to go back to a world where they're being spoon-fed a reality that isn't quite real by a system that only wants to keep them in check so they remain in control.

It's just not easy to be a .NET developer who values Continuous Improvement. If you're not wasting time working with people who are quite content with Fisher Price Development, you're likely working for people who're telling you to use some of the Fisher Price Building Blocks because "It's Fisher Price! You can't go wrong with that!". I've been in both situations in the past and it just drains so much energy from you. If you're in neither situation, you are in a very small minority.

The Road Ahead

So what exactly does the future of the .NET platform look like? Obviously, nobody knows. I'll tell you what i expect to happen though. I found it extremely telling that Microsoft is capable of putting resources on products like WebMatrix and LightSwitch (both of which are targeting the very-very-lower-end developers, or even non-developers) while at the same time, they are severely cutting back the resources for projects like IronRuby, IronPython and the DLR (which drew more interest from the higher-end developers than the lower-end developers). So what exactly does that tell us? I can only consider that to be a very clear message that the lower-end developers will always be the primary target of Microsoft, and that they really care less and less about the higher-end developers. When it comes to guidance and tooling, they are continuously displaying that they either just don't get it, or that they just don't care.

So where does that lead us? I think we're only going to get more and more low-quality software projects being developed in .NET due to the increased and continuous focus on the lower-end developers and the ever decreasing focus on keeping higher-end developers happy. A lot of the higher-end developers will simply move to other platforms and communities. Communities where sharing of knowledge and experience is encouraged, instead of hampered. Communities where best practices are based on real world experience instead of being concocted in a few ivory towers by people who've been detached from real world projects for far too long. Communities where there is less low-quality crap that needs continuous maintenance. Communities where there is no One Ring To Rule Them All.

  • http://gabriel.lozano-moran.name Gabriel Lozano-Moran

    Upgrade a Fiat 500 to a Bentley that is hilarious. Maybe this customer wants you to quicktly built a Fiat 500 in 3 months to use it for 6 months and after 3 months they want you to start building a Bentley. In a lot of companies this can happen for a multitude of reason but proud as we are as developers we refuse to do so sir because we want to do it right from the beginning and built our software with every possible extension point and split up our domain model into smaller domain model and use NServiceBus and Agathe right from the beginning and then we forgot about YAGNI and KISS, … Just because that’s is what we are proud and expert software developers who don’t want to put our signatures under that Fiat 500 project.

  • http://davybrion.com Davy Brion

    @Gabriel

    I’d argue that many of the available Fisher Price tools/wizards/libraries are a far cry of KISS. The fact that it has a lower learning curve hardly means that the result is simple… quite the contrary in most cases.

    I think most of us can agree that good developers typically end up with simpler code than bad programmers. I don’t think i have to point out the obvious difference in approach between them.

  • http://zsoldosp.blogspot.com Peter Zsoldos

    @Gabriel

    I don’t think the feature set (Fiat vs. Bentley) we should aim for is the issue, because that is a problem for scope management.

    In my understanding, the minimum acceptable quality argument applies to delivery/programming. Whatever we build has to pass the requirements in a demonstrable way and should be changeable/upgradable in a reasonable fashion – you are not going to upgrade a Fiat 500 to a Bentley, but you shouldn’t need to take apart the engine in order to swap on some cooler wheels, which is the case for quite a number of the software built.

    With regards to YAGNI, I agree. However, taking YAGNI to the extreme is dangerous – if you see from the high level project description, that this will be needed (think go-live requirement), use NServiceBus or whatever is needed from the beginning (in this case, the last responsible moment is quite early on). The problem is with people using frameworks in projects just to boost their resume, not because it is needed – but that would be a topic for another discussion :)

  • http://gabriel.lozano-moran.name Gabriel Lozano-Moran

    Don’t get me wrong, ultimately I have to agree with Davy about the poor quality of the upgraded VB6 and MS Access developers and I don’t remember how many times I wanted to switch jobs but I have done projects with ABAP, PHP, Java and now Ruby on Rails developers and it is the same on the other side.

  • http://www.charlesstrahan.com Charles Strahan

    Here’s my solution to this mess:

    1) Make lots of money.
    2) “Retire”.
    3) Work on whatever the hell I want, when I want, where I want, with the people I want…

    -Charles

  • http://www.highoncoding.com Mohammad Azam
  • Tero

    Honestly, what Microsoft does is largely irrelevant. As long as the .NET platform – that is the runtime and C# etc. languages keep trucking along, everything you need is there.

    Your premise for this post is still stuck in the old. You see, you do not need to look up to Microsoft and wait for some magical to drop down on your lap.

    Or, if you can, just move away from the platform entirely. It’s not such as great ecosystem if you want to do things with low cost due to gigantic licensing fees for everything you need to work with the platform. It’s the dinosaur platform, really.

    I can understand why Microsoft is doing what it is doing. Masses matter for platform and lock-in adoption. The fact that they are luring the low end developers is just a hook to sell Windows Tm tools like the OS and databases. Why would they care about the skilled developers, who move to use Open Source anyway, and generally exploit their skills to reduce Microsoft’s money making opportunities.

  • Justin

    I feel that how a developer codes is up to the developer. Microsoft certainly guides you in certain ways but I think that it is ultimately up to the developer how to write code. Unfortunately, it just seems that the majority of developers don’t want to get better. I do. I also have seen the effects of crap code, since my company still has too many ultra-crappy applications built in Access by developers looking for a quick fix to a business problem. I HATE those applications and will be re-writing them in C# and WPF. Not to mention that what passes for my company’s intranet is a loose collection of VB classes with little structure thrown together and somehow made to work. When I had to add functionality, I had to put it into a solution, since for some reason no one saw fit to do that when it was created. That’s just the tip of the iceberg. Still, I enjoy building good applications and good code with .NET and have no huge problems with it. Though Ruby is starting to interest me now.

  • kotukuwin

    Great just like your MVP…
    I’ll keep it short and sweet too…
    In response to One Ring Rules Them All
    We have IBM to thank for the monetary system. Thats always failing. Run and used by alot of average humans.
    In response to Developers, Developers, Developers!
    SQL was designed for business managers so they say. It turned into a standard thats stopped us moving on perhaps. ‘They’ are developing platforms to allow business people to write their own perhaps (are developers too slow and rubbish?) and maybe that will turn into something other than a standard.
    In response to The Road Ahead
    Perhaps they hope the developers will teach and improve there platform anyway. Thats the game they are in which has improved so much its a pity they haven’t had the resources to improve everything else as well. They have produced some amazing projects only to leave them dangling in the cyberworld.

    Wish I could pick it all up and fix it….

    Yours truly
    Dreamer