Of food chains, kitchens, team interaction, and pool / À propos de chaînes alimentaires, de cuisine, de collaboration inter-équipes et de billard

I am a tad bit late in my daily posting. The reason? I was busy working until 2AM last night (I already hear my family, from here, reading this, saying “again?!”). Well, there was a reason for this. There always is. And the wee hours are sometimes the best to think and meditate. Though here, even the night lacks the inspiring peace… Well, nevermind.

Je suis un poil en retard avec ma publication quotidienne. La raison? J’étais occupé cette nuit jusqu’à 2h du mat’ (j’entends déjà la famille, d’ici, me lisant, disant “encore?!”). Bon, j’avais une raison. J’en ai toujours une. Et au beau milieu de la nuit c’est parfois le meilleur moment pour penser et méditer. Quoiqu’ici, même la nuit manque de paix inspirante… Enfin bon, peu t’importe.

When I look at my work, and think about the applications I am working on, compared to the whole product suite of my company, I think of the top of the food chain. It occurred to me that this was probably the best analogy one could think of. On top of the chain, human beings. Our end users. They “feed” on the web application we serve them, which is an omnivorous animal feeding on Servers, Billing Systems, Customer Databases, and other software lingo that you’d be better off not knowing (believe me). Let’s say the application is a sushi. An error in the “sushi” would be “food poisoning”. It could come from pretty much anywhere. Perhaps it comes from the rice, that has been washed and cooked with foul water. Or perhaps it comes from the fish itself. Could be that the fish was not fresh. Or perhaps the plankton that was at the very bottom of the food chain was polluted with heavy metals and radioactive waste from a submarine graveyard, and while all the elements of the food chain managed to survive with the toxic stuff in them, it adds up as we go up the chain, and when our “customer” eats the last piece of “sushi”, there you go, food poisoning. But when it happens, the customer doesn’t give a damn where the issue comes from, the customer only wants to be healed, and eat some healthy sushi. He’ll complain to the cook, who will have to go through all the process of finding out what the issue is in the first place. And let’s face it, sometimes, when a customer just says “my tummy hurts” without saying which sushi he ordered, the kind of pain he is experiencing, it’s not very helpful, is it? Nevertheless, the issue has to be fixed, and quick.

Quand je regarde mon travail, et pense aux applications sur lesquels je travaille, comparé à la suite produits de ma société, je pense au sommet de la chaîne alimentaire. Il m’est apparu que c’est probablement la meilleure analogie à laquelle on puisse penser. En haut de la chaîne, l’homme. Nos utilisateurs finaux. Ils se “nourrissent” de l’application web qu’on leur donne, qui est un animal carnivore se nourrissant de Serveurs, de Systèmes de Facturations, de Bases de Données Clients, et de jargon informatique que vous ne voulez pas connaître (croyez-moi). Disons que l’application c’est un sushi. Une erreur dans le “sushi” serait une “indigestion”. Ça peut venir de n’importe où. Peut-être du riz, lavé et cuit dans une mauvaise eau. Ou bien du poisson en lui-même. Il se peut que le poisson soit pas frais. Ou peut-être que le plancton dans le trou du fût de la chaîne alimentaire était pollué de métaux lourds et de déchets radioactifs d’un cimetière sous-marin, et alors que tous les éléments de la chaîne alimentaire ont réussi à survivre avec des trucs toxiques dedans, ça s’accumule au fur et à mesure qu’on remonte la chaîne, et quand notre “client” mange le dernier bout de “sushi”, voilà, indigestion. Mais quand ça arrive, le client s’en fout, d’où vient le problème, le client il veut juste se faire soigner, et manger de bons sushis. Il se plaindra au cuisinier, qui va devoir se taper toute l’analyse pour trouver d’où vient le problème en premier lieu. Et soyons honnêtes, parfois, quand un client dit seulement “j’ai mal à mon bidon”, sans dire quel sushi il a commandé, le genre de douleur, ça aide pas trop, si? Néanmoins, faut corriger le problème, et vite.

In those situations, the waiters, and the chef, above all people, have to keep their cool. If they don’t, the stress and anxiety will be passed down to the whole kitchen staff. Panic mode. Panic and an unreasonable state of mind is what leads decision-makers to sometimes hastily take some decisions, that will impact their subordinates and may have a negative impact over time over the whole team, as well as the other teams we are working with. In order to prevent “customer panic situations”, we have, in our organization, several layers of testing, which all can be seen as “customers to be”. From my developer’s point of view, our Product Quality Assurance team is as good a customer as “AT & T Wireless” or “Bell Canada” would be. They’re the ones I give my code to. Our Product Suite consists of dozens of different modules, each tested independently by each team. Up until recently, nobody had setup an end to end development environment where R&D could check that “the fish sticks correctly to the sushi rice, and that the whole thing holds together”. Bad practice, I know. Well, lack of resources. When developers yelled loud enough that it was impossible to guarantee anything, nor to provide any overall confidence level over 10% before delivering, we finally got the resources to set-up some kind of end to end environment where we would be able to crash-test our sushi.

Dans ces situations, les serveurs, et le chef se doivent, plus que quiconque, de garder leur sang-froid. S’ils ne le font pas, le stress et l’anxiété se propagera à toute la cuisine. Mode panique. La panique et un état d’esprit déraisonnable sont les ingrédients qui mènent les preneurs de décisions à prendre des décisions hâtives, qui affecteront leurs subalternes et peuvent avoir un impact négatif avec le temps sur toute l’équipe, ainsi que sur d’autres équipes avec lesquelles on collabore. Pour éviter les “situations de panique client”, nous avons, dans la société, plusieurs couches de tests, qui peuvent toutes être considérés comme des “clients en herbe”. Vu par le développeur que je suis, notre équipe Assurance Qualité Produit est autant mon client que pourraient l’être “Bouygues Télécom” ou “Bell Canada”. Ce sont eux à qui je livre mon code. Notre Suite Produit, c’est des douzaines de modules différents, chacun testés indépendemment par chaque équipe. Jusqu’à récemment, personne n’avait mis en place d’environnement de développement de bout en bout où la R&D peut vérifier que “le poisson colle bien au riz à sushi, et que le tout tient bien en place”. Pas bien, je sais. Ben, manque de ressource. C’est quand les développeurs ont râlé suffisemment fort qu’on ne pouvait rien garantir, ni fournir de niveau de confiance global au dessus de 10% avant livraison, que finalement on nous a débloqué les ressources pour mettre en place un genre d’environnement de bout en bout où on pourrait faire des crash-tests de sushi.

Now, for all those pieces, we have some contact points. A crucial piece, let’s call it the soy sauce, which impacts the whole taste of the sushi, has to be working. At all times. The funny thing? There’s only one guy (and another one still learning) on our side who knows how to look into the soy sauce if it has a weird taste or smell. For the past months, we’ve all been working hard, often doing overtimes, staying after hours, working week-ends, and somehow, my team wasn’t the worse in that situation. The soy sauce expert, on the other hand, I’ve seen him doing crazy hours. And I know, for I have seen him, that he has a wonderful three years old son. I know that the amount of work that is expected from him *cannot* possibly have a good impact on his family life. I don’t even know what his family life is like, and I don’t want to know, it’s not my own business, but I know that anybody working as much cannot enjoy his son and see him grow up completely. The soy sauce expert is going on vacation soon. For 10 miserable, but well-deserved, days. Even though I know he’s critical if something is wrong with the soy sauce, I will try to avoid bothering him as much as possible. I’d rather go chitchat with him a little around the coffee maker and try to force him to take a break rather than work overtime. When management in my team got wind of the vacation plan, they started to panic. Well, we have to come up with a plan where before he leaves, we have tested the soy sauce completely, and made sure that the current batch cannot go wrong in the next 10 days. When I heard from said management “he’s going on vacation? then let’s try to make sure we can do everything tonight, and eventually continue having him help out tomorrow morning as well. Go ask him if he can help us tonight”, and by “tonight”, I know it means “after-hours”, I immediately answered, while thinking very hard and fast about a plan:

Maintenant, pour chacune des pièces, on a des points de contact. Une pièce cruciale, appelons-là la sauce de soja, qui influe totalement sur le goût final du sushi, se doit de fonctionner. Tout le temps. La blague? Il n’y a qu’une seule personne (et un autre qui apprend) dans notre camp qui sait comment analyser la sauce de soja si elle a un drôle de goût ou qu’elle sent bizarre. Ces derniers mois, on a tous travaillé dur, faisant souvent des heures sups’, travaillant certains week-ends, et d’un certain côté, mon équipe n’était pas la plus à plaindre. L’expert en sauce de soja, d’un autre côté, je l ai vu faire des horaires de fou. Et je sais, pour l’avoir vu, qu’il a un adorable petit garçon de trois ans. Je sais que la quantité de travail qu’on attend de lui *ne peut pas* avoir d’impact positif sur sa vie privée. Je ne sais pas de quoi elle en retourne, et je ne veux pas le savoir, c’est pas mes oignons, mais je sais que quiconque travaille autant ne peut pas profiter de son gamin ni le voir grandir vraiment. L’expert en sauce de soja est bientôt en vacances. Pour 10 malheureux jours, mais bien mérités. Même si je sais qu’il est critique si la sauce de soja capote, je vais essayer d’éviter de le déranger autant que faire se peut. Je préfère aller taper un peu la discute avec lui autour de la machine à café et tenter de le forcer à faire une pause plutôt que de lui faire faire des heures sups’. Quand le management dans mon équipe a eu vent du projet de vacances, ils ont commencé à paniquer. Bon, faut établir un plan tel qu’avant son départ, on a testé la sauce de soja complètement, et on est sûrs que le lot du moment ne peux pas s’avarier dans les 10 prochains jours. Quand j’ai entendu dudit management “il part en vacances? alors essayons de tout régler ce soir, et éventuellement continuer à l’avoir demain matin à notre service. Va lui demander s’il peut nous filer un coup de main ce soir”, et que par “ce soir”, je sais que ça veut dire “après le boulot”, j’ai de suite répondu, tout en pensant très fort et très vite à un plan :

– I don’t want to bother him too much. If he’s going on vacation, he probably has many things to prepare beforehand.
– Well, you don’t know that, so don’t make assumptions, you can ask him.

– Je ne veux pas trop le déranger. S’il part en vacances, il a sûrement des choses à préparer avant de partir.
– Ben, c’est pas sûr, donc pas de suppositions, tu peux lui demander.

I was about to say something like “overtime is and should stay an exceptional situation, a favour done by employees to employers, that employers shouldn’t take for granted”, and immediately thought better of it. Open-conflict with management *never* is a good solution. I knew perfectly well that if I asked our soy sauce expert to help out tonight, he would have changed his plans, whatever those were, and would have sacrificed his vacation preparations in order to help out. Because he’s a nice guy like that. Which is precisely the reason why I *didn’t* want him to do that. And I know as well it’s not my manager’s fault, and I can’t blame him, the pressure is coming on him from everywhere, and it must be pretty hard for him to remain cold-blooded in all situations. So instead, I told him: “Well, I can ask him to prepare a big batch of soy sauce, I’ll try it with the basic ingredients, and make sure it is ok before he leaves the office, and then I will prepare many many sushi in the evening, and try them on with the soy sauce. If the sauce doesn’t go well with any of those, we’ll know we just have to investigate that tomorrow first thing in the morning. And if not, then all is well that ends well. How does that sound?”

J’allais dire un truc du genre “les heures supplémentaires sont et doivent rester une situation exceptionnelle, une faveur accordé par l’employé à l’employeur, et que l’employeur ne doit considérer comme acquis”, et me suis ravisé sur le champ. Conflit ouvert avec le management n’est *jamais* une bonne solution. Je savais parfaitement que si je demandais à l’expert en sauce de soja de nous aider ce soir, il aurait changé ses plans, quels qu’ils soient, et aurait sacrifié la préparation de ses vacances pour nous aider. Parce que c’est un gars gentil comme ça. Ce qui est exactement la raison pour laquelle je ne *voulais pas* qu’il le fasse. Et je sais aussi que c’est pas la faute de mon chef, et je ne peux pas le lui reprocher, la pression lui tombe dessus de tous côtés, et ça doit pas être facile pour lui de garder son sang-froid en toutes situations. Donc à la place, j’ai dit: “Ben, je peux lui demander de préparer une marmite de sauce de soja, je l’essaierai avec les ingrédients de base, pour m’assurer que c’est bon avant qu’il parte du boulot, et ensuite je prépare plein plein de sushi ce soir, et je les essaie avec la sauce de soja. Si la sauce ne va pas avec un de ceux-là, on saura qu’il n’y a qu’à investiguer ça demain matin en arrivant. Et sinon, tout es bien qui finit bien. Ça te va?”

The answer seemed somewhat satisfying to him. So I came home a little late, and after dinner, worked until approximately 2AM, and made sure the soy sauce was still ok. Now you know the reason. I had a manager, once, who would, after important releases, take all his developers to a small pub down the street, for drinks, snacks, pool, and relaxing. I suck at pool, because my eyes aren’t as good as my geometrical skills, but I like it nevertheless. I could do with a little relaxing…

La réponse eut l’air de lui convenir. Donc je suis rentré un tit peu tard, et après manger, j’ai travaillé jusqu’à environ 2h du mat, et me suis assuré que la sauce de soja était encore bonne. Maintenant vous savez pourquoi. J’ai eu un chef, une fois, qui, après les livraisons importantes, emmenait ses développeurs dans un p’tit bar en bas de la rue, pour boire un coup, grignoter, faire un billard, et se détendre. Je suis une quiche au billard, parce que mes yeux ne sont pas aussi bon que mes aptitudes géométriques, mais j’aime quand même. Ça me dérangerait pas de me détendre un peu…

Mad pool skills. Or not.

12 thoughts on “Of food chains, kitchens, team interaction, and pool / À propos de chaînes alimentaires, de cuisine, de collaboration inter-équipes et de billard

  1. Ahah, je serais curieux de connaitre la version technique, cette fameuse “soy sauce” est intrigante🙂

    Bon courage en tout cas … c’est pas toujours facile la cuisine :s

    Like

  2. hummm, ça laisse songeur… J’avoue que, me connaissant, je serais rentré dans le lard. On a à peu près la même situation chez nous. Un collègue a pour unique backup… “moi”, qui n’ai jamais été formé vu que “pas le temps, pas de budget”. Son application est centrale, il faut imaginer plusieurs milliers d’utilisateurs connectés simultanément. Il est seul expert sur le sujet, et tout le groupe repose grosso modo sur lui. Quand il part en vacances, c’est souvent la panique à bord, surtout chez moi ^^;
    Mais je me suis fait une règle : même si j’arrive pas à résoudre le problème, interdiction de l’appeler pendant ses congés. Après tout, si problème il y a et si personne ne peut le résoudre sans lui, c’est pas MA faute, je prend donc pas la responsabilité de l’emmerder. C’est du donnant donnant, ils font pareil avec mes applications à moi (à peu près aussi critiques), et on tente de faire flottiller le navire.
    Il est probable que je lui aurais dit d’aller lui même faire la demande à l’intéressé. Je crois que j’ai appris à être plus direct avec mes interlocuteurs, là bas…

    Like

  3. Kim, Le problème si je lui avais dit de demander directement à l’intéressé, c’est que je sais qu’il l’aurait vraiment fait. On se serait donc retrouvé une fois de plus dans la situation où le pauv’ bonhomme se fait emmerder pendant ses vacances😦

    Like

Insert nice comment here :) / Par ici les gentils commentaires :)

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s