Background example: A web forms app that compiles into a single 4MB DLL and 80% of all code is in code-behind event handlers.
As leaders and change agents, how do we promote an environment where everyone on a team is an active participant in refactoring?
[Aside: I think between the "Why is this taking so long?" and "Apprenticeship" discussions, all of the wind got taken out of sails for this topic... that and there was something else going on about Movies as a Metaphor that seemed to draw away many of the opinionated attendees! :) I'm really interested in how this universal challenge has been met and overcome in your environment, so even if you didn't attend this session, please feel free to update this page.]
Inhibitors
Siloed development
Egos
"Turn or Burn" preaching
"It's the way we've always done things."
Solutions seem to be implemented when the pain reaches a certain threshhold within a team... and some teams have high tolerances for pain! What techniques can be used to implement change before pain?
Solutions
Pair Programming
Try a new framework on new projects to level the playing field/remove preconceptions
Testing is critical prior to refactoring (NBuilder)
Host a team Dojo/Brown Bags
Host team book reviews
Limit the scope of refactoring. Small improvements will add up over time. As will small worsenings, by the way.
Get into the habit of refactoring often.
Plan for some targeted refactoring before working on a new feature to pave the way for adding that new feature more easily
Be clear about when you are refactoring and when you are adding new functionality. Mixing the 2 activities is a recipe for confusion and pain
Resources
Fearless Change: Patterns for Introducing New Ideas - I know we didn't discuss this directly in the session, however in hindsight this would have been perfect fodder for the theme. This book presents a series of patterns for assessing the work environment, and recommended soft skills that can be applied to promote change. One way to think of it is like design patterns, but for personal interactions instead of code.
Comments (0)
You don't have permission to comment on this page.