mercredi 2 avril 2014

Home working in IT - 2 years later

It has been a long time since i have written my last post. I'm now back to write a new one because i still have a lot of questions around my way of life and the home working. 

It looks like home working raise a lot of questions and really start to be trendy. perhaps one the new ways of working...

There is already an article where i gave my first impression about the home working after few months here :

I'll try to take a step back and to give some insight about me and the home working with nearly two years experience.

So i'm sure there are already a lot of questions thanks to the previous post : 
  • Do i still work in underwear or am i now at the next level and now working nude and do i stop to shave me to look like a bear?
  • What am I doing now?
  • Do I travel a lot?
  • Am I out of my local world and am i only living connected?
  • Do I improve my english within the past two years?
  • Am I still happy to work like that?

Code in underwear?

To answer it quickly : no and no, i always work dressed. Even if ok, it's possible that i checked mails or did few things before taking a shower and being dressed. Why is it stable? Simply because I have to drive kids at school before starting to work. As it's not sure to go to school in underwear is acceptable, i don't want to take any risk. More seriously, in my head, it's a good way to split things. before being dressed ans washed, I don't have start my "working day" but after it's the case.

An interesting story about writing my previous post "Yes, I code in underwear @home" is that i was not hoping to find myself associated at the first place on google search results when you're searching for "code underwear home" : . I don't know if it's a good or bad thing. Let's say it's "interesting" ;-).

About the shaving, even if i participated to the Movember last year which was already a challenge to not divorce, I'm still trying to not look like a bear. 

What am i doing now?

I'm still working for the same customer within the same team. Topics and team members changed a bit. I would say everything is still the same and everything has changed. Let me try to explain that. The big context is still the same : I'm working from home for the same customer with great guys and still doing crazy stuff. Appart from that, everything changed, not exactly the same guys and doing projects after projects which are all totally different.

I've got now two hats. On the one hand, I'm the "official" remote ScrumMaster of the team. I would never have think what a remote ScrumMaster could have been and what it could have done before working in this context. This topic can be a full post. It's not the goal of this one. On the other hand i'm a still team member of the team.

Do I travel a lot?

As, i'm working a remote company. A good question could be "does it imply a lot of travel?"

I'm working within a distributed team but with one particularity (which make the whole thing possible in our context in my opinion) : we are doing local sprint planning each 3 weeks which mean meeting each other IRL. Most of the time, it's about one day in Lille or in London which does not make a lot of difference thanks to the Channel. So these days,  i'm out for the whole day. I'm leaving home a bit early and return in the evening not so late. It has not a big impact with my family. 

In addition to that, four times per year we are doing the sprint planning where my customer is, in Switzerland. In this case, it's about a short and "extreme" week in there where we are doing sprint planning, conference, hackaton, runs in the mountain, meetings where it's easier to be in the same room, drinking beer (where it's easier to be in the same room too even if we tried some "friday beer hangout").

In my opinion, it's really a good balance between the possibility to be very available and flexible when i'm working from home for my family and the fact that i let my wife managing the family when i'm not there (It's really my vision, you can disagree or have others).

Am I still connected to my local (IT) world?

I think it easy to be disconnected from your "local (IT) world" when working at home without any interest in it because of you're not part of it... So you can start to loose friends and colleagues near you which is not good!

So, to fight against that, i'm still part of the Ch'ti JUG, the local Java User group where we organize meetup about Java and its very large ecosystem which is still cool. We recently organized a Devoxx4Kids session which is about sharing our passion for programming with kids. It was awesome to see the happiness on the kid's faces when programming a Nao or a mindstorm.

In addition to that, I'm giving scrum course at the university by helping student in their project as a Scrum coach (I hate this title!).

It's my way to keep in touch with my local world.

Do I improve my english within the past two years?

I'm really the worst person to judge it. I would say yes even if it's sure i don't have a "good english". I've got a pragmatic english to make things working every day. That's it. Appart from that, i'm still interesting in learning new words thanks to my native speaker colleague, especially insults or expression of everyday life!

Am I still happy to work like that?

To make it short : What! Already two years! 

Thanks to this way of working, i'm now a running and trail running addict. It's so easy to be able to run at lunch from my home/office. 

It's still so cool to be so efficient at work and to be so available for your kids.

Even if there is still a difference between the personal life and the working life, I've got now more international friends rather than international colleagues.

On the family side, it's still interesting to see that rules like when the door is closed, i'm working and it's possible that i will not respond if you knock on the door are still in place and still working fine. It's interesting to see that the kids have fully understand this way of working. They are able to talk about my office and my bedroom like two different things whereas it's the same room in my house ;-)

I think nobody can say if he will be able to work from home until he's doing it. It works for me and it's cool.

mardi 25 juin 2013

cassandra-unit is out : CQL3 script support and spring integration

I'm pleased to announce the release of cassandra-unit

Just as a reminder, cassandra-unit is a library to help you to start and load different type of dataset into an embedded Cassandra instance. Basically, the goal is to simplify the implementation of your unit tests in java.

There are 2 main new features in this release :
  • the support of CQL3 script as a standard cassandra-unit dataset.
  • the spring extension of cassandra-unit.

CQL3 support : embracing the new datamodel face of Cassandra

As you may know (or not ;-)) , the 1.2 version of Cassandra was released with major changes and a new remote protocol : binary CQL protocol. The main idea is with with new protocol is to get rid of some limitation with the Thrift protocol.

So with this new protocol come : 
So, as a first step this new release of cassandra-unit provide the ability to use CQL3 script as dataset to load data into your cassandra instance (embedded or not).

It implied internally some big modifications using the java-driver instead of Hector for the CQL3 part.

here is an example of use : 
simple.cql : 

CQLScriptLoadTest.cql : 

thanks marcinszymaniuk for your contribution!

Spring extension 

The other interesting feature provided in this release is the spring integration. I mean the ability to to use cassandra-unit with the Spring TestContest framework based on annotation.

As documented here, there was 3 ways to integrate cassandra-unit in your tests :
  • the native approach
  • using the AbstractCassandraUnitTestCase or AbstractCassandraUnitCQLTestCase
  • using JUnit4 @Rule
The cassandra-unit-spring integration provide a new way to integrate cassandra-unit in your unit tests.

The documentation about the spring integration is here

Here is a small example : 

simple.cql : : 

Thanks Olivier for your contribution!

cassandra-unit is available through maven public repo and source code is available on github and the project is licensed under LGPL V3.0

mardi 14 mai 2013

The Next Step

Avez-vous déjà assisté à une réunion où plein de belles décisions sont prises. La réunion a débordée un peu... les participants sont pressés et fatigués... La réunion se termine... Chacun repart de son côté et retourne a ses occupations puis.... puis... puis... plouf:

Rien ne se passe. 

J'ai déjà assisté à quelques de ces reunions... Si toi aussi tu te sens concerné tu peux lire la suite de l'article sinon... heu... tu peux aussi lire le suite de l'article :-)

Une seule solution pour te sauver :

L'idée derrière le next step est de ne pas attendre après avoir décidé quelque chose pour commencer sa mise oeuvre. 

Il faut battre le fer tant qu'il est encore chaud!
Il faut amorcer la pompe!
Il faut mettre la machine en route!
Il faut passer la première!

C'est marrant de voir que plein d'expressions sont "Next Step"!

A minima, il s'agit juste de définir la prochaine étape après une décision : quoi/qui/quand. Il n'est pas nécéssaire que cette prochaine étape soit conséquente. Plus elle est petite moins elle prendra de temps. Une fois de plus l'idée est d'amorcer le travail.

La difficulté du next step est qu'à la fin d'une réunion intense, les participants oublie/n'ont pas forcément envie de penser au next step.

Ok et après je fais quoi?

Si tu as compris, c'est très simple, il faut définir le next step du next step!

Tips :

  • Toujours prévoir un peu de temps à la fin d'une réunion pour définir le next step.
  • Parfois il s'agit s'implement de poser la question (parfois suivi d'un blanc) : "Ok, super, on commence par quoi?".
  • Si le next step peut se faire dans la foulée ou simplement être commencé, c'est encore mieux.
  • Parfois, résumer et reformuler le contenu de ce qui vient d'être d'être décidé et des actions liées suffit au next step.

Ce qui est sympa avec le next step, c'est qu'il est simple à mettre en oeuvre. En revanche, il ne faut pas l'oublier!

Après avoir lu cet article, tu es officiellement "Next Step Certified". Ce qui te donne le droit d'utiliser et de former au Next Step! Quel chanceux tu fais!

lundi 22 octobre 2012

Yes, I code in underwear @home

As requested by my foreign colleagues/friends, Here is a translation of this article in English with a bonus at the end.

I'm currently on a long mission to a foreign customer that I do at home. This is usually called the "home working".

To reassure the sensitive souls, I do not really code in underwear, it's a picture. I could code in underwear :-)

I had not necessarily planned to write an article about this way of working but whenever I talk about the subject with friends or acquaintances, they feel curious and full of questions. I think that if it so interested, it means that i have to share my experience.

Here are the questions that come up most often:
  • It's not hard work alone all the time at home?
  • Me, I'll probably distracted. You can stay focused and be effective?
  • How do you do with the family?
I will try to answer these questions by offering my thin feedback on the subject.

I said I'm working at home today because it is that the mission wants. It was not a desire on my part, it is an just an opportunity.

The beginning

It all began with an email, which read quickly can give something like :
mission, overseas customer, all in English, home working, scrum, team with experimented people, moving every 3 weeks.

I quickly wanted to know more because I was just available and then after some discussion : GO. There is a part of unknown to be accepted, it is like that, that's life. You have to trust.

It's Tuesday I was told that begins on Thursday through skype Thursday morning.

General warning: how I'm going to organize the house: -)

I do not need a lot of thing to work, a piece of chair, a piece table, a laptop, internet and a bit of calm. It is just on this point that I must organize myself a little because at home I'm not alone, there are wife and children. I did not want to disturb or to feel that i disturb and vice versa.

I need a "quiet corner". It is not possible for me to have a room dedicated to serve me office. So I created a corner in my bedroom in front of the window. Hop, the bedroom will be the day my office.

Wednesday will be devoted to me set up an office in my bedroom. And then I get an email with all the access client (vpn, mail, forge, ....). Default: it works, I have access to everything, I have the right to do everything ...No, no, this is not a dream, it is sometimes ;-).

Thursday morning, it's started : "Hello, good morning guys!"

Daily : "We are quite flexible"

I find that I'm part of a fairly large team including members of different nationalities which are working at home like me. Even the ScrumMaster is a freelance working like all others!

Shortly after starting, I talk with another team member. As I discovered how things work, I foolishly talked about the scheduling, "online", time everything. I find myself stupid asking questions starting with "what if" and all the answers were: "we are quite flexible" ... The idea is really to "do the job" and having to take time off to go or if it does not really matter. Everything is based on trust.

That it brings me daily: real flexibility. It is nice to occasionally pick up my first daughter at school, be able to go to an appointment in people / shops / institutions whose only opening hours are 9:00-12:00/14:00-18:00. (finally, it is the things that I enjoy rarely but it's nice to know that you can do).

It is also nice to be able to do some sport start at home and take it easy a real shower in my bathroom. I do not need to take portuguese shower (I never practiced but it exists ;-))

Even more rarely, there is the nice side to occasionally to have Rolland Garros or the London Olympics in a corner of the room.

I work alone at home like a bear?

So yes in the morning and in the afternoon I am physically alone in my office. 

In contrast: 
  • I am virtually overconnected with the team I work with. Skype is the tool I use to communicate in real time either through chat, audio or video.
  • 10:00AM is the hour of our daily scrum meeting. Screen sharing + conf call where I talk to the team.
  • There is a global chat in which each team puts his mood, says what he does in or out of work, this brief provides a sense of community and closeness.
  • We meet every every 3 weeks to complete the sprint (review ans restrospectrive) and restart a sprint (sprint planning, planning poker, ...). These are one or two working days pretty intense because it concentrates all the Scrum rituals but it also gives the opportunity to see, discuss, exchange, joking and to take a real coffee break with real colleagues; -).
This is, to justify the side "I'm not alone when I work at home" but it's true that I do not see real people "IRL" ;-). So why to avoid finishing as a bear coding in my bedroom :
  • I often see friends and colleagues to eat lunch with them.
  • I am part of Ch'ti JUG , which allows me to cross the world and interact with other fans in the region.
  • I go to conferences like Devoxx or Devoxx France to share with passion but also a little further.
  • I try to exile from home on Wednesday for not be shy interfere with wife and children are at home this day. I take this day to work with people who are willing to welcome me (Thanks also to Thibaud and Antoine of Onyme for welcoming me into their office, it was really nice, guys!) or in a friend who joined me in the same home working adventure.
I had to search long enough to find negative side but it was for my feedback to be more objective :
  • The coffee break is not really a coffee break. It is sometimes lacking and sometimes I look at the time, it's noon and I have not felt the need to take a coffee break. It depends.
  • My coffee machine has clearly not taken the load. I had to change :-)
  • I sometimes feel out of step with my friends and former colleagues who mostly work computer services company or with local software editor. Being freelance also participates this offset :-). It's not really a negative but I feel sometimes that I pass for an alien. The problems that we encounter everyday are no longer the same.

Am i more or less productive?

I'm actually quite surprised when I talk about this type of work sometimes when the reaction is "uh, I'd be too tempted to be distracted and do something else." I do not know how to answer that question ... I say that in general, it's the opposite. It's probably because my job is a passion ... Rather it is my wife who set limits to stop me :-) 

I'm clearly more productive at home. I have my tools and calm. The important thing when working at home is that you can choose yourself the conditions that allow it to be productive. We add to that the fact of not having travel time to get to his workplace. We will say minium 1 hour per day back/forth. It is a real gain. 

"Anyway, I'm more productive."

Separating private life / professional life

Not knowing this way of working, I preferred default impose a few rules in the house to separate the things and put barriers: 
  • When I work at home, it's as if I was not at home. I'm not Tony Micelli able to take care of the house.
  • The door to the bedroom / office represents the separation private / professional. When it is closed, do not go without knocking at the door and wait until I say it's OK. It's not that I want to play Boss inaccessible but this is the only way to predict if I'm online, perhaps with the video and I can not answer.

So I applied these default rules within the family. It is rather funny to see how the children have experienced change and have integrated. "Dad, you're working in your office in your bedroom today?". It's also pretty funny to 04:30-05:00PM hear knock-knock and have his children come say hello after school. I began to relax the rules, but it comes from me. Finally let's be clear, I'll never compete with Tony Micelli! 

A short conclusion would be fine here

When people ask me if it's okay, I replied that:

That's terrific!

I think that says it all. I am clearly aware that this way of working may not suit everyone and every business. In my case, it's cool.

One more thing... 

Writing this article triggered a massive release of office pictures of team member. Here is a nice sample of what can be done to work at home (thanks to them to allow me to share that!). I think but i'm not sure that there are one or two fake. It's up to you to find them ;-) :

mardi 16 octobre 2012

Scrum distribué : yes we can!

On parle beaucoup de Scrum, beaucoup en bien et beaucoup en mal. Scrum, ça fait parler les gens :-)

Du côté de ceux qui croient en Scrum, On (oui je me mets dedans évidemment) est tous a peu près d'accord sur le fait que Scrum, ça marche bien bien dans des contextes locaux où tout le monde est dans la même pièce. Les outils liés à Scrum sont d'ailleurs orienté pour fonctionner localement avec le fameux tableau blanc, des murs de post-its partout.

A chaque fois qu'on parle de Scrum distribué, tout le monde s'arrête de respirer. Ceux qui ne croient pas en Scrum se mettent à rire et même ceux qui croit en Scrum ont dû mal à croire que ça puisse marcher.
"Quoi ton PO n'est pas dans la même pièce que l'équipe!"

On pourrait d'ailleurs distinguer deux types de distributions :
  • distribution partielle : l'équipe est locale mais est distante du product owner

(scrummaster, team member, team member, ...) | (product owner)

Ce modèle fait penser à un modèle "offshore agile" (les extrémistes de Scrum sont déjà en train de s'étouffer car j'ai osé associer ces deux mots :-))

  • distribution totale : tout le monde est distribué
(scrummaster) | (team member) | (team member) | (...) | (product owner)

Comment ça, ça ne peut pas marcher?

Il se trouve que je travaille actuellement dans une équipe qui fait du Scrum totalement distribué et ça fonctionne plutôt pas mal...

Comme je suis sympa, je vais même vous dire quels sont les facteurs qui font que ça marche dans notre cas :

facteur n°1 : Des profils costauds

L'ensemble de l'équipe est constitué de "profils costauds". C'est à dire des gens intélligents, passionnés,  avec de l'expérience, autonomes, impliqués, communiquant et sachant prendre les bonnes décisions avec le minimum d'informations.

Ok, je pourrais presque arrêter l'article là. On pourrait peut être même faire du "waterfall" et peut être que ça marcherait :-). 

En tous cas, c'est un des facteurs de réussite de Scrum distribué : choisir et être exigent sur les profils qui feront partis de l'équipe. L'idée dans ce cas est de plutôt partir à la chasse, chercher des gens connus  plutôt que de publier des offres de missions sur Monster.

On dit souvent que le problème se trouve souvent entre la chaise et le clavier :-). Le développement logiciel est avant tout une histoire de personnes.

Tout découle donc de là. Si on a les bonnes personnes, on avance dans le bon sens... Ca parait évident mais il faut simplement parfois le dire (même si ça peut choquer un peu).

facteur n°2 : par défaut, on fait confiance

Une attitude qui n'est pas toujours facile à avoir dans les entreprises en france. Je ne sais pas à quoi c'est dû et je ne vais d'ailleurs pas essayer d'y répondre. En revanche, je constate que souvent "par défaut tu n'as le droit de rien faire, pour ne pas faire de bêtise".  Il apparait toujours dangereux de responsabiliser les gens alors que je trouve que c'est une des clé de la réussite. C'est vrai que c'est toujours dangereux quand les gens se responsabilisent, se mettent à réfléchir, prennent des initiatives ;-)

Pour en revenir à notre Scrum distribué. Le premier jour où j'ai commencé cette mission, j'ai eu tout mes accès (même certains auxquels je n'avais pas besoin), par défaut je pouvais tout faire, par défaut "j'avais les droits", par défaut on m'a fait confiance. Quand on est tout seul dans son bureau à distance, sentir cette confiance est un facteur de réussite pour faire du Scrum totalement distribué. Evidemment, c'est plus facile grâce au facteur n°1.

facteur n°3 : Des outils fiables

Comme tous le monde est distribué, il faut de bons outils pour communiquer. Ils sont ultra présents pour donner l'impression de proximité.

Nous utilisons alors :

  • Skype pour faire du chat : plusieurs espaces de discussion sont à disposition (tout le monde, juste mon équipe,...), 
  • Skype aussi pour les communication audio et video.
  • Netviewer pour faire du partage d'écran.
  • les mails pour laisser des traces.
En terme de forge logiciel, nous utilisons :
  • une solution VPN plutôt stable (quand le VPN tombe, il est remonté dans la 1/2 heure).
  • une version de redmine modifiée à la sauce Scrum.
  • Subversion comme gestion de sources.
  • Hudson comme serveur d'intégration continue.
Bref, du très classique mais qui fonctionne avec une gestion des utilisateurs plutôt simples.

Le manifeste Agile dit : "Individuals and interactions over processes and tools". Dans le cas d'un scrum distribué, il faut justement des outils pour mettres en avant les individus et les interactions ;-).

facteur n°4: Un product owner super héros

D'habitude, je n'aime pas les super héros en informatique car en général ça se traduit par si le super héros n'est pas là, on ne peut rien faire. Comme c'est de toute façon le cas lorsqu'on fait du Scrum avec un product owner, ça ne me dérange pas ;-). 

Un des facteurs clé de succés est d'avoir un Product Owner qui sache clairement ce qu'il veut. Je ne dis pas qu'il ne peut pas se tromper car Scrum est fait pour ça. En revanche, c'est clairement lui qui doit donner les directions à chaque Sprint et être le guide de l'équipe sur ce qui est à produire.

Il faut qu'il ait totalement confiance en son équipe encore plus quand celle-ci est distribuée. Evidemment, c'est plus facile grâce au facteur n°1.

facteur n°5 : Des réunions incontournables tous ensemble

Un des facteurs clé de succès qui fait que notre Scrum totalement distribué fonctionne est qu'il y a malgré tout des éléments incontournables qui se font localement tous ensemble.

Nous avons des sprints de 3 semaines et nous nous rencontrons pendant 1 à 2 jours pour effectuer de manière intense :
- la fin d'un sprint : démo et retrospective
- le début d'un nouveau sprint : sprint planning, planning poker, ...

C'est assez dense et pour ne rien oublier, en général on "plan the plan" (on planifie le plan) :

Certes cela fait perdre du temps et donc de l'argent car tout le monde voyage pour se retrouver dans un même lieu. En revanche cela en fait ensuite gagner. Faire ce type d'échange de façon distribués prendrait plus de temps que le temps perdu à se regrouper et serait moins efficace.

Une fois de plus le développement logiciel est avant tout une histoire de personnes. Si les personnes se connaissent "IRL" tout devient plus facile.

Ces rencontres tous ensemble sont aussi l'occasion de construire et d'entretenir un esprit d'équipe, de parler d'autres choses que les projets et de pourquoi pas aller manger un bon fish&chips ;-)

Ce qui marche moins bien

Il y a évidemment des choses qui fonctionnent moins bien.

Daily Scrum trop long :

Nous effectuons tous les matins un daily scrum distribué via skype + partage d'écran netviewer du ScrumMaster pour que tout le monde ait le "focus" sur les mêmes choses. Une des problèmes assez récurrents est qu'il est vraiment difficile de le timeboxer. Le DailyScrum a tendance a durer longtemps.

Papier vs Logiciel de ticket

Nous travaillons de manière distribué avec un système de ticket "numérique" alors que nous nous rencontrons et travaillons sur des post-its localement durant les sprints planning.
La préparation du sprint planning prend alors un peu de temps de préparation pour passer de la version, numérique à la version papier. De la même manière la mise à jour du système de ticketing est juste long et ennuyant...

Sprint planning parfois un peu court

Nous avons parfois du mal à tout boucler lors de nos sprint planning, nous devons dans ce cas le terminer de façon distribuée.

 Pour conclure

Je vous propose une fois de plus mon humble retour d'expérience sur le sujet. Un simple retour d'expérience d'un Scrum distribué qui fonctionne.

Attention :  Ca ne veut surtout pas dire :

  • que si vous faites exactement la même chose, ça marchera
  • que si vous faites différemment ça ne marchera pas