L’aventure Karnott, 2 ans déjà !

L’an dernier, j’avais déjà écrit un premier article racontant mes 12 premiers mois chez Karnott. Cette année, je voulais réitérer l’expérience, histoire de faire le point sur ce qui a été accompli, nos réussites et nos échecs. J’ai beaucoup cogité, ne sachant par où commencer, et je suis tombé sur ce tweet :

L’article pointé apparait comme une évidence aujourd’hui, mais ça ne l’était pas il y a un an.

Remise dans le contexte

Juin 2018. Equipe constituée de 3 développeurs, dont moi. Nous avions commencé à prendre le virage de « la data », ce qui voulait dire être capable de la stocker, la traiter, la partager. Autant dire que les 3 sujets sont très propices à l’over-engineering. En août et septembre 2018, nous nous sommes renforcés avec 2 personnes de plus, expérimentées. Plutôt Backend et Devops, avec l’objectif de sécuriser notre plateforme.

Techniquement, où en étions-nous ?
Une API redéveloppée en Golang, de l’intégration continue qui produit des JARs, du Ruby, du Go, du JS, et des scripts bash de déploiement sur des VMs plus que fragiles. Pour notre Devops, le premier chantier tombait sous le sens : rationaliser notre déploiement continu, et plus globalement, notre hébergement.

Choix technique, scalabilité et résilience…

A J+500 dans ma vie de CTO chez Karnott, Il était temps de faire l’un de ces fameux choix critique qui impacterait notre façon de travailler, mais aussi notre SRE, le cout de notre infra (et donc le modèle économique de l’entreprise), et qui restera surement plusieurs années : passer sous Kubernetes et Google Cloud Platform.

J’entends d’ici les critiques classiques : « c’est pour la hype, vous n’en n’aviez pas vraiment besoin, vous avez introduit plus de problèmes que vous en avez résolu… ». Reprenons le cahier des charges que nous nous étions fixés :

  • Avoir un DSL décrivant nos services et notre infrastructure (même si bon sang, le YAML…)
  • Uniformiser la façon dont nous déployons tous nos services
  • Gérer du 0 downtime pendant nos montées de version
  • Avoir une façon simple de monitorer et gérer la montée en charge
  • Ne pas avoir à se soucier de la captation de logs, et être capables d’en générer des métriques simples (ai-je des erreurs sur l’un de mes services ?)
  • Pouvoir profiter de services managés si besoin, et ne rien s’interdire techniquement (capacité à faire un POC rapidement dans une nouvelle techno)

Et franchement, la stack choisie a répondu à toutes nos attentes. La mise en place a été très rapide (moins d’un mois à mettre en place, avec la dockerisation de nos services), même si, avec le recul, trois éléments ont facilité la migration :

  1. La base de données n’est pas « Kubernetisée », mais gérée à côtée.
  2. Nous n’avons aucune problématique réseau compliquée, tous nos messages internes transitant à travers Google Cloud PubSub
  3. La personne de l’équipe qui a mis tout ça en place, David, avait l’expérience pour le faire

La conception produit et les interrogations

D’un point de vue technique, le reste de l’année a été consacré en grande partie à l’amélioration de notre scalabilité dans la gestion de la flotte de Karnott. Cela revient à améliorer notre capacité à stocker, transformer, visualiser la donnée, mais aussi améliorer notre gestion du support pour fournir les bons outils à l’entreprise pour diagnostiquer au plus vite le moindre soucis. Ces problématiques seront toujours un fil rouge chez Karnott, et mériteraient pas mal d’articles pour parler de la vente d’objet physique à l’échelle d’une startup… (Coucou Amaury, Guillaume et Georges !)

ça commence à avoir de la gueule non ?

Et la création produit dans tout ça ?

Revenons-en au développement de l’application Karnott, que nos clients utilisent tous les jours.
Lors de la première année, nous avons développé une application.
Lors de cette seconde année, nous avons essayé de développer la bonne application.
Mais encore ? C’est maintenant que je vous renvoie à l’article cité premier paragraphe. Nous n’insisterons jamais assez sur le fait que pour construire le bon produit, le développeur en startup doit être pragmatique, ne pas avoir peur de s’approprier le métier, et faire parfois des concessions sur la technique pour satisfaire un besoin urgent, que l’on ne comprend pas toujours, ou que nous aurions souhaité différer pour X raisons. Oui nous introduisons tous les jours de la dette et je suis persuadé qu’il est important de le faire. Finalement, nous ne faisons que caler notre modèle sur celui de la startup. Ce n’est pas de la dette, mais de l’investissement, qui nous permet d’avancer.

Mais est-ce vraiment le BON produit ?

C’est la grande question. Comment éviter la surcharge featurale ? L’empilage de fonctionnalités en espérant que cela convienne ? Cette seconde année, nous avons pris le parti de prendre un maximum d’initiatives. Concrètement, chaque développeur a travaillé main dans la main avec nos différentes équipes : Customer Success et support ( <3 ), l’équipe commerciale, l’équipe marketing, le Design, et bien entendu nos fondateurs pour garder la vision d’un produit utile et simple, profondément ancrée dans l’ADN de l’entreprise. Cela passe aussi par une réflexion UX de tous les instants. Un résultat simple implique toujours une conception compliquée.

Quelques choix forts de l’année : nous avions absolument besoin d’une présence sur les stores Android et iOs, ce qui a amené une nouvelle stack technique chez nous ( React Native). Autre exemple qui peut paraitre anecdotique, un client, ça n’aime pas le CSV. Quand on lui fait télécharger un export, c’est du format excel obligatoirement ! Nous avons aussi fait de la dataviz autour de la Geodata et expérimenté des choses rigolotes…

D3js, leaflet, de la donnée sympa, et on peut faire de belles choses !

Bilan

Le bilan de cette seconde année, c’est que nous sommes fiers du travail accompli. Maintenant pour passer un cap, et continuer à construire le bon produit avec toute la connaissance métier et client accumulée, nous savons que nous avons besoin de nous structurer différemment. Cela passe par le recrutement obligatoire d’un Product Owner / Product Manager (poste ouvert!) qui sera le pivot de l’entreprise, le carrefour entre toutes les approches clientes différentes. Mettre sur papier les persona, les obstacles et les opportunités, prioriser, analyser plus profondément les besoins et la pertinence de chacun, c’est notre limite d’aujourd’hui. Les besoins en UX sont aussi très présents. Comme je l’ai évoqué, nous attachons beaucoup d’importance à la simplicité du produit. Cela passera aussi par le recrutement d’un UX à temps plein.

J’en profite pour mettre un petit lien vers notre page WelcomeToTheJungle, cette page donne un bon aperçu de nos différents corps de métier, et de la bonne humeur générale 🙂

Un dernier mot pour les développeurs qui auront travaillé chez Karnott cette année. François, Georges, David, Guillaume, Paul et Amaury. Développeur en startup, ce n’est pas jouer au ping pong et rigoler toute la journée… Cette année, il y avait de la solidarité, de l’envie, de la compétence et c’était vraiment chouette. Merci à eux.

A l’an prochain !
LB.

2017, l’année du changement

Cela fait dix ans que je fais de la prestation de service en informatique. Dix ans que je fais du forfait, de la régie, des réponses à appel d’offre, que je rencontre des clients avec des besoins divers et variés.

En dix ans, j’aurais cotoyé le monde pharmaceutique, l’industrie aéronautique, automobile, le monde bancaire, l’univers de la grande distribution, associatif, de la startup au grand groupe, de Bâle à Lille en passant par Toulouse ou Paris. Cette variété de métiers et de façon de faire du développement est l’une des raisons qui m’avait poussé en sortant d’école, à entrer dans le monde du service et des mal-aimées « SSII ».

Alors, 10 ans plus tard, est-ce que j’ai vraiment appris des choses ?

Déjà, j’aurais appris à aimer mon métier. J’ai eu la chance de croiser des développeurs passionnés, et il est clair que c’est contagieux! Merci aux JUGs de Toulouse, Paris ou Lille, aux GDGs de France, et à l’ensemble des Sfeiriens qui ont tous été plus qu’inspirants.
Mais la principale leçon de ces 10 ans, c’est que la technique n’est qu’une petite composante d’un projet informatique. Prenons le métier, l’humain, les compétences à disposition, le temps disponible, la conjoncture, la pleine lune ou la météo, mettons tout ça dans un panier, et on en sort les vrais défis à surmonter. La technique est une composante essentielle, mais non suffisante.

Si je parlais à mon moi d’il y a 10 ans, lui conseillerais-je de faire du service ?

Sans hésiter.
Je ne sais pas si j’aurais été meilleur développeur autrement, mais je suis heureux de ne pas avoir été enfermé dans ma bulle, et heureux de toutes ces rencontres.

Et maintenant alors ?

Et maintenant, le grand changement. J’ai décidé de rejoindre le 1er juin l’équipe de Karnott en tant que CTO. Un terme pompeux pour un challenge bien réel. Le projet est chouette, l’un des deux fondateurs est agriculteur et connait parfaitement son métier (chouette, un nouveau domaine fonctionnel!). Plusieurs choses me plaisent dans ce challenge :
– Chaque pierre posée le sera pour mon employeur direct. La SSII a ce côté frustrant de n’être toujours que de passage…
– Je ne pourrai pas être plus proche de l’utilisateur final! C’est quelque chose que j’avais souvent reproché à mes différents projets par le passé…
– L’un de mes objectifs est de fonder une équipe technique complète. Rassembler des personnes compétentes qui partagent les mêmes valeurs que moi, j’y ai participé avec Sfeir Lille, et humainement c’est génial. (D’ailleurs, si vous êtes dans le Nord, que vous en avez marre du retail et que vous voulez faire de l’IOT, on recrute 😉 )
– Techniquement, il y a carte blanche. Et comme on vit une époque formidable, je crois qu’il y a de quoi bien s’amuser.
– Pas un jour qui passe sans qu’on entende parler de startup. Je crois qu’il ne faut pas mourir idiot et vivre ça de l’intérieur au moins une fois…

Bref, c’est stressant, angoissant, et encore un saut dans l’inconnu… Mais après tout, qu’est ce qu’on risque ?

LB.