The history of “Brutal Refactoring Game”

The history of Brutal Refactoring Game

Last year I was thinking about a session during which attendees would learn how to focus on refactoring. I had some thoughts about this: we would need a list of coding smells, and have some cards to give the attendees that had that coding smells in their code. Now the obvious question was: how can you have coding smells if you do not have a code base? I thought about it, and then I figured it out: during coderetreats I anyway see legacy code after 10-15 minutes. So if this session would take 90-120 minutes we would have no issue with finding coding smells.

The first thing was: of course I will ask people to do pair-programming. This is how you learn a lot!

I came with these basic thoughts to Alex, and we had a chat about this session. Initially I had wanted to print one index card for each of the coding smells. But Alex helped me simplify the concept by creating a numbered list of coding smells that would be projected on a screen. Then we thought: we could use index cards just to write the number of the coding smell.

Refactor your code commrades or it s the gulags for you

Now the question was: how do we do this? How can we enforce the coding smells? We thought about it and we said “we love clean code, so we could be something like a dictator”. Then we both had in mind the concept of “Benevolent Dictator“. The sessions was starting to shape-up. The benevolent dictator was a key factor in the environment we wanted to create: learn and play.

Read More →

Taking Baby Steps

Taking Baby Steps

I wrote a post on the history of Taking Baby Steps, you can read it here.

Now I would like to tell you more about the workshop and the technique itself. While coding, for me it is very important to be focused on one idea. Why? Because this is how programmer mistakes appear in the code; some people tell them bugs. The other thing I am interested in is to have an undo button for every change. This is why I want to commit every 1-2 minutes.

The rules are the following:

Steps

  1. Setup source control repository.

  2. Setup a timer for 2 minutes interval when you start.

  3. Write exactly one test

    1. If the timer rings and the test is red then revert and start over.

    2. If the test is green before timer rings then commit.

  4. Restart timer (no discussions in between timers)

  5. Refactor

    1. If the timer rings and the refactoring is not complete then revert and start over.

    2. If the refactoring is complete before the timer rings then commit.

  6. Restart the timer (no discussions in between timers)

  7. Go to 3.

  8. When session time is up delete the code.

Read More →

Architectural Kata – Budapest

Architectural Kata Budapest

Following the invitation of Zsolt Bodo I facilitated an Architectural Kata in the Budapest Agile community. The purpose of the session was to let the attendees speak about architecture and I was merely a facilitator. My other role was the customer, clarifying the requirements whenever the audience requested.

The concept remains the same as for the first Architectural Kata I facilitated: you cannot be a good architect if you do not have the experience. An architect creates 10-15 architectures during the whole career, so we need to practice to become better architects. This session is exactly a repetitive exercise of creating architectures for given, unclear, requirements.

Architectural Kata Budapest

Architectural Kata Budapest

Read More →

We love legacy code!

We love legacy code!

 

 

Architectural Kata

Architectural Kata

I first got into contact with this notion at the SoCraTes conference in 2012 when Benjamin facilitated not one, but two sessions. Unfortunately then I could not have attended as I was too tired from the sessions I had facilitated.
Last year I met again Benjamin at the XP Germany conference. Then I really attended his session. You can read more about that here.

We (mostly my brother Alex) decided to bring this Architectural Kata to the Bucharest community. And last week we had the first one.

The main idea behind this concept is that you cannot be a good architect if you do not have the experience. If you are an architect you create maybe 10-15 systems in your life, so that is surely not enough to be a good one. So with this session we do a repetitive exercise of creating architectures for some requirements.

Architectural Kata

Architectural Kata

Read More →

The history of “Taking Baby Steps”

The history of Taking Baby Steps

Let me tell you a story on how I thought about teaching other programmers how to take small steps to help them minimize the mistakes by focusing on a small thought.

Taking Baby Steps

Taking Baby Steps

A couple of years ago I was working on a legacy project, meaning I did not know anything about the business, and it was written in Delphi .Net which was totally unknown to me. I needed to translate this medium-sized code-base from Delphi .Net into .Net / Silverlight.

Read More →

Teddy bear pair programming

Teddy Bear Pair Programming

Blog post series

This blog post is part of a series about pair-programming games. To read about more please click see more sessions on pair-programming games.

Concept

Scenario: You are having an issue and you don’t know how to solve it. You tell someone “Hey, can you help me? Let me tell you my problem!”. You start telling the problem, your conversation partner doesn’t say a word and you say “Yeees, this is it! That’s the solution. Thanks for helping me!”. But you had in fact just a monologue, and you found the solution for yourself.

What if, instead of talking to a human being, you had a constant partner whom you would explain your problems like it were a human being. This is how my teddy bear helps me:

Teddy Bear Pair Programming

Teddy Bear Pair Programming

Read More →

Kudos for the Global Day of Coderetreat 2012

Global Day of Coderetreat 2012

As last year I helped the coderetreat first-time facilitators to jump-in and organize their first coderetreat. I had some training sessions on Google Hangout during which I talked with a lot of passionate professionals from all over the world. Together with me Jim Hurne had done the same effort to spread his knowledge about the way he facilitates a coderetreat.

Jim has done a lot of work for the Global Day, he added the sessions on the coderetreat.org website created, the hangouts for all the registered attendees for each session, and a lot of other very useful things. He was full of energy and I want to thank him for all that effort, I don’t think the Global Day would have been that successful without his sustained effort.

I chose to go to Cluj-Napoca to facilitate the coderetreat on the Global Day. I had talked with the Cloud Troopers company about hosting a community event, and this was the time. They were kind enough to sponsor also the lunch. Out host was Georgiana Gligor, and she was very keen to see what a coderetreat is all about.

Read More →

My Teddy Bear went to XP Days Germany 2012

My Teddy Bear went to XP Days Germany 2012

And here is the proof:

Mosaic Works Teddy Bear

My pairing partner

My teddy bear was willing to go with me to Hamburg because after facilitating the Brutal Refactoring Game, Taking Baby Steps and TDD as if you meant it at the SoCraTes conference I was invited by Marc Philipp to facilitate again one of those sessions at XP Days Germany. Marc he helped me a with the German website, he submitted two sessions for me and in the end the conference organizers chose the Taking Baby Step as a winner.

I was happy I could meet passionate people from Germany at this conference. Then Alex decided to come along with me at the conference.We made all the preparations and off we went to the beautiful city of Hamburg!

Read More →

Open Agile Cluj, the 6th edition

Open Agile, the 6th edition in Cluj

17 November 2012. It was a great day for the Romanian developer community and for all passionate people in and around Cluj. This was the day when Agile Works and Mosaic Works organized the 6th edition of the OpenAgile conference. As always, its purpose was to popularize both gold old concepts and brand new ideas in Agile, Lean and Software Craftsmanship. Additionally, we often talk about Gamestorming, Change Management, Psychology and other interesting fields. Like the other editions, the event was balanced between information and practitioners’ experiences while mixing organizational and technical topics. OpenAgile was thought from the beginning as a non-profit event that helps knowledge exchange between the members of the Agile Works community. And what better way of sharing ideas and experiences than having three Open Space time slots!

I have to remark the great job done by my colleagues Alexandra and Nicoleta to remotely organize the event. For example, they did not have the chance to see the venue in advance. This works because of the trusted network of conference partners and suppliers that help organizing everything smoothly. But what a work that is! As an attendee, you often don’t see all the aspects of a conference (especially when it all goes well), so here’s a short list: the speakers know where to arrive and how to get to the venue, the volunteers are doing their part of the work, the sponsors are happy with the packages offered, the venue is set-up right, there’s enough coffee and thousands others. There are always small complaints and unexpected events, sometimes conflicting: it’s too warm *and* too cold, the coffee machine broke down etc. Everything was very well in the end, so I’d like to thank Alexandra and Nicoleta for the awesome job they did making it look easy!

Read More →