Pages

Monday, October 22, 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 ;-) :






















Tuesday, October 16, 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

Thursday, September 27, 2012

Oui, je code en slip @home!

Je suis actuellement sur une mission longue pour un client étranger que j'effectue à domicile. C'est ce qu'on appelle en général du "home working".

Pour rassurer les ames sensibles, je ne code pas réellement en slip hein, c'est une image. Je pourrais coder en slip :-)

Je n'avais pas forcément prévu d'écrire un article sur ce mode de travail mais comme à chaque fois que j'évoque le sujet avec des amis ou des connaissances, je les sens curieux, intrigués et plein de questions. Je me dis que si ça intéresse tant, ça vaut surement le coup de le partager.

Voici les questions qui reviennent le plus souvent : 
- C'est pas dur de travailler tout seul tout le temps chez toi?
- Moi je serais trop tenter d'être distrait. Tu arrives à rester concentré et être efficace?
- Tu fais comment avec la famille?

Je vais tenter de répondre à ces questions en vous proposant mon mince retour d'expérience sur le sujet.

Je précise qu'aujourd'hui je travaille à domicile car c'est la mission qui le veut. Ce n'était pas une volonté de ma part, c'est l'occasion qui a fait le larron.

Le commencement


Tout a commencé par un mail, qui, lu en diagonale peut donner quelque chose dans le genre : 
mission, client étranger, tout en anglais, travail à domicile, scrum, équipes constitués de profils costaud, déplacement toute les 3 semaines.

J'ai rapidement voulu en savoir plus car j'étais justement disponible, après quelques discussions, GO. Il y a une part d'inconnue qu'il faut accepter, c'est comme ça, c'est la vie. Il faut faire confiance.

On est mardi on me dit que commence le Jeudi, rendez-vous sur Skype Jeudi matin.

Alerte générale : comment je vais m'organiser à la maison : -)

Il ne me faut pas grand chose pour travailler, un bout de chaise, un bout de table, un portable, un bout d'internet et un bout de calme. C'est juste sur ce dernier point où il faut que je m'organise un peu car à domicile je ne suis pas seul, il y a aussi madame et les enfants. Je n'ai pas envie de les déranger ou d'avoir l'impression de déranger et réciproquement.

Il me faut "un coin au calme". Il n'est pas possible pour moi d'avoir une pièce dédiée qui me servirait de bureau. Je me suis donc aménagé un coin dans ma chambre en face de la fenêtre. Hop, la chambre la journée sera donc mon bureau.




Le mercredi sera donc consacré à m'installer un bureau dans ma chambre. Et là, je reçois un mail avec tout les accès du client (vpn, mail, forge, ....). Par défaut : ça marche, j'ai accès à tout, j'ai le droit de tout faire... : non, non, ce n'est pas un rêve, ça existe parfois ;-).

Jeudi matin, c'est parti : "Hello, good morning guys!"

Au quotidien : "We are quite flexible"




Je découvre que je fais partie d'une assez grande équipe dont les membres de différentes nationalités travaillent tous à domicile comme moi. Même le Scrummaster est un freelance travaillant chez lui!

Quelque temps après avoir commencé, je discute avec un autre membre de l'équipe. Comme je découvre ce mode de fonctionnement, j'aborde bêtement la question des horaires, du temps de présence "online" et tout et tout. Je me retrouve à poser des questions bête commençant par "et si" et toutes les réponses étaient : "we are quite flexible"... L'idée est vraiment de "faire le job" et le fait de devoir s'absenter pour aller faire si ou ça n'a pas vraiment d'importance. Tout est basé sur la confiance.

Ce que ça m'apporte au quotidien : une réelle flexibilité. C'est sympa de pouvoir de temps en temps aller chercher ses enfants à l'école, réussir à aller à un rendez-vous chez des personnes/magasins/institutions dont les seuls horaires d'ouvertures sont 9h-12h/14h-18h. (et encore c'est des choses dont je profite peu, je n'ai pas encore trop l'habitude).

C'est aussi sympa de pouvoir aller faire un peu de sport au départ de chez soi et de prendre facilement une vrai douche dans sa douche. Je n'ai pas besoin de prendre de douche portugaise (je n'ai jamais pratiqué mais si si ça existe)

Plus anecdoctiquement, il y a le coté sympa de mettre de temps en temps Rolland Garros ou les JO de Londres dans un coin de la pièce.

Je travaille tout seul chez moi comme un ours?



Alors oui le matin et l'après-midi je suis physiquement seul sur mon bureau.

En revanche :
  • Je suis virtuellement overconnecté avec l'équipe avec qui je travaille. Skype est l'outil que j'utilise pour communiquer en temps réel que ce soit par chat, conversation audio ou video.
  • 10h c'est l'heure de notre réunion daily scrum. Partage d'écran + conf call où je parle l'équipe.
  • Il y a un chat global d'équipe dans lequel chacun y met son humeur, dit ce qu'il fait dans ou en dehors du boulot, bref cela permet d'avoir une notion de communauté et de proximité.
  • On se retrouve tous toutes les 3 semaines pour clore le sprint (demo, retro) et relancer un sprint (sprint planning, planning poker, ...). Ce sont un ou deux jours de travail assez intense car on concentre tous les rituels Scrum mais cela donne aussi l'occasion de se voir, de discuter, d'échanger, de se chambrer, de prendre une vraie pause café avec de vrais collègues ;-).
Ca c'est pour justifier le côté "je ne suis pas seul quand je bosse chez moi" mais c'est vrai que je ne vois pas de vrais gens "IRL" ;-). Alors pour ça, pour éviter de terminer comme un ours à coder chez moi :
  • Je vais souvent voir des amis et collègues pour manger le midi avec eux. 
  • Je fais partie du Ch'ti JUG, ce qui me permet de croiser du monde et d'échanger avec d'autres passionnés de la région. 
  • Je vais a des conférences comme Devoxx ou Devoxx France pour échanger aussi avec des passionnées mais d'un peu plus loin.
  • J'essaye de m'exiler de chez moi le mercredi pour d'une part ne pas gêner et être gêner par femme et enfants qui sont présents toutes la journée. Je profite de ce jour pour aller travailler chez des gens qui veulent bien m'accueillir (Merci d'ailleurs à Thibaud et Antoine d'Onyme de m'avoir accueilli dans leur bureau, c'était vraiment sympa les mecs!) ou encore chez un ami qui m'a rejoint dans cette même aventure. 
J'ai dû chercher assez longtemps pour trouver des côté négatifs mais il en fallait pour que mon retour d'expérience soit plus objectif : 
  • La pause café n'est pas vraiment une pause café. Ca manque parfois et parfois je regarde l'heure, il est midi et je n'ai pas ressenti le besoin de prendre une pause café. Ca dépend.
  • Ma cafetière n'a clairement pas tenu le choc. J'ai dû en changer :-)
  • Je me sens parfois en décalage par rapport à mes amis et anciens collègues qui pour la plupart travaillent en SSIIs ou chez des éditeurs de logiciels locaux. Le fait d'être freelance participe aussi au décalage :-). Ca n'est pas vraiment un point négatif mais je sens parfois que je passes pour un extra terrestre. Les problématiques que nous rencontrons au quotidien ne sont plus les mêmes.

Est-ce que je suis plus ou moins productif?



Je suis finalement assez surpris quand je parle de ce mode de travail lorsque parfois la réaction est "hum, je serais trop tenté d'être distrait et de faire autre chose". Au final je ne sais trop quoi répondre à cette question... Ce que je réponds en général, c'est ce que je suis plutôt à l'inverse de ça. C'est surement que mon métier est une passion... C'est plutôt madame qui m'a fixé des limites pour que je m'arrête :-)

Je suis clairement plus productif chez moi. J'ai mes outils et du calme. L'important quand on travaille à domicile, c'est de pouvoir choisir soi-même les conditions qui permettent d'être productif. On rajoute à ça le fait de ne pas avoir de temps de déplacement pour se rendre sur son lieu de travail. On va dire au minium 1h par jour aller/retour. C'est un réel gain.

"Bref, je suis plus productif".

La séparation vie privé / vie professionnelle

Ne connaissant ce mode de travail, j'ai préféré par défaut imposer quelques petites règles au sein de la maison pour bien séparer les choses et mettre des barrières :

  • Quand je travaille à la maison, c'est comme si je n'étais pas à la maison. Je ne suis pas Tony Micelli à pouvoir m'occuper de la maison.



  • La porte de la chambre/bureau représente la séparation privée/pro. Quand elle est fermée, il ne faut pas rentrer sans toquer à la porte et attendre que je dise que c'est OK. Ca n'est pas que je veux jouer au Boss inaccessible mais c'est le seul moyen de prévoir le cas ou je suis en ligne, peut être avec avec de la video et je ne peux pas répondre.








J'ai donc appliqué par défaut ces règles au sein de la famille. C'est d'ailleurs assez rigolo de voir comment les enfants ont vécu le changement et l'ont intégré. "Papa, tu vas travailler dans ton bureau dans ta chambre aujourd'hui?". C'est aussi assez rigolo vers 16h30-17h d'entendre toc-toc et d'avoir ses enfants qui viennent faire un petit coucou après l'école. Il se trouve qu'avec le temps, je commence à assouplir les règles mais ça vient de moi. Enfin soyons clair, je n'arriverai jamais à rivaliser avec Tony Micelli!

Une petite conclusion ça serait bien là

Quand on me demande si ça va, je répond que : 

JE M'ECLATE

Je crois que tout est dit.

Je suis clairement conscient que ce mode de travail ne peut pas convenir à tout le monde et à tout les métiers. En ce qui me concerne, ça se goupille bien et c'est cool.


Monday, July 30, 2012

Mon Backlog pour passer freelance

Salut tous,

Je suis passé freelance depuis maintenant quelques mois.  Avec le peu de recul que j'ai aujourd'hui, voici ce que je me dis tous les jours : "Pourquoi je ne l'ai pas fait plus tôt".

Plus sérieusement, aujourd'hui :
  • Je m'éclate.
  • Je bosse pour un client qui m'estime et me valorise en tant que "développeur".
  • Je bosse de chez moi.
  • Je bosse avec des gens du monde entier.
  • Je choisis mes outils pour travailler.
  • J'ai le temps et l'envie de m'occuper (un peu) du projet open source dont je suis l'auteur (cassandra-unit).
  • Je fais ma comptabilité (et c'est marrant {oui je suis peut être un peu tordu }) avec l'assistance d'un cabinet d'expert comptable qui me "coach".


Je vous propose de vous partager ce qui reste de cette transition, notamment le backlog qui m'a suivi tout au long de ma "freelancisation" :

Avant de commencer, voici les caractéristiques de ma "freelancisation" :
  • Je n'ai pas démissionné mais effectué une rupture conventionnelle. Vous trouverez donc pas mal de choses dans ele backlog que j'ai dû effectuer par rapport à ça (demarche Pole Emploi, demarche ACCRE, ...)
  • Quand j'ai décidé de me lancer freelance, je n'avais pas de client.
  • J'ai créé une EURL (c'est une sorte d'SARL).
  • J'ai choisi de gérer moi même toute la procédure (rédaction des statuts de la société, création de la société, compta, ...) et d'être conseillé sur le sujet plutôt que de déléguer (hein Thomas ;-)). Ca n'est d'ailleurs pas évident de trouver un comptable qui encourage et accepte de travailler dans ce mode là car globalement ça veut dire qu'il prend un risque car il reste le comptable mais si je "foire" toute ma compta, ça sera pour sa pomme. Ce mode de travail avec un comptable s'appelle : "le mode révision". Le choix de son comptable est surtout une question de feeling, si le feeling n'y est pas, ça n'est pas bon signe.


Certains geeks organise leur mariage, gère leur église ou encore gère leur vie de famille avec les méthodes agiles, moi j'ai décidé de gérer mon passage freelance avec Scrum ;-).

Voici les éléments ordonnés de mon "Backlog de passage indépendant" à partir du jour où dans ma tête je me suis dit : "Go, je me lance" jusqu'à maintenant

  • Prise de contact avec des "boites à freelance" : Sans engagement, ça permet de voir son niveau d'employabilité sur le marché.
  • Recherche sur la procédure de rupture conventionnelle : pour être sûr de bien comprendre comment cette procédure fonctionne.
  • Se renseigner sur l'ACCRE : pour comprendre comment l'aide fonctionne.
  • Procédure de négociation de la rupture conventionnelle : c'est long et très procéduré (des entretiens avec des intervalles très précis, des papiers, des dossiers, des accusés de reception,...).  C'est la société que j'ai quitté qui s'est occupé de tout.
  • Reflexion sur le statut de la société à prendre : c'est très important, il faut choisir le statut qui convient le mieux à son cas. Il n'y a pas beaucoup de choix possibles, le choix est simple à faire.
  • Choix statut société
  • Rencontrer comptable X.
  • Rencontrer comptable Y.
  • Rencontre comptable Z. 
  • Choisir comptable : Il faut voir plusieurs comptables pour permettre une comparaison. C'est très important car c'est avant tout une question de feeling dans mon cas.
  • Trouver un nom pour l'entreprise : Dans l'absolu, ça n'est pas très important mais... malgré tout, toutes mes factures mentionneront son nom et à chaque fois que j'achèterai quelque chose pour la société. Ca m'a pris pal mal de temps. J'ai dû mal à choisir un nom de variable ou de Class alors pour choisir un nom de société... la galère ;-). cf Clean Code :-)
  • Acheter nom de domaine .fr et .com. : Ca n'est pas très important tout de suite mais c'est bien de les avoir pour la suite. 
  • Faire (ou faire faire) un logo pour la société : merci à @graphitruc :-)
  • Rédiger les statuts de la société : Ca parait compliqué mais c'est assez simple. Des modèles sont disponibles en ligne.
  • Voir le comptable pour valider les statuts.
  • Rencontrer banque X.
  • Rencontrer banque Y.
  • Choisir banque et ouvrir le compte pro.
  • Remplir dossier M0 : Déclaration de constitution d'une SARL. 
  • Remplir dossier TNS  : Intercalaire Régime des travailleurs non salariés.
  • Remplir dossier ACCRE : Demande de l'aide à la création et à la reprise de société.
  • Renvoyer dossiers au comptable pour relecture et validation.
  • Prendre RDV chez Pole Emploi : être patient.
  • Déposer les status de la société aux Impôts pour validation.
  • Récupérer les statuts validés de la société aux Impôts.
  • Publier une annonce dans un journal officiel (un modèle ici)
  • Déposer tous les dossiers au Tribunal de Commerce.
  • Acheter Ciel Compta (pour Mac) : un des seuls client lourds qui possède une version native pour Mac.
  • Faire du "Pair-comptabilité" avec un ami pour initialiser ma comptabilité : merci à @thomasrecloux.
  • Faire des devis pour une assurance Responsabilité Civile
  • Choisir et prendre une assurance Responsabilité Civile : L'idée est se couvrir la société si je fais une bêtise.
  • Voir le comptable pour accompagnement et coaching.
  • Faire demande de capitalisation auprès de Pole emploi:  versement de l'aide.
  • Faire des devis pour prendre une mutuelle : ne pas oublier de prendre une mutuelle qui soit "loi Madelin" pour pouvoir en déduire tout ou partie.
  • Choisir et prendre une mutuelle.
  • Faire des devis pour prendre une assurance prévoyance.
  • Choisir et prendre une assurance prévoyance : L'idée est de prévoir les cas où je ne serai pas capable de travailler à cause de problèmes de santé par exemple. Pour que ça n'impacte pas la famille (ou le moins possible).

Entre le premier point du backlog et le dernier, il s'est passé 6 mois.

Ce que je retiens de ce passage :
  • Il faut prendre le temps de la réflexion avant de se lancer.
  • Cela prend du temps. Il ne faut pas être pressé et accepter de ne pas totalement tout maitriser.
  • Il y a vraiment beaucoup d'informations sur Internet pour se documenter sur le sujet.
  • C'est bien de pouvoir en discuter avec d'autres freelance (avec des amis, sur les forums, ...).
  • C'est bien d'avoir un peu d'argents de côté histoire de pouvoir tenir avant que la première facture de soit payée. 
  • Il semblerait que la façon dont je travaille avec mon comptable ne soit pas la solution la plus courante mais elle me convient bien pour le moment et ne me prend pas beaucoup de temps (ça doit être de l'ordre de 2h par mois).

Petite anecdote : J'ai voulu ouvrir une carte chez Castorama pour profiter des reductions car j'avais un gros achat à faire et mon dossier a été refusé... C'est ça le scoring, je suis maintenant quelqu'un de "risqué" ;-).




Tuesday, April 24, 2012

Histoire d'une Cassandra Lan Party à Devoxx France

Genèse

Tout commença par un coup de fil de Nicolas Romanetti. un soir du début du mois de Mars.  

J'avais appris le mois précédent que mon Tool In Action sur cassandra-unit n'avait pas été retenu. Rien d'étonnant quand on voit la qualité des sujets qui ont été retenus.

Nicolas, lui, avait proposé 2 talks sur Cassandra : 
- le premier au format University : "Introduction à Cassandra". L'idée est de balayer sur 3 heures tous les concepts de Cassandra en prenant bien le temps du question/réponses mais dans un format très théorique basé sur des slides.
- le second au format Labs : "Hands On Cassandra". Ce "Hands On" devait initialement permettre aux participants de manipuler un peu cassandra "dans son coin" sur son poste.

Ces deux talks ont été sélectionnés (et se suivent sur la même journée, 2x3H). C'est ça les rockstars :-).

Histoire d'un coup de Fil :
N : Salut Jérémy, dis moi, je ne sais pas si tu as vu mais mes 2 talks ont été sélectionnés.
moi : oui énorme, c'est cool, les participants qui le souhaitent pourront faire une journée complète sur Cassandra!
N : J'ai besoin d'aide sur le Hands On, ça te dirait de me filer un coup de main?
moi : un coup de main comment?
N : Pour le Hands On, j'ai une idée, j'ai envie de changer légèrement le contenu, c'est ok avec les organisateurs mais il me faut une équipe. J'ai envie de faire une Lan Party.
N : Yes
Moi : BANCO! C'est parti pour une Cassandra Lan Party à Devoxx France.
Lui : Tu es où toi?
Moi : sur Lille et toi?
Lui : Ajaccio ;-)

C'est comme ça qu'on se retrouve dans le même bateau, Nicolas, Florent, Sylvain et moi.

Il y aura donc une Cassandra Lan Party à Devoxx France :

Préparation

On en maintenant mi-mars. Devoxx, c'est quand même dans un mois. Alerte générale!

On échange pas mal entre nous par mail et sur un petit google doc partagé. Le point noir, c'est le réseau, la seule façon pour que ça se passe sans problème, c'est de ne pas compter sur celui de Devoxx et donc c'est de venir avec à Devoxx. "Qui a des switchs? Heu... Personne... ". Tout le reste n'est que de la préparation et du détail (ou presque ;-)). Pas de switchs, pas de Cassandra Lan party! On lance alors un appel à la population.

Nous n'avons pas eu tant de retour que ça mais des retours gagnants! :
- Euratechnologies répond OK et nous prête 3 switchs professionnel 24 ports en gigabit neuf ainsi qu'une quarantaine de câble RJ45 de différentes longueur!
- Thomas Recloux, un ami un peu geek ;-), me prête aussi son switch personnel (enfin pro ;-)) de 24 ports en gigabit neuf.

Côté matériel, c'est tout bon.

En parallèle nous contactons Jake et Edward, les organisateurs de la Cassandra Lan Party de NYC, pour avoir leur feedback. Pour faire simple : c'était fun mais la génération et l'attribution du token n'a pas fonctionné comme ils le voulaient

Hey mais nous sommes début Avril! Alerte générale!

L'idée émerge alors dans nos esprits de faire une application web pour aider les participants à récupérer leur token et configurer leur noeud cassandra. L'application web de la cassandra-lan-party, vient de naitre, 2 nuits pour coder ça en équipe, un peu de spring-mvc, de twitter bootstrap et hop. Nous mettrons prochainement les sources à disposition.

De mon côté, je récupère le matériel et je fais des tests (je ne vous raconte pas comment madame était contente de voir ça dans le salon :-)) : 



On peaufine aussi les slides.

Tiens si on se faisait un tee-shirt, ça aiderait les participants à nous identifier plus facilement s'ils ont des problèmes :


Répétition

Il n'y a pas de secret, il faut répéter! Ca nous permettra accessoirement de nous rencontrer IRL ;-)

Nicolas organise la semaine précédent Devoxx France, une répétition chez Zenika. 



C'est parti pour Paris, mais tiens, c'est vrai, il faut transporter tout le matériel réseau... : 


Est-ce que la valise va fermer?



Voici le récit de la répétition ainsi que les photos.



Nous avons mis en place 18 noeuds Cassandra sur différent OS sur 3 Datacenters.

Pour la petite anecdote, Tout le monde arrive progressivement pour la répétition, Je dis bonjour à plein de participants. On commence à s'installer et je dis à un moment à Nicolas, "On attend Florent pour commencer?" et là j'entend une voix qui répond derrière moi "ben je suis là". Moment de solitude ;-)

Nous avons pas mal de feedbacks intéressants et avons la confirmation qu'une application web pour aider les participants à récupérer leur token et configurer leur noeud cassandra est une très bonne idée, on nous donne même des idées de feature en plus. Merci Brice. C'est l'heure de recoder un peu dans l'application web et modifier les slides :-).

The D Day

Le matin, Nicolas a fait un super talk sur Cassandra. Simple, clair, précis et efficace. De très bon échange avec le public. Voici les slides.

Mais c'est maintenant déjà l'heure du Hands On!

Dans un premier temps, nous avons eu la chance d'avoir la salle du Hands On en avance. C'était d'ailleurs assez drôle de voir les serveurs préparer la salle avec des petits napperons, des verres et des bouteilles d'eau avec les tables et les chaises bien alignées avant que nous en prenions possession :-). Une fois la salle à disposition, hop, on enlève tout, on bouge tout pour constituer 3 zones avec les tables pour représenter physiquement 3 datacenters avec les chaises dans tous les sens, bref une Lan (merci Thomas pour le coup de main lors de la mise en place!)

La Cassandra Lan party s'est déroulée en 3 étapes :

- installation/configuration du réseau


Tout les participants se branchent par datacenter sur un switch. On note les IPs sur des Post-its. Un slide explique la conf réseau à effectuer ainsi que des tests pour vérifier que tout est ok.

- installation/configuration de Cassandra
Des clés USB sont distribuées. Il est possible d'installer Cassandra soit par les clés USB soit en la téléchargeant depuis notre application web. Les slides expliquent le paramétrage à effectuer... 

L'application Web fournit le token et précise les éléments de configuration à modifier dans Cassandra :



- démarrage et exécution de différents scénarios sur le cluster
Voici les caractéristiques du cluster cassandra :
  • 3 datacenters.
  • Utilisation du RackInferringSnich
  • 3 seeds (un par DC)
  • Replication Factor de 9 (3 par DC).

Nous avons démarrer dans un premier temps les 3 seeds (Sylvain, Florent et moi) puis dans un second temps nous avons démarrer progressivement tous les autres noeuds.
Et là, problème, les noeuds cassandra sur les machines windows ne veulent pas rejoindre le cluster, merci windows et à son firewall ;-). Une fois le firewall coupé, tout le monde arrive à rejoindre le cluster.

Notre cluster est constitué de 36 noeuds. D'un point de vue de l'équipe, on sait déjà qu'on a remporté notre   pari. Le reste n'est que formalité ;-).



Nous avons mis en place un cluster Cassandra de 36 noeuds réparti sur 3 datacenters sur tout type d'OS.

La Cassandra Lan party de NYC est battue :-)



C'est maintenant l'heure de jouer avec le cluster.

Par l'intermédiaire de nodetool, les participants interrogent l'état du cluster et par l'intermédiaire de cassandra-cli, ils écrivent et lisent dans le keyspace créé pour l'occasion. Nous faisons d'abord tombé et revenir un DC puis nous faisons tomber et revenir 2 DCs. Les participants constate en live comment le cluster réagit... Bref, facile, c'est Cassandra, c'est fait pour ça :-)

- un peu de théorie pour terminer
Après une petite pause, les questions commencent à arriver en nombre et c'est le moment de repartir sur quelques slides pour pouvoir y répondre : le datamodel, le ring, le partitioner avec le token, le replication factor, le consistency level, tout y passe. Nicolas était bien au point après l'university du matin!

Le mot de la fin

Les objectifs étaient que les participants :
- mettent les mains dans le cambouis!
- constatent que Cassandra, ça n'est pas compliqué!
- s'amusent!

Je ne suis pas très objectif justement mais je pense que nous ne sommes pas loin de les avoir tous atteints!

Pour ma part :
- ça a été super fun.
- l'ambiance était décontractée et conviviale.
- une valise de 40kg à trimballer, c'est lourd!

Merci à tous les participants de s'être prêté au jeu!