
For this sundayconf, I have a good selection of music, no, videos, no, code, no, music!
Unclebob’s prime factors Kata
Even though the video is called “Prime Factor Kata (Rough)”, the flow of the kata is perfect. The music matches Unclebob’s movement from the spec to the code and back. I had mixed feelings about the choice of IntelliJ but was surprised with the “introduce variable” popup. I wished I could have seen more refactoring tools. After hearing great things about this kata on twitter this week, the video lived to his expectations.
Corey Haines’ Number to LCD
Corey’s kata was more challenging that Unclebob’s and turned out to be great. The resolution of the video could have been a little better but it was easy to follow what was going on. The music choice was on target: crescendos and allegros kept me wondering about what was going to happen next. But I wish I could hear Corey’s narrative for some portion of the kata. Especially at the beginning. With 2 examples, Corey focuses on refactoring his code for a few minutes. He moves blocks of code, create structures, extract variables and keeps running the tests. The beautiful thing about all this refactoring is that adding the next 8 examples was a breeze.
That reminded me of a quote I saw this week about sharpening the saw:
If I had eight hours to chop down a tree, I’d spend six sharpening my axe. - Abraham Lincoln.
We are starting a new code study group at work. Here is the email that I sent to the group to kick it off:
Starting a code study group
What is it?
A code study group is a bunch of people that choose an open source project or library and read it like a book.
As they go through it, they take notes; identify patterns, critique techniques and post a report.
They look at code with a critical eye. Various style of code will amaze them, amuse them and challenge them. They learn new paradigms that completely changes the way they approach problems.
They study the work of masters to improve their skills.
They meet twice a month and nominate 2 to 200 lines of code to study.
Why study code?
- To sharpen the saw
- To use existing code to reflect on our own capabilities
- To understand new code quickly
- To identify code patterns quickly
You can even learn from bad code.
This is not something new. Musician, painters, poets get together to study the work of masters. They learn their work and quiz each other.
Since we are heavy on the java side, I created an online survey with 4 open source libraries that could be interesting to study:
I can’t wait to see what are the results of the survey. I am going to keep it open until Monday.

At code retreat, we retreat from the world to advance in our craft. We sharpen our saws, together.
We retreat from production and business value to increase our production capacity, our quality, our velocity, our ability to produce business value.
We retreat from immersion in deep technology issues to advance in our ability to learn and adopt to any technology well.
We retreat from our fears, and embrace new practices and patterns.
We retreat from our local ponds and swim in a larger pool. We connect with other passionate coders who we seldom get to code with. We make new connections and learn new lessons.
At code retreat everything is about the journey and nothing about the destination.
Join us on Sunday November 1st, 2009 in Philadelphia at indyhall. We will start at 9am and will be practicing Conway’s game of life in Java.
Here is a approximate agenda of the day:
We’ll spend 15 mins introducing the event, drinking coffee, thanking the sponsors, answering questions and describing the game of life problem.
We will break down into pairs and run an iteration of 45 mins.
Take a 10 minute break and throw away the code (this could be hard!), switch pairs and get ready to start the next iteration.
Run another iteration and throw away more code.
We will be exploring new things to try: coding with no if statements, using TDD as you mean it. 1-line methods, interfaces everywhere, etc…
We have lunch when it makes sense and see if we have something to demo.
After lunch, iterations might run shorter switching pairs after each iteration and always throwing away the work.
Finish the afternoon around 5pm or so and head for beers across the street to National Mechanics
Be ready
Bring your laptop with:
If you use intelliJ, consider adding an empty template like JB’s.
We will have coffee, soft drinks, and snacks available. Lunch will be supplied. However we are still looking for a food sponsor. Help us out!
If you are going to attend, please RSVP at http://coderetreat.ning.com/events/code-retreat-philadelphia-java or at coderetreatphilly@gmail.com. We may be overbooked, so the RSVP is required to determine headcount.
Please send any questions you might have to coderetreatphilly@gmail.com.
Hope to see you there!
94 people gathered for the first AgileTour stop in the suburbs of Philadelphia. A good turn out for a mini 4 hours conference! Ravi and I welcomed the attendees and gave a little intro about the conference and the speakers. After that, I spent most of my time in the Open Jam.
Agile assessments
We commented on the recent efforts to assess agility.
Bob Martin, Ron Jeffries, Chet Hendrickson, Brian Marick and Jim Shore are working on a scrum certified developer program.
But wait! Ken Schwaber and Microsoft are working on another scrum certified developer program.
Joshua Kerievsky started a mailing list to study more alternative assessments.
A big surprise for me was learning more about Ken Schwaber’s and Microsoft alliance. Their scrum developer certification is not language agnostic. I am not sure of the value of being a .NET scrum certified developer. It looks like they are matching practices like Continuous Integration or TDD to a specific Microsoft tool. I am not sure how this is valuable for the industry. As a side joke, I look forward to the MS pairing tool. That is, if pairing gets into their “approved list of practices”.
Certifications
We talked about the evilness of the scrum certification scheme and the false sense of thinking that when you are certified, there is no need for you to study more about the topic.
We tend to blame certifications but is it maybe an organization or people problem? If we look at certification as the minimum basic knowledge to perform a job, why assuming that basic is enough? Basic barely makes the cut.
Somebody made the point that Scrum is sold as a “silver bullet”, an all-in-1-box solution. Organizations or teams are not encouraged to look outside of scrum because they are told that scrum will solve all their needs.
I agree with that, but it does not matter what methodology you use if you (and your organization) aren’t continuously learning?
Forget scrum, look at the technical field. How many of us (programmers) learn a new language every year? Let me lower the bar: How many of us are somewhat comfortable in more than 1 programming language?
Since it seems impossible to avoid the birth of a scrum developer certification, I am embracing it. I hope that my company will jump all over it and mandates for all of us to become certified.
If it takes a piece of paper to make my life easier, I am all for it. Not having to argue about the benefits of TDD, pairing, frequent checkins everyday is a welcome change. I don’t expect a big change overnight, but at least, it will be a starting point.
Wrap up
I got a lot of energy out of this conference. It was nice to see old friends and make new ones. I look forward to what we can do next with Agile Philly. We have plenty of new ideas.
I quickly checked the weather before packing for ConceptCamp2009. “Mmmm… rain Saturday night. It won’t be that bad.”
Well…There was a lot of it but it did not stop us from having fun, talk about code, patterns and play some team building exercises like beer pong and twister. Yep, twister.
After a good camping breakfast, we protected ourselves from the rain and started the conference.
I did not take notes during the talks, being a small group, the interaction was more important than being head’s down try to type stuff.
Note that there was almost no powerpoint use. We did not have a projector and this made for better sessions IMO.
Chris Ballance (@Ballance) “Design Patterns for Scalability”
Chris’ talk was a nice warm up for the day. He walked us through the patterns to build a scalable web site (MVC, loose coupling, Stateless, Queueing, ..).
Using twitter and facebook as references, he gave examples on how the 2 sites scaled to what they are today.
I found his love/hate relationship with the flyweight pattern interesting ;)
Steve Andrews (@SteveAndrews) “Community Speaker Tips and Tricks”
Steve speaks at many user groups and Microsoft conferences. He shared with us ~60 tricks to make your technical talk more effective. From brainstorming, mind mapping, outlining, having 3 copies of your talk as backup, inspecting the stage before your session, knowing your audience, dealing with a difficult person in the audience, timing yourself and wrapping up.
I learned that Microsoft TechEd has a “presentation competition” similar to “Programming with the stars” at the Agile conference. I thought that it was an interesting concept and a great way to get feedback from your talks even if you are not participating.
If you are on Windows, a little tool called ZoomIt does what CTRL+ two finger scroll does on the mac: zooms where your mouse is. Download it here: http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx
Matthew Podwysoki (@mattpodwysocki) “F# Parallel Programming”
I am not a .NET person but I was impressed with F#. Matt’s knowledge and presentation was full of great and simple examples that showed the power of this language. Sharing syntax with Haskell and Python, F# felt easy and fun to play with.
Looks like F# is getting a lot of attention in the Bank and Insurance industry.
Matt got me interested into giving F#, Haskell or Clojure a try before the end of the year. I promised to learn a functional language before 2010.
Sara Chipps (@SaraJChipps) “Choosing Your Patterns - Architecture and Design for the Freelancer or Hobbiest”
Sara talked about her super dooper secret project that she’s launching next week. Shhh! Can’t tell you yet but it’s clever and awesome!
She shared with us her troubles building this product, how she designed her software layers and how her mom gave her detailed feedback about her site ;-)
Sara and a bunch of other guys recommended Balsamic, a screen mockup utility: http://www.balsamiq.com/products/mockups
It was interesting to hear how she outsourced some of her work. After reading the “4 hour workweek”, I am willing to give it a try.
Scott Allen (@OdeToCode) “Design Patterns for Victory!”
Scott Allen gave an awesome closing keynote and I don’t want to spoil it for you so go and read it here: http://odetocode.com/Blogs/scott/archive/2009/09/27/13241.aspx
ConceptCamp2009 was a success! Congratulations to Sara and Erika for making it happen! Will be back next year for more.
I have used git in the past but I am a newbie to GitHub. Here are the 13 steps that I followed to get my first repository in GitHub.
1. Upgrade to the latest git: http://git-scm.com/
2. Open a github account: http://github.com/signup
3. Add GitHub’s settings to git: http://help.github.com/git-email-settings/
4. Generate a SSH key: http://help.github.com/mac-key-setup/
5. Create a repository: https://github.com/repositories/new
6. $ mkdir my-project
7. $ cd my-project/
8. $ git init
9. $ touch README
10. $ git add README
11. $ git commit -m “first commit”
12. $ git remote add origin git@github.com:/<your-user-name-here>/my-project.git
13. $ git push origin master
Right after the Open Jam session “Is scrum evil?” at Agile 2009, Ben Rady got me into thinking about my next set of stickers.
Simple instructions: fill in the blanks with a marker.
“Hello, my name is Sebastian and I have been scrum free for 2 years 7 months and 3 days”.
“Hello, my name is Sebastian and I have been scrum free for eva”.
Now, this will be cool on a t-shirt.
If you are going to take into account stakeholder feedback, you cannot commit ahead of time to 100% of what you are going to do. You can only commit to 50% or 70% of what will be delivered in a release. — IBM leader about their biggest problem for Agile adoption: the governance system a.k.a product management. Quoted by Mary Poppendieck during her “workflow and schedule are orthogonal” during her Agile 2009 talk.
How’s that for a ambiguous and confusing sentence: “As an organization, we must focus on quality.”
Sorry, I must focus on what? Oh, yes “quality”. And what is “quality” for you, dear Organization?
Sit down and observe everyone running in different directions:
That’s the problem. Quality is abstract and subjective.
None of the definitions above are correct but if you look at them together, they are all correct.
Picture yourself taking a knife and cutting a thin slices across all of them every time you start a new user story. Now, spread it in your toast. Mmmmmm….yummy…Quality tastes good.
“We’re doing the best possible job of software development.
Therefore, if other people are doing better, their problems must be easier.
Therefore, we never find out what other people are capable of doing in software development.”
This actually not only appears at a company level but also at the departamental level.
Teams sitting accross each other fall into this pattern. Programmers sharing their practices are ignored by others because they believe their business domain is different. Even when the practice have nothing dependent on the domain.
Usually, the more push back you get, the more desperate the team is. They know something is wrong, ask for advice and then discard it.
Why?
It’s time consuming to give it a try? Too intrusive? Too challenging? Fear of failure? No management support? Out of your comfort zone?
I am sure glad I found the name for this: “the circular argument”.