Les 8 commandements de la R&D chez Equisense đŽ đ€
Ca fait maintenant 2 ans que je mâoccupe de la dĂ©marche scientifique chez Equisense. Et comme toute start-up qui se respecte, on a eu quelques loupĂ©s đ ⊠Il faut dire que contrairement Ă de la R&D âclassiqueâ, le contexte startup induit une notion de temps trĂšs court âČ et avec des moyens limitĂ©s đ” qui compliquent fortement la dĂ©marche.
Le cĂŽtĂ© positif de ça câest que chaque erreur ou âĂ©checâ est une source dâapprentissage fabuleuse. Comme on dit chez nous : Send Shit to Space !
đ© â đ. VoilĂ donc un petit florilĂšge de nos apprentissages en R&D et les outils quâon a mis en place pour ne plus recommencer deux fois les mĂȘmes erreurs.
Hardware + cheval = double complexité
Notre particularitĂ© câest que nous sommes une start-up hardware : nous dĂ©veloppons des objets connectĂ©s pour les cavaliers et leurs chevaux. Nous avons donc des prototypes Ă base dâArduino, avec des capteurs, des fils, des Ă©metteurs, des rĂ©cepteurs, avec du Bluetooth, du Wifi, des ordinateurs ⊠On doit aller les tester sur le terrain đŽ pour voir si ça fonctionne (donc prendre notre voiture, ce qui signifie avoir bien tout prĂ©vu Ă lâavance et ne rien oublier), dans le sable ou dans la paille, avec lâodeur de crottin qui nous berce đđ©, avec un cheval qui bouge dans tous les sens, avec tous ses poils qui nous compliquent franchement la tĂąche, le tout parfois dans des nuages de poussiĂšre qui nous projettent bien loin des salles blanches⊠On doit comparer les rĂ©sultats quâon obtient avec dâautres outils qui font foi (des gold standards) mais qui coutent souvent une fortune, donc on doit trouver des solutions alternatives, on doit faire des algorithmes de traitement du signal, les embarquer dans nos devices, vĂ©rifier quâils fonctionnent bien, que lâapp dĂ©diĂ©e affiche bien les bons rĂ©sultats, etc. Tout ça est donc beaucoup plus lourd quâune âsimpleâ app Ă faire tourner sur iOS et Android⊠Ceci nĂ©cessite donc une organisation au poil đ dont je vais essayer de vous livrer quelques secrets ici.
#1 Un bon process tu auras đ
Une bonne structuration des Ă©quipes (qui fait quoi) et une bonne planification (quand et comment) sont primordiales pour le bon dĂ©veloppement de produits complexes. De notre cĂŽtĂ©, voilĂ comment on a organisĂ© les Ă©changes entre les diffĂ©rents âpĂŽlesâ :
Dans les faits, lâorganisation est trĂšs fluide, la hiĂ©rarchie trĂšs horizontale et les pĂŽles sont constituĂ©s dâau maximum 3 personnes, mais le fait dâavoir une bonne structuration et un bon process qui soit Ă la fois complĂštement viable, facile, utile et adaptĂ©, nous permet de bien gĂ©rer les Ă©changes, Ă©viter un tas de problĂšmes, mieux identifier dâoĂč viennent les erreurs et donc mieux les corriger, et anticiper les besoins de chacun.
#2 En Ă©quipe tu travailleras đšâđ©âđ§âđŠ
On sâest rendu compte quâon avait facilement tendance Ă ĂȘtre chacun de notre cĂŽtĂ© malgrĂ© lâopen-space que lâon partage (Ă 20âŠ). Or, le partage dâinformations et la remise en question permanente par ses pairs est complĂštement indispensable pour que les bonnes dĂ©cisions soient prises au bon moment et avec toutes les cartes en main.
On a donc dĂ©cidĂ© de mettre en place des petites rĂ©unions par Ă©quipe, type scrum/stand-up, toutes les semaines ou toutes les deux semaines. On a donc 1 scrum technique, 1 scrum marketing et 1 scrum R&D. Dans ce dernier, on rĂ©unit un mardi sur deux les product owners, les deux ingĂ©nieurs recherche, la designer industriel et lâingĂ©nieur firmware dans une Ă©curie, face Ă un cheval đŽ pour pouvoir montrer les problĂ©matiques que chacun dâentre nous rencontre, tant dans les contraintes environnementales, matĂ©rielles ou design. En effet, la rĂ©alitĂ© est parfois bien loin du bureau, et pour ne pas ĂȘtre complĂštement Ă cĂŽtĂ© de la plaque, câest un petit effort qui finalement se trouve ĂȘtre bien utile. Et puis ça nous fait prendre le grand air, ça fait du bien đ
#3 Des specs prĂ©cises et une roadmap tu auras đș
Il nous est arrivĂ©, pour certains produits ou fonctionnalitĂ©s, de ne pas avoir de spĂ©cifications prĂ©cises, parce quâon se lâĂ©tait dit Ă lâoral ou parce que ça nous semblait Ă©vident, ou parce quâon ne voulait pas avoir de process trop lourds⊠Au final on y a perdu beaucoup plus de temps.
On a donc mis en place dâune part une roadmap globale (trĂšs âbig pictureâ), avec des jalons intermĂ©diaires, qui regroupe tous les produits que lâon dĂ©veloppe. A chacun ensuite de se responsabiliser et de sâorganiser Ă sa maniĂšre et avec ses outils pour respecter ces jalons, pour ne pas aller dans le micro-management, qui nâest pas vraiment notre tasse de thĂ©.
Dâautre part, chaque produit a dĂ©sormais ses specs qui rassemblent les contraintes techniques et les usages de maniĂšre bien dĂ©taillĂ©e dans un document partagĂ©.
Dans les deux cas, les documents sont co-construits pour tenir compte des contraintes de chacun et pour prendre les bonnes décisions en tenant compte des restrictions que chacun émet.
#4 Lâapprentissage des connaissances thĂ©oriques tu pousseras đ
En voulant avoir âlâesprit de hackerâ, on a eu tendance Ă vouloir aller trop vite sur les prĂ©-tests et Ă Ă©courter lâĂ©tape Ă©tat de lâart. On a donc Ă©tĂ© confrontĂ©s plusieurs fois Ă des rĂ©sultats que lâon ne comprenait pas ou que lâon ne savait pas expliquer tout simplement parce quâon ne sâĂ©tait pas assez attardĂ©s sur les bases thĂ©oriques, physiques et chimiques de ce quâon voulait mesurer. Or, on ne peut bien concevoir des tests que si on sait exactement ce quâil faut aller chercher et comment.
On passe dĂ©sormais plus de temps Ă lire des articles scientifiques, des livres spĂ©cialisĂ©s, Ă regarder des vidĂ©os, des moocs, ou Ă rencontrer des professionnels pour ĂȘtre sĂ»rs de maĂźtriser tous les phĂ©nomĂšnes sous-jacents.
#5 Du matĂ©riel de bonne qualitĂ© tu fabriqueras / tu utiliseras đš
De la mĂȘme maniĂšre, sous couvert de lââesprit hackerâ on a parfois voulu trouver des solutions trĂšs rapides mais pas du tout adaptĂ©es aux conditions âde lâextrĂȘmeâ que nous imposent les tests sur les chevaux. Or il est impossible de faire un test rĂ©pĂ©table ou bien dâisoler les diffĂ©rentes choses Ă Ă©tudier avec du matĂ©riel non robuste, mal fixĂ©, qui tombe, qui fonctionne une fois sur deux ou que lâon nâa pas retestĂ© aprĂšs avoir fait des changements hardware.
Pour contrer ça, dâune part, on a mis en place des protocoles de tests âsur tableâ, que lâon recommence rĂ©guliĂšrement avant de partir sur le terrain, pour ĂȘtre sĂ»rs que tout fonctionne et que les rĂ©sultats soient cohĂ©rents dans un contexte parfaitement maĂźtrisĂ©. Câest comme ça que vous pourrez croiser Alice, notre ingĂ©nieur R&D, avec des Ă©lectrodes ECG collĂ©es partout sur le corps et autant de cĂąbles reliĂ©s Ă son ordinateur, en train de sauter pieds joints devant son bureau, ou encore Kamel en train de faire des cercles âau pas et au trotâ dans lâatrium qui jouxte notre open-space.
Dâautre part, on a appris Ă dĂ©gainer les outils de notre mini fablab, comme la machine Ă coudre par exemple pour nous fabriquer des pochettes / tapis / sacs, pour garantir une stabilitĂ© parfaite de notre matĂ©riel lors des tests.
Il vaut mieux passer 15 ou 30 min Ă fabriquer du matĂ©riel robuste et adaptĂ© plutĂŽt que de casser nos prototypes, de biaiser nos tests Ă cause des mouvements et dâĂȘtre incapable Ă la sortie dâidentifier dâoĂč vient le problĂšme.
#6 Des tests structurĂ©s tu feras đ đ
LĂ encore, il ne faut pas confondre vitesse et prĂ©cipitation. En voulant Ă tout prix avancer sur le sujet, on sâest retrouvĂ©s parfois Ă faire des tests sans avoir dâobjectif vraiment prĂ©cis.
Voilà comment on procÚde désormais :
1) AprĂšs avoir Ă©pluchĂ© toutes les publis et tous les moocs disponibles sur le sujet en question, on dĂ©construit le problĂšme pour en comprendre toutes les composantes et identifier les zones dâombres, les inconnues ;
2) On Ă©met des hypothĂšses ;
3) On fait un plan de pré-tests pour valider ou invalider les hypothÚses ;
4) On passe à la phase de pré-tests.
Concernant la phase de pré-tests, pour éviter les loupés on a mis en place certains outils qui se révÚlent plutÎt utiles :
- Avant de partir sur le terrain on remplit un questionnaire Google Form sur lequel on explique le test quâon va faire, pourquoi, comment, ce quâon cherche Ă obtenir comme rĂ©ponse, qui y va et quand. Et surtout, ce Google Form contient Ă©galement la checklist du matĂ©riel Ă emporter, ce qui nous Ă©vite bien des dĂ©convenues. Ces formulaires sont automatiquement envoyĂ©s sur Slack grĂące Ă Slackbot qui nous renvoie le bon lien et grĂące Ă Zapier qui nous envoie un message quand quelquâun a rempli le formulaire avec le lien vers les rĂ©ponses. GrĂące à ça, tout le monde peut y jeter un oeil, ça nous aide Ă garder du recul sur ce quâon fait et ça nous oblige Ă structurer notre dĂ©marche.
- Au retour du test, mĂȘme procĂ©dure, on remplit le Google form de compte rendu qui nous demande ce quâon a fait, ce quâon a eu comme rĂ©sultat, pourquoi on a eu ces rĂ©sultats (ce qui nous oblige Ă systĂ©matiquement challenger notre mĂ©thode et Ă pousser plus loin la rĂ©flexion), quelle est la prochaine Ă©tape, etc. De la mĂȘme maniĂšre, les rĂ©sultats sont automatiquement renvoyĂ©s sur Slack pour que tout le monde puisse suivre et quâon avance tous avec le mĂȘme niveau dâinformation.
Google Form est un outil parmi tant dâautres, mais il nous permet de capitaliser tous les rĂ©sultats en un seul document bien structurĂ©. Il est donc trĂšs aisĂ© pour quiconque de revenir voir quels tests ont Ă©tĂ© effectuĂ©s quand avec quel matĂ©riel sur quel type de cheval, les rĂ©sultats qui ont Ă©tĂ© obtenus, les conclusions quâon en a tirĂ©es et donc dâidentifier les zones dâombre quâil reste Ă Ă©lucider, et de prendre les bonnes dĂ©cisions pour la suite.
#7 Beaucoup de donnĂ©es tu acquerras đ
Mieux vaut un algorithme moyen avec beaucoup de donnĂ©es quâun algorithme parfait avec trĂšs peu de donnĂ©es.
Ca on lâa expĂ©rimentĂ© aussi au tout dĂ©but de lâaventure. On avait commencĂ© Ă dĂ©velopper certains algorithmes de dĂ©tection dâĂ©vĂ©nements sur seulement quelques datasets acquis sur des chevaux relativement similaires : ça marchait hyper bien ! Et puis on a lancĂ© la version beta sur une petite quarantaine de personnes ⊠et ça marchait beaucoup moins bien đ. MĂȘme si le rĂŽle de beta-testeurs consiste aussi Ă challenger nos rĂ©sultats, on prĂ©fĂšre mieux tester en interne sur un maximum de chevaux diffĂ©rents, de taille et de poids diffĂ©rents, avec des locomotions diffĂ©rentes, dans des conditions diffĂ©rentes, pour essayer de ratisser le plus large possible avant la mise en prod de nouvelles features. Notre objectif câest en fait de gommer les effets de bords et dâavoir suffisamment de donnĂ©es pour couvrir tous les cas ou presque, pour faire en sorte de crĂ©er un effet de lissage sur des cas quâon nâaurait pas forcĂ©ment imaginĂ©s Ă la base.
#8 Des golden samples tu crĂ©eras đ»
En fait on sâest trouvĂ©s un certain nombre de fois face Ă des diffĂ©rences de rĂ©sultats entre les algorithmes Matlab que lâon dĂ©veloppait en premier lieu et les algorithmes une fois passĂ©s en C et embarquĂ©s dans nos capteurs. Câest donc pour automatiser ce processus de testing, mieux maĂźtriser le taux dâerreurs et fiabiliser les versions que lâon met en prod, quâon a mis en place le systĂšme de golden samples.
Le principe est simple. Prenons lâexemple suivant : je veux faire un golden sample pour valider lâalgorithme de frĂ©quence cardiaque. Je vais alors poser notre systĂšme dâacquisition sur le cheval + un systĂšme qui fait rĂ©fĂ©rence (en lâoccurrence le Televet 100 de la marque Engel Engineering Systems GMBH) et je fais les deux acquisitions en parallĂšle. Je vais ensuite rĂ©cupĂ©rer les donnĂ©es brutes de mon acquisition (lâECG) et crĂ©er un fichier dans lequel je vais indiquer la frĂ©quence cardiaque calculĂ©e toutes les secondes par le Televet. On va ensuite dĂ©velopper un algorithme de calcul de la frĂ©quence cardiaque Ă partir de lâECG, que lâon va mettre dans la machine virtuelle. On fait ensuite passer lâECG que jâai acquis avec mon systĂšme dans la machine virtuelle et on compare les rĂ©sultats de lâalgorithme avec les rĂ©sultats du Televet pour voir si lâalgorithme est correct.
On a donc un jeu de datasets trĂšs hĂ©tĂ©rogĂšnes (toutes disciplines, tous types de chevaux, etc.), pour lesquels chaque indicateur est vĂ©rifiĂ© soit manuellement (pour les Ă©vĂ©nements ponctuels comme les sauts par exemple), soit grĂące Ă des outils de type gold standard (comme le Televet). Les donnĂ©es brutes de ces datasets parfaitement labellisĂ©s sont envoyĂ©es dans une machine virtuelle (qui reproduit le comportement de notre device) qui nous permet de comparer les rĂ©sultats des algorithmes embarquĂ©s aux rĂ©sultats des golden samples. Si les rĂ©sultats sont identiques (ou que le taux dâerreur est dans la fourchette dâacceptabilitĂ©), on considĂšre que lâalgorithme embarquĂ© est validĂ© et quâil peut partir en version beta. Si les rĂ©sultats diffĂšrent trop alors on cherche point par point dâoĂč peut venir le problĂšme et on recommence la boucle une fois le problĂšme rĂ©glĂ©.
Take home message đ
- Le fait dâĂȘtre une startup et toutes les contraintes (âČ đ” etc.) qui sâimposent nâempĂȘche pas dâĂȘtre bien structurĂ©. Au contraire !!
- La hiĂ©rarchie horizontale est compatible avec une structure et les process nâempĂȘchent pas la coolitude et lâagilitĂ©.
- Lâapprentissage et lâĂ©tat de lâart nâest jamais une perte de temps đ (dâailleurs Ă ce sujet je vous conseille vivement lâarticle de Benoit, notre CEO â€ïž â âHackez votre courbe dâapprentissageâ).
- Lâesprit de hacker que lâon se doit dâavoir nâempĂȘche pas de faire du matĂ©riel robuste đȘ.
- Lâautomatisation đ€ vous permet dâĂ©viter bien des problĂšmes.
- Sachez capitaliser et apprendre de vos erreurs. Et il nâest jamais trop tard pour faire une rĂ©trospective ⊠mĂȘme au bout de 2 ans đ
Et puisquâon a parlĂ© dâune certaine forme dâĂ©chec tout du long, je ne peux mâempĂȘcher de vous conseiller plus que vivement la lecture du livre de Charles PĂ©pin âLes vertus de lâĂ©checâ. Je vous souhaite quâil vous permette, comme je viens de le faire, de presque prendre du plaisir Ă vous remĂ©morer vos erreurs passĂ©es, en espĂ©rant gagner en sagesse et tendre vers âlâauthentique rĂ©ussiteâ â€ïž đ.