SPA Conference session: Code debt | |||
One-line description: | How code gets bad, and what we can do about it | ||
Session format: | Workshop (150 mins) [read about the different session types] | ||
Abstract: | We’re all used to dealing with code that – all too obviously – has a history. Tangled code, of the sort that many of us have to deal with every day, didn’t get that way by itself: it’s a result of a sequence of design decisions made on the basis of mixed, conflicting and sometimes unclear information, assumptions and abilities. How do we convey to our teams why design matters? It’s not about the code working or being efficient or reliable, it is about the load that bad design puts on a project. This session introduces techniques for surfacing the issues caused by bad code and for improving the team’s ability to minimize and mange code debt. We aim to help participants move themselves and their teams to a higher level of design ability. | ||
Audience background: | Software developers, designers, architects | ||
Benefits of participating: | * Understand the cost of code debt * Identify the causes * Learn how to minimize and repay debt * Reflect on design decisions | ||
Materials provided: | Links and example code for examination and discussion | ||
Process: | The cost of debt Through a simple quick exercise we will demonstrate the impact of code debt on development. Recognizing debt Pairs will review published code from an open source project or other online source, and identify instances of code debt: areas in the code where intent is unclear, where structure is confusing, where assumptions seem to be made but are in conflict. Forensic accounting Participants will investigate the origin and causes of code debt by exploring the history of a simple codebase. Balancing the books There are two aspects to keeping debt under control: controlling expenditure (making good design decisions in the first place) and repayment (improving existing design through refactoring). We will outline some core design principals and suggest a way of introducing refactoring. Auditing We will introduce a process for reflecting on design decisions and evaluating possible alternatives. This is a long running process, but we will do a small piece of it a little hypothetically. | ||
Detailed timetable: | 00:00 - 00:05 Introduction and goals 00:05 - 00:15 Exercise: The cost of debt 00:15 - 00:55 Practical 1: Recognizing Debt 00:55 - 01:15 Practical 2: Forensic Accounting 01:15 - 01:35 Practical 2: Forensic Accounting (continued) 01:35 - 01:55 Balancing the Books 01:55 - 02:25 Group activity: Auditing 02:25 - 02:30 Wrap | ||
Outputs: | Summary of issues and causes on the wiki | ||
History: | The session has grown out of workshops run by Peter and others with clients, and out of work on a design education program David has under way at Sibelius. | ||
Presenters | |||
1. Peter Marks Digita |
2. David Harvey Sibelius Software |
3. |