Name of Tutorial
Reading Tea Leaves: Demystifying Your Metrics
Intent
Metrics can make software development a rich, reflective, cognizant adventure. On the other hand, code metrics can also be misused to bludgeon and abuse the team. In the tutorial, you will learn how to successfully employ metrics with an agile attitude. Additionally, you will find out how to avoid getting exactly what you measure for. Metrics can help you and your team stay on the path of continuous agile improvement.
Summary
So you think metrics are going to save your project? In this tutorial, you will learn to distinguish pragmatic advice from mystic measures. You will run various code analysis tools, which will:
- Raise the refactor alarm
- Restructure technical debt
- Archive project trends
- Illuminate the big picture
- Spice up retrospectives
- Establish a team lore
You will see interpretation of metrics and trends for a number of multi-year projects with various degrees of "agility". If possible, bring your laptop with your favorite source code... and prepare yourself for surprising revelations.
Audience
- Those who love metrics
- Those who hate metrics
- Those who can't decide how they should feel about metrics
Outline
The following is the presentation outline for the tutorial. At times during the presentation, hands-on exercises will be done to reinforce the concepts being learned. For example, attendees may be asked to use a metrics-gathering program to search for the longest function in their favorite source code, then asked to explain how it can be refactored.
We will continuously be evaluating the metrics discussed in terms of how they: Raise the refactor alarm, restructure technical debt, archive project trends, illuminate the big picture, spice up retrospectives and establish a team lore.
- Introduction to metrics
- Create lists of metrics you have used
- Useful
- Abusive
- Categorization of metrics
- Percentages
- Rankings
- Trends
- Alerts
- Line Counts
- Methods
- Files
- Project
- Version Control Statistics
- Build System Statistics
- Code coverage
- Emma
- Commercial tools
- Testing
- Test counts
- Failing test counts
- Duplication Detection
- PMD/CPD
- Custom
- Other Details
- Cyclomatic Complexity
- Longest function
- Average function length
- Blocks of dead code
- Uncalled methods
- Conditionals
- Imports/Include Dependencies
- TODO comments
- 30 second wrap-up
- Conclusion
Material to be distributed
- Lists of commercial and open-source metrics tools with their applicability.
- Source code to the metrics tool created by the presenters
- Slides from presentation
- Examples of historical metrics in real-world projects
About the organizers
Zhon and Jeff have been gathering practical source code metrics on green-field and legacy enterprise software projects with various degrees of agility for 4 years (before it was hip to be agile), and have authored their own open-source metrics program in Ruby.
Jeff Grover has worked in the software industry for 13 years and is currently a Principal Engineer for Symantec's enterprise security products. He has participated in 'Extreme Fishbowl' presented at XP/Agile Universe, UJUG, and XPUtah. He represented Symantec on the Agile Experiences panel of XP/Agile Universe 2002.
Zhon Johansen co-founded Acadyn, a company helping small businesses with IT and information security needs. He has studied, practiced, and taught Extreme Programming since early 1999. He also co-founded XPUtah in December of 2001. He organized and presented 'Extreme Fishbowl' to XP/Agile Universe, UJUG, and other conferences. He also helped coach 'XP for a Day' presented at XP/Agile Universe.
Zhon & Jeff both presented "Making money with (or without) software" at the 2004 Agile Development Conference.
