What is a mature team?

On the italian XP mailing list, Tommaso Torti asked an interesting question to the list few days ago. When do you define a team 'mature'? Translating myself, my reply was something like:
A mature team is a team that implements at its best the theories written on books, that makes concrete what's on paper in value for the client. It's cohesion and communication. A team that's mature is a team that hasn't nothing to do anymore, it's mature, can still improve? In my very personal opinion it's a death team, the mission is achieved, it's time to change, it's time to shuffle the cards. Roll in new people, change.
Some other interesting replies to the question: PierG wrote: A mature team is a team robust to change, wich means that it's able to change without crumbling the process. Francesco, being a strong XPer wrote: A mature team is a team that doesn't need a manager, a project leader, an architect or a designer in order to produce results. It's able in an autonomous way to increase its own productivity. Luca Minuduel quotes from the website of Joseph Pelrine: * Flexible and responsive to changing organisational conditions and wider environments.
* Able to work with pressure, uncertainty and disagreement.
* Able to be self-organising and self-regulating.
* Maximise the strengths and creativity of each team member.
* Satisfies both organisational and individual needs
and Marco: AEntre más reglas poker compares mejor. system in equilibrium naturally tends to resist to change and that's why we need to apply a force (questions/retrospectives/etc for people, splitting for stories, refactoring for code), because we need to take the system at the edge of chaos to facilitate the emergence of a new, spontaneous configuration. Definitely a nice conversation, and for you what's a mature team?

pomodoro technique goes international

The timeboxing technique well known in Italy as Pomodoro technique is going international. My friend Matteo Vaccari had a speech at the xp days Benelux 2007. Online slides are on slideshare. The original paper from Francesco is also now translated in English. I've tried the technique and wrote also the mobile timeboxing app. I found it useful and valuable with unskilled xpers but more a drag than a benefit on more experienced / high focus capable people. Interrupting can be really annoying. I see a big value on the time is passing consciousnessDas Land Hessen http://www.pokermeine.de/mehr-pokerspiel-spiele.html dabei im Allgemeinen die Vorreiterrolle. but instead of a fixed, mechanical time machine I prefer to have an event based boxing. The typical cycle write the test, write code, run the tests, commit is enough. And you: what do you think? Give a feedback to the guys!

Observational learning in teams

On wikipedia there's an amazing page about learning, and I'm more than anything else interested in the Observational learning.
Learning is the acquisition and development of memories and behaviors, including skills, knowledge, understanding, values, and wisdom. It is the goal of education, and the product of experience.
Why Observational learning? Pairing in an XP team is the perfect environment for Observational learning.
Example can be a motivation for learning. Imitation of a role model is a natural mechanism for infants and children, when learning from experience. Child's play is another method for learning by the example of other children, who naturally gain satisfaction by playing the role of teacher or mentor to a less-experienced child.
What's the Example then? Talking about code it's the code base.The code base is your friend, coding having a look on how solving the same problem has been already solved makes easier to solve it again, keeps the code base consistent and helps to find patterns, to tackle the technical debt, etc.Talking about Methologies, it works well as well. The Example it's just the behaviour of the coach/mentor. It's again very interesting on the page what are the required conditions for a successful learning:
  • Attention to the model
A person must first pay attention to a person engaging in a certain behavior (the model).
  • Retention of details
Once attending to the observed behavior, the observer must be able to effectively remember what the model has done.
  • Motor reproduction
The observer must be able to replicate the behavior being observed. For example, juggling cannot be effectively learned by observing a model juggler if the observer does not already have the ability to perform the component actions (throwing and catching a ball).
  • Motivation and Opportunity
The observer must be motivated to carry out the action they have observed and remembered, and must have the opportunity to do so. For example, a suitably skilled person must want to replicate the behavior of a model juggler, and needs to have an appropriate number of items to juggle at hand.
What really works well in an XP team as well is the Informal way we teach and learn stuff and we the spread the knowledge across the team. The performance over time in an XP team is different from the one shown on the picture.

november speeches

It will be an honor to speech after the key note of Tim Mackinnon at the AgileDay organized by Marco in Bologna, I'll present how we went from amber to green in four weeks in our last project in London, presenting a speech that Pat and I were setting up for the Xpday in London, but we were fired off cos it was "just" a description of a perfectly aligned agile/XP project, they said(!). It will be also cool to speech again about Domain Driven Design at the Javaday in Rome, with 700 expected attendees that's now the biggest Java Gig in Italy, it will be the 3rd refactoring of the slides presented since this summer, more focus on mocking, testing and IOC as well, since in Turin I had a lot of questions about it. Slides in English coming soon here, after the events.

Some stuff you might try in your team

In the team we are used to be Agile, and especially what I call being Agile doing Agile stuff. Which means being not dogmatic: stop doing a practice when it does not give us enough value and starting it again when we feel that we are missing it. Not only: we also try always to introduce something new. Since the beginning of the project we had 2 swim lanes on the wall, one for actions  to do and one for actions done, we just added a third column, the keep doing actions, it's like having a star fish always there. The waste bin. Yeah, we are interested in what's going on with lean, so now there's a box on the wall, if someone in the team feels that is wasting (s)he can put a card there, we'll discuss it during the retrospective. As a reminder, the seven lean waste types:
  1. Overproduction = Extra Features
  2. Inventory = Requirements
  3. Extra Processing Steps = Extra Steps
  4. Motion = Finding Information
  5. Defects = Defects Not Caught by Tests
  6. Waiting = Waiting, Including Customers
  7. Transportation = Handoffs

mobileboxing 1.1

I had some downloads and some feedbacks, so why not spending another couple of "boxes" and write some more code?
  • In this "release" there's a simple sound (next step will be to have something like a rooster/alarm clock, that would be great)
  • There's a countdown with the minutes, seconds remaining for the current task (work or break)
  • Screen is still fullsize, someone told me that he doesn't know what to do with it when it starts, perhaps I'll add in the future a customized menu with some graphic button at the bottom of the screen
The code, if you wanna have a look is on Google code here, the current MIDlet is here.

a MIDlet for personal timeboxing

I wrote a small, very very simple MIDlet for time boxing since more than one person mentioned in last weeks that it would be nice to use such an application. It's a MIDP 2.0 app and it should work on any phone, on my N95 works fine. Depending on the number of downloads and feedbacks maybe I'll improve it. (UI is poor, no customization possible for instance...) MobileBoxing MIDlet

the fit* stuff

Felix is right
In the point of programming is to create and clarify meaning. Not to obscure it.
in the Ward Cunningam page I read:
Framework for Integrated Test, my version of TDD.
Version of TDD? I hope that there's a mistake on the html... Fit is TDD? Sounds blaspheme to me. I don't like all the fit stuff and I never liked. I heard of testers frustrated writing tons of tables on its wiki. Tables? Where does come from the idea to have this world table oriented? Wasn't object oriented? I hate fitnesse. I am so sorry but I deeply hate it. Especially if people pretend to have code coverage with it. Especially if I have to wait hours for some integration tests made with it. I'm for unit tests, with some mocks maybe sometimes. It's faster, easier to understand, easier to refactor, to change. Testers spent a lot of time understanding/playing/bla bla bla with fitnesse, why not putting them with their pairing  front of a good eclipse installation and let's get the party started with some unit tests?