Generally I like to keep my blog very short, but this one?s gonna be an exception.
I?ve the privilege of working with a fantastic team this week in Holland along with
a ?colleague? from the
Industry. I?ve known David
Hussman (a fellow NFJSer) for a while, but haven?t had a chance to spend
any significant time with him until now. ?Familiarity breads contempt? goes a weird
saying. Whoever said
that must?ve not known David. I got first hand to see that he?s not only a great coach,
but also what a
nice human he is.
We?re coaching a team this week?as he put it?he?s acting as the far coach and I as
the near coach. The
way I see it, I?m helping more on the issues closer to the heart of a programmer (no
surprise)?coding,
TDD, design, technology issues in general, while he?s doing an awesome job of helping
on different
aspects on this project.
The team, the project, and the setting are what I would define as ideal for agility.
The project has
everything that?s needed to succeed?a highly motivated team (that?s an understatement),
superb attitude
of each one on board, a fantastic work area (what a great lab, we have about ten people
all working in
this open space and the five eight hour days felt like five minutes, no interruptions
or distractions, we
had undivided focus on project), and an organization with leaders committed to succeed.
The only thing that surpasses the superb knowledge of developers is their attitude.
Kudos to the leader
who put this team together?having spent a week with him, I know he?s been there, done
that, and knows
exactly what he?s doing.
I never had to repeat anything to the team?they caught onto things really well. It
was great that I was
able to practice along with the team instead of preaching. There were several moments
when we
disagreed (and that is very healthy on projects), however, everyone was way too eager
to learn from the
experience for those disagreements to become road blocks. When we started the week,
I saw some
heavy design (like we always tend to do in development). A quick walk through why
it?s important to
keep things simple, and how to think and practice evolutionary design helped get things
satisfactory
(design and implementation wise) by the middle of the week. There were several ?that?s
fantastic?
moments for me. To mention a few, things that I saw/heard on this very first week
of development
activity on this project:
? ?I hate that, but if everyone is convinced with that convention, I will adapt?
? ?The tests are passing on all machines, but why the heck is cruise control
complaining?
? ?OK, that solution is adequate for now, we will get into more details later
when we get to other stories?
? ?I don?t know; I?m going to ask this question to the users, I will be right
back?
? ?I think this test is not a good one, we better rewrite it?
? ?Now that the test is failing, I am going to write the constraints to make
this work?
? ?OK, I know I need to get this working before getting it right.?
? ?I think that is not really good OO practice, but I am listening?
? ?Wait, why not put that in the build script, so you don?t have to rely upon
each developer remembering to use the settings?
? ?Let me make this change in increments?if I hold on to this code any longer,
it will get too hard to merge and check in?
? ?OK guys, if I may call for a short design discussion, I need help understanding
what?s happening in the service tier?
? ?Can I mention something I did not like at the start of the week, but I like
a lot now?...?
? ?OK, I am beginning to get this agile??
? ?
I wish I could say that I have as much fun working on projects each week as I did
this week. I am very
thankful for this opportunity, though a bit farther away from Home. As I am on my
trip back, I already
look forward to my next meeting with this great team.
The best weeks are the ones where I can share what I know and learn at the same time
(I like to be a
rechargeable battery instead of ending up a discharged dead cell). I learnt a great
deal working with
David, the colleagues from the client company, quite a bit from the approach, process,
attitude, and
above all, a great sense of humor. Whoever first called software development ?collective
gaming?
certainly knew what he was talkin? about. If you aren?t sure, you need to come see
this team in action.