Code Retreat: A Space For Programming Awesomeness

My experience when I attended the code retreat in Cleveland on Jan. 16, 2010.

Thank you to Corey Haines, Gary Bernhardt, LeanDog and the programmers who were at the event. Well done.


When I code, I have a habit of wanting to get it done. To see it work. Corey pointed this out and he’s right. Unknowingly, this habit affects the way I code and limits how fast I can grow as a programmer because I’m likely do the things that I know how to do. I may venture out of my comfort zone but I would quickly retreat on first sign of problem. This is totally okay. When I’m paid to get things done, it’s not right for me to disappear into the la-la programming land to explore and learn. And when the deadline is tight, I’m forced to cut corners (partly because I am not skilled enough) to get it done. But just understand, with this habit, little programming skills are developed.

At the retreat, the purpose of coding is not about getting it done. It’s about putting aside this attitude and  just code and be with it. It’s a different space to be in. It’s like going back to my kindergarten days playing in the sandbox. The play was one continuous stream of one play idea to another. That’s what I feel at the retreat. A coding idea leads to another idea for me to explore and practice. Every now and then, I catch myself wanting to get it done. I have to pull back and say to myself, “Just code Thanou.”

The space is there for me to challenge my programming skills without judgment. It is for me to develop new skills through coding on an idea to absurdity (no if-statement in the code) or not and so forth. It’s about bringing back the curiosity of wanting to experience the various solution paths as fully as possible. According to Corey, and I agree, the skills I learn will benefit the “get it done” space in forms of cleaner code and less corners cut. I’ll get it done better!

I’m still processing my experience. It was my first taste to a path to become a better programmer. It’s a journey. It’s about changing attitude and view. I’ve learn to create a space for me to be with the code which in turn, when I need to get things done, I would do it more skillfully.


Squirrels Should Not Code

Today, I saw many fat squirrels in High Park eating and hoarding nuts for the winter. This behaviour runs deep for this furry animal and I believe it runs deep in us as well. It’s built into our genes and it made sense for our caveman ancestors to have this mentality. It helped them to hedge against long periods where they couldn’t find food. They over ate and hoarded just in case they couldn’t find other food sources.

Fast forward to now. I think we carry this trait into our coding practices. In this context, the behaviour causes more problems than good. The code we write every day is stuffed with “just in case” scenarios. This means we write extra features into the application that may or may not be needed. They obscure the meat of the solution, they introduce more bugs, they make maintenance a nightmare and so forth.  How do we stop it?

Pair programming. When I add the  “just in case” code, my pair will snap me out of my caveman thoughts and get me back to thinking about coding what it’s needed. With enough practise, we can change and we can be less influenced by our caveman thoughts. Just in case, we need to do more pair programming.


Was It Okay? Did You Like What I Did? Huh?

Remember in school, there was a guy who always looked for feedback for everything he did? He checked in to make sure it was cool with the group. If the group liked his action, he did it more and, if not, he tried something else. I found him annoying. I always thought the rebels were cool.

But I’m wondering if this feedback-seeking personality is actually good in the context of Agile? From pair programming, TDD, continuous integration, stand ups, sprints, retrospectives and so forth, Agile philosophy is built on communication and feedback. That guy would be a natural in this environment. He would be a role model. As for the rebel dude, he would be working at KFC making double downs.

What do you think?