Citcon Europe 2009 @ Paris

During 2 days, Friday the 18th of September and Saturday the 19th, I attended for the first time the Citcon Europe Conference, about Continuous Integration, in Paris.

Friday

When I arrived, at 6:20PM, I was received by 2 Jean Michel I know (Garnier and Bea) who gave me a tag on which I wrote my name on it, a T-shirt, a wifi logon for the conference, and a bag loaded with sponsors  material.

When I got into the room, I found many colleagues from Valtech, and people I usually meet at the Paris Jug and other conferences in Europe.The room is nearly crowded, we’re about 120.

PJ(Paul Julius) and Jeff presented how the conference would occur : the sessions, divided in 8 rooms, the Saturday lunch, the Saturday breakfast, the after conference events (most probably in a bar), the sponsors, the volunteers, and their association.

Then, the presenters let every one in the room introduce him/herself : most of the audience was there to talk about CI, User Acceptance Testing and agility.

After the presentations were made, both presenters explained how the open spaces work : an interesting point is that if you think that you’re wasting your time in an open space, just don’t hesitate to leave: to participate actively in another open space!The audience is responsible for making the conference great, so everyone should feel free to join and leave any open space during the day.

The sessions proposed by people attending the conference, will occur in the rooms chosen by the audience : if the audience thinks it’s a popular topic, the session will use a bigger room.

The presenters also encouraged the audience to blog, take photos, promote the event
Before letting attendees propose sessions, Jeff added : « Whether the conference will be successful or not depend on you »

Finally, some attendees proposed some topics, and after this was done (a think that more than 50 topics were proposed, a lot of them about Scrum, mock objects, how to write tests and user acceptance tests, etc..), all these topics were refactored around a nice buffet and a drink !

The organization for this citcon starter was really great, and when you think that the entrance is free, you even better appreciate all the efforts made by the volunteers to make this conference so professional and nice !

Tomorrow, the sessions will begin, I can’t wait !

Saturday

Following are transcripts of the sessions I followed (I mostly wrote about things that seemed important to me)

Definition of Done & Testing

Who makes the decision ? the project manager? the product owner ?
We should make all requirements measurable and stable in order to define done software
Done can be declared when we customer accepts the feature, and « done done » when the feature is in production;provided that the team meets metrics criteria when developing, providing a sustainable pace.
Do tests provide business value after all? Of course they can, depending on how you wrote your tests, whether you include the business in your development cycle or not.
Done can also be when « it feels right » : when the customer AND the team agrees on the fact it is done; if a member does not think the quality is met, he should say it, and not agree to say it feels right.
Maybe frequent builds is the solution : providing more and more functionalities builds after builds, intead of shipping o huge piece of software not testes enough

Mock objects

You can use Mocking (making expectations about how and how frequent it is called) when it changes the outside world, elsewhere you should stub; by outside world I mean any third object in the chain
It’s usually better to initialize once your mock object (even making it final in Java), to only focus on the expectations.
Some people in the room proposed not to use interfaces anymore, because some mock frameworks don’t need interfaces anymore, but it seems complicated refactoring because you don’t explicit the interactions between your classes.

Faster tests

How long is a too long to run test ?
How long is a too long to run a build ?
The aim of making tests faster is too shorten feedback.
You can categorize tour tests between the fasts and slower ones (the fastest run first (Unit Tests), the slowest runs last and only once each day(Selenium Tests on all browsers) )
Running unit tests concurrently on a 8 core developer machine ? That means investing in hardware to speed up the tests
You can use in memory databases instead of using real databases on the network; but how can you be sure that your tests will work on the target database ?
You can also use private builds, like Teamcity does : you commit a private build which runs a the CI computer, and if the build went fine, your code is automatically committed to the branch of your choice.
You can write better tests : more rapid, using lighter structures in your code.

Conclusion

It was y first citcon conference participation, and I was quite impressed by the quality of the organization, and also of the audience, lots of smart people coming from all around the world (mainly europe and france though).
The food was good, the rooms and facilities (like wifi) were also good, one ting that disturbed me was the fact that post-its on the agenda kept on moving: I missed sessions because I did not notice that the schedule had changed… but that’s the way it is !
The open space format is a bit difficult to follow, many ideas are popping out from all other the room, and the hard part is to catch them and analyse them; but the effort is worth it !
If you want to know more about the sessions given at citconf europe 2009, follow the link !

Books mentioned

x unit tests pattern (by mezaros)
Object-Design-Roles-Responsibilities-Collaborations (by Rebecca Wirfs)
Mock Objects by Steeve Freeman

Tools

crap4J : complexity and coverage
gridgain : run a single build on a farm of servers
dbunit : to inject test data in a test db
testng : like JUnit, but provides the ability to run tests in different threads
selenium : to automate user accepting test
webdriver : to run selenium, should merge with selenium eventually
cucumber : writing and running User Acceptance Test in a DSL
html unit : when you don’t need selenium to check every page/css/javascript details