Global Day of Coderetreat December 3rd
coderetreat.comParticipating in a Code Retreat is one of the wisest investments a developer can make in their career. Depending where you're at on your journey, attending a day-long Code Retreat could significantly change your life.
If you're relatively new to the agile/xp/software craftsmanship community, you get:
- As good an overview of test-driven development and simple design as you're likely to find anywhere.
- An introduction to people in your community who are probably themselves excellent software developers and who can support both your learning and your professional network.
If you're already experienced in TDD/BDD, Code Retreat is great for:
- Humbling you. It's a rigorous exercise, and a lot of its value is derived from the emphasis that no one take any shortcuts—it's great for identifying and tackling one's own bad habits.
- Its low-pressure environment. There is expressly no expectation that you "finish" with a working implementation. This frees you up to nurture or reclaim your own vision of what an "ideal" design is by focusing on perfecting just a small aspect of the problem.
- Pairing with extremely bright people on a challenging problem; because so few of the solutions are obvious, Code Retreat is actually great communication practice.
http://coderetreat.ning.com/profiles/blogs/how-a-coderetreat... gives an introduction to the format. I hope to attend the next one, in Dublin, Ireland.
I'm a little skeptical about the format though.
You develop in 45 minute long cycles, and must delete your code at the end of the 45 minutes.
However, you are supposed to use test driven development.
I'm a little skeptical of TDD in general - I see advantages to the process, although suspect its oversold.
But TDD for a 45 minute development window? Does this really make any sense?
It seems to me that it'd end up more as a practice of writing tests quickly, rather than a practice of coding. Why do you need the agility that tests bring, in a 45 minute window?
I guess I'll find out on the 3rd!
Does anyone that's done this before, want to give me the benefit of their experience?
It's not about writing things quickly. It's not about learning the basics of TDD. It's not about learning and solving a new problem. Hell, it's not even about solving the problem. In these 45 minute chunks, you will not solve the problem.
Because the goal is not to solve the problem.
The goal is to realize that many of your preconceptions of how you should write code ought to be bent, modified, or broken.
I participated in a code retreat less than a month ago (led by, of course, Corey)... I'd always thought I was pretty good at TDD and OO design. I like to think that I'm humble enough to know I wasn't an expert. But after the code retreat, I realized that I have much further to go than I thought.
AAA+++++ HIGHLY RECOMMEND!!!!
TDDing your way and deleting afterwards is common kata practice. You can see Uncle bob doing this on this video[1].
Uncle Bob[2] is, among many other things, the creator of fitnesse[3].
Interesting enough, he is a bit critical of the Software Craftmanship movement[4,5], which is sponsoring this code retreat.
[2] http://en.wikipedia.org/wiki/Uncle_Bob
[3] https://github.com/unclebob/fitnesse
[4] http://cleancoder.posterous.com/stub6-restoring-the-trust
[5] http://cleancoder.posterous.com/software-craftsmanship-thing...
Daniel, why are you saying Uncle Bob is a bit critical of the SC movement? In links 4 and 5 he express quite the contrary, he's defending firmly his belief in craftsmanship.
At the end of the first video(here[1]) he says:
There is a danger here of a rift: what we don't want is separate movements... What we want is a reunification. What we really want is a return to the values that started this whole thing
Which is a criticism. Granted, it is a harder critic on the Agile movement than on the Software Craftsmanship (it essentially means that Agile forgot the Software Craftsmanship along the way, and it needs it back).
Which seems to me like a bit of a dated discussion, as those pushing Agile[2,3,4] to the next Level are well aware of this issue, and are not falling pray to it.
[1] http://cleancoder.posterous.com/stub6-restoring-the-trust
[3] http://www.slideshare.net/HackerChick/lean-startup-how-devel...
[4] http://agile.dzone.com/news/10-years-later-what%E2%80%99s-ne...
Daniel, what he's criticizing is not Agile as a movement, rather a group of people who bastardized Agile, giving lip service to its values. For example the people who made lucrative business with Scrum certifications leaving professionalism behind.
Yes, but he is also saying that we don't need two movements. Software Craftsmanship is there in the Manifesto. But the industry around Agile is oblivious to it. This is his voice.
My opinion is that even though he is right, the second movement is great to make people reflect and realize that we Craftsmanship is an integral part of Agile.
I am not saying that his critique is bad: we are only here because of lack of critiques, and a thoughtful application of Agile[1]
[1] http://agilefocus.com/2011/02/21/agiles-second-chasm-and-how...
Code retreat is not about writing tests or code quickly, it's about writing them as well as you possibly can. If you have 2 lines of code after 45 minutes, that's fine. If you've solved half the problem, that's fine too. The 45 minute cycles are there to prevent you from attempting to solve the entire problem. You should be writing the best code you can, not try to solve as much of the problem as possible in 45 minutes.
During the break between cycles you can reflect on the solution you tried to write and hear how other pairs tried to solve the problem.
While the participants are encouraged to use TDD, this is no strict rule. The goal is to write the best, cleanest code you possibly can.
What I've found the most value in, is that you get to pair with 6-7 different programmers you've probably never met before - and thus you get to learn how other people approach the problem, you'll learn how your skills compare to those of others and you'll also learn a lot of little things, e.g. IDE shortcuts you didn't know of.
And you usually get to program in a language you might not be familiar with.
I've already attended two code retreats and it was very, very well worth it!
Feral,
Those are common and very valid concerns. Over the past (nearly) 3 years, the format has really proven itself as a great way to focus on the design of your code and practice the process of writings tests.
Thanks for being open-minded about the idea; it is great to mix it with a bit of skepticism. :) Looking forward to hearing your thoughts after attending.
I went to a code retreat back in July. It was a great experience, and I would highly recommend it. You can read about my experience at http://johnpwood.net/2011/07/29/what-i-learned-by-attending-...
There are 2 taking place in Paris, on the same day of course :(.
This one is "sold out" http://paris-globaldayofcoderetreat-autohome.eventbrite.com/
But, I think this one can still be attended http://coderetreat.ning.com/events/global-day-of-coderetreat...
I'd definitely recommend getting along to one if you can.
Here's why: http://tooky.github.com/2010/03/17/why-i-think-you-should-go...
Really excited for this. Going to be a fantastic day of practice, community and fun!
I'll be attending the one in Rotterdam, the Netherlands. Hopefully every event gets a great Corey Haines substitute, because he made the code retreat in Amsterdam last year an awesome learning experience.
There're a couple in Germany. The one in Bielefeld has still open seats available :-)
Winnipeg (Canada) is representing! This will be our 3rd code retreat this year.
Looking forward to it! Probably going to use Scala or Clojure
So far we had great feedback!
Can't wait!
Dublin, Ireland :D the second one this year. Yay!
its in Delhi too... #win