Team split into feature teams, after all

You might remember from a previous post that I was regretting the fact that the development team had not wished to split into feature teams. I even suggested that it should not have been an option to them.
Well, be careful what you wish for, lest it come true. It appears that my words have arrived to the ears of a boss (3 levels above me, 1 level before the top of Valtech), and he diligently demanded that the team be split into these feature teams of graalic proportions.

…not that I have noticed any difference so far. It happened 2 or 3 weeks ago, and I still have a single person to talk to in Scrum meetings, and nobody has identified themselves as part of a particular team.

Posted in agile, offshore, scrum, valtech | Comments Off on Team split into feature teams, after all

Moved this site to WordPress

I was using Blogger so far, but I have decided to move to WordPress, mostly because of the support for Categories (similar to tags).

I had to host WordPress on my site, which is unfortunate, as it means that it will take more work (and risk) to upgrade to newer versions in the future.

However, it feels much faster (probably because I host it directly, I guess) and easier to customize.

Posted in misc, personal | Comments Off on Moved this site to WordPress

Luke, I’m your ScrumMaster

I am now a Certified ScrumMaster.

Posted in agile, scrum | Comments Off on Luke, I’m your ScrumMaster

Last year’s project goes live

The project that I worked on for 6 months last year finally goes live!

No small satisfaction, considering that only very few (3? 4?) projects that I worked on ever go live on the internet, where everyone can see them.

If the rumors are right, the part that I worked on most remains practically unchanged (go there. For more, choose Cardiff in the Court drop-down menu and select a day in yellow in the calendar).

Posted in java, valtech | Comments Off on Last year’s project goes live

How To Show Sub-Iterations in the Iteration Backlog

Once issue that we have with our customer is the definition of iterations. They want us to work with 6-week iterations, and release a previously-agreed scope at the end of the 6-weeks. The reasons for this according to them is that they need that long to run all the test cases they have (note that this development is a re-implementation of an application developed in Forte; all the specifications and test cases are already available and reasonably stable). At any rate, it does not break Scrum rules too much, so it should be alright.

Anyway, they do not mind us having shorter iterations. So we took the liberty to arrange the external iteration into three 2-week internal sub-iterations.

Problem is, how can we arrange the Iteration Backlog and still make things clear for the customer… and for us?

A first attempt has been to create new Excel tabs for each sub-iteration. So we would have 1 ‘backlog’ tab and 1 ‘burndown’ tab for sub-iteration 1, same thing for sub-iteration 2 and 3.
The issue that rose was that it became difficult for us (and for the customer) to understand what was going to be implemented in the external iteration. Say that the customer wants to check if a particular feature was going to be implemented. He would have to go to the first ‘backlog’ tab, then to each of the 2 other ‘backlog’ tabs. In practice, of course, he would stop after the first tab (I would too), and complain that we promised to do things and did not even list them.
As it turned out, the 2 other ‘backlog’ tabs did not contain this information. The person in charge of creating this Iteration Backlog had thought that things would be pulled from the Product Backlog during the Planning game for the other sub-iterations. Well, maybe so, but it is not making clear to the customer what we are hoping to implement in a given external iteration.

So I have suggested to rearrange the 3 tabs into a single one. The 1st tab would remain as it is. The 2nd ‘backlog’ tab would be copied just below it, in the same fashion as the ‘finer grained’ section in the Product Backlog, except that it would be called ‘sub-iteration 2’ instead of ‘finer grained’. The 3rd ‘backlog’ tab would go further below. Maybe we could keep the labels ‘finer grained’ and ‘coarser grained’ as sub-titles for those sections, until we get in the middle of those iterations.

I think this allows everyone to see easily what is going on, while still capturing the idea that the later sub-iterations still need to be analyzed in the planning game.

Posted in agile, scrum, valtech | Comments Off on How To Show Sub-Iterations in the Iteration Backlog

Team Did Not Split In Feature Teams

On our project, there is a total of 21 tech people (plus managers and translators).
3 of us are onshore.
18 offshore.

You would expect this to lead to a natural split into 4 teams, right? 1 onshore, 3 teams of 6 offshore. Or maybe 3 Teams of 7 people, considering that we onshore are officially there for support (and not particularly for implementing features, though we do occasionally). This would nicely fit in the “7 plus or minus 2” rule, right?

Incredible as it may sound, that is not what happened.
A couple of months after Craig introduced Scrum, I was wondering why there had been no mention of Feature Teams.

As it turns out, Craig *did* explain to them very clearly the benefits of splitting in feature teams. During the Retrospective Meeting, the Team (of 15 people, at the same) took the clear position that they did not want that to happen.

Craig’s opinion on this is that, in Scrum a Team takes its own decision. And if they do not want to follow a rule, then they shouldn’t be forced to.

Is it really so simple? For me, refusing to split in Features Teams is akin to flatly refusing to do Scrum at all. In the literature, I don’t really remember Ken Schwaber mentioning that it was optional, or even strongly recommended. It’s more like: “split the people in Teams, and then get them to choose tasks from the backlog”.

Now, I agree that once the team has decided *not* to split, then it is probably already too late. But why give them a choice at all? There are many other things they had no choice about, starting with using Scrum. I am convinced that, if they had been made to split in Teams, then they would have happily followed along without thinking twice about it.

Posted in agile, offshore, scrum, valtech | Comments Off on Team Did Not Split In Feature Teams

Buildix

Those fine people at ThoughtWorks have just blessed the world with Buildix, a bootable CDROM that integrates CruiseControl, Trac and Subversion. With this, you get an immediately available development platform. I cannot wait to test it.

Posted in test | Comments Off on Buildix

Reshape to your will, or play with strengths?

Last week, I attended a 3-hour session on wine. It wasn’t just wine tasting; the guy (only gave his first name, Alexis) also gave plenty of details on how wine is produced, etc.

He also explained the differences between wine-making in Europe (in general) with wine-making
in the New World (US, Latin America, South Africa, Australia, etc.). For him, it’s actually a philosophical difference.

  • In the New World, wine-makers are artists (almost) that consider that they can (and do) produce any kind of wine from any kind of soil. Preferably the kind that sells.
  • In Europe, from the concept of terroir derived the idea that the wine-maker should play by the strength of his environment and attempt to magnify the characteristics that are naturally present. If it doesn’t sell, well, too bad (I’m exaggerating a bit, here, of course).

Both attitudes have, of course, their own merits.

What does it have to do with software project management, you ask?

Well, here the idea (slightly far-fetched, I agree). Suppose that you are working in a multi-cultural project. Not with many different people in the same team, but rather with different teams in different countries. For example, our offshore colleagues are certainly more disciplined than we are (agreeing to work on Saturdays, for example); on the other hand, they are much less able to work without external help.

So, should one work with their strengths, or despite their weaknesses? A complex question that I will not try to answer in this column.

Posted in offshore, process | Comments Off on Reshape to your will, or play with strengths?

Javaday 2006

Last week, I went with 3 others Valtech guys to Javaday in Versailles.
Javaday is an interesting concept. It lasts only one day, and has no entrance fee. Even the lunch sandwiches are free. With such a premise, you would expect marketing talk and no much meat behind it. There is no doubt that it is a good publicity stunt for Sun (and you might leave the conferences believing that NetBeans is the only game in town, Eclipse coming as a distant second – IntelliJ or Visual Studio don’t even get a passing mention). But the presentations were remarkably technical and candid. In fact, only some of the presenters were Sun employees (including James Gosling). Most were from the French Open Source scene, with a strong delegation from the OSSGTP (Club Open Source Get Together Paris – weird name).

In the end, I left the venue with a warm feeling of contentment. I have seen real stuff; I have seen people that were happy to do those stuff; if fact, it makes me feel like, yes, I want to be part of that scene myself.

Now, a few words on the presentations.

Eric Mahé from Sun France gave the expected marketing presentation. As a tongue-in-cheek thing, he pretended to have found a new movement “Extreme Pixel Programming“. Hm… sure, why not.

  • Oh, in the last slide, he pretended that 100% of Sun’s revenue ($13B) are coming from Java. Yes, I know that he meant that it is *derived* from Java. But still… who is going to believe that?

James Gosling gave an overview of what was going on and what should be expected. Nothing revolutionary.

  • He said that Java was in 4 Universes (Enterprise, Standard, Embedded, Card) and that Enterprise is only the first step. Seriously, how many times have we heard that? Also, “the terminology application does not apply anymore, with components here and there”. Uhu.
  • Among the usual new things from Java 5, he mentioned Collections.shuffle(List). That brought back memories to me from me I was in high school and trying to shuffle my own list. My solution was to randomly take two elements, and swap them. Reiterate as many time as you can afford. I wonder what they have done there? (update: as it turns out, it was available in 1.4 already; however, it has been updated in 1.5 to handle generics)
  • Also, he said that Java 5 included many utilities and helpers. I hope it means that the incredibly useful (though low-profile) Commons package from Apache has found its way in there.
  • BlueJ is an IDE designed to appeal to first time developers (“who haven’t written a single line of code before”). Between this and the proof-of-concept implementation of a Visual Basic-like language that compile into JVM bytecode, it seems that they are at last seriously targeting this crowd of people who does programming on the side with VBA. Will take years to make any impact, though.
  • Similarly, Java Studio Creator (demonstrated many times during the day) is an answer to the drag & drop goodness of .NET Visual Studio. I saw a demonstration of Visual Studio 6 months ago, and it was seriously impressive. This thing seemed to be equally nice to show… though, like Visual Studio, it still means you’ll eventually have to dig into the code yourself, eventually.
  • Pleasant demo of ICEbox (don’t bother looking it up on the web; it is proprietary; also, it has nothing to do with ICEsoft), a 3D design tool apparently developed at his brother’s company (??) …mostly shows that a company with a clear business process will do well.
  • Reiteration of the usual performance claims. Apparently, some benchmarks have proven that Java is about as fast as C/C++, or even faster. It would also near Fortran. OK, why not?

We had a quick word from Max Lanfranconi, to promote the Java Community Process. The real meat was in the afternoon, but I didn’t get to see it, as I was booked into the AJAX demo.

Ludovic Champenois from Sun, and Emmanuel Bernard from JBoss/Red Hat demonstrated the power of annotations in JEE 5, and of the Java Persistence API.

  • Annotations are here, of course, to supplant XDocLet. But apparently, they are also replacing Spring in some was, as they provide support for Inversion of Control.
  • Emmanuel demonstrated all this with Hibernate, of which he is part of the team. Was a nice programming presentation, using annotations, Hibernate Validator. Too bad he had to manually edit XML files to make it work!
  • A few years ago, I used to work with Emmanuel, when he was employee of a major retailer in Paris. His project was eventually canceled, but by that time he had become seriously involved with Hibernate. He was eventually hired by Hibernate/JBoss. And now that Red Hat has acquired JBoss, he was moved to Atlanta. Wow. I think I’m jealous.

Romain Guy, formerly from the Swing team at Sun, demonstrated Aerith, a Swing demo. It is in fact a mashup of Google Maps, Yahoo Geolocation and Flickr. Eye-candy-a-plenty.

Next, we had a presentation from a number of actors in the French Open Source scene (representing xwiki, Groovy, Hibernate, jCaptcha, Maven, and others). Interesting, though nothing new came up.

Finally, the morning was closed with a Round Table that included James Gosling. The usual questions came up (what is Sun going to compete with .NET? when is the GUI going to catch up? etc.).

  • It was interesting that one of the guys (from the French Java Club) put on the same level Swing, Flex, Ajax and Vista, explaining that next year will probably see a war between them all.

In the afternoon, we had a 2-hour long session by Alexis Moussine-Pouchkine from Sun, on AJAX.

  • Here are the tools he mentioned: Google GWT, Yahoo, Zimbra, Prototype, Atlas, DWR, AjaxAnywhere, DOJO Toolkit, jMaki. He also recommended looking at the Java BluePrints Solutions Catalog.
  • Mentioned that JSON was an alternative to XML in the AJAX context.
  • His presentation of the integration of jMaki into Studio Creator was quite impressive. Felt like RAD development, similar to what we see with .NET Visual Studio.
  • Most interestingly, he talked about AJAX and server performance. Apparently, the first studies conclude that there is, in general, an improvement in the general performances, due to the lower quantity of information sent to the client. Of course, it is still important to make sure the Use Cases are correctly taking the constraints specific to AJAX into account.

For more about Javaday, check out Xavier’s blog.

Posted in conferences, java, valtech | Comments Off on Javaday 2006

As a user, always choose the English language

I always make a point of using an application or a website in English. This helps getting the “real” experience, as the developers intended it, and avoid crappy translations. I don’t go as far as changing the local settings of my machine, though I do remember one instance where a Java application running on a Swedish PC was failing, while it was working smoothly on British PCs (since the application was to be deployed only on British-based computers, it was not an issue, so we never looked into it).

Just today, my friend Guillaume Tardif was pulling his hair out. He was sending emails with text attachments, and those attachments would never appear in his email client, though they were perfectly visible in the email source.
However, those same emails displayed fine on my email client. And my email client is EXACTLY the same as his (it’s webmail, run by our ISP)!
Fortunately, I had the good luck of thinking about changing his language preferences from French to English, and voila, text attachments visible again!

I checked: there does not seem to be a bug for that recorded in IMP.

Seriously, when you hear about things like that… can you still afford *not* to use a piece of software in English?

Eventually, I logged a bug with free.fr (I cannot do that directly on bugs.horde.org, as I do not even know the version being used). We’ll see.

Update (05/07/06): Free.fr has now fixed the issue! Excellent responsiveness.

Posted in misc | 1 Comment

We’ve sunk to a new low

As I write this post, I am still under the shock.

In French, we have sayings that go like this (I’m sure they translate well in English): “we had reached to bottom of the pool… and we have started digging”, or “we used to be facing a cliff, but we have made a great step forward”, or “we were reaching a wall, but we are gaining speed now”.

On our project, in the past months, it became more and more obvious that things were not going right. Basically, we were missing the iterations’ targets by 10-20% each time, despite aggressively recruiting, and no signs of recovery. Relations with the customers were ok (sort of) until the end of the last iteration, when we had to admit that we were falling short (it was also the case for the other iterations, but this time we did not find any good excuses).

So, naturely, a lot more pressure was put on us for this iteration. 3 or 4 new guys joined the project, to a total of 21 (onshore and offshore combined). Widly optimistic assumptions were made in order to reach an scope acceptable to the customer (new joinees up-to-speed from day 1, Team working 6 days a week, mainframe computers available at all times, though it has been made clear that there was a high probability of them been offline for a entire week).

And, just yesterday, the offshore manager dropped a bombshell. “Why are you keeping the Save feature in the scope? we did put it in the iteration plan.”
What do you mean it is not part of the plan? it *is* the plan, or close to it! It’s the main feature that we want to work on! It is exactly the reason why the Delete feature was forced into the scope! It is at least HALF of the total iteration effort!

What on earth happened?

Well, the dear man simply never said that they would not implement it. For weeks, we sent him our view of the scope that included the Save feature, and he happily responded with a plan that did not include it. And nobody even noticed until now. (note: do not tell us that we were not following the Scrum process; we know that)

So, the estimations that I thought were ridiculously optimistic did not, in fact, even touch the surface of the iteration scope.
A scope that we had, of course, already communicated to the customer.

This morning, a status meeting with our CEO is taking place. I can only guess at the name-calling, finger-pointing and the scape-goat searching that took place.

Thank god I am not a manager.

Could we have done better if we had been religiously following the Scrum process from the beginning? I believe so, yes. That said, the larger issue here is that, on a fixed-price, fixed-date, fixed-scope project, the probability to reach the goal is small. And I don’t see how Scrum would have helped making that clearer than the way we did it. Even if it would, I suspect that someone would have done his best to hide it to the customer anyway.

Posted in offshore, process, valtech | Comments Off on We’ve sunk to a new low

First Retrospective Meeting

Last Monday, we held the first retrospective meeting on our project. I had pushed for it to take place, and I thought it would go better than the Sprint Review. As it happened, it did not.

First, I contacted people much earlier. For the Sprint Review, I only told the customer on the very same day. This time, I told my onshore and offshore colleagues well in advance. I did keep the customer out of the loop, on our delivery manager’s advice, considering that we were not sure how it would go anyway.

In a Scrum Retrospective Meeting, all the stakeholders (Team, ScrumMaster, Project Owner) get together. Here how it is supposed to go (if I got it right):

  1. split in small groups, listing positive things that have taken place in the past iteration (“plusses”), plus things that can be improved upon (“deltas”). Hence, the “plus-delta analysis”. Some people also like to add any significant events that have taken place in the past iteration;
  2. show & tell about their findings to other groups;
  3. the group members get together again to discuss possible actions;
  4. show & tell the actions to the other groups;
  5. finally, voting takes place.

Here is how we did it wrong:

  1. we first met on our respective sites, discussing only the negative aspects of the past iteration;
  2. then, we presented them to the offshore manager;
  3. then, we (onshore) discussed possible actions;
  4. then, we presented those actions to offshore;
  5. finally, we published them on the project wiki;
  6. voting is supposed to take place in the days coming after that (though I have no clear idea when or who will do it).

I was reasonably pleased with our findinds and our actions. Though they were not many, and though we did not list positive aspects, at least the actions were quite concrete and easy to assign.
However, I found that the actions from the offshore team were not very good: actions were not well identified (“we should get more information on what onshore is doing” to which I responded: “we are already doing that, what do you want us to change or do instead?”. They did not say.) Strangely enough, in some cases, they *did* have actions in mind, but did not communicate them. For example, they mentioned that “bug management should be streamlined”. OK… but that’s not an action. Well, after some searching, it appears that the action was to define a process and that it was to be done by offshore. Alright, then!

Much of the conference call was spent trying to explain what each other meant (not easy to make a French team and a Indian team communicate… with each speaking English with a funny accent). Some more was spent on justifying and some (limited) finger-pointing. In the end, only a small portion of the time was really spent on productive activities. Most concerning was the fact that the onshore project manager thought that it was a waste of time (I did my best to explain her that we’ll do better on the next iteration).

Here are some suggestions from Craig for next time:

  • do the entire plus-delata analysis and action finding before the proper Retrospective Meeting. The results should be published, preferably on the project wiki, before the meeting;
  • show & tell all this to the other team;
  • vote (offline).

We’ll see.

Posted in agile, offshore, scrum, valtech | Comments Off on First Retrospective Meeting

Team Morale Matters for Evaluating How Projects Are Doing

Yesterday evening, I attended a internal presentation on Project Metrics (if you’re interested, the promoted process was QGM).
As a technical guy, I took note of an important thing. We were in the middle of a part describing the goals of a project. We were fed with the usual triangle of Price/Time/Requirements. But the presenter, my colleague Ludovic Legros, had one additional thing: team morale. For him, “a project that has been badly perceived by the development teams is not considered to have been performing well.” This reminds us of the sustainable development promoted in Scrum (and many others).

A thing that strikes a chord in our (onshore) team, merely a week after the offshore managers took the decision of making the offshore team work 6 days a week on a regular basis (so far, they were “only” working from time to time on Saturdays).

Posted in process | Comments Off on Team Morale Matters for Evaluating How Projects Are Doing

Offshore Team Start Working on Saturdays

As part of the actions for this iteration, the offshore managers (the ones based in Bangalore, not the ones based in Paris) have announced that the development Team will work on Saturdays from now on. My colleagues and I, in France, are not concerned by this, of course, though we are officially part of the Team. Note that nobody from the Paris office asked them to take such a decision.

It is important to know that offshore Team was already working on Saturdays from time to time (they even worked on a Sunday once). However, they never billed onshore for this (that always baffled me), and the offshore manager always reported that individual people were working 40 hours a week (the extra hours worked most days are not counted as well).

I believe that the management in France will be getting the worst part of the deal. Here is what I think will happen:

  • people will work on Saturdays (I mean by this that they will probably not try to cheat and pretent they cannot come. They will be there.)
  • productivity per day will decrease (as was painfully demonstrated the WE before last, when they worked the 2 days)
  • productivity will probably decrease on week days as well, as people will be tired, will go home earlier, and or will report being ill
  • onshore will be billed for the extra day worked per week, ie. 20% more

In the end, onshore will be paying a lot for only a marginal (or even negative) return. Not only that, but the development Team will soon get tired of it. July being traditionally a delicate period (this is when the appraisals take place), we should anticipate some departures. And it’s usually the best who get hired first by the competition…

Posted in offshore, process, valtech | Comments Off on Offshore Team Start Working on Saturdays

free.fr offers 10 GB Personal Websites

My webhost, who is also my ISP, now offers free upgrades to 10 GB for all (free) personal websites!

No idea what I will do with that, considering that I have yet to reach the 1 GB threshold, which was offered 1 year and a half ago.

Posted in misc | Comments Off on free.fr offers 10 GB Personal Websites