Software Engineering, Project Management, and Effectiveness
patterns & practices Enterprise Library 5.0 is now available on MSDN. Microsoft Enterprise Library (EntLib) is a collection of application blocks (reusable software components) designed to address common cross-cutting concerns (data access, exception handling, logging, validation, ...etc.) EntLib provides source code, test cases, and docs that you can use "as is" or extend as you see fit. The goal of EntLib is to codify Microsoft recommended and proven practices for .NET application development.
What's New in 5.0 Enterprise Library 5.0 brings the following to the table:
Extreme Programming (XP) is a lightweight software development methodology based on principles of simplicity, communication, feedback, and courage. I like to be able to scan methodologies to compare approaches. To do so, I create a skeleton of the activities, artifacts, principles, and practices. Here are my notes on XP:
12 Practices Here's the 12 XP practices:
For a visual of the XP practices, see a picture of the Practices and Main Cycles of XP.
5 Values (Extreme Programming Explained)
Phases The following are phases of an XP project life cycle.
For a visual overview, see Agile Modeling Throughout the XP Lifecycle.
These are the 12 Agile principles according to the Agile Manifesto:
These are the four Agile values according to the Agile Manifesto:
Ralph Stacey’s Agreement and Certainty Matrix is a tool for helping you adapt and adopt processes more effectively.
It helps you make more informed decisions by looking at two dimensions:
Rather than just rolling out changes in processes or tools and hoping for the best, or getting mired in politics and bureaucracy, Ralph Stacey’s agreement and certainty matrix helps you choose the most effective management actions.
This tool is more effective where you have significant diversity in complexity (levels of agreement and degrees of certainty) and where you have a wide range of approaches you can take (versus the one-size fits all approach.)
The Five Zones of Agreement and Certainty Here is a quick visual of the five zones of agreement and certainty:
For more information on Ralph Stacey’s Agreement and Certainty Model, see Edgeware – Aides.
Change management is an art and science. There are tools for improving effectiveness.
The Rick Stacey's Agreement and Certainty Matrix evaluates the level of agreement and degree of certainty about the issue or problem. This helps you choose the more effective management actions for successfully adapting and adopting your processes. Dr. Stephen Lamed revised Stacey's Agreement and Certainty Matrix by adding a diagonal line and placing 7 different management interventions.
7 Management Interventions for Adapting and Adopting Processes The 7 management interventions are:
The following table summarizes Lamed’s advice:
For more information, see Edgeware-Aides – Moving from Agreement and Certainty.
When I first learned eXtreme Programming (XP), my mentors introduced it using four circles. I really liked how the four circles made it easy to remember the XP practices, and I liked how it made them easier to remember. This post is a walkthrough of the four circles of XP.
The Four Circles of XP The four circles of XP:
The four circles group the XP practices in a simple way:
For an explanation of the XP practices see XP Practices (Wikipedia).
The Four Circles of XP at a Glance Here is a view of the XP practices at a glance:
The Coding Circle The Coding Circle includes Pair-Programming, Refactoring, and Testing. Here is a view of the Coding Circle highlighted:
The Team Circle The Team Circle includes Coding Standards, Collective Ownership, and Continuous Integration. Here is a view of the Team Circle highlighted:
The Process Circle The Process Circle includes 40-Hour Week, Metaphor, Short Releases, and Simple Design. Here is a view of the Process Circle highlighted:
The Product Circle The Product Circle includes Planning and On-Site Customer. Here is a view of the Product Circle highlighted:
At Microsoft, I learned to keep my energy strong while making things happen. The best ways I’ve found to do that are follow my growth and follow my passion. Another way, that’s very important, is to play to my strengths. Spending time in my strengths is the key to hitting the high notes and getting exponential results. It keeps me strong, my energy high, and produces more impactful results in less amount of time.
Whenever I find myself drained, all I need to do is take a look at where I’ve been spending my time. Sure enough, it’s always from spending too much time in my weaknesses and not enough time in my strengths. That’s the interesting lesson too … I can spend more time in my weaknesses, as long as I’m spending enough time in my strengths.
By strengths, I’m not talking about the skills I’ve learned. I’m talking about my natural strengths – the ones that I can count on no matter what. I didn’t find my strengths over night and it’s a continuous process of gaining clarity and precision. The key here is knowing the language. When you know what to look for, it’s easier to find your own strengths, label them, and use them to your advantage.
34 Key Strengths Marcus Buckingham and Donald O. Clifton, Ph.D. identified 34 key signature themes of strength. I have a brief description of each strength in my post, Finding Your Strengths. Here are the 34 signature themes:
24 Signature Strengths Martin Seligman named a set of 24 Signature Strengths. You can find out more about Martin Seligman’s work at the Authentic Happiness Center. Here are Seligman’s 24 Signature Strengths:
How To Use These Strength Vocabularies One way to use these is to take their tests and find out what they say about you. I do like the fact that they have framed and named the strengths which makes it easy to explore, test, and evaluate. Personally, I’ve found more value by simply exploring the labels and using them as lenses. I’ve been rationalizing them against the Myers-Briggs Type Indicator (MBTI) as well as my own frames for strengths, looking for underlying patterns and practices.
At the end of the day, the most important thing for me has been finding where I get energy from, and finding what takes it away. This leads me to a personalized strengths frame that I can use as a lens for investing in my portfolio of strengths … and this is the key to exponential results.
Periodically I create a simple summary table of our patterns & practices collection of assets. This helps me analyze the collection as a catalog. To keep it incredibly simple, I organize the catalog by guidance types. This way, at a glance, I can see the collections of guides, patterns, factories, reference implementations, and EntLib. In this case, I also added any work in progress that I was aware of to get a real bird’s-eye view of the catalog.
* indicates in progress.
When I analyze process flows, I like to see them at a glance, in terms of activities and artifacts. This helps me compare it with other approaches to find similarities and differences. This is my view of Scrum at a glance:
The Talk-Through Version … From the product backlog, you identify a product increment to execute. For Sprint planning, you identify the goal, the sprint duration, the relevant stories, and the tasks. To do so, you break the stories into tasks. You estimate the tasks.
As part of daily work, you have a daily standup meeting, identify what got done, what will get done, and any impediments. You update the Sprint backlog and Sprint burndown charts.
At part of the Sprint review, you demo the product increment to stakeholders and you update the product burndown chart.
After release, you perform a retrospective, to identify what went well, and what to improve.
If you have any feedback or suggestions on how to improve my scannable view, please share.
Many thanks to James Waletzky for review and feedback.
The Microsoft patterns & practices team has been around since 2000. The patterns & practices team builds prescriptive guidance for customers building applications on the Microsoft platform. The primary mission is customer success on the platform. As part of that mission, patterns & practices delivers guidance in the form of reusable libraries, in-tool experiences, patterns, and guides. To put it another way, we deliver code-based and content-based guidance.
I’ve been a part of the team since 2001. Along the way, I’ve seen a lot of changes as our people, our processes, and our catalog of products have changed over time. Recently, I took a step back to collect and reflect our best practices. Some practices were more effective than others, we’ve added some new ones, and we’ve lost some along the way. To help reflect and analyze the best practices, I created a map of the key practices organized by discipline. In this post, I’ll share the map (note that it’s a work in progress.) Special thanks to Ed Jezierski, Michael Kropp, Per Vonge Nielsen, Shaun Hayes, and Tom Hollander (all former patterns & practices team members) for their contributions and insights to the map.
Best Practices by Discipline The following table is a map of the key practices used by the patterns & practices team over the years.
Some practices are obvious, while some of the names of the practices might not be. For example, “Fireside chat” is the name of our monthly team meeting, which is an informal gathering and open dialogue. I may drill into some of these practices in future posts, if there’s interest and there are key insights to share.
This is an excerpt from my latest book, Getting Results the Agile Way. It's from the A Word from the Author section. One of my reader's tells me that this was the most impactful prose for them. I think because it answers the question, "Why did I write this guide?" This is yet another reminder to me how important it is to lead with your why. Here it is ...
“Results were the name of the game, and I didn’t have the playbook. When I first joined Microsoft more than 10 years ago, I was overwhelmed. It was a sink or swim environment. Every day I had to play catch up from the day before. I got more email than I could possibly read, more action items than I could possibly do, and challenges that were beyond my skills. Inside the team, we affectionately called this scenario, “trial by fire.” There were no boundaries to my days, each day bled into night, where I was consistently “burning the midnight oil.” It reminded me of the saying, “whatever doesn’t kill you, makes you stronger.”
However, I hadn’t moved across the country, leaving everything and everyone I knew behind, to fail right off the bat. One of the first things I did to survive was study the best of the best. I found people in the company that got results and I learned from them. I learned everything I could about productivity from anybody who was willing to share their system with me.
...As I mentored people and teams around Microsoft to help them get results, I honed my system. It was one thing for me to get results, but it has been quite another to package it up for other people. Because I was continuously building new project teams, I needed a system for getting new people on each team up to speed quickly. As the saying goes, “necessity is the Mother of invention.” These challenges forced me to simplify my system, and lean it down to the most effective parts. The result is a tested system that’s scaled up to large teams, down to individuals, and is a system I can bet on time and again. The most important thing is simple, so if I fall off the horse, it’s easy to get back on.
This guide is my attempt to give you the playbook that I wish somebody had given me so many years ago for getting results.”
—Excerpt from “A Word from the Author”, J.D. Meier, Getting Results the Agile Way
My book, Getting Results the Agile Way, puts together patterns, and practices for getting results in work and life. At the heart of the guide, is "Agile Results" -- a simple and flexible system for meaningful results. It supports you and helps you blend your time, energy, and skills for your best results. To put it another way, it helps you “make the most of what you’ve got.”
People ask me, "Why Agile Results?" I've been trying to put my finger on why something so simple works so well ... I think it's the synthesis of:
It's a lot compacted into a simple frame
All roads lead to the same town. I was living Agile and Scrum long before they became vogue or I knew what they were. I remember when Peter Provost joined our team years back and he told me I was already doing Agile. I remember some years later when I described my approach to James Waletzky, he said I was doing Scrum.
In both cases, I was glad to have a name for it, but at the same time, I cared more about the underlying principles, patterns, and practices, as well as meaningful intersections. In the bigger picture, I cared even more about how to take proven practices in software engineering and apply them to shape other aspects of life … to lead a life by design, not by default.
I suspect there are a lot of Seth Godin fans around Microsoft. I take that back. I know there are a lot of Seth Godin fans at Microsoft. For all the Seth fans, I’ve distilled a set of lessons learned from Seth Godin.
It’s not a fluffy post. It cuts deep on insight in work and life … ultimately, about finding your way in a Darwin world. Lately, I’ve found myself telling folks that as the world gets smaller, it gets more Darwin, and it truly is survival of the fittest. Find your tribes, follow your passion, be the best in YOUR world, and flow remarkable value.
When I first read the Dip, an insightful book by Seth, I thought it was Dr. Seuss for adults on knowing when to quit, and when to stick things out. It was a timely, relevant book for me at the time because I was evaluating various changes in the company and in my life, and I was looking for a lens on how to figure out where to invest my time and energy in a way forward. The Dip was my answer. It taught me how to lean into the right Dips. And it turned out to be a great source of insight for many others I know, and it’s a book that I share frequently with the people I mentor.
When I read the Bootstrapper’s Bible, I was amazed by the density and depth of insight. I don’t think I’ve seen anything like it, when it comes to pragmatic insight. I’m a fan of prescriptive insight, and Seth shows very clearly how it’s a brave new world of solo-preneurs and small is the new big. The beauty is, he doesn’t just share conclusions. He lets you follow his trail of thought, and then he doesn’t stop there. He gives you actionable guidance on what to do, based on his lessons from the school of hard knocks.
If you haven’t tuned into Seth, you’re missing out on a strategic source of insight. You can find a lot of wisdom in his words, and here are my top 10 favorite Seth quotes: