Archive for Entity Framework
Southern Maryland Give Camp – What a Blast!
Posted by: | CommentsLast weekend I was at the Southern Maryland Give Camp which really was an event not to be missed. In one weekend we designed and built a system to track and report on all of the services provided by the Tri-County Youth Services Bureau (TCYSB), an organization that provides important help to youth and families in Maryland. Their key goal was to automate the reporting they needed to do to the various state agencies and grant providers that otherwise took about a man year of effort to assemble by hand.
Held in the really beautiful St. Mary’s College of Maryland (a state school – who knew!) we set about building system to track all of the people TCYSB provides services to, all of the services that were provided, and then provide the data back out to satisfy the various reporting requirements. To get a feel for the complexity of the system, here’s the entity model:
When you have less than two days, it really focuses you on what’s important. For the most part we stuck with technologies we either knew or were willing to risk everything figuring out. We built the system using Entity Framework 4 (Model First), ASP.NET WebForms, and DevExpress Reporting. This was my first time using EF4 on a complete application, and it worked out amazingly well. Frankly, compared to the prototypes I did on EF1 they have really come a long way. Naturally we used DevExpress reporting not just because I know it (I know SSRS as well) but because ease of deployment is a big concern when you’re handing off a bunch of files to a customer with just this side of no IT support. Like a few vendors, DevExpress offered free licenses to the non profit organizations for solutions developed at the Give Camp.
Another thing that acquitted itself well was TFS – we had everyone on the team using our TFS server (since it was readily accessible and everyone had the client installed) and despite the high odds of merge hell it all came off without a hitch. Frankly, no one was more surprised than me.
At high noon on Sunday, 41 hours after the kickoff, we backed away from the source code, did a final check in and went into the group room for wrap up. Every team demonstrated what they built for their non-profit which was something to see. The results ranged from redesigned web sites to real line of business applications like what we did. Technologies spanned the range as well, with Microsoft pretty well represented as well as some interesting uses for Google Docs and Google Calendar.
What made it all work was behind the scenes – for me the biggest piece were the outstanding requirements documents we got prepared by Ann Scharpf before we got there. Combined with round-the-clock access to both the TCYSB staff and Ann we never had to guess at what we were trying to deliver. Frankly, I’ve never worked with a better BA than her and it made all of the difference.
Everything we might ask for was right there – more food than could be eaten, more caffeinated drinks than could be drunk, and roving specialists in design and technologies (a big shout out to Steve Michelotti for helping me with EF questions).
Finally, we had Jim Pendarvis doing his best impression of R Lee Ermey. When he says coding is over at high noon, coding is over at high noon! I can’t imagine how much work he personally had to put into making this happen.
If you have the chance, I really encourage you to check out a Give Camp near you. It’s a great experience to build something completely in a weekend that will make a huge difference for people. Regardless of your level of tech skill or even if you’re a designer, analyst or even (gasp) a program manager you can make a difference. Give it a shot!
Beware Demoware
Posted by: | CommentsI’m becoming convinced that there is a scourge in the Microsoft development ecosystem, and it’s called the 10 minute demo. Here’s the problem: No matter what the tool is, you have to make a demo that, in 5-10 minutes, purely using point & click design tools, shows off the power of the tool and technology.
Now, the problem isn’t that you have to get your message across in 5 or 10 minutes; I’ve found that the harder I work at getting the message down the better the message gets. Instead, I wonder how many product managers have had to sit back and say “fine fine, but enough about what customers are telling us it really has to do: how am I going to make a point and click demo that will go from user interface to database through any number of tiers and makes it all look easy?” The problems that we really want vendors to tackle are hard: If they were easy, we wouldn’t be looking for solutions.
Take Entity Framework. This is a very complicated set of technology that’s oriented at a very complicated problem. If you have the problem they’re solving, it can be a huge time and cost saver. Developing a technology like this is extraordinarily expensive, and you’ll be married to it for a long time so it’s good to have a major vendor stand behind it. I’ve been in environments where this would have cut major projects in half and eliminated piles of risk. I can imagine the challenge the Product Manager for Entity Framework had when we had to make a few short demos that show off how great this technology is.
This is a high-concept technology for integrating disparate data sources into a common model. Any demo you can do purely visually in 5 minutes of the product is going to be contrived at best. Most of the demos I’ve seen have been how you can take Entity Framework and point it at your schema and then get your client to bind to it. You know, the same thing you could do with ADO.NET, LINQ to SQL, and any number of other technologies… And shouldn’t do. It does a disservice to the tool because:
- You end up walking away with an underwhelming impression of what the technology is uniquely enabling; something that you couldn’t easily do before.
- The demo shows an approach that really doesn’t scale to real-world problems.
The last one is the real problem. Folks who are approaching using your technology to solve real world problems take the methods you use in your demo very seriously. They’ll pick it apart and use it as a trump card in design conversations: ”but here’s how they did it in the demo, just strait from that little part of the UI back to the database. So we make our huge application by just doing that over and over. It’s how they did it!”. I think of all those early demos of .NET that showed people dragging a few tables onto a designer, then dragging that onto a UI, click click click and *poof*, there’s the list of customers! But seriously, would you really build anything of scale that way? Unlikely – maintenance challenges, performance, production considerations (like common error management and security) all argue against it.
As an experienced team of developers, even we get caught by this some times – we look at the buzz and a demo around a visual design tool like LINQ to SQL and then charge out to try it on a skunkworks project. Within a short period of time we’re in trouble with it – everything started well but now we can’t update the model, or we keep losing our changes, or we can’t get it to handle the full application lifecycle. We’ll talk back and forth trying to decide if:
- We just don’t get it. We’re just too old and set in our ways, and can’t see the great brilliance of the new vision.
- The demo approach is demoware. A feature you’d only use in a demo.
In the end, we nearly always prove it’s the second. We pick it apart, talk with other (non Microsoft evangelists) folks and come to the consensus that yes indeed the natural laws of computing haven’t been set aside by this new strategy or tool.
So please, I’m begging you – if you work for Microsoft or in the Microsoft ecosystem, put an end to demoware. Your product may not make a 5 minute end to end sample – so show us how it fits conceptually. I’ll get more out of your 10 minute video on Scrum that’s funny and conceptual than I will on a contrived sample that just shows that your product can solve a problem too simple to justify its use.
A final note: I’m not really singling out Entity Framework as having bad demo videos. There’s a lot that I disagree with about how EF was rolled out (A service pack? Really? How about .NET 3.9…). They actually did create a set of conceptual videos, but the high traffic stuff in MSDN has a definite feeling of demoware.




