Patterns & Practices Summit – Day 1 – Frameworks

I’m not sure how I want to write about the conference. I was thinking that I could post notes that I have written about it or my thoughts on the content presented. I think that in the final equation, I really want to be able to do both. You can also read the thoughts of my co-worker, David Boss, who is also blogging about the conference.

I started using OneNote 2003 today to take notes during the Summit. I had heard great things about this app from co-workers that use it regularly. This seemed to be a perfect occasion to give it a test drive. My thoughtsSFD - Chief Seattle: FANTASTIC! I was able to keep notes where I needed to augment the slides the presenters showed in a “free-form” way.

I’m also going to drop in a few pictures that I took of Seattle over the past weekend to add a little “flavor” to the week’s posts.

With that said, here goes…

Day 1 of the Patterns & Practices Summit was focused on Framework development. I was very impressed with the content present from all of today’s speakers. This conference had the smallest attendance of any that I have been to (around 250 or so), but I think that it was a benefit. We were all able to ask our questions and get meaningful answers with plenty of time to spare.


Keynote: Framework Design Principles – Brad Abrams – Blog & Slide Deck
This was an excellent session on the essentials of framework design. Brad brought out 5 major points:

  1. Treat Simplicity as a Feature
  2. Know your User
  3. Think of the Development Ecosystem
  4. Use the Power of Consistency
  5. Design to Last

Some of the more salient points include:

  • “We’re not just shipping just your feature!” (Craig Symonds, General Manager Visual Studio) – You may have to make your piece sub-optimal to keep consistent with the overall framework.
  • “Limit the amount of New()” – From a discoverability standpoint, it is better for the user to create a single top-level object that exposes a set of sub-objects than to have to try to figure out which object to instantiate next. This allows Intellisense to be your friend.
  • “Make the Simple Things Simple and the Hard Things Possible” – ’nuff said!
  • Keep Naming Consistent – Save the best names for the most commonly used objects. Be consistent across the entire framework.
  • Addition by Subtraction – You can create a better product by not adding more features. Keep complexity low.
  • The Pit of Success: in stark contrast to a summit, a peak, or a journey across a desert to find victory through many trials and surprises, we want our customers to simply fall into winning practices by using our platform and frameworks. To the extent that we make it easy to get into trouble we fail.” – Rico Mariani

Session 1: Dependency Injection – Brad Wilson
Another good session. Talks about ObjectBuilder and how it can help when assembling a system from disparate parts using lightweight containers that serve up those objects to consumers. Here is an article on the subject of Dependency injection from Martin Fowler if you’d like to read more. After the conference is over, I’ll try to post a link to any information Brad puts up. Here is the link to ObjectBuilder on CodePlex.

Session 2: Enterprise Library 3.0 – Tom Hollander
This was an interesting session, but since we don’t use the Enterprise Library, it was a bit off target for me. Now with that said, I did get one thing out of it that was well worth the time spent. Tom discussed how your can allow your test classes to see the non-public members of the class that they are testing. You apply the attribute to your class and you point it at the test class…voila! you can now test your private and protected members and methods. Here is the link to the attribute on MSDN. I also did a quick search and found 2 (Post 1 / Post 2) more blog posts that discuss this wonderful, but little know sanity-saver.

Session 3: Spec Explorer – Microsoft Research
This was a brown-bag session during lunch where the Research folks showed us a tool that they are building that allows you to created activity diagrams and it will generate tests based on those diagrams. I can’t do justice to the tool, so here’s the link to Spec Explorer’s page on Microsoft Research’s site.

Session 4: CSLA.NET: Lessons Learned – Rocky Lhotka
Now I have to admit that I like Rocky’s work and his down-to-earth style. He went through some of the trade-offs and decision points that he had to make during the update of the CSLA framework from v1.x to v2 and beyond. A few quotes (some not exactly quote, but close enough) that I thought were important:

“In an Enterprise, frameworks are a key to success.”

“For a successful framework, you have to be willing to restrict choices”

“For any framework, non-goals are as important as goals.”

“Formalize, abstract and simplify the lives of developers by codifying best practices and standards into a framework.”

Session 5: Application Framework Projects in IT – Jonathan Wanagel
This session was the hilight of the day. I rated it a 6 out of 5. Jonathan hit on a topic that the folks at my company have been struggling with for years now. We have a number of frameworks in place and keep creating new ones. Here are some of his points on framework creation and design:

“What are the value-add opportunities that a framework will provide to my company?”

“The customers (end users) are the developers. Rejection by the developers will kill the framework.”

“Frameworks that go wrong are expensive intellectual playgrounds”

“You must be pragmatic in your approach.”

“Indulgence is the enemy of framework design”

“Frameworks are pragmatic, not holistic”

Discovering Value-Add Opportunities

  • Mine the existing frameworks in the organization.
    • Easy to find, hard to determine the value-add of the feature
  • Analyze the design and code of existing code
    • Look fore repetition
    • Look for design mistakes

Jonathan also gave a number of Patterns and Anti-Patterns for framework design. As I said, an excellent session overall.

Session 6: Architecting for Security – Shawn Veney
While humorous and entertaining, this session was not as applicable to my job as some of the prior ones. His discussion was aimed at Architects that have responsibility for doing threat assessment and mitigation. We have a separate group that is responsible for that, so I basically sat around eating Hershey’s Dark Chocolate miniatures for an hour. Mmmmmm!!

Session 7: Generating Skeletal Baseline Applications – David Trowbridge – Marc Groves
This session discussed using the DSL tools in VS 2005 and Orcas to generate skeletal apps for your devs to flesh out. While the tool is neat to look at, it’s benefits are minimal. It will probably save a few hours by not having to hand code a few stub classes and methods at the beginning of a project. The longer the project runs, the lower the benefit realized. Seems like they could better use the time to make other parts of the system better. It’s the old 80/20 rule being ignored again.

Man! This writing stuff is hard! I’m going to bed. If you are all nice to me, tomorrow I’ll tell you a story about “Patterns & Practices Summit – Day 2: Patterns”

– Steve