Technical Program
Educators' Symposium
Doctoral Symposium
Student Research

Student Volunteers
Special Events
Housing Information
Registration Information

Monday, 4 November – 8:30-12:00 Morning – Convention Ctr - Room 307-308

10 Programmer's Dozen: Thirteen Practices for Refactoring, Repairing, and Regaining Control of Your Code

Kevlin Henney
Curbralan Limited, kevlin@curbralan.com

There is no shortage of technical wisdom on how to develop clear and robust code, so why is the pained expression on a programmer's face, sifting through all of the source windows trying to make sense of the encrypted code, such a common sight? There are companies whose development culture does not encourage pursuit of knowledge of practice: a penny-wise pound-foolish approach. However, there are many companies and developers that want to push themselves to the state of the art, but seem swamped and bemused by how much state there really is to that art.

This tutorial offers a concrete thirteen-point list of practices (zero through twelve) that can be applied out-of-the-box to reduce code size and complexity, acting as both guidelines for new code and indicators for refactoring. The short list has no ambition to be all that you needed to know about design but were afraid to ask, but it does offer an easily memorable and easily practiced set of guidelines that offer the greatest immediate return on investment - the most bang for your buck or oomph for your Euro.

Attendees will learn a set of specific coding practices that, through principle and example, help them to reduce the amount of source code in their system, to avoid duplication and unnecessary centralization in their code structure, to decouple tangled hierarchies and overly intimate packages, and to write encapsulated interfaces rather than the assembler-esque getter/setter style that is unfortunately so popular in many systems.

Attendee background

This tutorial is targeted at people who write code for a living, typically using a curly-bracket language (C++, C#, Java, etc.) and are looking for that extra edge that allows them to keep their code live and clean.


Lecture with slides and additional notes included in the handout material for the session.


Kevlin Henney is an independent consultant and trainer. The focus of his work is in programming languages, OO, CBD, UML, patterns, and software architecture. He is a regular columnist for Application Development Advisor (UK) and C/C++ Users Journal online, wrote columns in Java Report and C++ Report, and has a forthcoming column in JavaSpektrum (Germany). He is also a member of Hillside Europe, the EuroPLoP program committee, the OT conference program committee, and a regular speaker at conferences in the US and Europe.