This is the abstract from a short paper I write for the Managing Technical Debt workshop at the International Conference on Software Engineering (ICSE 2013) in San Francisco. A preprint of the paper is available here.
Understanding the impact of technical debt is critical to understanding a team’s velocity. For organizations with multiple teams and products, the impact of technical debt combines non-linearly to impact the organization’s velocity. We can think of the capacity of a team as a portfolio. Not all of that capacity can be invested in new features or defect fixing, without incurring negative consequences. A portion of the team’s capacity needs to be invested in the ongoing management and reduction of technical debt. This paper describes a simple technique for visualizing, quantifying and tracking a team’s technical debt as a portion of their overall capacity investment. The knowledge and insights gained through this technique help with better capacity planning, improved forecasting, and helps to justify the business case for investing in managing and reducing technical debt.
This paper described a technique for considering the capacity of your team as an investment portfolio. Investing in technical debt management and reduction needs to be a part of a healthy portfolio. If neglected, a team’s Technical debt will mount over time and impact their feature velocity. Consider the different ways a team could invest its time as Real Options. Make investments in debt reduction explicit and visible, and track actual investments at regular periods. Taken to an organization level, the organization needs to be ware of the amount of technical debt it has, and the overall strategy for investing in managing and reducing that debt.
This is the abstract from a paper I co-wrote with Kieran Conboy and Meghan Drury. It was published in the June 2012 issue of Journal of Systems and Software. The full paper is available from Elsevier.
Drury, M., Conboy, K., and Power, K. (2012). “Obstacles to decision making in Agile software development teams.” Journal of Systems and Software, 85(6), 1239-1254.
The obstacles facing decision making in Agile development are critical yet poorly understood. This research examines decisions made across four stages of the iteration cycle: Iteration Planning, Iteration Execution, Iteration Review and Iteration Retrospective. A mixed method approach was employed, whereby a focus group was initially conducted with 43 Agile developers and managers to determine decisions made at different points of the iteration cycle. Subsequently, six illustrative mini cases were purposefully conducted as examples of the six obstacles identified in these focus groups. This included interviews with 18 individuals in Agile projects from five different organizations: a global consulting organization, a multinational communications company, two multinational software development companies, and a large museum organization. This research contributes to Agile software development literature by analyzing decisions made during the iteration cycle and identifying six key obstacles to these decisions. Results indicate the six decision obstacles are unwillingness to commit to decisions; conflicting priorities; unstable resource availability; and lack of: implementation; ownership; empowerment. These six decision obstacles are mapped to descriptive decision making principles to demonstrate where the obstacles affect the decision process. The effects of these obstacles include a lack of longer-term, strategic focus for decisions, an ever-growing backlog of delayed work from previous iterations, and a lack of team engagement.