Presenter: Kevin Rutherford & Lindsay McEwan

Objective(s) of the session:

Participants will learn:

  • How to discuss code quality in terms of Smells; they will also gain some understanding of when smells indicate real problems, and when they are more benign.
  • Why technical debt is a financial drain on the business; how Smells can present opportunities to improve your, and your team's performance.
  • Why not all design patterns are necessarily Smell-free; it often depends on how and when they are applied.


Code Smells, like a pattern language, can help explain why some code is harder to change than it might otherwise be, i.e. why that code is hindering your progress on your current feature or bug-fix. Using Smells in such discussions, we feel, is less vague and less subjective, meaning a way forward is quicker and easier reached.

Participants will review some source code in the light of specific change requests and will explore the communication value of Code Smells as both a pattern language and a design vocabulary. We will discuss how Smells can indicate what code has become hard to change, and why that is a drain on the business.

Participants will also review some common programming and design patterns in the light of what has been learned, discovering tensions between the need for change and idealistic "by-the-book" design.

Format and length: 90 mins workshop

The session will be a workshop. Participants will work on code in pairs or small groups, and will discuss their findings as a group. The discussions and work sessions will be punctuated by brief presentations of new material.

Intended audience and prerequisites:

  • Programmers, designers, architects, anyone looking to improve their team's performance.
  • Anyone who wants to write better code, but who doesn't really know where to begin.
  • Anyone who wants to understand why changeable code helps team performance, and why "technical debt" is a real cost to the business.