Personal retrospective on 2007, one long iteration

Happy new Year!

As the 2007 comes to a close and we start off 2008,I thought it would be fitting to a do a retrospective on how things went for me. In agile software development, retrospectives are meetings usually held at the end of each iteration where the team looks back on how things went for the project; what worked, what can be improved, and how to incorporate the take-aways into the project to improve future iteration. Retrospectives are invaluable because they keep the team focused and constantly striving for improvement, also they prevent problems from snowballing to the point where there’s no hope in dealing with them. Retrospectives are something we rely heavily on in patterns & practices.

This personal retrospective is a bit biased since it’s only coming from me and not from all the people who have worked with me. However, regardless I think it’s a good exercise to try to step outside yourself and try to take an objective look. Also it’s a really good idea to do these much more often than once a year ;) I actually constantly reflect on how things are going within my life / work and look at where I can improve, I just don’t usually blog about it. For this retrospective I am going to restrict it around the work I’ve been doing in p&p, and keep the focus on myself rather than the rest of the team, although the team certainly had a part in many of these. I might follow up with a retrospective on life outside of p&p, but no guarantees.

Disclaimer: I make no claims about the organization (or lack of) of this list.

What went well:

  • Joined patterns & practices and survived 9 months :-)
  • Quickly got up to speed on WCSF and SCSF
  • Shipped SCSF 2007, Web Client Software Factory 1.1
  • Formed WCSF customer advisory board
  • Created new Web Client bundling strategy and shipped several bundles (Autocomplete, Validation, Composite Web Client Library, MVP Bundle, etc…)
  • Created SCSF / WCSF Knowledge Bases
  • Formed a better trusting relationship with my team
  • Tighter collaboration with Scott Guthrie’s org around our plans
  • Joint work with UIFX and WPF teams around Acropolis / Composite WPF work
  • Presented at two major events (was supposed to be three ;-) )
  • About 25 customer engagements / presentations including 5 in-depth customer visits
  • About 70 blog posts
  • Forged good relationships with several partners
  • Worked with the community to form WCSF and SCSF contrib. projects
  • Engaged with many key members of the community including our critics, in order to see how we can address their concerns.

What needs improvement:

  • Better work-life balance
  • Not procrastinating (in everything!)
  • Staying focused
  • Managing my email (and not being addicted to my smart-phone)
  • Being proactive not reactive
  • Listening rather than speaking
  • Listening rather than speaking
  • Listening rather than speaking
  • Providing the team and my executive management with a vision for the project and of what success looks like.
  • Creating good user stories
  • Not randomizing the team
  • Really representing the customer
  • Compiling customer feedback for the team
  • Keeping track of my assigned work items in TFS
  • Being in the team room
  • Attending daily stand-ups
  • Working with the team, not overstepping bounds
  • Making our deliverables easier to consume
  • Making our deliverables lighter weight
  • Making our deliverables easier to work with OS offerings and existing home grown frameworks / libraries
  • Understanding who our customer really is
  • Understanding our customer’s needs over wants
  • Providing more visibility as to the client team plans and roadmap both internally and externally
  • Better utilization of our advisory boards
  • Cleaning up our CodePlex wiki, making it easier for customers to find what they are looking for
  • More topic-oriented videos
  • Presenting skills, especially live coding and handling demo failures in front of 500+ people :-(
  • Building better slide decks (powerpoint)
  • Blogging efficiency and quality
  • Evaluating our drops
  • Keeping up my coding skills, using the new platform technologies like WPF, WCF, WF, LINQ
  • Keeping up with OS efforts like NHibernate, Castle, Prototype, Scriptaculous, MBUnit, etc.
  • Learning new approaches to development like DDD, BDD
  • Learning new languages

Now comes the hard part, which is what to do with this information? For some of these I have no clue, while for others, I have a few ideas which I’ll list below. I’d welcome any of your suggestions.

  • Keep working on listening (lifelong challenge)
  • Stop trying to stay on top of e-mail. Read what I can, archive the rest.
  • Make a concerted effort to be in the team room and to at least call in for the daily stand-ups
  • Get over my TFS explorer fears
  • More up-front time to define the vision / stories rather than scrambling once development has started. This will solve many of the team related issues.
  • Drive more team focus on patterns and RIs rather than generic reusable frameworks
  • Drive less features, simpler apis and more documentation on usage of those apis
  • Create more user stories around usability and consumption of our offerings
  • Create more user stories around using our deliverables with OS offerings like Castle, Windsor, NHibernate, etc.
  • More focus on patterns & real-world application of those patterns rather than generic reusable frameworks that implements those patterns
  • Be more selective about who is on the advisory board (Quality not Quantity). Make sure we have the “right” people including key community folks (ALT.NET, MVPS, etc) to give us the feedback we need. (this will also solve multiple problems)
  • Hold advisors accountable to evaluating the bits / guidance
  • Reduce the tax of prepping for advisory board meetings, making the meetings less focused on presentations and more focused on feedback and discussion
  • Outsource maintaining the wiki
  • Outsource creation of 5-min topic videos
  • Create a blogging queue and start writing posts incrementally rather than in one shot.
  • Blog more smaller, frequent posts about or direction and decisions.
  • More preparation for presentations and demos
  • Dedicated amt of time per week to evaluate our drops
  • Dedicated amt of time per week (say an hr a day) to learn new languages, tools and concepts

I wish all of you a great 2008 and look forward to knocking off at least some of the items on this list . What's your retrospective look like? ;-)