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://blogs.lessthandot.com chrissie1

    Yes, all true. I guess it’s the piramid thing where high-end developre sit at the top and are just a small fraction of the cake, so less worth the bother. To be honest how hard can it be to bring out a decent CI-server? But to be honest noone is forcing me and if I stop enjoying it I’ll just do something else.

  • Justice~!

    My friend, Microsoft has *always* been targeting the lower-end developers and making development “easy”. This is just an extension of that again; the “cheaper” you can make development the easier it is to sell to big corps and govt institutions, which is where MS does big business (coincidentally these are also the type of orgs that can afford Team System).

    While I’m keen on making programming easy, I am not a fan of the way Microsoft makes it “easy”, which makes it easier and easier to create some serious piles of unmaintainable junk. However, from a business perspective I can’t fault them for doing what makes them money, it’s just not something I feel comfortable supporting as a consultant.

  • Justice~!

    BTW, as an addendum note your comment about:

    “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. ”

    This is because the prevailing view in many of the larger orgs I’ve seen is that the data is key and really the data is all that matters. In some ways this is definitely true, but MS’ programming models and messages are designed explicitly to key into that thinking because that is what gets them the buys.

  • Scott Lowe

    I’m sure you will have guessed from recent tweets that I’d be fully in agreement with your thoughts.

    Whilst even the largest companies have finite resources, I still find it hard to understand how Microsoft couldn’t afford to pay for a handful of people to continue the excellent DLR work at a similar level as we’ve seen this last few years – not least because it keeps people like me fully engaged and excited about the future of .NET. Of course, by pulling the rug out from under such projects, it has had the opposite effect upon me. And no matter what the business strategy, I can’t understand how Microsoft doesn’t recognise the kind of damage that encouraging “lowest common denominator” development does.

    It is exhausting living in a world where this has become the norm, as is the idea of a future where we will have nothing to do but clear up more of these messes. I find myself reflecting that if the next 20 years of work is going to be like the punishment of Sisyphus, it might be worth checking out early.

    Well done for writing this Davy. You are not alone.

  • http://blog.cromwellhaus.com Ryan Cromwell

    Don’t let two weeks worth news tear down years of work by people that do push craftmanship. The pnp team works hard to push things out that support “high-end” developers (I don’t like that term by the way). Visual Studio is a better product for the high end developer than it was in 2008.

    In all honesty, for the last few years Microsoft has blatently ignored “low-end” developers IMO. The closest thing they’ve provided is some communications frameworks on top of WCF for Silverlight that are still too much for that croud.

    “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”
    You obviously haven’t looked at the WordPress codebase. This might be true in some alt communities, but on average is a pretty terrible aggregate measurement. “On average” all code is terrible. Especially yesterday’s code.

  • http://ackenpacken.blogspot.com/ ackenpacken

    I totally agree. Microsoft are making some truly horrendous decisions these days. But I love the .Net framework and it’s languages. I hope the framework is here to live but most of the supporting tools I could do without. Actually I don’t consider the framework a “one ring to rule them all” thing. We have mono :) And we’re starting to get a fair deal of good open source tools for the .Net platform. Naturally there’s tons of Enterprises that only hear what Microsoft preach. Also there’s a lot of developers that’s nine to five developers being more interested in getting their paycheck than producing quality software.
    Personally I feel that the professional part of the .Net community is growing but maybe that’s me being in denial :)

  • http://phil.ananin.co.uk Phil Ananin

    A lot of the higher-end developers will simply move to other platforms and communities.

    So where will the higher-end devs end up this time? Ruby on Rails again? Java, or something else on the JVM? Python?

  • Scott Lowe

    @Ryan You certainly make some good points – especially about “other” codebases. Having done more than my fair share of PHP dev many years ago, it’s pretty much the reason I can no longer stand to look at any PHP, even now. But yes, it’s true that the grass is always greener on the other side.

    I know Davy referred to recent events, but for me it’s not just the “last two weeks of news” that is the problem, although perhaps we have reached somewhat of a watershed recently. The last few years has seen a number of questionable technologies and practices released into the .NET world, and I should know because I’ve used them – did you use WF 3.0 in production? I did and I wish I hadn’t. Back in 2005, did you read and laugh (as I did) about the ObjectDataSource controls in ASP.NET? Does anybody seriously use those today? and let’s not even get started on a source control system that is a significantly more dangerous place to store code than your actual file system. These are just a few examples that randomly spring to mind as I’m typing this, but give me a few minutes to think, and I could rattle of a massive list of offenders.

    Whilst I have read a fair bit of PnP material, and appreciate that it’s put out there for us, your average developer won’t have heard of the PnP team. It’s telling that within days of WebMatrix being released we all know about it, but even after many years, no significant marketing effort has been made to raise the PnP team to such prominence.

    So, that was my own micro-rant right there, but now I’ll make my point:

    Ryan, I think I agree with you, I really do – and that’s the problem. If we all simply take a deep breath and accept that everywhere has crappy code, and that it’s no different in the .NET world than it is anywhere else, then the logical conclusion is….. that there is no need to focus solely on the .NET world as if it is some kind of premium set of tools, technologies, culture and community. At the very least it wouldn’t be wise to continue paying a premium for the it, would it? We might as well take our chances.

  • http://www.clear-lines.com/blog Mathias

    In general, I agree that some pretty bad code gets written in .NET, and that the Drag & Drop demos don’t help. However, I am curious as to whether this is unique to the .NET world. My intuition is that equally horrendous code gets written in other languages; I just don’t get to see it, because I spend most of my time in .NET, and only the cream of the crop of other ecosystems reach me – and by contrast, I see on a regular basis a large sample of .NET code, which includes a good amount of Horror. I would be very interested in hearing the thoughts of developers who spend as much time working with .NET and other platforms!

  • Michael W

    I read an almost exact same rant here on Dimebrain, and I couldn’t understand what they were trying to say. I’m one of those “lower end” developers I suppose. I don’t have a CS degree. I don’t have a degree at all. I’m working a dead-end job right now, but I had an idea for an application that would make life easier for my co-workers and myself. I plan to develop the software and eventually have my employer pay for me to get my degree in CS.

    I stumbled on this blog while researching MVVM and other design patterns. Davy stated MVVM is overrated and provided a detailed explanation as to why he prefers MPV instead. I’m still reading his other posts on MPV. However, it seems strange Davy would refer to people like myself as “lower end.” I have not been on a development team or ever had to refactor someone elses code. Maybe that is why I don’t fully understand the frustration. However, I can’t understand why MS is at fault for trying to get more people involved in coding. Maybe the whole frustration is with DLR and IronRuby, but this post seems to me as if you are blaming MS for others lack of innovation. What is stopping you and other “higher end” developers from creating a better product? You say the “lower end” developers are sitting around waiting on MS to spoon feed us and tell us what to do. Yet, you complain when YOU don’t like what MS offers.

    One last thing, if you are a consultant, and others are writing bad code, does that not provide job security? It will be easy to dismiss what I’m saying because I’m not a “higher end” developer. Actually, I’m just getting started, but I’m growing to love coding. However, it is posts like this that seem more arrogant than useful. Sorry if I don’t fully understand but I don’t.

  • http://dmartin.net Dan Martin

    @Michael, Personally I wouldn’t consider you a “lower end” developer at all. I consider “lower end” developers to be those who specialized in software development, got a degree in it, do it full time at their job, and yet perform at a level below what you’re able to do with limited experience. And they’re fine with this. They are the ones that worry me when given tools like LightSwitch and WebMatrix. They worry me because instead of using those tools like they should be used, for people in your situation to get a quick application up and running for their company, they’ll instead use it to work on a large application. That application will quickly become a complete atrocity and then other developers end up being responsible for fixing or rewriting them.

    I’m a pretty average developer (at best), but I like what I do and I’m trying my best to improve. That being said, even I wanted to pull my hair out after this past week. The Microsoft.Data and LightSwitch stuff was bad enough, but then we got word of the whole IronRuby mess. While IronRuby will probably live on, I still find it disappointing that they can put all the time and resources into projects like LightSwitch but they can’t afford a couple of people to work on IronRuby and the DLR. I guess I’m just selfish, but how about something that I can use and benefit from?

  • vcsjones

    @Michael Job security through obfuscation and poor software development is *not* the way to go. It works that way to some extent, yes. But it has big drawbacks: “bad code” is harder to maintain, which means slower dev cycles, usually. A client may ultimately get fed up with the slow time and fire you. Same situation when they try to bring someone else into the project, “We would like to help you, but your code is so bad, we won’t touch it and no one else will.” Client may come back and say, “OK. We get rid of him, and pay you to fix it”.

    The frustration stems from ultimately, the more “polluted” the development platform is, the average salary for that position goes down. If non-devs can churn out working, but poorly written applications, and do it more cost effectively, then they don’t need us, do they? It’s not as clear cut as that, but it’s a fear I’ve heard.

    I think a lot of it is bad timing. Microsoft has been putting all of these less dev savvy tools out very close to each other, and at the same time dropping the more advanced features like Iron*. I do think that it is a double-standard though. Microsoft has been doing lots to help the “higher-end” developers. Look at F#. It’s a full language in Visual Studio 2010, fully supported. That’s just one of many examples I could come up with.

  • http://davybrion.com Davy Brion

    @Michael

    judging from your comment, you’re hardly ‘lower-end’… i’d say your inexperienced but the fact that you’re doing research on a non-MSDN site already separates you from the large majority of those ‘lower-end’ developers

    getting more people involved with coding isn’t an issue either, but lowering the bar and then keeping it low is no viable long-term solution. the post you linked to said it very well: instead of trying to tackle complexity, Microsoft tries to pretend it’s not there and it’s trying to instill that mindset into a very large group of programmers.

    “What is stopping you and other “higher end” developers from creating a better product?”

    like i said in the post: the backlash that you’ll get for daring to stray from the MS-approved path

    “One last thing, if you are a consultant, and others are writing bad code, does that not provide job security?”

    does a garbage man encourage others to throw more litter on the street when nobody’s looking?

  • http://davybrion.com Davy Brion

    @vcsjones

    Regarding F#… do you feel confident that its support from Microsoft will remain the same over the next few years? It certainly wouldn’t be the first time Microsoft dropped support for something cool and that had a niche following because they ultimately decided it wasn’t ‘worth the effort’

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

    +1 for Mathias’s comment – it’s the people and not the platform/vendor. The platform certainly can try to push you in a certain direction, but people can (and will) go another way – am I the only one who has seen horrible Java code with Spring? However, it certainly is possible to write maintainable code in VBA :) .

    There always will be those developers that don’t want to move on, who will have 10 times the same 1 year experience in a given technology; and those that are curious, and motivated to improve. And that’s fine – there is a market segment for all of them, just like in any other profession. As Jason Gorman said in one of his posts, only when clients started to demand quality would the average code quality improve.

  • http://thecodedecanter.wordpress.com James

    I think perhaps we need to keep things in perspective. Microsoft already has a big chunk of the enterprise market and given things like F#, StreamInsight and Reactive Extensions I don’t think it’s giving up on that market.

    What Microsoft has realised is that it is losing ground when it comes to startups and new developers and it – understandably – wants to get people hooked on Microsoft technologies early on.

    The unfortunate thing here is that there are better ways of doing this than the likes of Microsoft.Data. People (developers, especially) are lazy and will follow the path of least resistance. Microsoft should be making sure that the easy path leads to good coding practices. Commiting to developing proper tooling support for IronRuby (perhaps in VS Express) might have been a nice way of doing this.

  • Tony

    This type of post seems to becoming a trend in the .net community. I like to read them to see what is bugging people. To see if they have valid points and to see what to watch out for. While posts like these make good points, they also tend to mess the whole picture which is unfortunate.

    Why does it seem like the .net platform has the most \low-end\ developers? I can guess a few reasons.
    -Colleges and Tech schools are moving from C++ and java to .net. Thus producing more grads at the low end level and many of these will not get past that.
    -MS is big and has a large sphere of influence. This was talked about above.
    -.net is easy. Some would say too easy. It takes next to no time to get started in the .net world. You download an express edition of the VS and go. Getting started in Python or Ruby is a bit more (not by much) involved. This \scares\ away a lot of potential people.

    Is the grass really greener? The metaphoric discussion.
    Are the other communities (Python and Ruby) really any better? In some ways, I am sure they are however I am also sure they worse in other ways. I have learned over my short career that: \The grass is not greener on the other side, it is just a different color.\ What these means is no matter where you go or what you do, there will always be issues. The issues will just be different. The trick is finding a set of issues you can deal with.

    My Rant: I hate captcha! :) I am on my 3rd try to submit this post…

  • Michael W.

    @Davy

    “does a garbage man encourage others to throw more litter on the street when nobody’s looking?”

    Touche!

    I have to apologize for my ignorance. I think I understand what others are saying after reading about LightSwitch. I knew nothing about it until it kept coming up in others’ posts. Again, I’ve never had to correct anyone’s code so I couldn’t feel the pain. Yet, after watching the video and reading up on LightSwitch, I can only imagine the type of code it produces.

  • Al

    That’s a fine rant. I agree with some points, question others. However, I really must comment on your insult to Microsoft MVP’s. Plenty of MVP’s are mostly clueless outside of their niche, but all of the C# and Architecture MVP’s I’ve dealt with are top notch developers.

  • pho

    “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.”
    –> Are you just speculating out loud or is this an actual fact?

    “A lot of the higher-end developers will simply move to other platforms and communities.”
    –> I assume you consider yourself a higher-end developer, so if you don’t mind me asking, which platform/community would you move to if the current .NET situation does not change? Java? And what would really be that much better there?

  • http://davybrion.com Davy Brion

    @Pho

    “Are you just speculating out loud or is this an actual fact?”

    that’s a joke right? did you see me link to a study or quote a number? no, because it can’t be demonstrated definitively… but just take a look around and open your eyes

    “which platform/community would you move to if the current .NET situation does not change? Java?”

    Ruby looks to be the most interesting… the Java world doesn’t seem to be innovating the way it used to.

    “And what would really be that much better there?”

    hardly having to deal with issues i mentioned in this post?

  • Peter

    Several local people have expressed a desire to move away from .NET.

    It doesn’t really matter if it’s
    * Microsoft,
    * the trouble of combating Microsoft’s marketing,
    * employees’ lazy learning attitudes,
    * problems specific to .NET consulting (or is it just dealing with any kind of corporate IT?),
    * the general lack of an open source ethos,
    * the difficulty of doing should-be-simple things like automated browser/UI testing,
    * or even self-inflicted wounds, delivered by reading dozens of similar blog posts like yours…

    It doesn’t matter. Aside from the “jobability” factor, i.e. the ability to get paying work, .NET is no longer considered the best programming environment. I don’t know why, but this opinion is becoming widespread. And from my small groupthink community, within the last six months we have had 5 people outright leave .NET for other frameworks, several more pick up side projects outside of .NET, and several more (like me) express interest in completely switching stacks.

    I don’t hate my day job doing WPF, and I wouldn’t hate working with ASP.NET MVC or FubuMVC, but I no longer believe that they’re the best tools for the job. If Microsoft wants to keep people like me in the long-term, they’re going to need to do something drastic.

  • Justice~!

    LOL @ the guy talking about MVPs. I wish I had your experience but I know of at least several C# MVPs (or related ones) that could stand to be a lot better devs. It’s not a guarantee by any stretch.

  • Peter

    Pho, it gets a little fuzzy as to “which stack you choose” once you leave .NET, because you may not be able to limit yourself to one “stack”. Let’s assume you’re not going to pick up Java work, because, let’s be honest, none of us respect Java as an ecosystem. (I don’t have a rational reason to dislike Java, but, given time I could find reasons.) If you want to work with WebSphere, by all means go crazy with the Java.

    So, we’re left with the non-Java work. I think I personally would enjoy any of the following:

    * Ruby on Rails
    * Ruby (non-Rails work)
    * Python and any web framework (Django, web.py, anything)
    * Esoteric: Clojure, Smalltalk work (does this exist?), Common Lisp itself

    I get the idea that, with the exception of pure Rails developers, you have to swing between several languages and platforms to keep steady work. The Microsoft equivalent is doing a SharePoint project, then turning around and supporting FileNet, then turning around and supporting an ASP application, then turning around and modifying an existing WebForms app, then building something new in ASP.NET MVC. Sprinkle in some BizTalk if you use it, DBA/server admin work as applicable. This is all “Microsoft,” but if you look closely, you’re bouncing around quite a bit.

    Once you leave the Microsoft ecosystem, you may do both Ruby and Python work, depending on what you can get. Just think of Python gigs as the equivalent of SharePoint gigs on the Microsoft stack, and maybe this new perspective will make you feel better. It does for me.

    * Reluctantly: Android development. The dev environment is apparently worse than what we’re used to (Pseudo-Java). I would consider Android because (in theory) the dev environment will improve, AND, it’s an open (open-enough) system.

    * Even more reluctantly: iPhone dev. Everything that’s bad about Android development is bad about iPhone development, plus you have a closed system.

  • http://elegantcode.com Jan Van Ryswyck

    Amen, brother.
    As far as I’m concerned there’s only one question left: now what?

  • pho

    @Davy
    No I wasn’t joking, it was a genuine question since I find it a pretty bold statement, and pretty meaningless at that (to me anyway) if all you have to say about it is “just open your eyes and look around”.

    @Peter
    Smalltalk actually seems to be a pretty big market as far as I’ve heard

  • http://davybrion.com Davy Brion

    @Pho

    honestly, i find it quite worrying that you don’t notice the same thing

    then again, i (and everyone else who appears to agree) could just be delusional about the whole thing… maybe all the shitty code i’ve seen really is, by some freak occurrence, a set of exceptions to the rule.

  • pho

    @Davy;
    Don’t get me wrong, I’ve had my fair share of shitty, messy, duplicate, obsolete, bloated code as well (especially as of late), but in my mind I don’t correlate this phenomenon of cluelessness specifically to the .NET community per se. I simply assume that is the same situation throughout the industry since I really have no reason to assume that ruby/java/smalltalk/python developers are in general more geniuses than .NET ones. You can fuck up in any environment. Have you read thedailywtf.com lately? :P
    I just doubt that it has to do with MS practices. These people that blindly follow MS drag+drop samples would be equally horrible in any other ecosystem

  • http://davybrion.com Davy Brion

    “I just doubt that it has to do with MS practices. These people that blindly follow MS drag+drop samples would be equally horrible in any other ecosystem”

    Yes they would, and the big problem is that Microsoft is (increasingly even) doing all they can to get these people involved in software development. In other communities, the ratio of these developers _appears_ to be much lower, perhaps because there is more emphasis on proper practices instead of Fisher Price Development, or perhaps because the learning curve is steeper. And no, i can’t prove it as a fact but i’ve got a pretty strong gut-feeling about it :)

  • Tony

    For the record, Google is trying to become more accessible just like MS. Google has an application in closed beta called App Inventor (http://appinventor.googlelabs.com/). From my understanding it is comparable to LightSwitch.

    This isn’t a MS issue though. I have noticed that the demand comes from the top for development to be done fast and cheap. To make the bottom stronger as fast as possible. This seems to me to becoming a popular trend. Looking at the tech industry in general, \Good enough\ is becoming the norm. Take the iOS or Android. Neither are perfect and both were pretty terrible on first release. Today both are decent but have their fair share of issues.

    Sorry, no proof. This is just based from my own observations. It pains me as a developer to end a project because it has been deemed good enough. It happens more than I care to admit too.

  • http://rdn-consulting.com/blog Bob

    Higher-end/lower-end rang a bell from the past: Stereotyping Programmers. I had almost forgotten about Mort-Elvis-Einstein (which was coined at Microsoft) and the 20%/80% personas. Ah, the good old days…

  • http://oswco.com Tom Brander

    Well there is a reason that open source is rising, and you have nailed a big part of it. Come over to the “Dark side” and try Python Django, Postgress and the rest (all the no-sql DBS)There is a tremendous amount of innovation and that is a reason that most serious start-ups are utilizing the open source stacks.

  • http://scottbellware.com Scott Bellware

    What are you going to do about it? It’s in your hands, after all. If you want Microsoft to change, then change them.

    Microsoft has always responded when resistance goes far enough to make its decision-makers nervous about the impact on reputation and image. You have to hit at those soft spots quite hard before they notice, but when they notice, things can happen.

    Passive resistance is futile in the struggle to restore meaningful productivity to the Microsoft sphere of influence. Many “leaders” in what was once the strongest movement for change actively worked to dismantle any overt resistance for fear that it would tarnish the image and reputation of counter-cultural organization and movement.

    You’re seeing the result of the community’s social experiment in passive resistance in the advancement of lower-productivity technologies coming ever-faster out of Redmond, and the decommissioning of technologies that could have made tremendous improvements if they were properly understood and communicated.

    The challenge is now bigger than ever. Microsoft now has more momentum and knows that its once-vigilant watch dogs, critics, and activists have given up.

    The dissolution of an effective and appropriate resistance is all the signal Microsoft needs to believe that it has a mandate to continue supplanting skills, knowledge, and ability with its own elaborate tools. Expect to see more of it now.

    Or… you can step up and accept the cost of mounting a real resistance.

  • Pingback: Ranting over change – an exercise in futility? « Pedro's digital thoughts

  • http://davybrion.com Davy Brion

    @Scott Bellware

    I don’t feel like doing anything about it since i no longer consider it worth it. Sure, you could spend a lot of time and energy trying to fight it, like you have in the past, and it doesn’t really appear to make any difference

    i’ll continue doing what i think is interesting… only time will tell how much longer .NET fits into that

  • http://scottbellware.com Scott Bellware

    The plain fact of the matter is that you’re in a minority culture whose walls are closing in. The current situation was predictable and was predicted. It’s the predictable result of a naive approach to repression, and the naivete to be willing to believe that repression wasn’t what was happening despite the marked, observable, and observed shift to repressive tactics going back to 2004.

    The community believed that the sense of good will embodied in Microsoft’s ambassadors to the community was in fact Microsoft’s will. In the end, the community is lying in the bed it made by allowing it to be made.

    You’re all so afraid of being seen as cliche’s of things like “banding together”, and “resistance movement” that you’ve dismissed the practicable and effective tactics that come with those things. And therein lies the naivete – and it’s the one weakness that Microsoft could always count on to exploit, and the one weakness that it did constantly exploit. And so here we are. Your career space hasn’t even come close to seeing how much suck is in the works. Microsoft doesn’t care about you until you’re the sand in its machinery, and most of what you’ve been led to be is the oil in its machinery. You get the results of your own actions.

    Even if you go to another platform community like Rails, you’re still going to be outsiders. The level of social and political naivete in the (alt).NET world far exceeds what you’d find in a community in, for example, the Rails ecosystem. People in more productive communities have a greater awareness, and they don’t get steamrolled as a matter of course as they do in the .NET world. You still have to learn to be people like that. And frankly, the best place to learn that is the place you know best – and that’s the place where .NET is. You’re not going to learn how to be a member of a more progressive community until you can actually pull yourself up by the bootstraps, stand for yourselves, and by fully-participant members of a community, rather than mere political bystanders. You need to be policy-makers, not followers. Or you need to get comfortable with assimilating into a world that you already know better than, and who’s knowledge you can better – if you learn how.

    Your best bet is to “stand and fight”. The first thing you need to fight is the cynical, egoic tendency to react to words such as “stand and fight” as some distant cliche sourced in some computer game fantasy world. Nothing is needed in the .NET sphere of influence now more than a group of advocates who’ve finally woken up to the imperative to stand and fight.

    If you want to learn how to be productive members of a community, then you’ve got a great opportunity to do that right where you can be most effective; where you have the most experience, the most credibility, and the bigger network. Leaving for a more productive culture before you’ve learned how to be more productive yourselves is fruitless – you’ll always be stuck between two worlds, and you’ll loose effectiveness in the process.

    You’ve got an unavoidable repressive force in your midst. It’s not going away. It’s there because you allow it to be there. It’s there because you allow yourselves to be distracted and manipulated, even by your own chosen leaders who themselves have pecuniary interests in seeing you be pacified.

    This is the world of your making. So make it. You don’t have much of a choice. It’s not your choice after all – it’s Microsoft forcing your hands. If you choose to believe that it’s not happening because that view is less frightening and much more comfortable, expect those walls to continue closing in at an ever faster rate. And don’t believe for a second that you’ve got much of an escape root. There isn’t another developer culture on the planet that has been shaped by the forces that have shaped your’s, and there’s little other more natural place for you to be unless you’re willing to undergo some radical personal transformations. And if you’re willing to do that, you might as well transform yourselves to the sand in Microsoft’s machinery that human productivity so desperately needs.

    In short, take the courageous and even heroic actions in your real lives that you take in video games and fantasy novels. Or in the words of Abraham Joshua Heschel, “take a leap of action rather than a leap of thought”.

  • Pingback: Greener pastures… « Digital Tapestry

  • BV

    Absolutely. I get sick and tired of being associated with lower-end developers, despite my best efforts to show that .net can be used in a good way. There are times when I consider dropping asp.net altogether and going to PHP. It doesn’t surprise me anymore that they’re being taken more seriously than asp.net developers.

  • Kania

    All I can say is, thank God that Microsoft doesn’t listen to people like Bellware.

    Software isn’t a religion or a political ideology. It’s a way to get things done. The world is a big place, and different things work for different people in different circumstances. These dogmatic tirades about how terrible it is for some schmoe to knock out a few data entry screens are a lot more indicative of you guys’ insecurity than it is some kind of existential problem that has to be solved.

  • http://www.buckaroocoder.wordpress.com Chuck

    Davy – the world needs a good rant from time to time. Having relatives who worked at FP might take offense, but, hey, they were the toy makers. That’s what they did (which is exactly your point). I am still in a wait and see about Web Matrix and LightSpeed – I am having flashbacks of the A word (Access). But, to your reference of Fisher Price Building blocks…was that a swipe at the popular Lego metaphor?

    Chuck

  • http://davybrion.com Davy Brion

    @Chuck

    no idea what the Lego metaphor is :)

    what i meant was that the building blocks that they provide are good for, well, toys

  • MarkIt8

    You nailed it. Best blog post I have read in a really long time.

  • Pingback: Stuff I’m Reading

  • Vanderlei

    Davy

    I agree when you say about that damn ring to rule them all, is exactly like that, but I think that a huge company like Microsoft will not focus 100% on lower-end developers, some communities are making a strong effort to not use everything as is.

    An open-minded approach is sustained by scott Hanselman, he used the Lego metaphor in his keynote on MvcConf: http://www.viddler.com/explore/mvcconf/videos/3/

    And if Lego is good to construct toys, the same metaphor was used when object oriented principles were described for the first time, so we are kiding very much since that day. :)

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

    I have said this at all customers to all expert coders I have had the pleasure with to work together with on projects. And I will explain this using a metaphor of cars. Sometimes the customer just has enough money for a Fiat 500 and sometimes the customer has enough money but they don’t want to spent it on a Bentley. So why on earth would you put on your white gloves and start building a car with the highest quality possible that will never breakdown and that has 500bhp if your customer only wanted a simple car that would take a person from point A to point B (a distance of 10 miles) once a month over a period of 2 years. You get the point?

    But for some reason since a couple of years or so since the uprising of ALT.NET and DDD and TDD and God knows how many acronyms we all want to start using the procédé of building Bentleys and Maybachs for every software project and completely ignoring the actual nonfunctional requirements opposed by the customer and ultimately wasting a lot of money.

    I am not saying that some applications will not benefit from the “Bentley” approach because they will and others will also benefit on the longer term but for the last group of applications that will benefit on the longer term, in most cases your customer will not even care as budgets are allocated on yearly basis.

    So stop trying to built Bentleys everytime and evaluate whether or not your next project should be a Bentley or a Fiat 500. We talk about being Agile and being customer centric and DDD so act on it imho.

  • http://davybrion.com Davy Brion

    @Gabriel

    i’m not saying that we all should be developing Bentleys

    but i don’t feel right about so many companies who think they’re paying for an Audi, yet are getting a Fiat in return

  • Peter

    Gabriel, maybe it helps if we add a few details to your car metaphor.

    What if you were promised that your Fiat could easily be upgraded to a Bentley, with little extra effort, because, after all, they both have a gas pedal and a brake pedal and an engine, and come on, they’re all basically the same? What if there has been a long history of similar promises, and similar failures?

    This is why composability is so important. LightSwitch does not appear to be composable, and thus, will not be easily upgradable when the time comes. So, back to the Fiat–everything is fused together. The engine is fused to the chassis; the seats are fused to the floor. When it comes time to upgrade, you might as well throw out the entire Fiat and start over.

    Metaphors can be misapplied, so be careful when choosing your metaphors.

  • kilfour

    ‘The Radium Water Worked Fine Until His Jaw Came Off.’

    WebMatrix, LightSwitch, etc, it’s all quackery and it _will_ end.
    Just as soon as customers realize that their jaw is coming off.

  • Manuel Martone

    I totally agree!
    recently I wrote a series of post on my blog talking about that.. this is my sad situation at my job place, but unfortunately I saw that all the job place (one except) the song was the same.
    I though in past that the only answer to that situation in .NET world possibly was to pass to the “dark side” of Java World, because there (I saw that in Italy) in the java’s dark side this orrible situation doesn’t exist..
    I was very sad about that, I love the .NET world I know that there are good chanches to do very good things in th .NET world as they are reality just now!
    After some sadly years in this point of view I sarted my personal battle to show that as in Matrix, we want to weak-up many developers as possible…
    I don’t know what will be my end, but I still want to try and continue.
    WebMatrix, Lightswitch? trash! ..how to “lobotomize” developers

  • Manuel Martone

    I wrote wrong sorry :

    this is my sad situation at my job place, but unfortunately I saw that all the job place (one except) the song was the same.

    is instead

    this is my sad situation at my job place, but unfortunately I saw that all the job place where I’ve been (one except) the song was the same.

    sorry for my english