J.D. Meier's Blog

Software Engineering, Project Management, and Effectiveness

  • J.D. Meier's Blog

    How To Use the Six Thinking Hats


    How do you get past deadlocks in a meeting?  You can apply the Six Thinking Hats.  I've blogged about the Six Thinking Hats before, but to summarize, it's a way to get everybody thinking about the problem in a collaborative way. 

    The Keys to The Six Thinking Hats
    The real key here is that rather than circular or deadlock debates, you focus the group on a particular viewpoint at a time.  This is a similar to writing, then editing vs. editing while your write, or brainstorming, then critiquing vs. critiquing while you brainstorm.  The big difference is that rather than just brainstorming and critiquing, you're looking at the issue from multiple, specific angles.  On the people side of this technique, you're letting people wear a different "hat", in a safe, constructive way.

    Applying the Six Thinking Hats 
    The approach below is lightweight and low-overhead, but gets you 80% there without requiring everybody to know the details of the Six Thinking Hats.

    Summary of Steps

    • Step 1.  List the questions that represent the hats
    • Step 2.  Walkthrough each question as a team
    • Step 3.  Modify the approach

    Step 1.  List the questions that represent the hats
    List a set of questions on the whiteboard to represent the hats.  You can do this either at the start of the meeting or when you hit a sticking spot.
    Here's the Six Thinking Hats:

    • White Hat - the facts and figures
    • Red Hat - the emotional view
    • Black Hat - the "devil's advocate"
    • Yellow Hat - the positive side
    • Green Hat - the creative side
    • Blue Hat - the organizing view

    Here's an example set of questions you can use to represent the hats:

    • What are the facts and figures?
    • What's your gut reaction?  How do you feel about this?
    • Why can't we do this?  What prevents us?  What's the downside?
    • How can we do this?
    • What are additional opportunities?
    • How should we think about this? (what are the metaphors or mental models)

    The sequence of the questions can matter.  For example, it wouldn't make sense to start thinking up solutions before you've focused on the problem.

    Step 2.  Walkthrough each question as a team
    Walkthrough each question as a team.  This is the key.  Rather than debating each other, you're now collaborating.  You'll be surprised when suddenly your team's "Devil's Advocate" is now showing off their ability to dream up wild solutions that just might work!

    Step 3.  Modify the approach.
    If it's not working, change the approach.  For example, you might find that you started with the wrong "hat" or question.  See if switching to another question or hat makes a difference.  The key is to keep this lightweight but effective.

    This isn't a heavy handed approach.  Instead, it's a subtle shift in stratey from free-for all debate to focusing and coordinating your team's thinking power in a deliberate way.  This lets everybody get heard as well as really bang on a problem from multiple angles in a teamwork soft of way.

    More Information

  • J.D. Meier's Blog

    Using Scannable Outcomes with My Results Approach


    Some readers asked to hear more on how I use my Scannable Outcome Lists in conjunction with My Personal Approach for Daily Results.  Here's the work flow in a nutshell ...

    On Mondays, I figure out my key outcomes for the week.  To do this:

    • I remind myself what I learned from last Friday's reflections.
    • I scan my calendar
    • I scan my inbox for new information
    • I scan my Scannable Outcome List for each category

    I keep my inbox completely empty, so the only items are what comes in over the weekend.  The empty inbox is particularly important for me.  I get ~150 mails directly to me each day, and I send about that, so I can't be a paper shuffler.  For my Scannable Outcome Lists, I use a flat list of posts in Outlook.  I name each post according to category: Body, Career, Mind, Project X, Project Y .. etc.

    As I scan, I use four guiding questions:

    1. What must be done? ... what should be done? ... what could be done?
    2. What customer value am I delivering? (I measure in value delivered vs. activity performed)
    3. How am I improving myself in key areas: career, mind, body, financial, relationships?
    4. What are the things that if I don't get done ... I'm screwed?  (By using the principle of contrast, I paint a picture of where I don't want to be.)

    As I scan, I also do some quick shuffling:

    I get a few outcomes from this

    • Most importantly, I have a mental picture for the week's outcomes (notice outcomes vs. activity)
    • I know my big risks for the week
    • I know my MUSTs vs. SHOULDs vs. COULDs
    • I have my list of outcomes for the day -- my Daily Outcomes.

    I have weekly iteration meetings with my team on Mondays, so this information helps me shape the outcomes with my team.

    Each day, I construct my Daily Outcomes list.  Since I did the bulk of the work on Monday for identifying key priorities, this is a fast exercise.  In fact, it's usually 5 minutes.  It's as fast as it takes me to open a new post in Outlook, name it the current day (e.g. 02-25-07) and write the key outcomes down.  Throughout the day, I add to this.  I fish my email stream throughout the day for relevant actions and I add these to the current day's daily outcome.  If it's a longer team outcome, I list it under the relevant Scannable Outcome List.

    This is the day where I do more reflection.  To do this:

    • I scan my Daily Outcomes for the past week.  (This is fast because, for each day, I have a single post named by date.  For example: 02-19-07, 02-20-07, 02-21-07, 02-22-07, 02-23-07)   
    • I scan accomplishments
    • I scan my backlog

    As I scan, I ask some guiding questions:

    • If something's not getting done, then why not? ... Is there a habbit or practice I need to change for efficiency or effectiveness?
    • Do I need to change my approach for myself or the team?
    • What key lessons learned need to carry forward?

    I'll note that underlying my approach is my belief that important things should float to the top, less important should slough off, and I should be able to deal with change.  Having my Scannable Outcomes keeps me grounded in what's important vs. urgent.  This to me is the key to driving versus reacting.  If an area is slipping that I want to improve, I narrow my focus and concentrate on that.  There's few problems that withstand sustained focus.

    Well, that's the heart of the approach.  What I like most about this approach is that it's low-overhead and it works.  I've done away with over-engineered approaches, where you die the death of a 1000 paper cuts in administration.  I also like this approach because it's systematic, yet holistic and flexible.  Basically, it's designed for getting real results, in real life.

  • J.D. Meier's Blog

    Windows Azure Code Samples Collection



    The Microsoft Windows Azure Code Samples Collection is a roundup and map of Windows Azure code samples from  various sources including the MSDN library, Code Gallery, CodePlex, and Microsoft Support.

    You can add to the Windows Azure code examples collection by sharing in the comments or emailing me atFeedbackAndThoughts at live.com.

    Common Categories for Windows Azure Code Samples
    The Windows Azure Code Samples Collection is organized using the following categories:


    Windows Azure Code Samples Map



    Sample Apps


    Windows Azure Training Kit

    Architecture and Design

    Code Gallery


    patterns & practices

    Claims / Identity

    patterns & practices

    Windows Azure Training Kit


    Data Access and Storage

    MSDN Magazine

    Windows Azure Training Kit


    patterns & practices


    Windows Azure Training Kit

    Logging and Instrumentation


    patterns & practices

    Service Bus

    All-in-One Code Framework

    MSDN Magazine

    Service Management API

    · Windows Azure Service Management CmdLets from http://code.msdn.microsoft.com/azurecmdlets

    SQL Azure

    Code Gallery

    Microsoft Support


    Code Gallery

    All-in-One Code Framework

    Windows Azure Storage

    Code Gallery

    All-in-One Code Framework

    Windows Azure UE Team Code Samples
    The Windows Azure UE team now has an organized collection of code samples available at:

    My Related Posts

  • J.D. Meier's Blog

    Double-Loop Learning and How Agile Approaches Change the Game to Thrive in Times of Change


    All paths lead to the same town. 

    I love it when dots finally connect, or when we have a name, or label, or vocabulary to express a concept that’s been around for a while, that people intuitively know from experience.  It makes it easier to share with others that don’t.  Here’s a bit of interesting research that might explain why agile practices can have a profound impact on creating powerful, highly effective learning organizations, and high-caliber execution machines.

    In the article, Chris Argyris: Theories of Action, Double-Loop Learning and Organizational Learning, by infed, we learn about theories-in-action vs. espoused theory, and double-loop learning vs. single-loop learning.

    Single-Loop Learning vs. Double-Loop Learning
    If learning involves the detection and correction of error, then Single-Loop learning is about finding and fixing problems within a set of governing variables.  It simply looks to operationalize the values, goals, and plans.  That’s not a game changer.  Double-Loop Learning, on the other hands, looks to question the governing variables themselves.  Here is an elaboration from the article:

    • Single-Loop Learning – According to the article, “Single-loop learning seems to be present when goals, values, frameworks and, to a significant extent, strategies are taken for granted. The emphasis is on ‘techniques and making techniques more efficient.”
    • Double-Loop Learning – According to the article, “Double-loop learning, in contrast, ‘involves questioning the role of the framing and learning systems which underlie actual goals and strategies … Double-loop learning is necessary if practitioners and organizations are to make informed decisions in rapidly changing and often uncertain contexts.”

    Theories in Use vs. Espoused Theory
    Theories-in-use are what you actually use and do in practice.  On the other hand, espoused theory is what you say you do, which may be completely different.  Here is an elaboration:

    • Theories-in-Use – According to the article, theories-in-use are “those theories that are implicit in what we do as practitioners and managers … They govern actual behavior and tend to be tacit structures. Their relation to action 'is like the relation of grammar-in-use to speech; they contain assumptions about self, others and environment - these assumptions constitute a microcosm of science in everyday life'”
    • Espoused Theory – According to the article, espoused theory is “those on which we call to speak of our actions to others … The words we use to convey what we, do or what we would like others to think we do.”

    Model I and Model II – Theories-in-Use
    Theories-in-Use can either enhance or inhibit double-loop learning.  Model I inhibits.  Model II enhances.  Here’s a summary:

    • Model I – According to the article, “It involves ‘making inferences about another person’s behaviour without checking whether they are valid and advocating one’s own views abstractly without explaining or illustrating one’s reasoning’ (Edmondson and Moingeon 1999:161).  The theories-in-use are shaped by an implicit disposition to winning (and to avoid embarrassment). The primary action strategy looks to the unilateral control of the environment and task plus the unilateral protection of self and others. As such Model I leads to often deeply entrenched defensive routines (Argyris 1990; 1993) – and these can operate at individual, group and organizational levels.”
    • Model II – According to the article, “The significant features of Model II include the ability to call upon good quality data and to make inferences. It looks to include the views and experiences of participants rather than seeking to impose a view upon the situation. Theories should be made explicit and tested, positions should be reasoned and open to exploration by others. … Found in settings and organizations that look to shared leadership. It looks to: Emphasize common goals and mutual influence.  Encourage open communication, and to publicly test assumptions and beliefs, and combine advocacy with inquiry.”


    Model I – Theories-in-Use

    Model II – Theories-In-Use

    The governing Values of Model I are:

    • Achieve the purpose as the actor defines it
    • Win, do not lose
    • Suppress negative feelings
    • Emphasize rationality

    Primary Strategies are:

    • Control environment and task unilaterally
    • Protect self and others unilaterally

    Usually operationalized by:

    • Un-illustrated attributions and evaluations e.g.. "You seem unmotivated"
    • Advocating courses of action which discourage inquiry e.g.. "Lets not talk about the past, that's over."
    • Treating ones' own views as obviously correct
    • Making covert attributions and evaluations
    • Face-saving moves such as leaving potentially embarrassing facts unstated

    Consequences include:

    • Defensive relationships
    • Low freedom of choice
    • Reduced production of valid information
    • Little public testing of ideas

    The governing values of Model II include:

    • Valid information
    • Free and informed choice
    • Internal commitment
    Strategies include:
    • Sharing control
    • Participation in design and implementation of action
    Operationalized by:
    • Attribution and evaluation illustrated with relatively directly observable data
    • Surfacing conflicting view
    • Encouraging public testing of evaluations

    Consequences should include:

    • Minimally defensive relationships
    • High freedom of choice
    • Increased likelihood of double-loop learning

    What’s interesting in the article is that most people "say” they use Model II, but that’s simply “espoused theory”.

  • J.D. Meier's Blog

    Now Available: Final PDF of the Microsoft Application Architecture Guide, Second Edition


    A final PDF is now available for our patterns & practices Application Architecture Guide, second edition.  This is our platform playbook for the Microsoft application platform.

    Here are the relevant links:

    Here are some of my related posts:

  • J.D. Meier's Blog

    The Zen of Zero Mail


    You too can have a zero mail inbox, if you choose to.  I chose to go zero mail in my inbox when I first joined Microsoft years ago, and I'm glad I did.  With a single glance, I know whether I have new mail to deal with.  I never have to scroll to see what my next actions are.   At a more basic level, an empty inbox feels good.  I thought it was just me, but others say the same. 

    Proven Over Time
    It was tough when I first joined Microsoft.  My inbox drove me.  Eventually, I learned how to drive my inbox.  I studied the masters around me.  I also studied those that failed (there's no failure, only lessons.)  I refined my approach over the years.  Since then, I've successfully taught my mentees and others how to spend less time on administration and more time on results.  Now I'm sharing with you.

    Here's a short deck that steps you through and highlights the keys:

    Normally, I work with my mentees one-on-one and tailor the approach for their particular scenario.  It's a learning by doing approach.  While I've blogged about clearing your inbox before, this is an experiment in how effectively I can share techniques in slides.  If it works out, I'll do additional slides on focused topics.  The more I can reduce friction around sharing, the more I can share.  If you have tips or tricks for improving my slide sharing approach, send my way.

  • J.D. Meier's Blog

    The Growth Mindset: A Key to Resilience, Motivation, and Achievement


    Your mindset holds the key to realizing your potential.

    Your mindset is your way of thinking, and your way of thinking can limit or empower you, in any number of ways.

    In fact, according to Carol S. Dweck, author of Mindset: The New Psychology of Success, mindset is the one big idea that helps explain the following:

    • Why brains and talent don’t bring success
    • How they can stand in the way of it
    • Why praising brains and talent doesn’t foster self-esteem and accomplishment, but jeopardizes them
    • How teaching a simple idea about the brain raises grades and productivity
    • What all great CEOs, parents, teachers, athletes know

    When Dweck was a young researcher, she was obsessed with understanding how people cope with failures, and she decided to study it by watching how students grapple with heard problems.

    You’re Learning, Not Failing

    One of Dweck’s key insights was that a certain kind of mindset could turn  a failure into a gift.

    Via Mindset: The New Psychology of Success:

    “What did they know?  They knew that human qualities, such as intellectual skills could be cultivated through effort.  And that’s what they were doing – getting smarter.  Not only weren’t they discouraged by failure, they didn’t even think they were failing.  They thought they were learning.”

    Your Can Change Your IQ

    Believe it or not, a big believer in the idea that you can use education and practice to fundamentally change your intelligence is Alfred Binet, the inventor of the IQ test.

    Via Mindset: The New Psychology of Success:

    “Binet, a Frenchman working in Paris in the early twentieth century, designed this test to identify children who were not profiting from the Paris public schools, so that new educational programs could be designed to get them back on track. Without denying individual differences in children’s intellects, he believed that education and practice could bring about fundamental changes in intelligence.”

    Methods Make the Difference

    Here is a quote from one of Binet’s major books,  Modern Ideas About Children:

    "A few modern philosophers ... assert that an individual's intelligence is a fixed quantity, a quantity which cannot be increased.  We must protest  and react against this brutal pessimism ... With practice, training, and above all, method, we manage to increase our attention, our memory, our judgment and literally to become more intelligent than we were before."

    Growth Mindset vs. Fixed Mindset

    The difference that makes the difference in success and achievement is your mindset.  Specifically, a Growth Mindset is the key to unleashing and realizing your potential.

    To fully appreciate what a Growth Mindset is, let’s contrast it by first understanding what a Fixed Mindset is.

    According to Carol Dweck, a Fixed Mindset means that you fundamentally believe that intelligence and talent are fixed traits:

    “In a fixed mindset, people believe their basic qualities, like their intelligence or talent, are simply fixed traits. They spend their time documenting their intelligence or talent instead of developing them. They also believe that talent alone creates success—without effort. They’re wrong.”

    In contrast, according to Dweck, a Growth Mindset means that you fundamentally believe that you can develop your brains and talent:

    “In a growth mindset, people believe that their most basic abilities can be developed through dedication and hard work—brains and talent are just the starting point. This view creates a love of learning and a resilience that is essential for great accomplishment. Virtually all great people have had these qualities.”

    If you want to improve your motivation, set yourself up for success, and achieve more in life, then adopt and build a growth mindset.

    Here are a few articles to help you get started:

    3 Mindsets that Support You

    5 Sources of Beliefs for Personal Excellence

    6 Sources of Beliefs and Values

    Growth Mindset Over Fixed Mindset

    Training Mindset and Trusting Mindset

  • J.D. Meier's Blog

    Pruning or Preserving a Synapse


    How can you keep your brown from throwing out a perfectly good behavior? Positive feedback. David Rock and Jeffrey Schwartz write about how positive feedback can preserve important synapses, in their article, "The Neuroscience of Leadership", in "strategy+business" magazine.

    Positive Feedback for Preserving a Synapse
    Rock and Schwartz write:

    "In a world with so many distractions, and with new mental maps potentially being created every second in the brain, one of the biggest challenges is being able to focus enough attention on any one idea. Leaders can make a big difference by gently reminding others about their useful insights, and thus eliciting attention that otherwise would not be paid. Behaviorists may recognize this type of reminder as "positive feedback," or a deliberate effort to reinforce behavior that already works, which, when conducted skillfully, is one aspect of behaviorism that has beneficial congnitive effect. In a brain that is constantly pruning connections while making new ones, positive feedback may play a key functional role as "a signal to do more of something." As neuroscientist Thomas B. Czerner notes, "The encouraging sounds of 'yes, good, that's it' help to mark a synapse for preservation rather than pruning."

    Key Take Aways
    I think this is similar to "you get what you measure", but in this case, you get more of what you reward.

  • J.D. Meier's Blog

    The Agile Way


    Change happens. One of the many things Ward Cunningham taught me years ago was that Agile isn't about fast.  It's about "responding to change."  It's the Agile way.   

    I thought it was great that rather than pretend change doesn't happen, simply embrace it.

    Simplicity was another aspect that I found compelling.  Ward had a way to keep things simple.  If something felt heavy or complicated, he would cut right through -- "What's the simplest thing we can do now?"  Rather than get overwhelmed or lost in analysis paralysis, he simply decides to take action.

    I remember thinking how sweet it is to put your burden down, and travel light.

    One burden for me was all the stuff that was yet to be done.  The other burden was all the stuff that might matter someday.  The problem is, how do you plan for what you don't know or can't expect?  You don't.  Instead, you figure out the most valuable thing now to work on, and when you come to a bridge, you cross it.  When there's no bridge, you build one.  If that becomes the next most important thing now.

    The sense of now vs. someday maybe is important.  There's something empowering about knowing that you're on the right path, and that the path you're on flows value -- to yourself, for others, or whatever matters.  Mistakes turn into lessons, and success builds momentum. Paving a path of value down a road of learning and responding beats betting on a map that no longer works or is no longer relevant.

    Speaking of relevancy, time changes what's important.  All the things we think we know, and all the things we thing we want, don't always match what we find, once we're there.  The ladder may be up against the wrong wall, or the grass isn't any greener.  In fact, sometimes there's no grass.

    The irony is, the trip is lighter when we don’t carry the burden, and the trip mean more when we know it matters.  If we don't enjoy the journey, and we don't end up with what we want, what's the point?  Life's short.  Throwing your time and energy down a path should matter.  But, how do we carve out these paths that matter?

    Stories.  Stories help you find what matters.  I remember the first time Ward asked me to tell him a story.  He wasn't looking for once upon a time.  No, he wanted to explore and test possible paths.  He wasn't interested in a laundry list of requirements.  He wanted a simple story told from the user perspective of a single, meaningful goal.  We used the whiteboard and mapped out one scenario.  Disney would have been proud.

    This one chunk of value was compelling.  The story put things in context.  The flow made sense.  Value was obvious and explicit.  More than that, it was testable.  A testable chunk of value.  We could test whether it mattered, and we could test whether it was feasible.  We could even test the risk early and reduce the gap from what we know, don't know, and need to know next.

    Having a story helped us do a dry run.  The dry run produced immediate feedback.  Feedback is a good thing, and it supports learning and responding, the Agile way.

    All this goodness in approach, painted a better picture, of a better way forward.  Rather than over-engineer up front, or over-plan for some day maybe, start flowing value now.  Rather than travel with burden and assumptions, travel lightweight and sustainable.  Rather than fear change, allow for it, and embrace it – be adaptable.  But does this approach to work, also work for life?

    I asked Ward how he did his career planning and figured out his year ahead.  He said he simply works backward from the experiences he wants.  He writes his story forward, by focusing on the experiences he wants to create.  He leads an experience-driven life.  What a simple, yet elegant, and insightful approach.  What an empowering way forward.

    The journey is the trip and the destination.  It's the way we travel and it's the end in mind.  It's the Agile way.

    This is why my latest book is Getting Results the Agile Way.

  • J.D. Meier's Blog

    Agile Results on a Page


    Agile Results is a simple system for getting meaningful results.

    It's a systematic way to achieve both short- and long-term results.  It works for all aspects of your life, from work to fun. The key to achieving results in our ever-changing world is learning and responding to change.

    Traditional methods of planning and goal setting are heavy and static, and they just aren't working anymore. Agile Results provides just enough planning to get you going, but makes it easy to change your course as needed.

    With Agile Results, you are in control. You shape your days and weeks so you can flourish and amplify your impact. It’s a way to make daily progress, follow YOUR path of fulfillment, and spend your time and energy on the most meaningful things.

    Three Wins

    Think in threes to focus your time, energy, and your actions. Identify three wins that you want to achieve:
    1. Three wins for the day.
    2. Three wins for the week.
    3. Three wins for the month.
    4. Three wins for the quarter.
    5. Three wins for the year.

    Bonus – Three wins for your decade, and three wins for your life.

    These wins act as your tests for success and they focus your tasks, while making it a game. Focusing on three wins also helps you reframe problems into challenges. At the same time, it helps you identify, acknowledge, and appreciate your personal victories.

    Monday Vision, Daily Wins, Friday Reflection

    This is a simple way to get started with Agile Results:
    1. On Mondays, identify three wins that you want for the week. Ask yourself, “If this were Friday, what are three things I would want to have achieved or accomplished?”
    2. Each day, identify three wins that you want for the day. Ask yourself, “What are the three wins I want for today?” Say them out loud. Write them down on paper. Saying them out loud simplifies them, and writing them down on paper helps them stick.
    3. On Fridays, identify three things going well, and three things to improve. Make a recurring appointment with yourself on Fridays. In your appointment, ask yourself, “What are three things going well?.” Follow up with, “What are three things I want to improve?” Identity three things you can do to carry the good forward, or change your approach so that you can make next week, a better experience.

    It’s all about driving a better experience, each day, and each week. By identifying your wins for the week, you give yourself the ability to zoom out from your day. By identifying your three wins for the day, you get to zoom in to where the action is. By thinking in terms of wins, you jump ahead to the end-in-mind. By focusing on what’s going well each week, you learn your personal success patterns, and what to keep doing, or what to do more of. By focusing on three things to improve, you improve your personal performance. This personal process helps you continuously learn and improve day over day, week over week, and your little wins add up for exponential results.

    3 Keys to Agile Results

    These are three keys to adopting Agile Results:
    • The Rule of 3. This is a simple guideline that helps you focus and prioritize. Bite off three things. You can use The Rule of 3 at different levels. For example, you can use The Rule of 3 to pick three outcomes for the day, the week, the month, and the year. This helps you see the forest from the trees. For example, your three outcomes for the year are a higher level than your three outcomes for the month, and your three outcomes for the week are a higher-level than your three outcomes for the day.

    • Monday Vision, Daily Wins, Friday Reflection. This is a simple pattern for weekly results. Each week is a fresh start. On Mondays, you think about three results you would like for the week. Each day you identify three results you would like for the day. On Friday’s, you reflect on lessons learned. On Friday, you ask yourself, what three things are going well and what three things need improvement. This weekly pattern helps you build momentum.

    • Hot Spots. Hot Spots are your heat map for work and life. They help you map out and prioritize your results. Hot Spots are your lens to help you focus on what’s important in your life. They can represent areas of opportunity or pain. It helps to organize your Hot Spots by work, personal, and life. At a glance, you should be able to quickly see the balls you’re juggling and what’s on your plate. To find your Hot Spots, simply make a list of the key things that need your time and energy. The goal is to easily answer the question, “what do you want to accomplish?” for each of these key areas. Most importantly you should have scannable outcomes for your Hot Spots. Scannable outcomes are simply a tickler list of what you want to accomplish. When you know the results you want in your Hot Spots in your work and personal life, you have a map for your results.

    Time-Based, Flexible and Resilient

    • Time-based. Time is one of your most precious and unique resources. By using time to set boundaries and establish a rhythm of results, you will manage your energy more effectively and improve balance in work and life. both timebox and scaling to day/week/month/etc.
    • Flexible. fresh start every day, dynamically adjust to changing reality
    • Resilient. tolerates falling down, feedback to learn, incremental versioning

    From This to That

    These are some drivers that set the stage for Agile Results:

    • It’s a system over ad-hoc. Don't luck into success. Trust a system over make things up as you go or hope for the best. Agile Results is a system for daily, weekly, monthly, and yearly results. With Agile Results, you have a proven system for sustainable results and improving your results along the way. Most importantly, you have a reliable way to get back up, time and again. When you have routines for how you produce results, you can learn and improve. It’s one thing to produce results randomly, while it’s another to have a system you can count on. When you have a system, you can tune and prune what works for you.
    • Focus on approach over just focus on results. Enjoy the process. How you accomplish your results is more important than the results themselves in the long run. Your approach is your foundation. It’s what you fall back on when you don’t know the way forward. Your approach should be sustainable. You should also be able to improve your approach over time. Your approach should be consistent with your values. Your approach should play to your strengths and limit your weaknesses.
    • Focus on outcomes over getting lost in activities. Outcomes provide a lens for focus. Outcomes are the results you want to accomplish. Just doing more activities and throwing more time and energy at problems won’t necessarily produce the results you want. By starting with outcomes, you define what good will look like and you give yourself a compelling path to work towards. Working on the right things to produce the right results for your current situation is a recipe for success.
    • Focus on quality over quantity. Bite off what you can chew instead of spill what’s on your plate.
    • Focus on strengths over your weaknesses. Rather than spend all your time improving your weaknesses, spend your time playing to your strengths. While it’s important to reduce your liabilities, you’ll go further, have more passion, and produce more effective results by spending more time in your strengths. In areas that you are weak, one of your best moves is to partner or team up with others that supplement you. If you can’t outsource your weaknesses, you can find more effective mentors or pair up with other people that help you amplify your results. Teamwork is the name of the game and remember that one person’s weakness is another person’s strength. Also remember that your strengths are a valuable asset for yourself and others. It’s a skills-for-hire economy.
    • Fresh starts over baggage. Get a fresh start each day, each week, each month, each year. Do more of what’s important, do less of what’s not. Drop what’s not working for you, do more of what is. You get a fresh start each day, each week, each month, each year. Gone are the laundry lists of to dos that will never get done. Make room for your next best things and travel light.
    • Meaningful results over just doing tasks. Choose your best results as you go that match your goals, your desires, your dreams, and the way you want to live your life. Invest your time and energy on your path, while dealing with change, and responding to your basic needs of the day, the week, the month, or year. Achieve meaningful results instead of throwing time at problems or focus on productivity for productivity’s sake.
    • You drive the system over the system drives you. You're not a slave to the system. You're the driver. Your tools and lists as input – you drive your action.

    Cornerstone Concepts

    These are some basic concepts that underlie Agile Results;

    • Boundaries. Boundaries are simply minimums and maximums. Setting boundaries is a key to success. You’ll produce more effective results by spending the right time and energy on the right things. You can set boundaries with time. For example, I’ll spend no more than an hour on that. You can set boundaries in terms of energy, for example, I’ll stop when I start to feel tired. Most people trip up by not setting boundaries. They’ll work on something until they crash. They throw all their time in one area at the expense of other areas. Setting boundaries is how you can add balance to your life. You can spread your time and energy across the important hot spots. You can more thoughtfully invest in your results. It’s also as simple as adding little breaks in your day to recharge.
    • Continuous Learning. The world’ not static. Skills aren’t static. You’re not static. Learning is a first class citizen. It’s about learning what’s important to you. It’s about taking action, getting the feedback, and changing your approach. It’s about letting go what’s not working, and testing new ways to achieve your results. It’s about personalizing your approach and continuously refining it to meet your needs. Your weekly reflection will help you learn more about yourself in terms of your strengths, your weaknesses, your passions, your bottlenecks, and ultimately your results. While improving your results, you’ll improve the way you produce results. Improving the way you produce results, will improve your enjoyment and fulfillment no matter what you work on.
    • Fix Time, Flex Scope. By fixing time, you set yourself up for success. The main things to set a fixed time for are eating, sleeping, and working out. You can also fix time within work. For example, you can decide that work is an 8 hour day. Within this, you can set timeboxes to produce results. For example, you might allow yourself an hour for administration. You might allow yourself 4 hours for execution. You might allow yourself 2 hours for think time and a minimum of an hour on communication and relationships. At a high level, you might fix time to be a 40 hour or 50 hour work week. Within that time frame, you will bite off the work you can do. What you won’t do is flex time. You won’t throw more hours at the problem each day. You’ll gradually learn to bite off what you can accomplish and manage your plate more effectively.
    • Get back on your horse. It’s easy to get on your horse, or get back on your horse, if you fall off. Just ask yourself, "What three results do I want for today?
    • Hot-spot driven. Achieve work-life balance by investing in yourself across your most meaningful areas. By using a set of hot spots, or areas of focus to invest in, you create a simple heat map for investing your time and energy where it matters most.
    • Story-driven results. Use stories, not tasks to guide and direct your life. Identify your three most compelling stories of results for the day, the week, the month, and the year. You can start right now by asking, “What are three results I want for today?” … Tell yourself three stories for the day about what you’ll accomplish – kill’em with kindness, draft my raving review, and have the time of her life with my wife.
    • Test Your Results. Have a bias for action. Rather than do a bunch of analysis and commit to a big plan up front, start taking action and testing you results. Testing your results is a way to find the risks and surprises earlier versus later. Test your assumptions against the real-world. Use the feedback to improve your plans. It’s this learning loop that will help you improve. A simple way to remember this is “do it, review it, improve it.” One of the surprises for a lot of people is that action creates inspiration. A lot of people wait for their moment of inspiration before they start, but what they don’t realize is that simply by starting, the inspiration can follow. It’s like going to see a movie and then enjoying it more than you expected. Give things a chance. Test yourself. Test your results.
    • The Rhythm of Results. Ride the day, the week, the month, and the year and make them work for you. Think in terms of daily results, weekly results, monthly result, and yearly results. It's a rhythm. Iterate on your results. Version your results over time. The rhythm of results is your daily, weekly, monthly, and yearly results. This is about flowing value incrementally. Think of it as a set of trains that leave the station. If you miss a train, you can catch the next one. At the same time, you want to catch certain trains because of your time frames and windows of opportunity.
    • Time, Energy and Technique. You don’t want to just throw more time at problems. You also don’t want to burn yourself out, just throwing your energy into things. Your results are a combination of time, energy, and technique. By using more effective techniques, you can amplify your results. This is how you use your time and energy more effectively.
    • Use your best energy on your best things. Spend less time and make more impact. It's not the time you spend, it's the energy you leverage. Use your best power hours for results, and your best creative hours for your creative impact. Agile Results focuses on living your values and playing to your strengths, improving your energy, passion, and results. The strength of your results is a product of your time, energy and technique. So while the path is flexible, it’s about playing to your strengths, using power hours effectively, and scheduling time for your results … and using timeboxing for focus and engagement …. Fully engaged results. Work less, accomplish more meaningful results with the least amount of effort and the maximum impact.

    12 Core Practices of Agile Results Defined

    At the heart of any system is a set of practices. It’s the practices that make or break a system. Combined with the 10 values and 10 principles, the 12 core practices complete the foundation of Agile Results:

    1. 30 Day Improvement Sprints. (aka “Monthly Improvement Sprints”.) Pick one thing to improve for the month. Each month, pick something new; this gives you a chance to cycle through 12 things over the year. Or if necessary, you can always repeat a sprint. The idea is that 30 days is enough time to experiment with your results throughout the month. Because you might not see progress in the first couple of weeks while you’re learning, a month is a good chunk of time to check your progress.
    2. Action Lists. Track your actions with tickler lists. Consider the following action lists: Daily Outcomes, Weekly Outcomes, Queues, and Scripts.
    3. Daily Outcomes. Each day is a new chance for results. Use daily tickler lists for action items; create a new list each day. Each day, decide on three things you want to accomplish (The Rule of 3). Always start your list with your three most important outcomes for the day. The key to an effective Daily Outcomes list is that you keep your three outcomes for the day at the top, while listing the rest of your to-dos below that. This way you have a reminder of what you want to accomplish.
    4. Growth Mindset. Your mind is not fixed, it’s flexible. It’s always growing. You are expanding your capabilities. This is simply a decision. You decide that you will continue to learn and grow. If you get knocked down, you’ll get up again. You decide that no problem is personal, pervasive or permanent. Life is not static. Neither are your results.
    5. Monday Vision, Daily Outcomes, Friday Reflection. Decide three results you want to accomplish for the week. Decide what three results you want to accomplish each day. Make progress each day. At the end of the week, reflect on your results.
    6. Reference Collections. Some information is not actionable. Yes, it might be helpful information, and yes, it might be good to know. But if it’s not actionable, then it’s reference. You can store your reference information as tickler lists or notes. Here are some example reference lists you might keep: Ideas, Notes, Weekly Results, Monthly Results, and Yearly Results.
    7. Scannable Outcomes. Think of this as what’s on your radar. At a glance, you should be able to see what you want to accomplish and what you’re spending your time and energy on. Outcomes guide your actions. Keep your outcomes scannable at a glance. Organize outcomes by your work, personal, and life Hot Spots. For example, create a list of outcomes for your Life Frame Hot Spots: body, career, emotions, financial, fun, mind, and relationships.
    8. Strong Week. Each week focus on spending more time on activities that make you strong and less time on activities that make you weak. Push activities that make you weak to the first part of your day. By doing your worst things first, you create a glide path for the rest of the day. Set limits; stuff the things that make you weak into a timebox. For example, if the stuff that makes you weak is taking more than 20 percent of your day, then find a way to keep it within that 20 percent boundary. This might mean limiting the time or quantity. Sometimes you just can't get rid of the things that make you weak; in that case, balance it with more things that energize you and make you strong. Apply this to your week too. Push the toughest things that drain you to the start of the week to create a glide path. Do the same with people. Spend more time with people that make you strong and less time with people that make you weak. Be careful not to confuse the things that make you weak with challenges that will actually make you stronger. Grow yourself stronger over time.
    9. The Rule of 3. This is the heart of your Daily Outcomes. The Rule of 3 will help you stay focused on the vital few things that matter. Identify your three key outcomes each day, each week, each month, and each year. This helps you see the forest from the trees. The three outcomes for the year are bigger than the three outcomes for the month which are bigger than the three outcomes for the week which are bigger than the three outcomes for your day. This also helps you manage scope. It’s all too easy to bite off more than you can chew. Instead, first nail the three items you want to accomplish, and then bite off more. Think of it as a buffet of results and you can keep going back—just don’t overflow your plate on each trip.
    10. Timebox Your Day. Set boundaries for how much time you spend on things. If you keep time a constant (by ending your day at a certain time), it helps you figure out where to optimize your day and prioritize. To start, you can carve up your day into big buckets: administration, work time, think time, and people time.
    11. Triage. Triage incoming action items to either do it, queue it, schedule it, or delegate it. Do it now, if now is the time, or it’s the next best thing for you to do; or it’s the most opportunistic time, or it will cost you more pain, time or effort to do it later. Queue it (add it to your queue) if it’s something you need to get done, but now is not the right time. Schedule it if you need a block of time to get the work done. Delegate it if it’s something that should be done by somebody else.
    12. Weekly Outcomes. Create a new list each week. Each week is a new chance for results. Always start with your three most important outcomes for the week (The Rule of 3).

    Test it For Yourself

    The simplest way to see if Agile Results is right for you, is to take it for a test drive. Here is a simple way to test-drive Agile Results:

    1. Write down three wins that you want for today. Congratulations – you’re doing Agile Results! The preferred approach is to you a sticky note pad, but anything works – even a napkin.
    2. Test-drive the Monday Vision, Daily Wins, Friday Reflection pattern. On Monday, identify three wins you want for the week. Each day, identify three wins you want for the day. On Friday, identify three things going well, and three things to improve.
    3. Test-drive a 30 day improvement sprint. Use a practice from Agile Results, to learn Agile Results. Decide that this month will be about changing your game, changing your results, and changing your experience in work and life. Do something small each day for 30 days to build momentum. Each day is a new chance. At a minimum, each day, you can identify your three wins that you want. For 30 days of little lessons, check out 30 Days of Getting Results at http://30DaysOfGettingResults.com

    Additional Resources

  • J.D. Meier's Blog

    Get Lean, Eliminate Waste


    If you want to tune your software engineering, take a look at Lean.  Lean is a great discipline with a rich history and proven practices to draw from.  James has a good post on applying Lean principles to software engineering.  I think he summarizes a key concept very well:

    "You let quality drive your speed by building in quality up front and with increased speed and quality comes lower cost and easier maintenance of the product moving forward."

    7 Key Principles in Lean
    James writes about 7 key principles in Lean:

    1. Eliminate waste.
    2. Focus on learning.
    3. Build quality in.
    4. Defer commitment.
    5. Deliver fast.
    6. Respect people.
    7. Optimize the whole.

    Example of Deferring Commitment
    I think the trick with any principles is knowing when to use them and how to apply them in context.  James gives an example of how Toyota defers commitment until the last possible moment:

    "Another key idea in Toyota's Product Development System is set-based design. If a new brake system is needed for a car, for example, three teams may design solutions to the same problem. Each team learns about the problem space and designs a potential solution. As a solution is deemed unreasonable, it is cut. At the end of a period, the surviving designs are compared and one is chosen, perhaps with some modifications based on learning from the others - a great example of deferring commitment until the last possible moment. Software decisions could also benefit from this practice to minimize the risk brought on by big up-front design."

    Examples in Software Engineering
    From a software perspective, what I've seen teams do is prototype multiple solutions to a problem and then pick the best fit.  The anti-pattern that I've seen is committing to one path too early without putting other options on the table.

    A Lean Way of Life
    How can you use Lean principles in your software development effort?  ... your organization?  ... your life?

    More Information

  • J.D. Meier's Blog

    30 Day Improvement Sprints


    I'm using 30 day improvement sprints as a way to sharpen my skills.  I pick a focus to work on and I committ to improving it for a 30 day timebox.  Committing to 30 days of improvement in a focused area, is easier to swallow than changing for life.  However, improving an area for 30 days, is actually life changing.

    With 30 days, persistence and time are on my side.  It's a big enough time box that I can try different techniques, while building proficiency.  Using 30 days makes working through hurdles easier too.  A lot of the hurldles I hit in my first week, are gone by week 2.  Little improvements each day, add up quickly.  I look back on how many things I tried for a week and stopped thinking I hadn't made progress.  The trick was, I didn't get to week 2 to see my results.  Lesson learned!

    Related Posts

  • J.D. Meier's Blog

    10 Emotional Intelligence Articles for Improving Your Effectiveness in Work and Life


    Emotional intelligence is one of the most important tools to add to your tool belt, whether you are a leader, a manager, a manager of managers, or an individual contributor that needs to influence without authority.

    Emotional intelligence is “the ability to identify, assess, and control the emotions of oneself, of others, and of groups.” 

    It’s powerful stuff.

    Here are 10 of my past posts from this year that will help you learn some new emotional intelligence skills that you can apply immediately:

    1. A Lighter Feeling - What if you could release negative emotions and feel lighter and ready for anything as you go about your day?  You can, if you know how, and the key is, it’s not in your head.
    2. Delayed Gratification: Make It a Better Pill to Swallow - Delayed gratification shows up time and again as one of the best ways to live a better life.  It’s how we rise above the pitfalls of instant gratification.   It’s also how we focus on doing more of what’s important.  But how can we master it?
    3. Emotional Intelligence Quotes – Emotional intelligence is often the difference that makes the difference when it comes to your success in work and life.  This is a roundup of my favorite emotional intelligence quotes from Benjamin Franklin, Buddha, Dale Carnegie, Vincent Van Gogh, and a bunch of other people you probably never heard of.
    4. Empathic Listening: The Highest Form of Listening – Stephen Covey taught us that if we want others to listen to us, we first need to listen to them.  But what’s the best way to listen?  Empathic listening.  It’s where we listen until the other person feels understood.  It sounds so simple, and it is, but where the gap comes in is knowing what to do, and actually doing what you know.
    5. How To Change Any Experience to Empower You -- What if you could change the effect any experience has on you?  What if you could change any feeling, emotion, or behavior for yourself in a matter of moments?  You can.  By changing your state.  You can change how you represent any experience, whether it’s memories of the past, your current experience, or scenarios in the future.
    6. How To Free Yourself from Negative Emotions – Negative emotions are our worst enemies.  What if you could free yourself from negative emotions?  Or, what if you could at least reduce getting stuck and wallowing in negative emotions?  You can.  But you need to know how.  In this article, Brian Tracy shares deep insight into the 4 root causes of negative emotions so we can identify and eliminate them.
    7. How To Get in Superman Mode for Unshakable Confidence - You can’t talk to yourself in a meek and meager way, and expect powerful results.  But, what if you could flip a switch and talk to yourself in a way that’s more assertive, confident, and believable?  You can. And, imagine having a more powerful voice on your side to give you an edge in everything you do, and to help lift you up whenever you need it most.
    8. How Not to Break Under Pressure - Whether it’s negative self-talk or negative beliefs, you can be your own worst enemy.  If you crack under pressure, what happens is you focus on all the wrong things and all the things that could go wrong to the point that it becomes a self-fulfilling prophecy.  In other words, you become your greatest obstacle.  What if, instead, you could thrive under pressure?  You can.
    9. Mental Toughness Defined – A very simple definition of mental toughness.
    10. Tony Robbins on the Fastest Way to Get Over Fear - Fear can hold us back.  It can hold us back in subtle and insidious ways.  Fear can also outright paralyze us from taking action.  What if we had a way to get over fear, and experience more freedom?  Tony Robbins shows us how.

    If you only have time to read one, then I recommend starting with the following:

    How To Free Yourself from Negative Emotions 

    Best wishes for 2014!

  • J.D. Meier's Blog

    Windows Azure Application Patterns


    This is a quick visual tour of some whiteboard solutions and common application patterns for Windows Azure.  It’s a look at some of the most common whiteboard solutions for Web applications, Web services, and data on Windows Azure. 

    Here are the app patterns at a glance:

    • Pattern #1 - ASP.NET Forms Auth to Azure Tables
    • Pattern #2 - ASP.NET Forms Auth to SQL Azure
    • Pattern #3 - ASP.NET to AD with Claims
    • Pattern #4 - ASP.NET to AD with Claims (Federation)
    • Pattern #5 - ASP.NET to WCF on Azure
    • Pattern #6 - ASP.NET On-Site to WCF on Azure
    • Pattern #7 - ASP.NET On-Site to WCF on Azure with Claims
    • Pattern #8 - REST with AppFabric Access Control
    • Pattern #9 - ASP.NET to Azure Storage
    • Pattern #10 - ASP.NET to SQL Azure
    • Pattern #11 - ASP.NET On-Site to SQL Azure Through WCF

    Web Applications
    Here are some common Web application patterns on Windows Azure:

    Pattern #1 - ASP.NET Forms Auth to Azure Tables

    ASP.NET Forms Auth to Azure Tables

    Pattern #2 - ASP.NET Forms Auth to SQL Azure

    ASP.NET Forms Auth to SQL Azure

    Pattern #3 - ASP.NET to AD with Claims

    ASP.NET to AD with Claims

    Pattern #4 - ASP.NET to AD with Claims (Federation)

    ASP.NET to AD with Claims - Federation

    Web Services (SOAP) App Patterns on Windows Azure
    Here are common Web service app patterns on Windows Azure:

    Pattern #5 - ASP.NET to WCF on Azure

    ASP.NET to WCF on Azure

    Pattern #6 - ASP.NET On-Site to WCF on Azure

    ASP.NET On-Site to WCF on Azure

    Pattern #7 - ASP.NET On-Site to WCF on Azure with Claims

    ASP.NET On-Site to WCF on Azure with Claims

    REST App Pattern on Windows Azure
    Here is a common REST application pattern on Windows Azure:

    Pattern #8 - REST with AppFabric Access Control

    REST with AppFabric Access Control

    Data Patterns on Windows Azure
    Here are common data application patterns on Windows Azure:

    Pattern #9 - ASP.NET to Azure Storage

    ASP.NET to Azure Storage

    Pattern #10 - ASP.NET to SQL Azure

    ASP.NET to SQL Azure

    Pattern #11 - ASP.NET On-Site to SQL Azure Through WCF

    ASP.NET On-Site to SQL Azure Through WCF

    Contributors / Reviewers
    Many thanks to the following folks for contribution, collaboration, and review:

    • External contributors and reviewers: Adam Grocholski; Andy Eunson; Bill Collette; Christopher Seary; Jason Taylor; John Daniels; Juval Lowy; Kevin Lam; Long Le; Michael Smith; Michael Stiefel; Michele Leroux Bustamante; Norman Headlam; Rockford Lhotka; Rudolph Araujo; Sarang Kulkarni; Steven Nagy; Terrance Snyder; Will Clevenger
    • Microsoft contributors and reviewers:  Akshay Aggarwal; Alik Levin; Andreas Fuchsberger; Babur Butter; Bharat Shyam; Dave Brankin; Danny Cohen; Diego Dagum; Don Willits; Eugenio Pace; Gabriel Morgan; Jeff Mueller; John Steer; Julian Gonzalez; Mark Curphey; Mohit Srivastava; Pat Filoteo; Rahul Verma; Raul Rojas; Scott Densmore; Sesha Mani; Serena Yeoh; Sriram Krishnan; Stefan Schackow; Steve Marx; Stuart Kwan; Terri Schmidt; Tobin Titus; Varun Sharma; Vidya Vrat Agarwal; Vikram Bhambri; Yale Li
  • J.D. Meier's Blog

    Architecture Linkage, Business Linkage, and Alignment Linkage


    Your company's foundation for execution will make or break your survival in the market for the long haul.  How can you incrementally build and shape the foundation, while executing projects?  How do you connect and align IT with your business vision, while shaping your foundation for execution?

    You can use three linking mechanisms to build and shape your company's foundation.

    In the book, Enterprise Architecture as Strategy: Creating a Foundation for Business Execution, Jeanne W. Ross, Peter Weill, and David C. Robertson write about three linking mechanisms that help you build and shape the company's foundation.

    Why You Need Good Linking Mechanisms

    Linking mechanisms are the key to building and shaping your company’s foundation for execution.  You can incrementally shape the foundation as you drive projects.   You can also inform your company’s foundation as you learn from your projects.  Ross, Weill, and Robertson write:

    “Good linking mechanisms ensure that projects incrementally build the company's foundation and that the design of the company's foundation (it's operating model and enterprise architecture) is informed by projects.”

    3 Linking Mechanisms that Build and Shape the Company's Foundation

    According to Ross, Weill, and Robertson, the three linking mechanisms are:

    1. Architecture Linkage
    2. Business Linkage
    3. Alignment Linkage

    Architecture Linkage

    Architecture linkage connects projects to IT governance choices about architecture. Ross, Weill, and Robertson write:

    “Architecture linkage establishes and updates standards, reviews projects for compliance, and approves exceptions.  Architecture linkage connects the IT governance decisions about architecture with project design decisions.  For example, a company working to increase integration may have a mechanism for insisting that a supply chain project -- rather than focus narrowly on its own data needs -- restructure an inventory database so that it facilitates anticipated future uses of the inventory data.  Companies may fulfill architecture linkage with one mechanism, such as an architecture review board.  More commonly, firms employ multiple mechanisms, ranging from architect training programs to architecture exception processes.”

    Business Linkage

    Business linkage links projects to business goals.  Ross, Weill, and Robertson write:

    “Similarly, business linkage ensure that business goals are translated effectively into project goals.  Business linkage coordinates projects, connects them to larger transformation efforts, and focuses projects on attacking specific problems in the best possible way.  For example, a key linking mechanism for companies pursuing companywide standardized processes is the use of process owners with primary responsibility for designing and updated processes.  Business linkage also includes incentive programs to guide behavior as new projects demand new ways of thinking.”

    Alignment Linkage

    Alignment linkage connects business and IT relationships.  Ross, Weill, and Robertson write:

    “Alignment linkage mechanisms ensure ongoing communication and negotiation between IT and business concerns.  Business-IT relationship managers or business unit CIOs are typically a critical linkage for translating back and forth between business goals and IT constraints.  Other mechanisms in this category include a project management office, training and certification of project managers, and metrics for assessing projects.”

    Linking Becomes an Organizational Habit

    It’s a maturity thin.   The more you practice the linking mechanisms, the more it becomes an organizational habit.  Ross, Weill, and Robertson write:

    “Earlier we noted that a company's management practices evolve through the stages of architectural maturity.  Many of these evolving practices are linking mechanisms.  As they are implemented and improved, they contribute to increasing sophistication of the IT engagement model.  Over time, linking mechanisms can become increasingly embedded in IT governance and project management processes so that linking becomes an organizational habit.”

    You Might Also Like

  • J.D. Meier's Blog

    People I've Worked with On Past Projects


    One lesson I've learned time and again is that it's about the people.  You can be on a lousy project with great people and still have a great time.  The reverse is not always true.  Of course, the ideal world is a great project with great people.  I've been lucky enough to have enjoyed several adventures with great people while trying to change the world.

    As part of mid-year review, I'm taking a stroll down memory lane.  To do so, I created a snapshot of people I've worked with while writing books in patterns & practices over the years. Looking into the past always gives me insight into the future.   I use it to find personal success patterns.  It also helps me get a new vantage point for project analysis.

    The first thing I learned by looking at the list of people I've worked with is how the right project can really grow your network.   The other thing is how you can also predict a project's success largely by who's involved.   The thing that really stands out for me is that the most successful projects were ones that created an intersection of the right problems, with the right people, with the right passions and strengths.  That's what dream teams and compelling missions are made of.  A simple test of whether you have the right team is whether you want to run towards or away from the problem.

    Here's the snapshot I used for my analysis ...

    Application Architecture Guide 2.0

    • Home Page: http://www.codeplex.com/AppArchGuide
    • Forewords: S. Somasegar, Scott Guthrie
    • Authors: J.D. Meier , Alex Homer, David Hill, Jason Taylor , Prashant Bansode , Lonnie Wall, Rob Boucher Jr, Akshay Bogawat
    • Test Team - Rohit Sharma, Praveen Rangarajan, Kashinath TR, Vijaya Jankiraman
    • Edit Team - Dennis Rea
    • 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; 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; Javed Sikander; 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; Rabi Satter; Reed Robison; Rob Tiffany; Ryno Rijnsburger; Scott Hanselman; Seema Ramchandani; Serena Yeoh; Simon Calvert; Srinath Vasireddy; Tom Hollander; Wojtek Kozaczynski

    Improving Web Services Security

    • Home Page: http://www.codeplex.com/WCFSecurityGuide
    • Forewords: Nicholas Allen, Rockford Lhotka
    • Authors: J.D. Meier, Carlos Farre, Jason Taylor, Prashant Bansode, Steve Gregersen, Madhu Sundararajan, Rob Boucher
    • External Contributors/Reviewers: Andy Eunson; Anil John; Anu Rajendra; Brandon Bohling; Chaitanya Bijwe; Daniel Root; David P. Romig, Sr.; Dennis Rea; Kevin Lam; Michele Bustamante; Parameswaran Vaideeswaran; Rockford Lotka; Rudolph Araujo; Santosh Bejugam
    • Microsoft Contributors / Reviewers: Alik Levin; Brandon Blazer; Brent Schmaltz; Curt Smith ; Dmitri Ossipov; Don Smith; Jan Alexander; Jason Hogg; Jason Pang; John Steer; Marc Goodner; Mark Fussell; Martin Gudgin; Martin Petersen-Frey; Mike de Libero; Mohammad Al-Sabt; Nobuyuki Akama; Ralph Squillace; Richard Lewis; Rick Saling; Rohit Sharma; Scott Mason; Sidd Shenoy; Sidney Higa; Stuart Kwan; Suwat Chitphakdibodin; T.R. Vishwanath; Todd Kutzke; Todd West; Vijay Gajjala; Vittorio Bertocci; Wenlong Dong; Yann Christensen; Yavor Georgiev

    Team Development with Visual Studio Team Foundation Server

    • Home Page: http://msdn.microsoft.com/en-us/library/bb668991.aspx
    • Forewords: Jeff Beehler, Rob Caron, Brian Harry
    • Authors: J.D. Meier, Jason Taylor, Prashant Bansode, Alex Mackman, Kevin Jones
    • External Contributors/Reviewers.  David P. Romig, Sr; Dennis Rea; Eugene Zakhareyev; Leon Langleyben; Martin Woodward; Michael Rummier; Miguel Mendoza ; Mike Fourie; Quang Tran; Sarit Tamir; Tushar More; Vaughn Hughes
    • Microsoft Contributors / Reviewers.  Aaron Hallberg; Ahmed Salijee; Ajay Sudan; Ajoy Krishnamoorthy; Alan Ridlehoover; Alik Levin; Ameya Bhatawdekar; Bijan Javidi; Bill Essary; Brett Keown; Brian Harry; Brian Moore; Brian Keller; Buck Hodges; Burt Harris; Conor Morrison; David Caufield; David Lemphers; Doug Neumann; Edward Jezierski; Eric Blanchet; Eric Charran; Graham Barry; Gregg Boer; Grigori Melnik; Janet Williams Hepler; Jeff Beehler; Jose Parra; Julie MacAller; Ken Perilman; Lenny Fenster; Marc Kuperstein; Mario Rodriguez; Matthew Mitrik; Michael Puleio; Nobuyuki Akama; Paul Goring; Pete Coupland; Peter Provost; Granville (Randy) Miller; Richard Berg; Rob Caron; Robert Horvick; Rohit Sharma; Ryley Taketa; Sajee Mathew; Siddharth Bhatia; Tom Hollander; Tom Marsh; Venky Veeraraghavan

    Performance Testing Guidance

    • Home Page: http://msdn.microsoft.com/en-us/library/bb924375.aspx
    • Forewords: Alberto Savoia, Rico Mariani
    • Authors: J.D. Meier, Microsoft, Senior Program Manager, patterns & practices
      Carlos Farre, Microsoft, Software Design Engineer Test, patterns & practices
      Prashant Bansode, Infosys Technologies Ltd
      Scott Barber, PerfTestPlus Inc, Chief Technologist
      Dennis Rea, Wadeware LLC
    • Microsoft Contributors and Reviewers: Alan Ridlehoover; Clint Huffman; Edmund Wong; Ken Perilman; Larry Brader; Mark Tomlinson; Paul Williams; Pete Coupland; Rico Mariani
    • External Contributors and Reviewers: Alberto Savoia; Ben Simo; Cem Kaner; Chris Loosley; Corey Goldberg; Dawn Haynes; Derek Mead; Karen N. Johnson; Mike Bonar; Pradeep Soundararajan; Richard Leeke; Roland Stens; Ross Collard; Steven Woody

    Security Engineering

    • Home Page: http://msdn.microsoft.com/en-us/library/ms998382.aspx
    • Authors: J.D. Meier, Alex Mackman, Blaine Wastell, Prashant Bansode, Jason Taylor, and Rudolph Araujo.
    • Test Team: Larry Brader, Microsoft Corporation; Nadupalli Venkata Surya Sateesh, Sivanthapatham Shanmugasundaram, Infosys Technologies Ltd.
    • Edit Team: Nelly Delgado, Microsoft Corporation
    • Release Management: Sanjeev Garg, Microsoft Corporation
    • External Contributors and Reviewers: Anil John, Johns Hopkins University – Applied Physics Laboratory; Frank Heidt; Keith Brown Pluralsight LLC; Mark Curphey, Foundstone Professional Services
    • Microsoft Services and PSS Contributors and Reviewers: Adam Semel, Denny Dayton, Gregor Noriskin, Kate Baroni, Tom Christian, Wade Mascia
      Microsoft Product Group: Charlie Kaufman, Don Willits, Mike Downen, Rick Samona
      Microsoft IT Contributors and Reviewers: Akshay Aggarwal, Irfan Chaudhry, Shawn Veney, Talhah Mir
    • MSDN Contributors and Reviewers: Kent Sharkey
    • Microsoft EEG: Corey Ladas, James Waletzky 

    Improving .NET Application Performance and Scalability

    • Home Page: http://msdn.microsoft.com/en-us/library/ms998530.aspx
    • Forewords: S. Somasegar, Rico Mariani, Brandon Bohling, Connie U. Smith, Scott Barber
    • Authors: J.D. Meier, Srinath Vasireddy, Ashish Babbar, Alex Mackman
    • Special thanks to key contributors: Anandha Murukan; Andy Eunson; Balan Jayaraman, Infosys Technologies Ltd; Christopher Brumme (CLR and COM interop); Connie U. Smith, Ph.D.; Curtis Krumel (SQL Server); David G. Brown (SQL Server); Denny Dayton; Don Willits ("Uber man"); Edward Jezierski; Ilia Fortunov; Jim O'Brien, Content Master Ltd; John Allen (ASP.NET); Matt Odhner (ACT); Prabhaker Potharaju (SQL Server); Rico Mariani (Performance Modeling, CLR, Code Review, Measuring); Ray Escamilla (Tuning); Scott Barber (Performance Modeling and Testing); Sharon Bjeletich (SQL Server)
    • Special thanks to key reviewers: Adam Nathan (Interop); Brad Abrams; Brandon Bohling, Intel Corporation; Carlos Farre, Solutions IQ; Chuck Delouis, Veritas Software (SQL Server); Cosmin Radu (Interop); Eddie Lau (ACE); Eric Morris (ACE); Erik Olsen (ASP.NET); Gerardo Bermudez (CLR, Performance Modeling); Gregor Noriskin; Ken Perilman; Jan Gray; John Hopkins (ACE); Joshua Lee; K.M. Lee (ACE TEAM); Mark Fussell (XML); Matt Tavis (Remoting); Nico Jansen (ACE Team); Pablo Castro (ADO.NET and SQL); Patrick Dussud (CLR); Riyaz Pishori (Enterprise Services); Richard Turner (Enterprise Services); Sonja Keserovic (Interop); Thomas Marquardt (ASP.NET); Tim Walton; Tom McDonald; Wade Mascia (ASP.NET threading, Web services, and Enterprise Services); Yasser Shohoud (Web services)
    • External Reviewers: Ajay Mungara, Intel Corporation; Bill Draven, Intel Corporation; Emil Lerch, Intel Corporation; Carlos Santos (Managed Code); Chris Mullins, Kiefer Consulting; Christopher Bowen, Monster.com; Chuck Cooper; Dan Sullivan; Dave Levine, Rockwell Software; Daniel Cazzulino, Lagash Systems SA; Diego Gonzalez, Lagash Systems SA (XML); Franco Ceruti; Fredrik Normen "N2", Barium AB (extensive review); Grant Fritchey; Greg Buskirk; Greg Kiefer, Kiefer Consulting; Ingo Rammer, IngoRammer.com; James Duff, Vertigo Software; Jason Masterman, Barracuda .NET (Remoting); Jeff Fiegel, Acres Gaming; Jeff Sukow, Rockwell Software; John Lam; John Vliet, Intel Corporation; Juval Lowy (COM interop); Kelly Summerlin, TetraData; Mats Lanner, Open Text Corporation; Matt Davey; Matthew Brealey; Mitch Denny, Monash.NET; Morten Abrahamsen (Performance and Transactions); Nick Wienholt, dotnetperformance.com; Norm Smith (Data Access and Performance Modeling); Pascal Tellier, prairieFyre Software Inc.; Paul Ballard, Rochester Consulting Partnership, Inc.; Per Larsen (Managed Code Performance); Scott Allen (Design Guidelines); Philippe Harry Leopold Frederix (Belgium); Scott Stanfield, Vertigo Software; Ted Pattison, Barracuda .NET (COM Interop); Thiru Thangarathinam; Tim Weaver, Monster.com; Vivek Chauhan (NIIT); Thiru Thangarathinam; Wat Hughes, Creative Data (SQL Server)
    • Microsoft Consulting Services and Product Support Services (PSS): Dan Grady; David Madrian; Eddie Clodfelter; Hugh Wade; Jackie Richards; Jacquelyn Schmidt; Jaime Rodriguez; James Dosch; Jeff Pflum; Jim Scurlock; Julian Gonzalez (Web services); Kenny Jones; Linnea Bennett; Matt Neerincx; Michael Parkes; Michael Royster; Michael Stuart; Nam Su Kang; Neil Leslie; Nobuyuki Akama; Pat Altimore; Paul Fallon; Scott Slater; Tom Sears; Tony Bray
    • Microsoft Product Group: Alexei Vopilov (Web services); Amrish Kumar; Arvindra Sehmi; Bill Evans; Brian Spanton; Keith Ballinger (WSE); Scot Gellock (Web services); Brian Grunkemeyer (CLR); Chris Eck; David Fields (NT); David Guimbellot; David Mortenson (CLR); Dax Hawkins; Dhananjay Mahajan (Enterprise Services); Dino Chiesa; Dmitry Robsman; Doug Rothaus (ADO.NET); Eddie Liu; Elena Kharitidi (Web services); Fabio Yeon; Harris Syed (Enterprise Services); Jason Zander; Jeffrey Cooperstein; Jim Radigan; Joe Long (Web services vs. ES vs. Remoting); Joshua Allen; Larry Buerk; Lubor Kollar (SQL Server); Maoni Stephens; Michael Coulson; Michael Fanning; Michael Murray (FxCop); Omri Gazitt; Patrick Ng (FX DEV); Peter Carlin (SQL Server); Rebecca Dias (WSE); Rick Vicik; Robin Maffeo (CLR Thread pool); Vance Morrison; Walter Stiers; Yann Christensen
    • patterns & practices members: Jason Hogg (ADO.NET and XML); Naveen Yajaman; Sandy Khaund; Scott Densmore; Tom Hollander; Wojtek Kozaczynski
      Thanks to our test team: (Infosys Technologies Ltd): Austin Ajit Samuel Angel; Dhanyah T.S.K; Lakshmi; Prashant Bansode; Ramesh Revenipati; Ramprasad Gopalakrishnan; Ramprasad Ramamurthy; Terrence J. Cyril
      Thanks to our editors for helping to ensure a quality experience for the reader: Sharon Smith; Tina Burden McGrayne, Entirenet; Susan Filkins, Entirenet; Tyson Nevil, Entirenet
    • product manager: Ron Jacobs
    • Finally, thanks to: Alex Lowe; Chris Sells; Jay Nanduri; Nitin Agrawal; Pat Filoteo; Patrick Conlan (SQL Server); Rajasi Saha; Sanjeev Garg (Satyam Computer Services); Todd Kutzke

    Improving Web Application Security: Threats and Countermeasures

    • Home Page: http://msdn.microsoft.com/en-us/library/ms994921.aspx
    • Forewords: Mark Curphey, Erik Olson, Joel Scambrary, Michael Howard
    • Authors: J.D. Meier, Alex Mackman, Srinath Vasireddy, Michael Dunner, Ray Escamilla, Anandha Murukan
    • External Reviewers–Mark Curphey, Open Web Application Security Project and Watchfire; Andy Eunson (extensive review); Anil John (code access security and hosting scenarios); Paul Hudson and Stuart Bonell, Attenda Ltd. (extensive review of the Securing series); Scott Stanfield and James Walters, Vertigo Software; Lloyd Andrew Hubbard; Matthew Levine; Lakshmi Narasimhan Vyasarajan, Satyam Computer Services; Nick Smith, Senior Security Architect, American Airlines (extensive review of the Securing series); Ron Nelson; Senthil Rajan Alaguvel, Infosys Technologies Limited; Roger Abell, Engineering Technical Services, Arizona State University; and Doug Thews.
    • Microsoft Product Group–Michael Howard (Threat Modeling, Code Review, and Deployment Review); Matt Lyons (demystifying code access security); Caesar Samsi; Erik Olson (extensive validation and recommendations on ASP.NET); Andres De Vivanco (securing SQL Server); Riyaz Pishori (Enterprise Services); Alan Shi; Carlos Garcia Jurado Suarez; Raja Krishnaswamy, CLR Development Lead; Christopher Brown; Dennis Angeline; Ivan Medvedev (code access security); Jeffrey Cooperstein (Threat Modeling); Frank Swiderski; Manish Prabhu (.NET Remoting); Michael Edwards, MSDE; Pranish Kumar, (VC++ PM); Richard Waymire (SQL Security); Sebastian Lange; Greg Singleton; Thomas Deml (IIS Lead PM); Wade Hilmo (IIS); Steven Pratschner; Willis Johnson (SQL Server); and Girish Chander (SQL Server).
    • Microsoft Consulting Services and Product Support Services (PSS): Ilia Fortunov (Senior Architect) for providing continuous and diligent feedback; Aaron Margosis (extensive review, script injection, and SQL Injection); Jacquelyn Schmidt; Kenny Jones; Wade Mascia (Web Services and Enterprise services); Aaron Barth; Jackie Richards; Aaron Turner; Andy Erlandson (Director of PSS Security); Jayaprakasam Siddian Thirunavukkarasu (SQL Server security); Jeremy Bostron; Jerry Bryant; Mike Leuzinger; Robert Hensing (reviewing the Securing series); Gene Ferioli; David Lawler; Jon Wall (threat modeling); Martin Born; Michael Thomassy; Michael Royster; Phil McMillan; and Steven Ramirez.
    • Special Thanks To: Joel Scambray; Rich Benack; Alisson Sol; Tavi Siochi (IT Audit); Don Willits (raising the quality bar); Jay Nanduri (Microsoft.com) for reviewing and sharing real world experience; Devendra Tiwari and Peter Dampier, for extensive review and sharing best IT practices; Denny Dayton; Carlos Lyons; Eric Rachner; Justin Clarke; Shawn Welch (IT Audit); Rick DeJarnette; Kent Sharkey (Hosting scenarios); Andy Oakley; Lucas Lavarello; Vijay Rajagopalan (Dev Lead MS Operations); Gordon Ritchie, Content Master Ltd; Chase Carpenter (Threat Modeling); Matt Powell (for Web Services security); Joel Yoker; Juhan Lee [MSN Operations]; Lori Woehler; Mike Sherrill; Mike Kass; Nilesh Bhide; Rebecca Hulse; Rob Oikawa (Architect); Scott Greene; Shawn Nandi; Steve Riley; Mark Mortimore; Matt Priestley; and David Ross.
    • Editors: Sharon Smith; Kathleen Hartman (S&T OnSite); Tina Burden (Entirenet); Cindy Riskin (S&T OnSite); and Pat Collins (Entirenet) for helping to ensure a quality experience for the reader.
    • patterns & practices team members: Naveen Yajaman; Philip Teale; Scott Densmore; Ron Jacobs; Jason Hogg; Per Vonge Nielsen; Andrew Mason; Edward Jezierski; Michael Kropp; Sandy Khaund; Shaun Hayes; Mohammad Al–Sabt; Edward Lafferty; Ken Perilman; and Sanjeev Garg (Satyam Computer Services).

    Building Secure ASP.NET Applications

    • Home Page: http://msdn.microsoft.com/en-us/library/aa302415.aspx
    • Authors: J.D. Meier, Alex Mackman, Michael Dunner, and Srinath Vasireddy
    • Contributors and reviewers: Manish Prabhu, Jesus Ruiz-Scougall, Jonathan Hawkins and Doug Purdy, Keith Ballinger, Yann Christensen and Alexei Vopilov, Laura Barsan, Greg Fee, Greg Singleton, Sebastian Lange, Tarik Soulami, Erik Olson, Caesar Samsi, Riyaz Pishori, Shannon Pahl, Ron Jacobs, Dave McPherson, Christopher Brown, John Banes, Joel Scambray, Girish Chander, William Zentmayer, Shantanu Sarkar, Carl Nolan, Samuel Melendez, Jacquelyn Schmidt, Steve Busby, Len Cardinal, Monica DeZulueta, Paula Paul, Ed Draper, Sean Finnegan, David Alberto, Kenny Jones, Doug Orange, Alexey Yeltsov, Martin Kohlleppel, Joel Yoker, Jay Nanduri, Ilia Fortunov, Aaron Margosis (MCS), Venkat Chilakala, John Allen, Jeremy Bostron, Martin Petersen-Frey, Karl Westerholm, Jayaprakasam Siddian Thirunavukkarasu, Wade Mascia, Ryan Kivett, Sarath Mallavarapu, Jerry Bryant, Peter Kyte, Philip Teale, Ram Sunkara, Shaun Hayes, Eric Schmidt, Michael Howard, Rich Benack, Carlos Lyons, Ted Kehl, Peter Dampier, Mike Sherrill, Devendra Tiwari, Tavi Siochi, Per Vonge Nielsen, Andrew Mason, Edward Jezierski, Sandy Khaund, Edward Lafferty, Peter M. Clift, John Munyon, Chris Sfanos, Mohammad Al-Sabt, Anandha Murukan (Satyam), Keith Brown (DevelopMentor), Andy Eunson, John Langley (KANA Software), Kurt Dillard, Christof Sprenger, J.K.Meadows, David Alberto, Bernard Chen (Sapient)
  • J.D. Meier's Blog

    Inspirational Quotes for 2013


    Inspirational quotes can inspire and lift you if you let them.  After all, inspiration is “to breathe life into.”  And who doesn’t want a breath of fresh air for 2013?

    But first, let’s put a key concept front and center – because it’s paramount to success in today’s arena.

    It’s energized differentiation.

    Brands that stand out communicate excitement, dynamism, and creativity.   That’s true whether it’s your personal brand or the business you’re in.  According to John Gerzema and Ed Lebar:

    “Energy is where the action is. It reflects the consumer’s perception of motion and direction. It sustains the brand’s advantages. High-energy brands create a constant sense of interest and excitement. Consumers sense that these brands move faster, see farther, and are more experiential and more responsive to their needs.”

    It’s time to find your energized differentiation if you want to make this year – 2013 – YOUR year for impact.

    Own it.  Own 2013.  2013 is one giant timebox at your disposal -- show the world what you’ve got.

    So, where do you get this energy?  Where do you get this source of inspiration from?  In a down economy, with more to do than you have capacity for, and changes that you can’t keep up with … where do you find your inspiration to do great things?  Look inside.  Your buttons are already there, and you just need to push them.  But sometimes you need the right words.

    Here are a few of my favorite inspiration quotes, as well as an extreme list of the best inspirational quotes I know:

    1. “Courage doesn’t always roar. Sometimes courage is the quiet voice at the end of the day saying, ‘I will try again tomorrow.’” — Mary Anne Radmacher
    2. “Life is not measured by the number of breathes we take, but by the moments that take our breath away.” — Maya Angelou
    3. “Knowing others is intelligence; knowing yourself is true wisdom. Mastering others is strength; mastering yourself is true power.” — Lao-Tzu
    4. “Let him who would move the world, first move himself.” – Socrates
    5. “Life isn’t about finding yourself. Life is about creating yourself.” — George Bernard Shaw
    6. “What lies behind us and what lies before us are tiny matters compared to what lies within us.” — Ralph Waldo Emerson
    7. “Big thinking precedes great achievement.” — Wilferd A. Peterson
    8. “Winners compare their achievements with their goals, while losers compare their achievements with those of other people.” — Nido Qubein
    9. “Success each day should be judged by the seeds sown, not the harvest reaped.” — John C. Maxwell
    10. “I want to be all used up when I die.” — George Bernard Shaw

    If you want more words that lift us, check out my inspirational quotes page for lists of inspirational quotes from the best of the best.

  • J.D. Meier's Blog

    Patterns and Practices for Distributed Teams


    This post is a summary of my lessons learned from leading distributed teams.  I've managed distributed project teams since 2001, spanning the UK, Argentina, India, and other parts of the world.  While I preferred having everybody together on site around a whiteboard to simplify and improve communication,  flexibility with distributed teams gave me access to the right talent, wherever it may be.

    Key Challenges
    These are some of the most common challenges I faced:

    • Trust
    • Time zone differences
    • Sharing state
    • Changes in direction that have a ripple effect
    • Communication overhead
    • Keeping everybody on the same page
    • Sharing knowledge across the team
    • Partitioning work for enough autonomy but to keep checks and balances
    • Lack of a whiteboard

    Distance didn’t matter as much as differences in time zones.  If the time zone differences were too much, it meant  a lot more information, knowledge and state had to be packaged up and handed over.  However, when you leverage time zone differences, the experience can feel like you carry the baton forward, or, it’s like “The Elves and the Shoemaker,” where you make progress around the clock.

    Success Patterns for Distributed Teams
    The following success patterns helped improve distributed team effectiveness:

    • Forming, storming, norming and performing.   The forming, storming, norming and performing lens helps remind everybody to expect that things smooth out over time.  It’s a simple maturity model for explaining how a team gels.
    • Proxy / On Point.  One of the most helpful patterns for cross-site communication is to have somebody act as the proxy or person on point to funnel key communication.  This is especially important when their are major time zone differences.  The additional patterns, such as the show and tell, and the Monday iterations and daily stand-ups, keep this from being a single point of failure.  Instead, it’s a focal point with some accountability when key information needs to be shared across time zones.
    • Rhythm of results.  Daily, Weekly, and Monthly Results.   While the team might ship every two weeks, thinking in terms of daily, weekly, and monthly results helps set the right mindset.  It creates a bias for action, and it helps get the kinks out of execution.
    • Monday Vision, Daily Outcomes, and Friday Reflection.   This is a simple, high-level pattern to drive results each week.   The approach is to identify 3 key outcomes for the week, as well as 3 key outcomes each day, and to use Friday for learning and reflecting. 
    • Stories.  By focusing on stories, it makes it easy for everybody on the team to think in terms of end-to-end stories over, features or discipline-focused activities.  It’s a great way to balance the customer, technical and business perspectives, as well as help the team converge around common goals.
    • Monday Iteration plans.  Doing iteration plans on Mondays helps set the goals for the week, as well as include everybody’s input.  We keep these to 30 minutes or less.  The outcome is the prioritized set of stories for the week.
    • Daily stand-ups.    Everybody calls in and we go around the team asking 3 questions: 1) what did you get done? 2) what are you getting done today? and 3) where do you need help?  We keep these to 10 minutes or less.  It sets the pace and prevents getting side-tracked.
    • Invoke a teammate.  One goal up front is to make it easy for everybody on the team to reach whoever they need in an ad-hoc way.  Everybody identifies their preferred email, phone number, Skype account, and instant message information, as well as their main working hours.
    • Show and Tell.  I use weekly show and tells as a forcing function.  It gives people on the team a chance to show off their work.  More importantly it’s a simple way to dog food results as well as use the team as a sounding board.  It’s one thing to build something, it’s another to show it to other people and get honest feedback.
    • Wiki Knowledge Bases (KBs.)   Using Wikis helps simplify sharing information.  It keeps people from over-engineering and it’s easy to keep updated.
    • Experience Step-Throughs.   These are simply short slide decks that mock up the experience.  Each deck walks through one story or scenario visually.  We test the experience with customers, and then we walk through as a team, from a technical perspective.  We do this for high-risk stories.   See Experience-Driven Development and Experience Step-Throughs.
    • Distributed pairing.   I’ve found the fastest way to hand over information is to pair people up.  Pairing can also help people get unblocked or keep pace.  It’s not always obvious who pairs up well, so we test different combinations to find what works best for people.  Sometimes it helps to compliment skills.  For example, one person might be great technically, while another might be great with customer experience.
    • Mentoring and buddies.   Helping new people on the team ramp up is a priority.  I’ve found the most effective way is to have people pair on things together.  For metaphors, we call it either “co-pilot” or a “student-driver” model.
    • Email Triage.  As simple as it sounds, it’s been helpful to include “triage” in the title of some emails.  This tells the team that this email thread may be a drill-down or discussion on a topic.  It’s also a quick way for anybody on the team to ask for help, since they may not know who on the team has the answer.
    • One mail.   This is a simple burn down list.  Whenever we’re pushing for a key milestone, it’s helpful to summarize the open work that everybody can see and comment on in a shared way.  To do so, we simply send out an email that lists the current open work to the team and everybody chimes in.  It helps everybody see a tangible finish line.
    • Team project site.   It’s important that the team has one place to look for all the shared information.  The most important information here is the schedule, the deliverables, status, and any key information related to either the deliverables or the project.
    • Lessons Learned.   I’m a fan of sharing lessons learned on the team.  To bootstrap these, we usually just start an email thread and dump our lessons learned.  We then port the lessons into the Wiki for easy reference.  We list the lessons as one-liners in the form of “do’s” and “don’ts".”  It’s a tickler list that provides a backdrop for richer conversations, dialogues, and discussions.
    • Checklists.  Checklists for common tasks have been the best and simplest way to share information across the team.   They help reduce mistakes and carry lessons forward.
    • Best Practices Repository.   We store our best practices for each project in a project-level repository.  At the end of the project, we port the best practices to a shared repository across projects.  This way each project is focused on “best practices,” and these are very specific and detailed.  The all up best practices are more generalized to be useful across projects, and as a starting point for new projects.
    • Reduce friction in the process.   This is a shared goal on the team to get the kinks out of any sticking points in any of the processes.  We try to innovate in the process to save cost or time or improve effectiveness.  This helps us avoid death by a 1000 paper cuts.
    • Video nuggets.   We’ve found that sharing short-videos can help share knowledge on the team very quickly.  These are throw-away videos, but they help capture a snapshot whenever somebody does research in a particular area.

    No single pattern is a silver bullet.  Instead, it’s the composition of these patterns and practices that help improve distributed team communication and overall effectiveness.

    Tools of the Trade
    The following are some common tools of the trade:

    • Email.  This is helpful for sharing technical details, state, and general asynchronous communication.
    • Conference calls.  This is important for Monday iterations, daily stand-ups, Show and Tells, and any other team meetings.
    • Microsoft Shared view.  This is helpful for distributed pairing as well as Show and Tells, so that everybody can see a shared desktop.
    • Slides.  Slideware is a great way to share visuals and consolidate key information or to demo ideas and concepts.
    • Mind Maps.   Mind maps are a great way to pair and map out what the team knows about a given topic.  We’ve also found them useful for creating Work Breakdown Structures, as a team.  This way everybody gets to see the big picture  as a simple map.
    • Instant Messenger.  This is especially helpful for simply knowing when people on the team are around and for ad-hoc synch ups.
    • Skype.   This has gradually replaced setting up conference calls.  In fact, we’ve started having better luck with Skype than conference calls in terms of clarity in some cases.
    • Groove.  This has been our simplest way to share files instead of email.  There are some tricks to learn, but we’ve successfully shared projects of with thousands of files and hundreds of MBs.

    What about you?  … What have been your best lessons learned when it comes to distributed teamwork?

  • J.D. Meier's Blog

    Ten Steps for Structured Project Management


    In the book "How to Run Successful Projects III, The Silver Bullet", Fergus O'Connell identifies ten steps to structured project management:

    1. Visualize the goal
    2. Make a list of jobs
    3. There must be one leader
    4. Assign people to jobs
    5. Manage expectations, allow a margin of error, have a fallback position
    6. Use an appropriate leadership style
    7. Know what's going on
    8. Tell people what's going on
    9. Repeat steps 1-8 until step 10
    10. The Prize

    These ten steps help make project management consistent, predictable, and repeatable.  The first five steps are about planning your project.  The last five are about implementing the plan and achieving the goal.  These steps are based on 25 years of research into why some projects fail and others succeed.

    I like to checkpoint any project I do against these steps.  I find that when a project is off track, I can quickly pinpoint it to one of the steps above and correct course.

  • J.D. Meier's Blog

    Waterfall to Agile


    As I help more people go Agile, I try to simplify the most important concepts.

    For me, one of the most important changes in Agile is what it means to the product development cycle. 

    I think a picture is worth a 1,000 words.  I’ve put together a couple of simple visuals to show what it means to go from a Waterfall development approach to an Agile development approach.


    Contrast the Waterfall Model with the Agile Model:


    With these visuals, I attempted to show a couple of key ideas:

    1. Waterfall uses serialized phases, where one activity doesn’t start until the previous activity completes.  Agile shifts to a focus on iterations, where each iteration performs activities in parallel (such as requirements, design, development, and test).
    2. Each iteration produces a build.  Rather than wait until the end, throw something over the wall, and hope it meets expectations, the output of each iteration can be used to validate with users, as well as deliver incremental value.
    3. By moving away from Big Design Up Front (BDUF) and way from Big Bang at the end, Agile helps to de-risk the project, respond to changing requirements, and flow value along the way.

    If you need to keep up with the pace of change, deal with changing requirements, keep up with user demands, while shipping value faster, Agile might be what you’re looking for.

  • J.D. Meier's Blog

    2007 Post Roundup


    I'm in the process of analyzing my blogging strategies and practices.  As part of the process, I'm doing a post roundup for this blog.  I did a 2007 post roundup for my Book Share blog and it helped me get a bird's-eye view of my post content.  Seeing my posts at a glance, helps me both rekindle the year and spot patterns for improvement.  With the benefit of 20/20 hind-sight, I then carry the lessons forward.  Here's my 2007 posts at a glance:

    January 2007

    February 2007

    March 2007

    April 2007

    May 2007

    June 2007

    August 2007

    September 2007

    October 2007 - Posts

    November 2007

    December 2007

    Technorati Profile
  • J.D. Meier's Blog

    How To Use ASP.NET Forms Auth with SQL Server on Windows Azure


    This post is a quick step through of creating a Windows Azure cloud project that authenticates using ASP.NET Forms Authentication with SQL Server as the user store.

    The core steps are very much the same as my previous post How To Use ASP.NET Forms Auth with Azure Tables.   The key difference is step 7 and step 8, which specify the connection to SQL Server.

    Summary of Steps
    Here are the steps at a glance:

    • Step 1. Create a New Cloud Service Project.
    • Step 2. Add a Login Page.
    • Step 3. Create a Way for New Users to Register
    • Step 4. Configure ASP.NET to use Forms Authentication
    • Step 5. Configure ASP.NET to restrict Anonymous Users
    • Step 6. Set up the SQL Membership Database
    • Step 7. Add the SQL Connection String
    • Step 8. Configure ASP.NET to Use the SQL Membership Provider
    • Step 9. Add Test Code to Page_Load to Show the Forms Authentication Details
    • Step 10. test registering a new user and logging in to the application

    Here we go …

    Step 1. Create a New Cloud Service Project.
    In this step, you create a new cloud service project in Visual Studio:

    1. Start Visual Studio, from the menu select  “File” then click “New’ and then click ‘Project”
    2. In the “New Project’ dialog box, expand ‘Visual C#’ (or Visual Basic, if you are using it) in the ‘Project Types’ section, and select “Cloud Service”.
    3. In the ‘Templates’ section choose “Windows Azure Cloud Service” template, set the location, Name it as FormsAuthSample and click the “Ok” button.
    4. In the “New Cloud Service Project” dialog box, select “ASP.NET Web Role”, and click the “>” button to add it to the solution.  Then click the “Ok” button.  This will create a sample cloud Web Application, which is ready to be hosted in the cloud with all required configuration files etc.
    5. Run and verify that it works fine.

    Step 2. Add a Login Page.
    Use Solution Explorer to add a new Web form named Login.aspx to the WebRole1 site.

    Step 3.  Create a Way for New Users to Register
    Add the following two lines into the Login.aspx <form> tag

        <asp:Login runat="server" />
        <asp:CreateUserWizard runat="server"></asp:CreateUserWizard>

    It should resemble the following:

        <form id="form1" runat="server">
        <asp:Login runat="server" />
        <asp:CreateUserWizard runat="server"></asp:CreateUserWizard>

    Step 4. Configure ASP.NET to use Forms Authentication
    In Web.config, add the following line insde the <system.web> tag:
            <authentication mode="Forms" />

    Step 5. Configure ASP.NET to restrict Anonymous Users
    In Web.config, add the following line inside the <system.web> tag:

            <deny users="?" />
            <allow users="*" />

    Note – The preceding configuration allows only authenticated users to access the application. The "?" indicates unauthenticated users and the "*" indicates all users. By denying unauthenticated users, any requests made by unauthenticated users are redirected to the login page. The loginUrl attribute of the <forms> element determines the name of the login page. The default setting of this attribute is Login.aspx.

    Step 6. Set up the SQL Membership Database
    In this step, you configure the SQL data store for membership.  This is accomplished through the use of the aspnet_regsql.exe utility.  Details on aspnet_regsql.exe can be found at: http://msdn.microsoft.com/en-us/library/ms229862(VS.80).aspx

    Step 7. Add the SQL Connection String
    In Web.config, add the connection string to the connectionStrings tag using the <add> tag as follows:

        <add name="MyLocalSQLServer" connectionString="Initial Catalog=aspnetdb;Data Source=MyServerName;Integrated Security=SSPI"/>

    Step 8. Configure ASP.NET to Use the SQL Membership Provider
    In this step, you configure the Web application to use the SQL Membership Provider.

    In Web.config, add the following lines inside the <system.web> tag:

        <membership defaultProvider="MySqlMembershipProvider" >
            <add name="MySqlMembershipProvider"
                 type="System.Web.Security.SqlMembershipProvider, System.Web, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

    Step 9. Add Test Code to Page_Load to Show the Forms Authentication Details
    Add a using statement to Default.aspx.cs in your WebRole1 project to add a reference to  System.Web.Security.
    Add the following code to Page Load of Default.aspx.cs in WebRole1:
    protected void Page_Load(object sender, EventArgs e)

        Response.Write("Hello, " + Server.HtmlEncode(User.Identity.Name) + "<br />");

    Step 10. test registering a new user and logging in to the application

    1. Run the project by using the F5 key (this runs the project in Debug mode.)
    2. Create a new user.  On your first visit, you need to create a new user (e.g. “bob”.)  Note that the password rules by default are alphanumeric plus one non- alphanumeric (for example, "password!")
    3. Login to the application.  Sign in with your new username and password pair.

    The Web application should return something along the following lines:

    Hello, waldo

    Share your feedback or results in the comments.  We’re path paving along with you.

    My Related Posts

  • J.D. Meier's Blog

    ASP.NET 2.0 Internet Security Reference Implementation


    The ASP.NET 2.0 Internet Security Reference Implementation is a sample application complete with code and guidance.  Our purpose was to show patterns & practices security guidance in the context of an application scenario. We used Pet Shop 4 as the baseline application and tailored it for an internet facing scenario.  The application uses forms authentication with users and roles stored in SQL.

    Home Page/Download

    3 Parts
    The reference implementation contains 3 parts:

    1. VS 2005 Solution and Code 
    2. Reference Implemenation Document
    3. Scenario and Solution Document 

    The purpose of each part is as follows:

    1. VS 2005 Solution and Code - includes the Visual Studio 2005 solution, the reference implementation doc, and the scenario and solution doc.
    2. Reference Implemenation Document (ASP.NET 2.0 Internet Security Reference Implementation.doc) - is the reference implementation walkthrough document containing implementation details and key decisions we made along the way.  Use this document as a fast entry point into the relevant decisions and code.
    3. Scenario and Solution Document (Scenario and Solution - Forms Auth to SQL, Roles in SQL.doc) - is the more general scenario and solution document containing key decisions that apply to all applications in this scenario.

    Key Engineering Decisions Addressed
    We grouped the key problems into the following buckets:

    • Authentication
    • Authorization
    • Input and Data Validation
    • Data Access
    • Exception Management
    • Sensitive Data
    • Auditing and Logging

    These are actionable, potential high risk categories.  These buckets represent some of the more important security decisions you need to make that can have substantial impact on your design.  Using these buckets made it easier to both review the key security decisions and to present the decisions for fast consumption.

    Getting Started

    1. Download and install the ASP.NET 2.0 Internet Security Reference Implementation.
    2. Use ASP.NET 2.0 Internet Security Reference Implementation.doc to identify the code you want to explore
    3. Open the solution, Internet Security Reference Implementation.sln, and look into the details of the implementation
    4. If you're interested in testing SSL, then follow the instructions in  SSL Instructions.doc.


  • J.D. Meier's Blog

    Any Activity Can Be Turned into a Game


    Any activity can be turned into a game, if it meets the right criteria.  Wise words from Dan Cook:

         “If an activity can be learned…

         If the player’s performance can be measured…

         If the player can be rewarded or punished in a timely fashion…

         Then any activity that meets these criteria can be turned into a game.”

    Gamification is hot.  I called it out in my Trends for 2013 roundup.   When all things are equal, fun is a differentiating factor.

    You Might Also Like

    Microsoft Secret Stuff

    The Gamification of Education

    Wearable Computing

  • J.D. Meier's Blog

    Mapping Out the Microsoft Application Platform at a Glance


    “People only see what they are prepared to see.” - Ralph Waldo Emerson

    At the beginning of the year, I like to take a quick survey of the Microsoft application platform.  It helps me figure out where to put my bets and where to explore.  It’s a “see the forest, from the trees” exercise.

    And oh, what a forest it is.  The beauty is it covers a wide spectrum and supports so many scenarios.  The challenge is finding your way around.  To find my way around, I map out the platform and I think in terms of application types:

    • Web applications
    • Mobile applications
    • Rich Internet Applications (RIA)
    • Rich Clients
    • Web Services

    By thinking about deployment targets such as cloud or desktop or browser or phone, etc. it makes it very easy to get in the ballpark in terms of context and technologies very quickly.  From there, I can worry about things like presentation or data access stacks or language platforms (native, .NET, or scripting.)   It’s also a quick way to explore relevant quality attributes (security, performance, reliability) or evaluate architectural styles.  In other words, it’s a way to hack through information overload and cut to the chase.

    Microsoft Application Platform at a Glance
    This is my draft map of the platform.   It’s a strawman that I use to walk the platform, find clusters of technologies, figure out what’s changed, and evaluate the latest story.  It’s easier for me to have conversations about the platform with customers or product teams when I start with a shared frame.  The hard part is putting the initial map together.  The easy part is improving it through feedback.  If something is missing, it’s easy to add.  If something is wrong, it’s easy to fix.

    As simple as the map looks, it compacts a lot of information.  I stuck the code names in where I could find them.   Enjoy …

    Category Items
    Application Infrastructure
    ALM (Application Life-Cycle Management)
    App Frameworks / Extensions
    Collaboration / Integration / Workflow
    Data Access
    Database Server
    Development Tools


    OBA (Office Business Applications)
    Rich Client
    Rich Internet Applications (RIA)
    Web Server
    Windows Server

    Where To Find Out More
    I’m a fan of teaching people to fish, as well as giving some starter fish.  Aside from people, events, and social media, the three best ways I know to figure out what’s happening on the platform are Wikipedia, Channel9, and the MSDN Dev Centers.  I started you out with some pages below …


    Channel9 Training Centers

    MSDN Dev Centers

Page 4 of 47 (1,166 items) «23456»