Stuck in your own code? Alleviate cognitive friction today!
This is the title of the talk I am planned to give at the Agile '08 conference in Toronto. My session will start at 10:30 on wednesday, August 6, and will be held as part of the "Breaking Acts" stage. You can find more about that in the conference program.
Here is a short description of what I will be talking about.
Session overview
In this session, you will learn how user interface usability principles can be adapted to programming, helping you write code that can grow larger without becoming an obstacle to agility.
The root concept behind this approach is that of cognitive friction – the energy we all waste looking for code, figuring out how to reuse existing code, understanding new APIs, making and fixing mistakes.
To remove friction in our code, we can draw from general principles commonly used in the design of user interfaces:
- Guidance: help users discover features and concepts quickly and safely.
- Alignment: use concepts that are familiar to the user, without misleading aliases or mappings.
- Centering: subdivide the interface into several subdomains that make it easier to discover part by part.
You will learn, through concrete examples, how to apply these principles to reduce friction in your own code. You will take home a number of techniques that you can start applying right away.
Presentation plan
This is a presentation in four parts:
Seeing friction
- Understanding cognitive friction
- Main types of friction
Guidance
- Understanding the phases a developer goes through when performing a task
- Improving navigation through the code
- Constraining the way your code can be used, using for instance static typing and the capabilities of modern IDEs
- Improving error feedback to keep the developer back on track
Alignment
- Understanding mental mappings
- Aligning code with the underlying concepts, removing duplication of concepts
Centering
- Understanding interaction contexts
- Splitting the application in several worlds where developers can focus on a problem without facing the complexity of the whole application (“Disney Effect”)
- Optimizing the code for given “Change Cases” (the most frequent kinds of tasks performed by the team).
See you there?
If you happen to be there and want to talk about code, usability, agile, lean, Alexander or whatever, just send me an email so that we can devise a way to meet together in the conference maze!