Wednesday 28 November 2007

Two links for the readers

Today's browsing activity was quite interesting. I ended up reading an article on Spring Framework 2.5 on InfoQ and, digging around I came across this portal for web 2.0 stuff.

Friday 23 November 2007

XPDay 2007

XPDay 2007 - cool agile conference in London (19/20 Nov 07)
Organised also by those running the Extreme Tuesday Club, XPDay has reached his seventh birthday. From what people in the Agile world say, the conference is one of the best around for various reasons. Firstly, it's very small and organizers are very friendly, so there's a relaxed and friendly atmosphere. Secondly chairs are very good and competent and usually the level of the talks is higher than average. Thirdly the organisers have a good taste on choosing venue and pubs (for the meeting after the talks). Lastly, it's cheap :D

Therefore it's a nice place to be in, especially if you're involved on presenting as I was (with three other buddies from the Web21C SDK team).

Our session
Back in May (I think), when call for papers opened I had the idea to write a follow up to the presentation  I and Paul Karsten did at XP2007 in Como. I felt that then we didn't tell the whole story. In Como we had a poster (and a paper) telling how the Web21C team was created and how it evolved. We concentrated on the practices followed and, marginally, touched the tools we used.

So I thought to prepare a session to complete the story of the journey I have been doing in the past two years by expanding on the tools.

Gabby, Nathan and Paul joined me to collaborate. It was great, as each one of us was involved in different parts of the project so we were sure to cover the whole spectrum of tools used within the team (Gabby has been involved on the Web21C SDK itself, Nathan on the Web21C SDK and on the build process, Paul on the Portal).

Slowly but thoroughly we started "What's in the toolbox of a successful software craftsman". The original idea was of a 45mins session where we were emulating a mini release showing how we were making use of our tools to support our agile development work. After talking to Angela Martin, one of the conference organizers, and having been allocated only half hour in total I changed the shape of the presentation. After few meetings with the team we decided to produce a standard slide driven presentation splitting it in 4 parts - to allow everybody to talk.

Being a presentation on tools, there was the risk of falling into a tutorial-like speech which would have defeated the point of presenting at an Agile conference.

The idea ultimately was to talk about tools, but in context of three agile principles that we, in Web21C - either explicitly or inadvertently - have been complying to. Those principles are: High project status visibility, Fast feedback and Complete automation of development tasks.

So we wrote the slides to show people how we were using a bunch of free and open source tools to achieve maximum results on each of these three principles. We picked four of the tools in the toolbox which we believed were the more representative (Eclipse IDE, CruiseControl, Selenium and ScrumWorks).

So... it took - i believe - four or five meeting to get to a definitive and presentable slidepack - it also involved Ivan Moore, our shepherd - assigned to us by the XPDay organisation, who had the role of looking at the format of the slides and helping us on balancing the contenent.

And a week before the day we started rehearsing. I must admit, I was quite nervous at those rehearsals - it has always happened to me.

Then at 3.30pm of Monday 19th of November we delivered. And it went very well. Ivan - who was chairing - and the audience gave us extremely positive feedback. Slides were clear and the message came across smoothly. Moreover we got questions at the Q&A who nicely filled in the available half hour.

On Tuesday, at the end of the conference, we were also awarded - with a bottle of champagne - of "Best newcomers session at XPDay 2007". From the words of Angela Martin: "...one of the reasons we selected your team's presentation for special mention this year, was not only it did receive good feedback ... but during the conversation's in the pub and during the breaks it was one of the presentations people were talking about and remembering, so well done."

How nice!

Our poster

The poster was a latest addition to the pack. The last day of the call for posters I thought that it would have been a good idea to present the Toolbox (in form of a mind map) in the poster session. The original idea for the session included an amount of time dedicated to experience exchange with the audience. Given that we were told to refactor our slidepack and cut to fill in 30mins and given that I really wanted to see what other people were doing out there, I decided to submit the poster. Yes, it was more work - as I did it on my own - but it was fun and well worth at the end.

I also thought that, in order to involve people more and to drive them to talk to us, it would have been a good idea to let them update the poster with their own fav tools. And so it went. As soon as Gabby sends me the piccies, I'll upload the mod poster here.

Sessions I went to

Keynote1: Jeff Patton - embrace uncertainty
A really good session. It opened my mind. Jeff is an authority on user stories writing. To cut it short, it explained very well why Agile projects can get to a mess and why this mess happens when Customer and Developers choose user stories badly.
Doing XP (and agile in general) is not about defining user stories, and then fully implement them iteration by iteration. It never happens like that [I heard somewhere else that this is Scrumfall, the tiny little cousin of RUP or any iterative waterfall-ish approach].
It's about rethinking what iterative means.
It made the example of a car. It is made of an engine, breaks, wheels, doors, seats and so on. There's no car if at least one of those parts are missing. So, rather than saying let's do the engine, then the wheels then the breaks and so on, without being able to figure out when the end product is going to be ready - there's also the chance to starve the stories at the bottom of the backlog - the right approach would be, lets to a cheap and working engine, breaks, doors and so on. Then iteratively improve the lot to get to the desired result.
The customer sees the end, which is not anymore uncertain. He has an end product. It may not be a Ferrari as he wished, but at least it's something he can drive.

Keynote2: Yvonne Rogers - Cheek to cheek: why co-located collaboration persists
Rather dull presentation on why colocation is better than remote meeting. Thanks, I hadn't figured it out!
Only thing worth mentioning is that there's some research in progress on how to make co-location even more effective. When a team pairs with one keyboard or brainstorms on a white board, there's one single point of contention - either the keyboard or the marker. This may not be effective as the one with the marker/keyboard is the one driving, possibly precluding the rest of the attendees to express their ideas. There are prototypes of tools (similar to a large flat touch screen that the working team can access and manipulate all together. Educational!

Refactoring databases: evolutionary database design

It didn't rock my world. DB and OO are two completely different beasts. OO is far more advanced in terms of methods and supporting tools for agile development.
The speaker seemed also to make a point of how culturally DBAs are different than developers.
Bottom line: cut cultural barriers and organise your sql scripst properly to be able to easly manage db changes. Mhhh! Oh well!
Lot's of techniques and tools he was using (ant/CC/subversion) weren't new to me. I can though imagine that they were new for most part of the audience. So after all a good session to remind me how badly I have done DB application in my remote past. It would have been more useful if I was a DBA or if i was spending 90% of my time coding oracle stored procs (Ouch!)

Jeff Patton's Master class: mapping user stories.
Interesting stuff. He did link to the keynote several times. Nothing particularly blowing. One thing though I learned: He introduced the concept of user activities as "high level" stories. Example "Manage emails" vs "send email", "receive email"... His point was that more often than not what really delivers money and value is delivering an activity of the system, made of user stories. Rather than the user story itself. And the way he suggests doing it is by iteratively incrementing each of teh stories in the activity by going cheap, then augmenting. Good stuff.
I missed the afternoon part of the master class as I did my preso.

Fighting the monster - agile development om top of a legacy database.

Interesing tutorial on DbFit and on how a bunch of developers made possible to wrap an old Db into a nice simple interface hiding the complexity of the db itself.

A Technical Story
How a team of devs working for a financial company did agile without telling their customer and how they screwd up once when they decided not to implement user stories, rather do what they wanted, that is to implement a fully fledged configuration API. Good stuff - to a certain point.

But that's crazy! Cognitive Bias in decision making.

This session was supposed to teach me how to understand why someone (typically someone high up in the food chain) does make decisions sometimes taggable as crazy. In a way it did, or at least it explained me the tools i should use to do so... a bunch of cards with short sentences on ala "People usually takes big risks to avoid loss and does not take small risks to gain advantages"... not my soup but interesting enough as a change.

Fiat Lux: testing with the light on

Experience report of a company developing software for libraries using technologies not similar to ours. Specifically Concordion  and Team CityConcordion looks like something interesting, although it suffers of the same problems that Fitnesse has: maintaining the fixture code :(

The secret backlog - behind every bug-report is a user story

Anthony Marcano telling us that from a bug theres a test, from a test there must be a story, from a story there's an idex card to stick to the wall. Who needs Jira anymore.

Specification by (executable) example: Prosperity of the FITtest

experience report on using Fitnesse!  

Monday 5 November 2007

Charts in Java

Today I found this nice litter library that allows developers to produce charts out of data JFreeChart. I was up and running in 1/2 h - the issue was to generate a simple plot of some performance data we collect during our performance build.

Anyway - this is the graph produced out of some dummy data in my local database.


Thursday 1 November 2007

Scalability resources

In my project (SpringRing, now Aloha) the metaphore for this cycle is "make it scalable". So, in order to document myself on the topic I have lurked the Internet and found these interesting websites/products

Especially the last one is a great source of information on the topic of scalability.

I bookmarked these and others in my del.icio.us archive

Please let me know if you have any other pointers.