Wednesday, May 23, 2007

Visual Studio Team Foundation Guide is Available

For the past couple of months I've been working with Microsoft on a guide to help development teams use Visual Studio Team System more effectively. Today we released an early version of the guide, a 360 page book, in PDF form to the CodePlex site.

This project has allowed me to combine two of my passions: team software development and personal effectiveness. I've learned a lot about how to write a book; how to avoid getting too lost in the details or too intimidated by the big picture. Writing many hundreds of pages can be daunting if its looked at all at once! I've always enjoyed writing, but remarkably this is only my second contribution to a real book. My first was a chapter in a rock climbing guide to Montana, which is still available here on Amazon.com. I imagine there will be many more to come.

If you are interested in team development with Visual Studio, you can download the guide here: http://www.codeplex.com/TFSGuide.

Lessons Learned
I learned the following lessons on writing which I intend to apply to future projects:
  • Passion. Pick a topic that you are passionate about, something you can sustain energy and focus on for months at a time.
  • Outline. Create an outline of what the book should cover so you know how each day's work contributes to the larger picture.
  • Iteratively Render. Don't try to write each chapter from start to finish. Instead, start by writing rough drafts that cover each chapter of the book. This process helps you maintain cohesion through the book and keeps you from getting bogged down in any one place. Once you have the rough chapters in place you can iterate over time to improve and flesh them out. Its like building a skeleton first, then building up the layers of flesh over time.
  • Get Help. Its hard to write a high quality book on your own. At the very least you need people to review your work, bounce ideas off of, tell you when you are writing crap, and edit out your mistakes. Don't try to do it all yourself.
  • Consistency. Spend time writing every day until you are done, don't let up.
  • Quality. Don't get stuck on perfectionism, know when your writing is good enough. Sometimes I spend so much time revising my writing that it ends up worse than what I started with.

Thursday, May 17, 2007

Focus on the Solution Instead of the Goal – Effectiveness Anti-Pattern

In my last post, I explained what effectiveness anti-patterns are and why they are useful. In this post I’ll give you an example of an anti-pattern that I’ve seen cause problems for a lot of people – including myself! If you are having trouble reaching your goals, perhaps you’ll recognize this anti-pattern in yourself and use the solution to become more effective.

Focus on the Solution Instead of the Goal

Problem

The anti-pattern occurs when you are more committed to the solution that you think will achieve your goal than to the goal itself. Once the solution has been found unworkable you assume the goal is unachievable, or you ignore the evidence and keep using the unworkable solution.

Context

  • You are working toward a clearly defined goal. For example you want to get promoted, buy a new car, move to a new town, get a date, or become financially independent.
  • You’ve identified a solution that you think will allow you to achieve your goal. For example, you think that if you work really hard you’ll get a promotion.
  • You are committed to the solution; you’ve put time and energy into it.
  • After time, evidence suggests that your solution is not working.

Forces

  • You are having trouble letting go of the ‘sunk-cost’, all the time and energy you’ve already committed to the unworkable solution
  • You are focusing on the current strategy instead of the larger goal
  • You are having trouble thinking flexibly

Solution

  • Define criteria for success. When you identify your goal, build a list of criteria that defines it. Instead of just saying you want a promotion, define the criteria you want to meet in order to feel the goal has been accomplished. Be precise so you know exactly what you are working for. For instance do you want more pay, a new title, more responsibilities and challenge, more recognition? Ask yourself lots of ‘why’ questions. Why do you want a new title? Why do you want more recognition? You may learn that a promotion isn’t the only way to achieve what you are looking for. This realization will give you more flexibility in meeting your goal.
  • Create multiple strategies. After you define your goal, brainstorm multiple strategies and solutions. These strategies can serve as backup to the preferred solution if it doesn’t work.
  • Measure progress. Measure your progress against the criteria you’ve defined. This will allow you to determine the effectiveness of the strategy you are using. By keeping the defined goal-criteria in the forefront of your mind you’ll stay focused on the goal and will be more willing to switch strategies as necessary.
  • Plan for failure. Hope for success, but plan for failure. Do your best to achieve your goal, but make sure you have a contingency plan in the case of failure. Don’t ever put yourself in the position that you must achieve your goal and have no fallback position.
  • Take risks. Encourage yourself to think creatively and don’t be afraid to take risks. If you punish yourself too severely for failure you'll tend to slip into a pattern of rigid thinking due to your increased fear. Unfortunately, this often results in additional failures and reduced effectiveness. If you can embrace your creativity and achieve a reasonable level of risk-taking you'll be more flexible and less likely to become stuck in this anti-pattern.
My Related Posts

Wednesday, May 16, 2007

Effectiveness Anti-patterns

As defined by Whatis.com, “An anti-pattern is a frequently used, but largely ineffective solution to a problem… Just as a viable pattern describes the way from a problem to a valid solution, an anti-pattern describes the way from a problem to a poor solution.”

An effectiveness anti-pattern is a common pattern of behavior that leads to reduced effectiveness. It’s useful, and fun, to identify these anti-patterns in myself and others and document them so that I can avoid them in the future.

I’ll write follow-up posts with some of the anti-patterns I’ve noticed. Each anti-pattern will contain following sections:

  • Title – A descriptive name for the anti-pattern.
  • Context –A description of the conditions in which this anti-pattern normally occurs.
  • Problem – A description of the resulting problem, what goes wrong when you use this anti-pattern.
  • Forces – A description of what leads people to use this anti-pattern.
  • Solution – A description of how to break the anti-pattern and move to a workable solution.
  • Example – An example of the anti-pattern in practice.

The neat thing about an anti-pattern is that it reduces the problem down to bare bones, making it easier to spot and fix.

If you've noticed any anti-patterns in your work or personal life, leave me a comment - I'd love to hear about them!

Wednesday, May 9, 2007

Mountain Bike Lessons – pt. 2

In my last post I discussed lessons I’d learned from racing mountain bikes. In this post I’ll show how some of these lessons have translated into improvements in my overall effectiveness.

  • Get a good start. In a race the first minutes are critical. A poor start makes it twice as hard to make up for lost time later.
      • When starting a new job or a new project I've found it is most effective to put forth maximum effort at the start and then settle into a more sustainable pace.
  • Measure. When training for a race I measure my progress over time so I can see if I am on track to meet my goals.
      • I focus my energy on areas that I can measure and see improvements on over time.
      • I make it a point to understand how my manager will measure my success.
      • When reviewing my goals I ensure they are aligned with the goals of my team and the goals of my company. I feel most motivated when I know my efforts are contributing measurably toward larger organizational success.
  • Keep energy up. During a race I keep my body well fueled or I am unable to keep up the pace.
      • I have found a sustainable pace for myself at work. Long hours may give me a short term productivity boost but if I'm not working at a sustainable pace my productivity suffers in the long term.
      • I pay attention to the areas of my life that fuel me. If I don’t make time for family, friends and exercise I lose the driving energy that keeps me engaged at work.
  • Recovery. During post-race recovery I give my body everything it asks for. If I’m hungry, I eat till I am full. If I am tired I sleep.
      • I listen to my body and give it what it needs. I focus on intuitive eating, intuitive sleeping, and daily exercise. The combination keeps me mentally sharp.
  • Frequency. The more often you show up at the starting line the more likely you are to improve and win.
      • Success can be as simple as showing up each day and doing my best.
My Related Posts

Tuesday, May 8, 2007

Mountain Bike Lessons – pt. 1

I've taken up moutain bike racing over the past couple of years. Though I'm not an expert, I've realized that the lessons I’ve learned from racing have made me more effective in other areas of my life. For those of you who are interested in learning more about bike racing, I’ll list what I’ve learned. For those of you with no interest in racing I’ll use my next post to explain how these lessons can be used to improve effectiveness in other areas so you can reap the rewards without all the physical exertion.

Training

  • Intense Training. I train at an intense race pace at least once a week so my body adapts to high exertion levels and learns how to recover quickly.
  • Moderate Training. I ride at a moderate pace for distances that are further than a normal race at least once per week in order to train my heart, lungs, and legs for endurance.
  • Easy Training. I spin easily at least once a week to improve my recovery time.
  • Supplemental Exercises. I perform squats and lunges at least once a week to build power for rapid acceleration and sprinting. I use no weights, just my body weight and do three sets of each exercise with enough repetitions so that my legs are tired the next day.
  • Measure. I measure my progress over time so I can learn what works well for me and what doesn’t. I simply use a stop watch and an excel spreadsheet to track my time on weekly bike rides. Later I may use a heart monitor and GPS to get more data and more accuracy.

Racing

  • Warm up. I warm up for 10 minutes prior to the race. During warm up I ride at 50-60% of my maximum pace to make sure I am thoroughly warmed up. I try not to time it too early or else I will cool down before the race starts. I also try not to time it too late so I don't miss the start. I've found it can be scary to warm up for so long, it feels like I am using up energy that should go toward racing. However, I've learned if I jump into a race cold I put my body into a state of shock and then spend a good portion of time just recovering from the hard start.
  • Get a good start. I ride as fast as I can at the start in order to secure a good position. Passing areas are at a premium and it is bad to get stuck behind someone while the front-runners gain a commanding lead. On the other hand i've learned that I don’t want to get so far ahead that I run out of steam and burn out early.
  • Use psychology. I want the riders behind me to feel I am unbeatable even when I am suffering and pushing myself to the very limit. I try not to let other racers see me suffer. If I am in twisty terrain I give little bursts of speed when the riders behind me can't se me and and then settle back into the saddle again, this makes my pace look faster than it really is.
  • Keep energy up. I consume electrolytes before and during the race to reduce the risk of cramps. Endurolytes from Hammer Nutrition have worked well for me both before and after a race. An energy drink, such as Cytomax, helps keep energy up during the race.
  • Recovery. I eat well, drink lots of water, and stretch after the race so I feel ok the next day.
  • Frequency. I go to as many races as I can, nothing teaches how to race better than getting out there and doing it.