Reading Code without Psychic Powers

Organizers: Lasse Koskela, Markus Hjort


Objectives:
The primary objective of this interactive workshop is to help  developers improve their ability to read and understand code. Along  the way, through a series of hands-on exercises working on raw-and- uncut code, workshop participants are also likely to develop their  refactoring skills and perhaps even learn some testing trickery.

Contents:
The workshop's agenda consists of three parts. We will start by  introducing the topic and the underlying motivations. The presenters  will make the case for the need for code reading ability in the first  place as well as explain various factors that affect our ability to  understand code.

The second part of the workshop is a sequence of multiple hands-on  exercises, involving code bases provided by the presenters. The  participants get to experience the factors discussed in the  introduction first hand and to apply a number of presented techniques  to overcome the challenges. Each exercise will begin with a short  introduction and end with a brief review and a discussion on the  different groups' findings.

The third and final part of the workshop is a review of the exercises  and a survey of the techniques used by the participants. The goal for  this third part is to document the variety of techniques used by the  workshop participants to help comprehend "challenging" code.

Process & Timetable:
The workshop's planned duration is 120 minutes and roughly follows  the below timetable:

15 min Introduction and a presentation about code reading techniques
90 min Hands-on exercises
15 min Wrap-up

The exercises will be done in groups of 2-3 people on the  participants laptops. In other words, not all participants need to  have their own laptop but bringing your own laptop is highly  recommended in order to keep the groups comfortably small. The  presenters will distribute exercise material on CDs/DVDs and/or USB  sticks. The participants are also encouraged to have a recent (3.2)  version of the Eclipse IDE installed on the laptop before the workshop.

Session Format: workshop

Intended Audience:
Developers of all experience levels from apprentice to journeyman

Benefits of participating:
Participants will learn new techniques for reading and understanding  code.
Benefits of organizing:
The organizers will learn new techniques for reading and  understanding code – just like the participants.