P&P Architectural Guidance Version 2

The Patterns and Practices team is *finally* updating their architectural guidance.  You can see J. D. Meier’s announcement of it here.  Interestingly enough, they’re going to do it through CodePlex.  I love the new openness from Microsoft.  Ages ago, I remember getting a lot of good out of the original Enterprise Solutions Patterns (ESP) guide and other work on application architecture they published in the .Net 1.0 days.  The problem is though, that work is atrociously out of date.  Software development and our approaches to design have moved a lot since those days.

I’ve been critical of P&P in the past for some of their work on framework construction and tooling.  I’ve always thought that they’ve done better with their guidance work than the actual code that they ship.  When I was between jobs this past spring I briefly talked to P&P about a remote position with them, and I told them that I thought they should go back to doing more guidance work like their old application architecture guidance publications.  Despite the fact that I’ve been in favor of them doing something like this for quite some time, I’m filled with a deep foreboding about this endeavor.  Here are some of the topics they’ve suggested for the guide:

  • Choosing Presentation Technologies
  • Choosing Data Access Technologies
  • Choosing Workflow Technologies
  • Inline SQL vs. sprocs
  • MVC vs. MVP
  • Domain model driven vs. structure driven

Do you know what I see up there?  Lots of important topics, and the potential for some very nasty religious warfare.  The obvious problem is that that guide could easily suggest some practices that I (or you, no matter who “you” are) will find anathema, and you’ll find yourself having to have yet more arguments with centralized architecture groups, other devs, or nervous clients about why you aren’t following the proscribed architectural guidance.  I have it easy because our management and sales seems to trust our development team on technology matters, but if that wasn’t the case I think I’d be forced to follow some not entirely optimal technology recommendations from a certain well known consultancy.

To summarize, I’m glad that P&P is doing this, but I can’t help but feel worried over it as well.  Anyway, here’s hoping that it goes well and spawns some useful conversation.


About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://dotnet.agilekiwi.com John Rusk

    >Anyway, here’s hoping that it goes well and spawns some useful conversation

    It has great potential to do exactly that. The draft guidance is on Codeplex so anyone can comment on any part of it.

    There’s just one problem: people aren’t commenting! Earlier this week I looked at the comments that had been left, both on pages and in the “Discussions” section. There were some asking about the resolution of the web casts, some suggesting additional topics, but I could only find _three_ comments on the actual content of what Microsoft have written so far. (And two of those were from me 😉

    This just seems wrong. There must be many people who are concerned about the points that you and others raise above: will the guide be overly prescriptive, without giving enough context? Will it be interpreted that way by the community, even if that is not Microsoft’s intention (and I’m fairly sure it’s not).

    Much of the concern, and the potential solution, rests with the AL.NET community. The ALT.NET community may be in the habit of being sceptical about P&P’s guidance, and even ignoring P&P. But that’s only going to make matters worse. If ALT.NETters are concerned about future arguments about why they are not following prescribed guidance, surely the best solution is to get involved now, and improve the quality of the guidance. (E.g. contribute to broadening the options it presents; push for explaination of context etc)

    I can seen two possible answers. This first is for a number of leading industry figures to get involved as formal reviewers (as I’m pleased to see you have). The second is for lots of people in the community to get involved in reading the guidance and commenting on it. Surely we can do both!

    What do you think? Should the ALT.NET community be taking more interest in Microsoft’s draft content, and offering more comments on Codeplex?

  • http://blog.unhandled-exceptions.com Steve Bohlen

    The answer to your (quite reasonable) fear about proscriptive guidance from MS or anyone else is to insist that the guidance speak to the CONTEXT in which the guidance is proscribed.

    IMHO one of the reasons for the acceptance of things like the patterns in the ubiquitous GOF book is that they all start with a (prominent) statement of the CONTEXT in which the pattern is proscribed for use.

    Any guidance offered by anyone (even the P+P team) is completely pointless without including the context in which the guidance is to be applied. IMO if they did more of this and less ‘here is a code sample framework of what we are talking about’, then P+P output would be more universally-applicable to more real-world contexts.

  • WardBell

    that was supposed to be “… emphasized WHY < > THOU SHALT…”

  • WardBell

    I share your combined hopefulness and foreboding.

    I would like to see them follow in the footsteps of Cwalina and Abrams “Framework Design Guidelines” which (a) emphasized WHY or THOU SHALT, (b) included other voices who piped up about why they did or did not like this guidance, and (c) scored each piece of advice according to certainty and firmness.

    As a proponent of “opinionated software” you know that to be valuable you have to say something, not waffle, take a stand, and finish the job of saying. Eventually, you just have to publish.

    But it doesn’t have to be a closed book and it doesn’t have to ossify into something that becomes blindly prescritpve long after its “sell-by” date.

    [I think I managed to mix 4 metaphors in that one sentence!]

    PnP might issue a parallel wiki or something that invited continuing public commentary with topics that aligned one-for-one with the offered guidance. This would open up the document to let readers dive deeper, discover nuance, and benefit from disagreements.

    Just a thought.

  • http://samgentile.com/ Sam Gentile

    I am particpating as a Reviewer. Anyone can sign up to be a Reviewer.

  • http://mike.com Mike

    So, open would be a guidance wiki where *everyone* could participate.

  • http://mike.com Mike

    “Interestingly enough, they’re going to do it through CodePlex. I love the new openness from Microsoft.”

    How is publishing guidance on Codeplex vs on MSDN ‘open’? Codeplex is for code, not for documentation (as the name implies).