J.D. Meier's Blog

Software Engineering, Project Management, and Effectiveness

December, 2008

  • J.D. Meier's Blog

    Application Architecture Guide 2.0 Final Release


    We released our final release of the patterns & practices Application Architecture Guide 2.0 on Codeplex.  It's the "Microsoft playbook for application architecture."  This is our guide to help solution architects and developers make the most of the Microsoft platform.  It's a distillation of many lessons learned.  It’s principle-based and pattern-oriented to provide a durable, evolvable backdrop for application architecture.  It's a collaborative effort among product team members, field, industry experts, MVPs, and customers.

    Key Links

    Key Changes Since Beta 2

    • Added a foreword by Scott Guthrie.
    • Incorporated feedback from internal and external reviewers.
    • Tuned and pruned the recommendations across the entire guide.

    Architecture Meta Frame (AMF)
    The Architecture Meta Frame integrates context, application types, architecture styles, and an architecture frame to help map out the application architecture space. 


    The Architecture Meta Frame serves as a durable, evolvable backdrop for the guidance in the patterns & practices Application Architecture Guide 2.0.

    Key Scenarios for the Guide

    • Choose the right architecture for your application.
    • Choose the right technologies.
    • Make more effective choices for key engineering decisions.
    • Map appropriate strategies and patterns.
    • Map relevant patterns & practices solution assets.

    Key Features of the Guide

    • Canonical Application Frame.  Describes at a meta-level, the tiers and layers that an architect should consider. Each tier/layer is described in terms of its focus, function, capabilities, common design patterns and technologies.
    • Application Types.  Canonical application archetypes to illustrate common application types.  Each archetype is described in terms of the target scenarios, technologies, patterns and infrastructure it contains. Each archetype will be mapped to the canonical app frame. They are illustrative of common app types and not comprehensive or definitive.
    • Architecture Frame.  A common set of categories for hot spots for key engineering decisions.
    • Quality Attributes.  A set of qualities/abilities that shape your application architecture: performance, security, scalability, manageability, deployment, communication, etc.
    • Principles, patterns and practices.  Using the frames as backdrops, the guide overlays relevant principles, patterns, and practices.
    • Technologies and capabilities.  A description and overview of the Microsoft application development platform and the main technologies and capabilities within it.

    Here's the team that brought you this guide:

    • Core Dev Team: J.D. Meier , Alex Homer, David Hill, Jason Taylor , Prashant Bansode , Lonnie Wall, Rob Boucher Jr, Akshay Bogawat
    • Test Team - Rohit Sharma, Praveen Rangarajan
    • Edit Team - Dennis Rea.

    Contributors / Reviewers
    One of our themes throughout the guide was "Stand on the shoulders of giants."  We leveraged a lot of experts inside and outside of Microsoft:

    • External Contributors/Reviewers - Adwait Ullal; Andy Eunson; Brian Sletten; Christian Weyer; David Guimbellot; David Ing; David Weller; Derek Greer; Eduardo Jezierski; Evan Hoff; Gajapathi Kannan; Jeremy D. Miller; John Kordyback; Keith Pleas; Kent Corley; Mark Baker; Paul Ballard; Peter Oehlert; Norman Headlam; Ryan Plant; Sam Gentile; Sidney G Pinney; Ted Neward; Udi Dahan
    • Microsoft Contributors / Reviewers - Ade Miller; Amit Chopra; Anna Liu; Anoop Gupta; Bob Brumfield; Brad Abrams; Brian Cawelti; Bhushan Nene; Burley Kawasaki; Carl Perry; Chris Keyser; Chris Tavares; Clint Edmonson; Dan Reagan; David Hill; Denny Dayton; Diego Dagum; Dmitri Martynov; Dmitri Ossipov; Don Smith; Dragos Manolescu; Elisa Flasko; Eric Fleck; Erwin van der Valk; Faisal Mohamood; Francis Cheung; Gary Lewis; Glenn Block; Gregory Leake; Ian Ellison-Taylor; Ilia Fortunov; J.R. Arredondo; John deVadoss; Joseph Hofstader; Koby Avital; Loke Uei Tan; Luke Nyswonger; Manish Prabhu; Meghan Perez; Mehran Nikoo; Michael Puleio; Mike Francis; Mike Walker; Mubarak Elamin; Nick Malik; Nobuyuki Akama; Ofer Ashkenazi; Pablo Castro; Pat Helland; Phil Haack; Reed Robison; Rob Tiffany; Ryno Rijnsburger; Scott Hanselman; Seema Ramchandani; Serena Yeoh; Simon Calvert; Srinath Vasireddy; Tom Hollander; Wojtek Kozaczynski
  • J.D. Meier's Blog

    The Zen of Results Free E-Book


    Personal productivity is one of my passions.  As one of my little experiments while I'm out of the office, I put together The Zen of Results E-Book.  I turned a slide deck into a PDF to see if it makes it easier to share.  It's brief (17 pages) and quick to flip through.  More importantly though, it captures the heart of how you can improve your productivity, in a principle and pattern based way.  It's a lightweight approach and it's easy to tailor for your situation. 

    The Approach in a Nutshell
    Here's the keys to the approach:

    • Scannable outcomes to guide your activities and tasks.
    • Life frame to organize and balance the important hot spots in your life.
    • Monday Vision, Daily Outcomes, Friday Reflection to guide your week.
    • Daily Outcomes to  guide your day.

    Thoughts on Productivity
    I'm not a fan of productivity for productivity's sake.  Instead, I care that I'm working on the right things,  I care that the time I spend working, is as efficient and effective as possible.  I also care that I can carve out time in a way to achieve work/life balance.  I care more about outcomes than activities and I work backwards from the end in mind.  To put it another way, I put more emphasis on learning, improving, and enjoying, than simply going through the motions or putting in my time.   I'll also add -- I like my downtime and my free time ;)

    What The Zen of Results is Based On
    I'd like to say it's based on Getting Things Done, but somehow we just never crossed-paths.  Instead, it's born from a combination of the school of hard knocks, masters at Microsoft, software development practices, and my mentoring experience.   when I first joined Microsoft, I was overwhelmed.  I was on a sink or swim team with lots of trials by fire.  I wanted to swim.  Long story short, I learned from anyone and everyone around me.  In fact, I started seeking out people in the company and comparing email practices, storing information, and how to become more effective.  I learned a lot.

    Software Engineering Meets Project Management Meets Productivity
    When I joined patterns & practices some years ago, a few things happened.  I had to figure out project management in the context of a competitive environment where the ultimate judge is results.  Not just the results of what you produce, but how you produce results.  How many dead bodies and what sort of wake do you leave behind? 

    Meanwhile, Agile was becoming increasingly pervasive and I had the benefit of working with folks like Ward Cunningham and Peter Provost.  They taught me lot about the principles and concepts behind Agile.  Somewhere along the way, I had figured out how to catalog, manage, and prioritize an endless stream of potential activity from various sources: my teams, my manager, my inbox, my head. 

    I learned that improving an hour, improved a day, improved a week, improved a month.  I learned the value of sharing lessons learned.  I learned the value of biting off what you could chew.  I learned that it's better to finish what's on your plate and go up for seconds versus overflow your plate up front.  I weaved in my timeboxing lessons from performance and my compartmentalizing lessons from security. 

    I used my lessons from my manager to focus on strengths over weaknesses to keep a high level of energy.  Bottom line, the sum is more than the parts, but it's an integration of software development, project management and personal productivity with an emphasis on meaningful work for a meaningful life ... by design (that's my inner engineer talking).


  • J.D. Meier's Blog

    Out for December


    Just a quick note -- I'm out of the office through December.  Here's what I'm up to:

    • Improving Sources of Insight.  That's where I share my lessons learned from books, quotes and people for improving effectiveness for mind, body, career, financial, relationships, and fun.
    • Improving Shaping Software.  That's where I share my lessons learned on software success.
    • Improving my body.  I'm running Monday through Friday and taking Pilates.  I'll be working on my flexibility and kicks too (from Kick Boxing)
    • Improving my mind.  I'm reading some stuff that's supposed to make me smarter.  I'll test how well it works when I'm back at work ;)
    • Testing my limits.  It's the end of the year, so it's a good time to see where I'm waxing and where I'm waning and where I might want to retool.
    • Writing books. This is more of an experiment, but a promising one.  I'm attempting to crack the nut on human potential.  How anybody can go from ordinary to extraordinary.  I'm chunking the problem down and focusing on personal productivity.  I'd like to see more people unleash their potential.  I'm distilling the best of what I've learned for getting results.  It's early, but I think I'm on to something.  This can seriously change people's lives.
    • Slacking.  I'm a fan of downtime and I like a lot of movies ;)

    Meanwhile, back at the ranch, you can follow along the Application Architecture Guide 2.0 project at the following sites:

  • J.D. Meier's Blog

    The Zen of Results and Evernote


    I tested Evernote with my time management system, The Zen of Results.  Evernote is like ITunes for knowledge.  Check out how easily The Zen of Results fit with Evernote:


    It took me under 5 minutes from start to finish.  It was intuitive and friction free.  One of the keys to effective time management techniques is getting rid of friction, otherwise it's death by a 1000 paper cuts in the long run.  I expected some learning curve or some issues, so I was pleasantly surprised.  Maybe I'll be unpleasantly surprised later, but so far so good.

    The quick test was a success:

    • I found it very easy to create folders and lists – just like I do on my hard-drive and in Outlook. 
    • I like the idea that it’s an online/offline system.  It's a S+S (software plus services) application.
    • You can tag stuff too. 
    • It’s nice and crisp.

    Notebook Summary
    Here's a summary of the notebooks I created in Evernote for The Zen of Results:

    • Vision / Mission / Values - my internal compass.
    • Outcomes - my overall big picture accomplishments.


    • To Dos - my daily outcomes – the value I bite off for the day.
    • Queue - my list for each project and my backlog of pending stuff.
    • Weekly Outcomes - my “Monday Vision” for the week’s planned results.  It sets the weekly forest from the monthly trees.


    • Notes - any random dumps from links to whatever.
    • Thoughts - my little “ah has” or ideas – it’s a thought catcher.
    • Sessions - my running dumps where I’ll dump my notes from stickies or notes from the day (I keep a notepad file open so I always have a place to dump my brain without wasting think time)

    Checklists / Scripts

    • Checklists - my checklists ;)
    • Scripts - my step by step instructions – for anything from a routine to an “improvement script” that I cycle through to improve.

    Improvement / Results

    • Results Log - my daily log of stuff I accomplished.  I only use it if I get in stuck mode or feel like I’m thrashing or churning or just don’t feel good about accomplishment.
    • Monthly results - my monthly snapshot of results – a simple bulleted list of things I did.  Perfect for reviews and for sending to management each month.
    • Lessons Learned - my distillations on projects or from other people – it’s whenever I do the exercise.

    My Related Posts

  • J.D. Meier's Blog

    Grady Booch on the Microsoft Application Architecture Guide 2.0


    Grady Booch blogged about our patterns & practices Application Architecture Guide 2.0, which is our Microsoft playbook for the application platform.  It's a thoughtful post and he obviously took the time to figure out the structure of the guide.   The guide is probably particularly relevant for him since he's working on his Handbook of Software Architecture.

    Booch on the Application Architecture Guide 2.0
    Here's what Booch has to say:

    "I find this work to be very interesting (and useful). Architecture is all about making significant design decisions, and this guide focuses on a number of such decision points, including caching, communication, concurrency and transactions, configuration management, coupling and cohesion, data access, exception management, layering, logging and instrumentation, state management, structure, validation, and workflow (collectively, Microsoft calls these "architectural frames"). Full of best practices and patterns, I particularly liked the enumeration of architectural styles the authors have collected: client-server, component-based, layered, message-bus, model-view-controller, n-tier, object-oriented, and service-oriented. Congruent with these styles is their concept of application archetypes, which include mobile, rich client, rich internet, services, and web. Combine the these styles and archetypes, and you have an interesting language for describing a large class of applications. While I don't necessarily agree that these styles and archetypes are orthogonal (nor are the lists complete) for the general domain of software architecture, for Microsoft's purposes, these styles offer an excellent operating model into which one can apply their patterns and practices."

    For whatever reason, I can't figure out how to link to the individual post, so I'm linking to the page that includes Grady's post on the Microsoft Application Architecture Guide.

    My Take
    I agree with Grady that the list of application archetypes and arch styles is not complete (at least the versions that we've shared online).  We only shared a subset.  We do have some pretty rich Mind Maps that are more exhaustive, but they're somewhat unwieldy.  It's a trade-off.

    We basically forked the app types.  The app types that we shared are optimized around technical types that customers quickly identify with.  We also have a set of business types, but the problem is these are more long-tail and there was less agreement on naming.  Worse, customers couldn't quickly identify with them.  There was a slight learning curve.  I think we can potentially tune them and share them downstream, more as a visual catalog.

    On the arch styles, they're not necessarily orthogonal, but we found it helpful to first identify the overall app type (web, RIA, ... etc.) and then shape the app with the arch styles.  For precision, I think of the architecture styles as sets of principles that shape an important dimension of the application (such as deployment, structure, domain, communication ... etc.)  It's like a bunch of martial arts systems for different styles of fighting.  They have their pros and cons, but you can only evaluate them in context and measure effectiveness.

    Key Take Aways
    Here's my key take aways:

    • Architecture Frames.  The arch frames are useful for cataloging the patterns and practices into actionable categories: caching, communication, concurrency ... etc.
    • Architecture Styles.  The arch styles include client-server, component-based, layered, message-bus, model-view-controller, N-tier, object-oriented, and service-oriented.
    • Application Archetypes.  The application archetypes are a language for describing classes of apps: mobile, rich client, RIA, services and Web.

    Someday, I'd like to synch with Grady and show him all the stuff we haven't exposed at this time, including our technical capability maps, pattern capability maps, application patterns, quality attribute maps, ... etc.  While a lot of it is half-baked, we have some good foundations for elaboration.  Unfortunately, there's only so much we could share in a six month project where the dominant focus is writing a book.

  • J.D. Meier's Blog

    Know Your learning Styles


    This is for all you life-long learners out there.  If you know your learning styles, you can improve your results.  You can also improve your interaction with others.  This is something that shows up everyday, but you might not be aware of it.  I posted an article on the key learning styles and how you can use them on Sources of Insight.

    Here's a summary of the key styles

    • Concrete Random - You want specifics, but you don't care about the order of the information.
    • Concrete Sequential - You want specifics and you want it in a linear, logical fashion.
    • Abstract Random - Generalities and abstractions are fine and you could care less whether this is the beginning, middle or the end of the story.
    • Abstract Sequential - Generalities and abstractions are fine, but you want them to have a sequential flow.

    As with any lens, we're all a mix of styles and it's a continuum so the key is to know your preferences and the preferences of others. 

    If you've ever seen an architect and developer locked in a debate, you might just be experiencing a conflict between abstract and concrete.  If you've ever had a hard time making your point, maybe you were hopping around randomly when you needed to be sequential.  If you've ever bored the wits out of somebody, maybe you just needed to hop around to the good stuff instead of making them follow your path over the river and through the woods, just to get to Grandma's house.


  • J.D. Meier's Blog

    Character Trumps Emotion Trumps Logic


    One of the simplest ways to improve your effectiveness is to know the pecking order of persuasion.  I wrote a post on Sources of Insight about how character trumps emotion trumps logic.  This is a pretty important piece of information, considering it impacts how well you influence your peers, your kids, your manager, your stakeholders or anyone, really.

    To bottom line it, if your arguments based on data aren't working, consider that if you win the heart, the mind follows, and that who you have on board can make all the difference in your success.  Change your approach and you'll be surprised by the results.  One simple thing you can do is use more metaphors to make your points.  Visual words stick more and they help bring some emotion to the table.  Choose carefully, of course.

  • J.D. Meier's Blog

    Jack Canfield Speaks at Microsoft


    I posed my Lessons Learned from Jack Canfield on Sources of Insight.  Jack presented to Microsoft earlier in October.  He's the author of many successful books including Chicken Soup for the Soul and The Success Principles.  He holds the Guinness Book World Record for having seven books simultaneously on the New York Times Bestseller List.  Impressive!

    I ended up taking a lot of notes, way more than I expected.  He had a good way of boiling down some key insights.   I liked the fact that I didn't have any expectations going in, since I didn't actually realize who he was at first.  This meant that I was purely judging the session by results and with an open mind.

    We shook hands and spoke briefly.  I'm glad I got to meet him.  The more I research his work, the more I'm impressed.  He's obviously dedicated a lot of his life to studying and sharing success, and he's a top success coach and presenter.

    My Related Posts

  • J.D. Meier's Blog

    Lessons Learned in Product Management on Shaping Software


    I have a guest post at Shaping Software by Rick Samona on Lessons Learned in Product Management.  Rick's actually one of the most effective Microsoft product managers I know.  I had the pleasure of working with Rick on several security projects, including our .NET Framework Security Guidance Project, patterns & practices Security Engineering Explained, and patterns & practices Threat Modeling Web Applications.

  • J.D. Meier's Blog

    Personal Development Books


    I created a list of my favorite personal development books on Sources of Insight.   I'm a fan of continuous learning with an emphasis on personal excellence.  This includes working on interpersonal skills, leadership skills, thinking skills ... etc.  Basically, I'm on a quest for the best principles, patterns, and practices for effectiveness and books end up being one of my primary sources.  To find the best books, I ask the smartest people I know what their favorite book is that had an impact on their life.  It leads me to some interesting discoveries and down some fun paths.

    What's your favorite book that changed your life?

  • J.D. Meier's Blog

    Personal Productivity Quotes


    I shared a set of personal productivity quotes on Sources of Insight.   There's some classics from Bruce Lee, Lao Tzu, Peter Drucker, Tony Robbins, and more.  I framed the quotes for quick browsing.  There's buckets for action, focus, time management and more.  Enjoy!

  • J.D. Meier's Blog

    Why Do You Do What You Do?


    One of the keys to making impact is knowing "why" you do what you do?  Chasing the "what" can be a red herring.  It's living your"why" and "how" that helps you be your best and it's where your inner strength comes from.  Most importantly, it's where you give your best where you have your best to give.  One of the tools for figuring out why you do what you do is the Golden Circle.  You can watch this video interview with Simon Sinek on the Golden Circle for an overview.   I also shared my Golden Circle results in my post, Why Do You Do What You Do? on Sources of Insight as both a reminder and inspiration.  Enjoy!

  • J.D. Meier's Blog

    Jason Taylor on The Zen of Results


    Jason shares how he implements the Zen of Results workflow as well as a dialogue around some sticking points with his team.  Jason's one of the most effective people I know and his insights are always crisp and actionable. 

    Here's my key take aways:

    • Free yourself from your tasks to focus on delivering real value.
    • Be mindful of your results.
    • Avoid becoming attached to your backlog.  Time changes what's important.
    • Use the weekly cycle and reflection to improve your ability to execute.
    • Reprioritize, delegate, and defer.
    • Watch out for common binds - randomization, poorly planned objectives, fuzzy priorities.
    • Create a workflow that revolves around delivering value, not completing tasks.
    • if you're not hitting your goals, figure out why - don't spiral into the pit of despair.
    • Results build momentum.

    Additional Resources

    My Related Posts

  • J.D. Meier's Blog

    Quitting and Sticking More Effectively


    Are you the best at what you do?   Could you be the best at something else?  How do you know when to hold'em?  How do you know when to fold'em?

    The Gambler teaches us:

    "You got to know when to hold 'em, know when to fold 'em.
    Know when to walk away, and know when to run."

    ... But where's the prescriptive guidance?  Luckily, there's Seth Godin and The Dip.  In the book, the Dip, Seth teaches us:

    "Winners quit fast, quit often, and quit without guilt -- until they commit to beating the right Dip for the right reasons.  In fact, winners seek out the Dip.  They realize that the bigger the barrier, the bigger the reward for getting past it.  If you can become number one in your niche, you'll get more than your fair share of profits, glory, and long-term security.  Losers, on the other hand, fall into two basic traps.  Either they fail to stick out the Dip - they get to the moment of truth and then give up - or they never even find the right Dip to conquer."

    I wrote up my Lessons Learned from the Dip on Sources of Insight.

Page 1 of 1 (14 items)