Entity Framework Petition

I feel I need to respond to the “Vote of No Confidence” on the Entity Framework.

I have little interest in petitions. They are by nature backwards looking. To get a group of people to sign onto something they have to either understand it or be driven by the charisma of the leaders. In this case, I assume the first. The contents of the petition must be stable and old enough that everyone has worked out the details. That’s the case with all the technical petitions I can think of, although admittedly that’s just a handful like the VB6 petition.

When it comes to the appalling scenario where we have at least 14 major categories of data access strategies in use in new projects today, we need the Microsoft teams to look forward and be creative in combining the best set of techniques – NOT pick one of the existing strategies and latch on to it because it came from the group that yelled the loudest.

Entity approaches are good because they better separate the business and data sides of our middle tiers. But they are also inherently difficult and inaccessible to most programmers. Entity Framework’s goal must be to bridge this gap. That means being extremely creative in picking its battles to reach toward the real world developer – not copy a strategy that is available to that developer today and fails (the combination of NHibernate and other tools used in a specific style of development). The failure is not because NHibernate is an Open Source tool. It’s not because people don’t know about it. If it worked in the majority of shops it would burn through our industry like wildfire. Why don’t you use them? Because they do not fit your development environment! This is not an easy problem that someone’s solved and Microsoft is looking the other way. It’s an incredibly hard problem – how do I know? I’ve been working on occasionally novel solutions to the problems for 20 years.

Entity Framework has issues. This is not news. It’s not even news to the Entity Framework team.

– EF is not a failure because it doesn’t fit TDD development

– EF is not a failure because business logic goes into partial classes

– EF is not a failure because it treats data as an important part of biz objects

– EF is not a failure because it accepts that most people do data first development

– EF is not a failure because lazy loading is hard – lazy loading can destroy performance

– EF is not a failure because its design tools are 1.0 level

– EF is not a failure because it has a poor strategy for merging into source control

All of these are potentially issues, but it’s critical, essential, I cannot yell this loud enough – Entity Frameworks must not be designed for the group that is best organized and screams the loudest. This already happened once with the disastrous IPOCO attempt that helped no one and wasted a lot of manpower that could have improved mapping and provided better metadata.

But then I’m sort of caught in a corner, because an important point of the petition is correct. Be cautions with EF. Do not jump into Entity Framework because of Microsoft marketing. It’s a tough platform that will get a little easier when the current spasm of books comes out. The niche is pretty narrow and if you step off the boards, the quicksand can be pretty deep. Treat it like what it is – an amazingly large and complex project that is being released as a 1.0 product. It’s an infant. The metadata and mapping still stink. Look at it as Microsoft’s current future direction, but remember how many current future directions we’ve had over the last 15 years (around ten) and remain skeptical.

14 thoughts on “Entity Framework Petition”

  1. You’re right that EF 1.0 isn’t a failure because of any of those individual bullet points taken in isolation. And it’s arguable as to whether v1 is a failure or not. I wouldn’t personally choose to use the word “failure” here, so I’m going to move away from it.

    Entity Framework causes waste, lost productivity, and lower business performance because of the interplay of all of its short comings together.

    If we focus on issues merely in isolation, we’re indulging local optima focus which doesn’t bring us to a meaningful understanding of the impact of the issues on team, projects, and businesses.

    While I respect that you’ve been at this software thing for 20 years as I have, I also recognize that I’ve been open to learning things like TDD and entity-oriented architecture and design at more than a cursory level and that we have different perspectives because of a gulf of experience in the issues that are pertinent to the authors and signatories of the EF letter.

    I welcome the opportunity to work with you on an project to transfer real contextual knowledge and understanding about these issues that we have talked about in the past that I have observed aren’t understood but through tangible, extended experience.

  2. Scott,
    Thanks for the comments.

    >> Entity Framework causes waste, lost productivity, and lower business performance because of the interplay of all of its short comings together. << Sorry, that you dislike the word failure. I used that word to summarize the attitude you state here. If that isn’t failure, how do you define failure in our industry? I'm a bit at a loss to respond to the implication that you've been more open to learning new things than I or a number of other people have. That I and others have explored different directions is true. Obviously we have chosen the directions with the most tangible benefit to us. That is what is interesting. I distrust with the concept that anyone who hasn't experienced something just can't get it. It's been used by religion and used to silence critics in an array of human endeavor. Distrust does not mean you are not correct. Perhaps we will have a chance to work together sometime, as I find it interesting to push boundaries in new directions – that’s what I’m in this ball game for. Right now, the code gen (C#/VB neutral templates), metadata (decades long application life spans), write once run on any technology user interfaces, workflow ballets, embedded localization, managing programmer overload and other research directions just seem more interesting. I think the rest of what I would like to say in response to this would work better as a new blog post. Feel free to continue the conversation.

  3. > I distrust with the concept that anyone who
    > hasn’t experienced something just can’t get it.
    > It’s been used by religion and used to silence
    > critics in an array of human endeavor.

    Pursuit of mastery requires learning through experience. There are things that are far too subtle to see without sharpening our perception through practice.

    I’ve got no problem with you being sensitive to this claim, but it’s a common observation of people pursuing kaizen.

    Any claim can be used inappropriately, and can be used to silence the masses.

    I wouldn’t think of silencing you. I’m asking you to put your money where your mouth is and go the rest of the way in the learning, which first begins with an understanding that continuous improvement is a pursuit of knowledge we don’t presently have and that is too fine for us to presently grasp.

    You’re never too young to stop learning.

  4. Scott,

    That’s me. I quit learning years ago. I just sit by the side of the pool sipping martinis. Snorkeling in the morning and partying into the night… oh, wait, I woke up. That’s not quite the story of my life.

    The disconnect here is the implication – the rather insulting and annoying one – that because I am not involved in the same techniques and coming to the same conclusions as you that I am not in pursuit of mastery and sharpening my life through practice (beyond and including what I do at a keyboard). There is a great deal that I cannot presently grasp – for many reasons. I’m a traveler just like you. Practice takes many forms.

    Interesting that you would bring up kaizen. See, I fail to see the point of wasting effort telling people how correct I am (I am not because correctness is mercurial and illusionary) and I get into something like this because voices can improve the process – not because shouting my current transitory view of correctness has value (my correctness is not relevant to the process).

    What is the core of kaizen? Reducing waste. Thus my involvement in this conversation about the petition. The current basis of the conversation, including the petition is wasteful.

    Superiority is wrong and a waste of time. The greatest anti-pattern is believing you have the answer. I believe you know this.


  5. “Sorry, that you dislike the word failure. I used that word to summarize the attitude you state here. If that isn’t failure, how do you define failure in our industry?”

    Failure is a very harsh label. Writing a web app in IL or assembler might be extremely costly and very delayed (among other things), but is it a failure if the website actually works afterwards (and meets the business need)? (Yes, I’m using an extreme example to illustrate a perspective.)

    Failure and success are not dichotomies. Discussing the fit of a solution on a continuum (gradient) rather than simple black and white allows for greater room of comparison.

    From this perspective, EF isn’t a “failure”. It just falls further to the left of the gradient than many of us would have liked to see (for the reasons you listed in your post and others).

  6. I can’t see myself using the EF. I’ve recently been evaluating various OR mappers, I think I have tried a dozen or so in the last couple months. I have to say so far I have found the EF to have the most difficult learning curve of them all.

    I’m sure the EF won’t fail given the marketing might of Microsoft. I’m guessing if it was just another OSS project it would quietly wither away unnoticed.

  7. UGG
    UGG sale
    Cheap UGG Boots
    Discount UGG Boots
    Authentic UGG Boots
    Genuine UGG Boots
    Origianl UGG Boots
    Women’s Ugg
    Men’s Ugg
    UGG Australia
    UGG Store
    UGG Official Store
    UGG Shop
    UGG Online Store
    UGG Boots
    UGG Boot
    UGG Sandal
    UGG Sandals
    UGG Slipper
    UGG Slippers
    UGG Classic Cardy
    UGG Classic Crochet
    UGG Classic Mini
    UGG Classic Short
    http://www.uggsale.org/ug today

  8. Used Entity Framework for a large project. Not due to Microsoft marketing. Due to challenges we had in our development and the potential of EF to solve those. And EF was very succesful. Sure, you have to be careful how to write your queries because you can get into performance issues. Sure, the version 1.0 bugs and limitations are a headache. Sure, batch processing with it gets horribly slow when you don’t watch it (it wasn’t intended for that, but using a different model in batch processes than the rest of the application was also unwanted). But the advantages are so wonderful. We have been able to extend and refactor like crazy without breaking 100’s of SP’s. The compiler helps you out with typing issues. We have been able to write a lot more functionality in less time and force the programmers to use a better architecture. On top of that, we have been able to extend the Entity Framework with some wonderful functionality like rule validation, audit trails and business objects. And all of this was relatively easy. Entity Framework and the general direction of Oslo have my vote of confidence. It’s more than time to move this style of programming to the mainstream.

  9. Hi Kathreen,

    I’m really dissapointed how some MVP (I hope as you have the the blog on MVPs blog site) can write such sentence: “Because they (NHibernate) do not fit your development environment!”

    NHibernate was ported from Java and it has great history, it fits very well OUR environment (I work for really big enterprise/bank) very well!, has no performance issues (if you know how to deal with them, you can avoid them) and what is best: it support SoC and TDD but I’m not sure if you know what it is otherwise you would see that having teh system under the test is very important!

    I respect EF and I think, as with every prodcut from MS, we will need to wait for 3rd or 4th version of the product to be usefull.

    Please, take a look at Sharp architecture, CodeCampServer.org and other corrrectly architected systems and write me back if you find there any EF :o) ?

    I think, EF is failure if it doesn’t fit TDD!

  10. I respect you taking the time to make a comment, so I posted it. I would also like to respond, although it is also important to note that this is a rather old post, and the litany was in direct response to a petition which I thought was a very bad way to handle disagreeing with Microsoft.

    If NHibernate fits your development environment, great use it. I believe the reason more shops aren’t using it is because it doesn’t fit their environment. People use tools they can uptake into their environment with payback. It’s hubris to think that everyone should work in the same way that you work.

    But this statement is not an insult to NHibernate. It’s a good tool and it has helped many shops achieve success. That’s a good thing.

Leave a Reply

Your email address will not be published. Required fields are marked *