CTO chez Karnott, une 3ème année dont je me souviendrai

Tous les ans, je fais un petit article résumant mon expérience chez Karnott, année après année. En toute logique j’aurais du rédiger mon article cet été, mais avec ce premier semestre si éprouvant, je n’ai pas eu le courage de mettre tout ça par écrit.

Dernier bilan: septembre 2019. Nous avions créé un début de plateforme technique (qui s’est avéré plutôt payant), mais nous nous posions beaucoup de questions autour de la création produit, de la cible cliente, de la complexité applicative, et un poste de Product Owner / Product Manager était ouvert pour nous aider. La bonne nouvelle, c’est que nous avons trouvé la bonne personne (Coucou Sarah!). La mauvaise, c’est qu’elle est arrivée début 2020, et pour un rôle aussi transverse, elle aurait pu être plus chanceuse sans un violent confinement et une situation économique proche du flou total.

Concrètement, dans une startup de moins de 5 ans, comment gérer une situation comme ce que nous avons vécu cette année ?

Début 2020, nous avions de belles ambitions en terme d’investissement. Je m’imaginais déjà avec une équipe incroyable de plusieurs dizaines de personnes dans tous les domaines hype, un pôle R&D à la pointe, et des claviers mécaniques pour tout le monde (ou pas ? ). Mais voilà, lors de cette soirée si marquante de Mars 2020, après ce discours très dur du président, tout s’arrête, et tout le monde se regarde en chien de faïence.
Très vite, nos deux fondateurs prennent une décision capitale : il faut réduire la voilure. On doit dépenser le moins possible, ou tout du moins le plus raisonnablement possible, ne sachant pas de quoi demain sera fait.

Il est l’or ! L’or de se réveiller !

La suite leur aura clairement donné raison, c’était la bonne chose à faire au bon moment.

Le mot d’ordre pour toute l’entreprise : serrons les dents ensemble, et soyons malin.

Je ne parlerai pas de stratégie commerciale, mais en résumé, nous avons tout fait pour sortir de nouveaux produits rapidement, nous ouvrant d’autres marchés qui n’étaient pas forcément prévus initialement. Mais encore faut-il être en capacité de sortir de nouveaux produits, n’est-ce pas? Alors, quels ont été les faits marquants ?

Le télétravail

Vous l’avez tous plus ou moins vécu : se retrouver du jour au lendemain à devoir travailler de chez soi, sans l’équipement adéquat mais avec les enfants sur les genoux! J’ai personnellement de la chance habitant une maison avec un endroit où pouvoir m’isoler. De toute façon, travailler avec un enfant dans les parages, c’est vraiment impossible! J’ai très vite cherché à m’équiper d’un micro pratique, d’une Webcam (malgré l’incroyable pénurie), et dernièrement d’un vrai fauteuil. Double chance pour nous, toute l’équipe pouvait travailler dans de bonnes conditions. Nous avons juste réquisitionné nos écrans du bureau, et voilà.

Le chat, cet assistant indispensable au télétravail. Il a même sa propre chaine twitch !

Et maintenant, nos outils :
Discord est devenu un élément central de l’équipe. Ce que nous apprécions, c’est le fait de pouvoir rester dans un canal, et si quelqu’un veut venir discuter, il peut. On est un peu comme dans un bureau virtuel, sans avoir à payer le prix démesuré de Sococo.
Google Meet pour les réunions avec quelqu’un d’extérieur à l’entreprise, ou avec caméra / partage d’écran. Même en payant, j’ai toujours trouvé la qualité de Discord en retrait pour vraiment faire du partage d’écran de qualité.
Metroretro est un outil génial pour faire ses rétrospectives d’équipe en remote. C’est simple, intuitif et ludique.
VSCode Live Share que nous avons utilisé plusieurs fois pour faire du pair programming. Etant le seul à utiliser IntelliJ pour le backend dans l’équipe, je n’ai malheureusement pas pu expérimenter leur nouveau plugin autant que je l’aurais souhaité.

Pas mal d’entreprises ont fait preuve de solidarité et ont partagé leurs retours d’expérience tout au long de l’année. On remerciera par exemple Zenika qui a maintenu à jour de précieuses ressources.

Même pendant le déconfinement, nous avons fait le choix fort de continuer en télétravail. Nous y avons trouvé plusieurs avantages inattendus pour l’équipe et l’entreprise.
En premier lieu, nous avons découvert à nos dépens à quel point nous manquions de rituels d’entreprise planifiés et nous avons tâchés d’y remédier. Oui les discussions autour d’une machine à café, c’est chouette et il s’y dit souvent beaucoup de choses, mais ça a l’inconvénient d’être impromptu et « éphémère ». Dorénavant, chaque pôle (Technique, CSM, Sales…) se parlent et échangent de façon ritualisée toutes les semaines.
Nous avons aussi compris qu’une culture de la documentation, dans une entreprise, ne s’improvise pas. Toutes ces discussions informelles méritaient d’être tracées, des comptes rendus rédigés. Ce serait mentir de dire que ce point est complètement résolu, mais nous faisons de notre mieux. Entre autres choses, le concept d’ADR (Architecture Decision Record) m’intrigue et m’attire, mais je reste circonspect sur la bonne façon de l’implémenter (où ? comment ?).

Une difficulté liée au télétravail, c’est la perte d’unité entre les membres de l’entreprise. Autant l’équipe tech se parle tous les jours, autant les autres membres du bureau nous manquent. Comment garder un esprit d’entreprise au delà de son équipe ? Nous avons mis en place des visios journalières pour discuter et échanger, mais il manque quelque chose. C’est clairement un point à améliorer…

Malgré tout cela, je prends le pari de continuer sur ce chemin. Je suis d’ailleurs ravi de voir l’équipe tech grandir en 2021 avec des recrutements déjà bouclés, dont un non Lillois !

Le rôle de CTO dans ce contexte

Cette année, j’ai découvert la communauté Tech Rocks (dont je conseille chaudement le podcast) et j’ai accepté quelque chose de fondamental : le métier de tech leader, ou de CTO, est quelque chose qui dépend profondément du contexte dans lequel vous évoluez. Attention, je n’ai pas du tout la prétention d’avoir le même métier que le CTO de Criteo, Leboncoin ou même des entreprises bien plus modestes.

Quand on démarre une startup, on est avant tout un développeur à tout faire. Et puis on recrute, on devient un peu manager. Et puis l’entreprise grossit, on devient ambassadeur du produit auprès des autres pôles, on défend nos choix, on trouve des compromis. Un métier de diplomate en quelque sorte, où on défend l’équipe technique, tout en cherchant le bénéfice de tous.

Alors dans ce contexte, il a fallu se battre pour que l’équipe ait toutes les cartes en main pour produire de la valeur malgré la situation. Et tout le monde a joué le jeu (merci mille fois) j’ai la chance d’être hyper bien entouré. L’un des changements opéré, c’est d’avoir proposé en tant que manager des entretiens individuels à tout le monde de façon plus régulière. Nous ne le faisions pas, et je pense qu’avec la distanciation c’est devenu indispensable. C’est un chouette moment d’échange.

Il y a beaucoup de points que je souhaite améliorer pour 2021 dans mon rôle de CTO :
– Donner une meilleure visibilité dans le temps sur ce que nous produisons et allons sortir, c’est indispensable, malgré ma profonde réticence. Dans un environnement mouvant comme une startup, avec une quantité de tâches en parallèles où les devs doivent aider (support / facturation / marketing…), nous avons du mal à connaître à l’avance le temps dédié au développement produit. Comment estimer quoi que ce soit dans ces conditions ? Nous devrons trouver des solutions.
– Mieux structurer l’emploi du temps de chacun pour donner une véritable place à la R&D. Sans innovation point de salut.
– L’agriculture met un point d’honneur à apporter une traçabilité bien documentée à son travail, je dois m’en inspirer.

Et d’un point de vue perso ?

Quoi qu’il se passe en 2021, on peut se douter 2020 aura été une année charnière pour tous. Ceux qui me connaissent savent que je ne suis pas adepte d’un positivisme à outrance, mais j’ai quand même essayé de tirer quelque chose de cette année.

Tout d’abord, j’ai pris soin de moi. Finie la junk food d’Euratechnologies ! (Adieu Pick it up et les food trucks!). Quitte à être chez moi, et avoir une douche à disposition, j’ai décidé de faire du footing à mon rythme de sportif du dimanche, et de manger plus sainement. Le bilan ?
Plus de 600 km parcours en footing depuis Mars, et 15 Kgs perdus. J’en suis plutôt fier.

Faites du footing, 1km autour de chez vous, moins de 20minutes !
Des hauts et des bas, mais la tendance est là…

Mais c’était aussi l’occasion de passer du temps avec ma fille de 3 ans comme jamais, de la voir progresser tous les jours et de se nourrir de son innocence. Pour elle, rien d’anormal à ce que nous avons vécu, et ça faisait franchement du bien au moral.

Qui a dit que c’était un poids sur les épaules ?

Cela peut paraitre aussi plus anecdotique, mais j’en ai profité pour me désintoxiquer de Twitter ou des réseaux sociaux en général. Nous pourrions beaucoup discuter de ce sujet, mais je suis maintenant persuadé que ce lieu d’échange n’a malheureusement plus grand chose à apporter au débat public.

Conclusion

J’écris ces mots le 21 décembre après une année délirante. Chez Karnott, ce sont des milliers de balises vendus, plus de 10 Millions de kms parcourus cette année par nos clients et plus de 2 Millions d’Hectares travaillés. Beaucoup de discussions formelles et informelles, des visios qui foirent, des soucis d’internet, des rigolades et quelques moments très difficiles. Ce n’était pas gagné d’avance…
Alors pas de longue conclusion, juste un petit conseil : Sachez vous adapter, ensemble.

Prenez soin de vous et de vos proches !
A l’an prochain,
LB

[Programatoo] Greenfoot, Kinect, et Ubuntu 64 bits !

GreenfootEn ce moment, un de mes hobbits (haha) dans le cadre de Programatoo, c’est de jouer avec Greenfoot. Mais qu’est ce donc? Et bien c’est un logiciel créé pour introduire le langage Java et la notion d’objets auprès d’apprentis développeurs. En quelques mots, il permet de définir en Java des objets (Actor) qui vont pouvoir évoluer dans un monde (World). C’est bien foutu, même si l’interface mériterait un petit coup de jeune.

L’un des intérêts de Greenfoot, c’est que l’on peut facilement le faire intéragir avec une Kinect ! Une API bien faite, et des exemples sont fournis pour arriver rapidement à un résultat sympa, et les enfants adorent le concept de la Kinect. Après tout, coder en jouant avec la position de sa main, sa tête ou ses pieds, c’est plutôt fun !

Bref, tout cela mériterait un article à part entière. Mais pour l’instant on va se concentrer sur la première étape: l’installation ! Pour Greenfoot, pas de soucis, ça s’installe bien, à l’aide d’installeurs automatiques dédiés à différentes plateformes.

Greenfoot et Kinect

Si l’on souhaite aller plus loin, avec pourquoi pas le branchement d’une Kinect, l’installation peut se corser. Je vais tâcher de donner quelques astuces pour mes soucis rencontrés, c’est à dire avec deux distributions Ubuntu 12.10, l’une 32bits, et l’autre 64bits. La documentation Greenfoot étant assez bien faite et complète, on arrive très vite sur un tutoriel :

http://www.greenfoot.org/doc/kinect/ubuntu.html

Dans le cadre de ma distribution 32 bits, le tutoriel est parfait, à deux détails prêts. A l’étape 0, les packages présentés n’étaient pas disponibles chez moi, j’ai remplacé libglut3-dev par libglui2c2

1
2
sudo apt-get install g++ libboost-all-dev libglui2c2
sudo apt-get install libwxbase2.8-dev libwxgtk2.8-dev wx-common

Le deuxième soucis que j’ai eu, c’est qu’une fois l’installation terminée, la Kinect n’était pas reconnue. Il suffit juste de recharger le module adequat :

1
sudo modprobe -r gspca_kinect

Et en 64 bits alors ?

Et bien là, n’essayez pas de suivre le tutoriel, cela ne fonctionnera pas. Le tutoriel est fait pour faire télécharger OpenNI, NITE et le driver en 32 bits (stockés sur le site de Greenfoot), il y aura forcément un problème de dépendance au moment de l’installation. Plusieurs solutions s’offrent alors à vous:

Une fois que OpenNI, NITE et le driver sont installés, il faut tout de même installer KinectServer qui fera la passerelle entre Greenfoot et OpenNI. Pour cela se référer à la fin du turoriel disponible sur le site de Greenfoot.
(A noter que je n’avais pas utilisé Simple-OpenNI à la base, mais l’installation manuelle de chaque élément, et pour la peine KinectServer n’arrivait pas à se connecter à la Kinect… Il faudrait que je comprenne pourquoi)
S
i la Kinect n’est pas reconnue à la fin de l’installation, pensez à recharger le module adequat, comme pour le mode 32bits.

Une fois que KinectServer est lancé, vous pouvez ouvrir Greenfoot puis les projets d’exemple fournis pour Kinect, qui sont une bonne base de travail !
Have Fun !

LB.

PS : Pour avoir une traduction récente et en Français de l’interface Greenfoot, vous trouverez votre bonheur sur mon compte Github !

Connecter la tablette Nexus 7 à Ubuntu

A la sortie de la nouvellement célèbre tablette de chez Google, j’ai eu la surprise de ne pas la voire reconnue nativement par mon Ubuntu 12.04. Voilà comment j’ai procédé pour monter son disque à travers le protocole MTP.

Première chose à faire, c’est d’installer quelques paquets nécessaires à ce protocole. Je pourrais vous renvoyer vers ce lien ubuntu : http://doc.ubuntu-fr.org/mtp
Mais concrètement, trois paquets intéressants :

1
sudo apt-get install mtp-tools mtpfs gmtp

Ensuite, il faut créer un fichier pour référencer ce nouveau matériel inconnu pour le service udev.

1
sudo vim /etc/udev/rules.d/99-android.rules

Et écrire à l’intérieur

1
2
# Nexus 7
SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"

Rendre ce fichier exécutable, et redémarrer le service

1
2
sudo chmod +x /etc/udev/rules.d/99-android.rules
sudo service udev restart

A ce stade, si vous lancez gmtp qui est donc un utilitaire graphique pour explorer un périphérique à travers le dit protocole, vous devriez pouvoir explorer votre tablette. Mais si vous voulez vraiment la monter et l’explorer comme n’importe quel dossier de votre système, il faut créer un dossier d’ancrage (ici appelé Nexus7 dans le dossier media), et monter la tablette dedans :

1
2
3
sudo mkdir /media/nexus7
chmod 755 /media/nexus7
sudo mtpfs -o allow_other /media/nexus7

Et voilà ! Pour la démonter, n’oubliez pas de faire :

1
sudo umount /media/nexus7

[Galaxy Nexus][Jelly Bean][Mise à jour] Yakjuxw et Yakju : un tutorial

Si comme moi vous vous étonnez du retard dans les mises à jour de votre Galaxy Nexus, sachez qu’il y a une explication assez simple. Pour faire court, certaines Rom du Galaxy Nexus sont gérées par Google himself, et d’autres par Samsung. Il se trouve que pour la peine, les mises à jour des téléphones gérés par Samsung ont pas mal de retard. Par exemple pour passer de la 4.0.2 à la 4.0.4, il y a eu deux bons mois de retard par rapport aux natifs. Et avec la sortie de Jelly Bean, j’ai voulu y remédier.

Déjà, comment être sur que vous avez une version Samsung, autrement dit « Yakjuxw » (il y a d’autres noms de versions encore il me semble…). Pour savoir, un test simple :

  1. Vous ouvrez Google Maps
  2. Paramètres
  3. A propos
  4. « Appareil » vous affichera peut-être Yakjuxw, si vous êtes dans mon cas…

Mais que l’on se rassure, il est tout à fait possible d’installer une Yakju standard pour avoir les mises à jour au fur et à mesure des sorties Google ! Pour cela, je vais vous rediriger (oh la facilité) vers un super tutorial que j’ai suivi pas à pas et qui a fonctionné parfaitement du premier coup…

http://www.romandroid.ch/discussions/galaxy-nexus-tuto-pour-passer-de-yakjuxw-yakju

J’aurais cependant quelques conseils… Il faut savoir que flasher son téléphone revient à tout effacer, y compris ses données ou ses textos. N’oubliez donc pas de faire une sauvegarde de vos photos par exemple. Pour les textos, j’ai installé une application que l’on m’a conseillé et qui a très bien marché : SMS Backup + qui a pour particularité de sauvegarder l’intégralité de ses textos sous un libellé GMail. C’est finalement assez pratique pour pouvoir indexer ses textos (une adresse, un code, que sais-je…)

La deuxième chose à prendre en considération, c’est que l’auteur donne des liens qui ne sont pas à jour.

  • Premier lien de l’étape 1.1, ne pas cliquer, aller le chercher directement sur cette page : http://forum.xda-developers.com/showpost.php?p=20058157&postcount=1
  • A l’étape 2.1, l’auteur donne un lien vers une ROM 4.04. Google a fourni une mise à jour, ce qui nous permet d’installer directement Jelly Bean ! Pour télécharger la ROM de son choix, il faut aller ici :
    https://developers.google.com/android/nexus/images et sélectionner dans notre cas la ROM Yakju 4.1.1
  • Le point précédent implique qu’il faut prendre garde aux étapes 3.8 et 3.10 !! Le nom des fichiers diffère de ce qui est écrit en fonction de votre téléchargement, bien évidemment…

En tout cas un gros bravo à l’auteur pour ce tutoriel. J’ai un beau Jelly Bean tout neuf, ma seule perte étant mes scores Angry Birds ! 😉

LB.

Google Music

Vous vous souvenez des annonces de Google lors de la dernière GoogleIO ? L’une d’elles concernait le lancement d’un nouveau service : Google Music. Mine de rien, ce n’était pas une annonce anodine… On sait bien qu’il y a un marché à prendre là, dans la lignée des Deezer ou Spotify.

Bon, mais un service de musique par Google, à quoi ça ressemble ? Et bien le principe est extrêmement simple… C’est le fait de pouvoir stocker sa musique « on the cloud », sur les serveurs Google, ce dernier fournissant les différents services et outils pour rendre sa musique accessible de n’importe où. Pour l’instant, cela passe par un site web (on va y revenir), et par une application Android. Le service béta n’étant ouvert qu’aux Etats-Unis, je n’ai pas accès à l’application Android… Snifouille…
Continuer la lecture de « Google Music »