Using Data to Tune a Software Team Jonathan Alexander VP Engineering, Vocalocity
Speaker Bio: Jonathan Alexander VP Engineering – Vocalocity Leading US provider of hosted VoIP PBX for small businesses Cloud based software Java/C++, Linux, HornetQ, Memcached, MongoDB, PostgreSQL Team of 35 engineers (development and test) all based in Atlanta Agile methodology, bi-weekly sprints and releases Project management tools: JIRA, Greenhopper, SVN, Google Docs, MS Exchange Past experience: vmSight (acquired), Epiphany, Radnet (acquired) Author of Codermetrics (OReilly 2011) and various related articles
Question #1 If you want to improve something, where do you start?
Question #1 If you want to improve something, where do you start? Answer: Observation Example: If we want to find bottlenecks in our software, we test and gather performance statistics A historical record of observations produces data that we can analyze to improve Observations from multiple perspectives may help The process of observation and analysis is nothing to fear Self-reflection can be painful but useful
Question #2 What is worth observing and paying attention to?
Question #2 What is worth observing and paying attention to? Answer: We cant be sure Example: Slow application UI could be due to a problem at any layer Good strategy is to observe and track anything that might be relevant Partially depends on what our goals are and how we measure success
What Qualities Might You Want to Improve on a Team? Efficiency Quality Innovation What Factors Contribute to Success of a Team? Skill and Experience Morale Teamwork and Communication Focus and Effort Creativity and Inspiration Lack of Distraction
What Qualities Might You Want to Improve on a Team? Efficiency Quality Innovation What Factors Contribute to Success of a Team? Skill and Experience Morale Teamwork and Communication Focus and Effort Creativity and Inspiration Lack of Distraction Know How to Get Data Not Sure How to Get Data
Where Do You Get Data about a Software Team? Obvious Places Task Management System Bug Tracking System Customer Issue Tracking System Version Control System
Where Do You Get Data about a Software Team? Obvious Places Task Management System Bug Tracking System Customer Issue Tracking System Version Control System Less Obvious Places Calendar and System Phone System (Call Logs) Performance Reviews Social Networks and Forums Survey System
How Do You Get Data about a Software Team? Pull from active systems (automated or manual) First-hand observation (self-observation gathered through reports or surveys) Second-hand observation (gathered through reports or surveys)
Data Gathering and Data Analysis for Software Teams Can lead to new discoveries and understandings Helps increase focus – the 7% Rule
Seek to Categorize, Not Measure Identify individual and team strengths and weaknesses Statistics: look at standard deviation (bell curve) or relative rank more than raw numbers
Performance Review Data
Performance Review - Department Analysis
Performance Review - Team Analysis
Self-Rating Survey
Self-Rating Survey - Department Analysis
Self-Rating Survey - Team Analysis Dev Team 1Dev Team 2QA Team
The Future – More Tools for Data Gathering & Analysis
Putting Analysis to Work to Tune a Software Team Mentoring -Align individuals with desired strengths with others who seek to develop Training -Consider training and development beyond just technical areas Shifting -Possibly re-align teams or roles to achieve better balance Hiring -Align and analyze hiring to strengthen team weaknesses
Questions? For more resources visit codermetrics.org