The Clean Code Blog

by Robert C. Martin (Uncle Bob)

Coding in the Clink (9)

20 January 2014

My son, Micah (@slagyr), and I had planned to fly his Archer on Saturday morning; but the weather said “No.”. So, we fell into the far-too-familiar routine of leaving the night before, airports, commercial flights, rental cars, and hotel beds. Sigh.

In the morning the two of us drive to Marion Correctional Institution; a medium security prison run by the State of Ohio. We pull into the visitor’s parking lot and call the organizer, Dan Wiebe (@dnwiebe). He says he’s already there waiting inside with several others. I ask whether I should leave my cell phone in the car. He says to leave everything in the car except our driver’s licenses and the car keys. We comply.

We walk into building “A”. There’s a desk manned by two officers. They are polite but there’s a no-nonsense air. Dan is there with several others. We introduce ourselves and then wait in a small lobby. We’re 20 minutes early.

As we stand there chatting other people walk in. A young mother with an infant in tow. Another with a toddler. An older woman. They all wait for visiting hours to begin.

And then it’s time. We sign in. There’s a metal detector. We have to walk through with our pockets turned inside out. Mine don’t turn that way, but the officer waves me in anyway. Coats are searched. Car keys are examined. Drivers licenses are placed into plastic badges and worn around our neck. The picture in the DL is visible at all times.

Then there’s a buzz, and a sturdy barred door opens. We pass into an outdoor cage with another door closed in front of us. That door won’t open until the door behind us closes. Which it does moments later.

We walk across the yard to another sturdy door which buzzes open as we approach. We file in and gather before a checkpoint, where an officer behind glass carefully looks at all our badges. The officer is not happy. He wasn’t expecting a dozen and a half people. He gets on a phone, clearly annoyed.

While we wait in the hallway, I see a locked door with a big window. There are wide windows on either side of the door. All these windows expose every part of the room inside. It’s the visiting room. It’s large, with tables, chairs, and vending machines. It looks like a high school lunch room. I see one of the young mothers, and the old woman, waiting there, alone. A man and woman are sitting at a table, caressing each other’s hands, smiling, gazing at each other, making happy smalltalk. He wears the prison blue.

The officer waves us through and we walk into the prison. It is austere, like a factory from the 1940s. It is cloistered, like a boarding school. The ceilings are high, and utilitarian. The smell is oil and antiseptic, as if we were in a hospital for auto-mechanics. There are old-fashioned radiators high on the walls, out of reach. There are old-fashioned fans up there too – not running today. There are stark signs on the walls, with instruction about what not to do. Other signs are in friendly cursive font, telling us of up-coming events, or programs to participate in.

We turn left and walk a hundred feet down a hall to another checkpoint. We sign in again. Farther down the hall there’s a bank of windows on the right surrounding a windowed door. Anything going on inside that room can be seen from the outside. Fishbowl.

We enter. Facing us are a dozen and a half men wearing blue. They are smiling some of the biggest smiles I’ve seen. It is immediately clear they are happy we are here. From my vantage, they are young. Twenties. Thirties. Perhaps one or two are past 40. Half are caucasian. Others are hispanic. Two are black. Most are tattooed.

We sit in a circle. The circle isn’t well mixed. We outsiders are mostly on one side, the inmates mostly on the other.

The outsiders range in age from young twenties to early 60s. The distribution is only slightly weighted towards the young. There are three young women in our group. One of us is black. The rest, by my lights, are Caucasian; though there are a couple of us for whom English is a second language. We are all geeks. We are here to write code.

Dan suggests we each say our names. Ezra, a black inmate in his thirties, with bright engaging eyes, and a wide open smile that is only slightly diminished by a missing tooth, interrupts him and suggests a name-game that they play in some of their other internal programs. The game takes 30 minutes to play, but is a remarkable success. At it’s conclusion, all thirty-seven of us knows each other’s names.

Dan explains that some of the inmates have been coding for awhile; others only for a few weeks. The inmates are allowed 6 hours per week at the computer. There is no internet. No google. No open source downloads. No StackOverflow.

There are computers. Donated. A few years old, but workable. Dual monitors! Eclipse. We will code in Java.

We are to pair with them in 40 minute sessions, on a simple Kata which facilitates a game of Dungeons and Dragons.

My first partner, Nick, is a young hispanic in his early 20s. He is focussed. He wants to learn. We pair on the first part of the problem. He’s only been coding for a few weeks; but he knows plenty. I let him drive. We talk over design issues. I give him occasional guidance this way or that; which he takes gratefully and enthusiastically. But there is little for me to correct. He’s bright. He’s been studying hard. He’s doing well. I forget where I am. We are coding. Life is good.

We break for a retrospective, and all gather back into our circle. Everyone is cheerful. We talk over some design options. Inmates listen carefully, but also share their opinions. We are eager for the next session.

My next partner is Dean. He’s an energetic man in his early thirties. He’s been coding for awhile. He’s like any journeyman programmer, eager to try the next new thing. He’s all about services. He want’s to re-organize the code around services that manipulate immutable data. He’s obviously been reading about functional programming.

As I would with any enthusiastic journeyman, I cautiously try to redirect his enthusiasm toward the problem at hand. I explain that reorganizing an existing system around new ideas must be done gradually and carefully, and only after one has attained great familiarity with that system. He graciously accepts my advice; though I can feel him straining against the reins. He’s a young man on top of his game. He wants do to things right, and he wants to do them right now.

At our next break the circle has changed. The inmates and outsiders are randomly distributed around the periphery. The conversation is technical and happy. We’ve been coding for two hours and we’re full of the energy that brings.

An officer interrupts the lively banter. Roll call. We outsiders fall silent. Reminded. Each inmate quickly engages the ancient routine, reciting name, number, and cell block.

Another coding session. His name is Will. Smart. Works hard. Tests fail. Tests pass. Code is refactored. Time flies.

I need a bathroom break. Can’t go alone. Some others want to go too. We are escorted down the hall. To my right is the prisoner’s bathroom. Fishbowl! Ten yards later we come to a sign with big red letters. STOP. YOU WILL BE WRITTEN. That sounds bad, but our escort leads us past it. Then, on the right, there’s a door, without a window. MENS ROOM STAFF ONLY. A perfectly normal men’s room like you’d find in any industrial setting.

Lunch. Pizza. Lots and lots of Pizza and pop. Some of the guys from PNN (The Prison News Network) want to interview us. They take us across the hall to their studio. Micah and I sit at a green screen. Wired for sound. A cameraman and an interviewer ask us questions about the Agile movement and Software Craftsmanship.

Then it’s time for the next coding session. My partner is Mark. Mark is a lanky energetic man in is late 30s or early 40s. He is smart. Enthusiastic. Engaging. It was Mark who interviewed us at lunch. It is Mark who keeps all the computers running. Mark has been in this program the longest. He’s been coding for a long time. We code together, and he has ideas. He also has questions - good questions. The time flies. We have fun. Were this an interview, he’d have scored very high. Mark has served 20 of a life sentence.

Another session. Another partner. Gareth. We’re talking, and coding. We’re writing tests, and making them pass. He knows the rules. He’s eager to learn. As he drives, I look at his hands on the keyboard. P A I N is tattooed across the knuckles of one hand.

It’s time for Micah and I to leave. We have a commercial flight to catch, and a long drive to the airport. They give us a cheerful goodbye. They give us gifts: a T shirt and a calendar to commemorate the event. We are escorted out of the room, down the hall, past the checkpoints, through doors. Doors. Doors that open easily – for Micah and me.

For another take on this day see: Dan’s blog.