Au secours, je dois faire un design system ! đ±
Depuis quelques annĂ©es maintenant, le terme design system apparaĂźt partout ! Que ça soit sur des Slack, Linkedin, Twitter, des confĂ©rences⊠pas un jour sans en entendre parler. Les grandes boĂźtes sortent jour aprĂšs jour leurs propres âDSâ. Ă commencer par Material de Google mais Ă©galement Carbon dâIBM ou mĂȘme Gov.uk, le design system du gouvernement britannique ! Ils prĂ©sentent un mĂ©lange de composants, spĂ©cifications techniques, guidelines et principes dâorganisations. Devant cet engouement, comment ne pas avoir envie de se lancer et dire âOn doit faire un design system !â
Maintenant quâon sâest donnĂ© comme objectif de faire son propre Design System, comment se lancer ? Par quel bout commencer ?
Les premiĂšres questions Ă se poser
PremiĂšre question Ă se poser : Je pars de quoi ? Dâun produit dĂ©jĂ existant ou au contraire de 0 ? Ensuite, qui sont les parties prenantes, câest Ă dire qui va participer Ă sa construction et sa mise en place ? Quelles sont les dĂ©pendances et restrictions techniques et organisationnelles ? Et finalement la principale question : pourquoi faire un design system ?
Je pars de quoi ?
Si je pars dâun nouveau produit, câest-Ă -dire que celui-ci est Ă construire, alors je suis sencĂ© partir sur de bonnes bases. En effet, si tout est Ă construire et on nâa pas, ou en tout cas moins, hĂ©ritĂ© de dette.
Si je pars dâun produit existant, il est peut-ĂȘtre mĂȘme dĂ©jĂ en âprodâ ! Faire un design system veut dâabord dire exporter les diffĂ©rents Ă©lĂ©ments fonctionnels de notre produit ; prendre le temps de les identifier, se mettre Ă Ă©crire des âspecsâ et peut-ĂȘtre mĂȘme de les re-dĂ©velopper. Car oui, se lancer sur un design system câest aussi risquer dâouvrir la BoĂźte de Pandore.
Il se pose donc la question de pourquoi se lancer dans ce chantier. Ă quoi ça sert de faire un design system. Son principal intĂ©rĂȘt est dâoptimiser lâExpĂ©rience Utilisateur, quâil sâagisse des utilisateurs finaux de notre produit mais Ă©galement des membres de ou des Ă©quipes produits.
Pour les utilisateurs finaux, mettre en place et utiliser un design system permet entre autres de garder une cohĂ©rence Ă travers tout le produit, cette cohĂ©rence facilite la navigation, la comprĂ©hension du contenu et amĂšne Ă la rĂ©duction des erreurs. Cela permet Ă©galement de revoir lâaccessibilitĂ© de votre produit Ă la fois visuellement et techniquement.
Pour les utilisateurs du design system, câest Ă dire les membres de lâĂ©quipe produit composĂ©e de designers, dĂ©veloppeurs et Product Owner, quand on met en place un design system, on travaille avant tout sur la mĂ©thodologie du quotidien, et son optimisation.
Faire un design system peut trĂšs vite sâapparenter Ă faire une refonte de son produit. Et ce mĂȘme sans changer Ă priori le design et les fonctionnalitĂ©s.
Ătat des lieux et priorisation
Maintenant que lâon sâest bien dĂ©cidĂ© Ă crĂ©er un design system, il faut se lancer. En faisant un Ă©tat des lieux de lâorganisation et du produit Ă travers un ou plusieurs ateliers (le nombre et la durĂ©e sont Ă dĂ©finir selon le produit et les besoins de lâĂ©quipe).
PremiĂšre chose quand on veut faire lâĂ©tat des lieux, câest dâinviter les personnes concernĂ©es. Et les personnes les plus concernĂ©es par un design system, sont celles qui sont directement impactĂ©es : lâĂ©quipe de rĂ©alisation du produit ! Câest Ă dire les dĂ©veloppeurs, designers, product owner (ou chef de projet), et si il y en un, le scrum master ! Et câest lĂ que tout va se jouer. En effet, ils va falloir ĂȘtre certain quâils sont convaincus de lâintĂ©rĂȘt de se lancer dans cette aventure.
Lâatelier âĂ©tat des lieuxâ
La prĂ©paration de lâatelier
Comme tout atelier, il demande une certaine prĂ©paration. Dâautant plus si on veut ĂȘtre efficace ! Ă titre personnel, je me suis créé un template de prĂ©paration dâatelier afin de ne rien oublier.
PremiĂšre Ă©tape donc de cette prĂ©paration : faire des captures de chaque Ă©cran (et sur les diffĂ©rents devices bien Ă©videmment). Il faut bien faire attention Ă prendre ce qui est dĂ©veloppĂ© et sur le mĂȘme environnement (prod, preprod, stagingâŠ). Si certaines pages ont plusieurs Ă©tats, il faut pas hĂ©siter Ă les capturer. MĂȘme si une exhaustivitĂ© des pages est prĂ©fĂ©rable, oublier de capturer une obscure page, dâune obscure fonctionnalitĂ©, que lâon trouve aprĂšs moulte pĂ©rĂ©grinations dans lâapplication nâest pas un drame. Si les composants sây trouvant sont uniques et ne se retrouvent nul par ailleurs, on pourra alors se poser la question plus tard de leur pertinence !
Ensuite, les afficher quelque part. Si vous souhaitez le faire en prĂ©sentiel, vous pouvez les coller au mur, et si vous le faites Ă distance, utilisez votre outil prĂ©fĂ©rĂ© (MIro ou Mural par exemple). LâidĂ©e est surtout dâavoir la vision globale. Pensez bien Ă regrouper chaque Ă©cran par thĂ©matique/fonctionnalitĂ©s et de toujours bien les nommer.
Bien entendu, invitez les bonnes personnes : les membres de lâĂ©quipe produit, comme expliquĂ© prĂ©cĂ©demment. Mais vous pouvez Ă©galement convier des personnes externes, comme quelquâun de lâĂ©quipe marketing. LâintĂ©rĂȘt dâinviter quelquâun de non technique et qui a plus de recul sur le produit, rĂ©side dans les questions quâil va poser et les questionnements que ça va crĂ©er.
LâĂ©lĂ©ment coeur de votre atelier sera le tableau dâidentification. Ce tableau que lâĂ©quipe va remplir au fur et Ă mesure sera la visualisation Ă lâinstant T des composants du produit.
Le tableau dâidentification
La classification : sĂ©mantique ou fonctionnelle, parle-t-on dâun composant apportant avant tout un sens (exemple une couleur) ou de quelque chose avec lequel une action ou une interaction est possible (exemple un bouton)
La catĂ©gorie : la grande catĂ©gorie dans laquelle il va ĂȘtre rangĂ©. Par exemple, bouton, formulaire, navigation⊠Je conseille lors de la prĂ©paration de lâatelier dâinventorier quelques catĂ©gories comme base de travail.
Le nom : le plus simple Ă lâinstant T mais le plus complexe ensuite ! Dans tous les cas, pensez au sens purement fonctionnel de votre Ă©lĂ©ment. Posez-vous bien la question de la dĂ©finition de tel ou tel Ă©lĂ©ment. Par exemple cet Ă©lĂ©ment qui ressemble Ă un lien, est-il bien un lien ou est-ce plutĂŽt un bouton ?
Les états : Listez si vous avez des états particuliers comme des composants désactivés (disabled) ou par exemple en erreur (error).
Le nombre de rĂ©currences fonctionnelles : comptabilisez le nombre de fois oĂč vous trouvez ce composant sans faire cas de son style.
Le nombre de style : comptabilisez le nombre de styles diffĂ©rents que vous trouvez de ce composant. Vous risquez dâavoir des surprises, et mĂȘme dâavoir des rĂ©vĂ©lations sur lâutilisabilitĂ© de votre produit (pensez aux critĂšres ergonomiques de Bastien et Scapin ou encore Ă la loi de similitude !)
Les commentaires : prĂ©voyez bien sur une colonne commentaire afin dâajouter quelques petites choses utiles Ă ne pas oublier. Par exemple, votre navigation principale peut avoir des styles totalement diffĂ©rents entre la version mobile et la version desktop mĂȘme si on parle du mĂȘme composant fonctionnellement !
La prĂ©sence sur le design system parent : cela dĂ©pendra si vous avez un design system dĂ©jĂ en construction ou pas ! Cela peut ĂȘtre intĂ©ressant si votre atelier se fait dans le cadre du dĂ©ploiement dâun design system dĂ©jĂ en construction ou implĂ©mentĂ© sur dâautres produits que le vĂŽtre.
Des exemples de composants existants : Mettez des exemples de vos composants ! Un petit rappel visuel câest toujours utile đ !
La matrice de priorisation
Lâunique identification de vos composants nâest pas suffisante, il va falloir maintenant faire une priorisation de vos composants afin de les embarquer dans votre produit. Pour cela, lâĂ©quipe peut les mettre sur une matrice prenant en compte la complexitĂ© et la frĂ©quence.
La complexité
Tout d'abord quand on parle de complexité de quoi parle-t-on ? On peut voir deux types de complexité : la création et le déploiement du composant.
La complexitĂ© de crĂ©ation du composant va dĂ©pendre de ce quâon entend par crĂ©ation dâun composant. Cela peut par exemple impliquer :
- La conception âdesignâ (dans Sketch ou Figma par exemple)
- LâĂ©criture des spĂ©cifications (la fameuse documentation de notre composant)
- Le développement du composant en isolation (avec Storybook)
Ces critĂšres de complexitĂ© de crĂ©ation peuvent ĂȘtre Ă©volutifs suivant la temporalitĂ© au sein du projet. En effet, parfois quand un design system commence Ă ĂȘtre implĂ©mentĂ©, certains composants ont dĂ©jĂ Ă©tĂ© documentĂ©s, il est tout de mĂȘme intĂ©ressant de se poser la question de cette complexitĂ© pour avoir une base de rĂ©flexion pour le futur. Par ailleurs, on commence gĂ©nĂ©ralement par des composants plutĂŽt âsimplesâ comme un bouton ou un Ă©lĂ©ment de liste.
Le second critĂšre de complexitĂ© est celui du dĂ©ploiement et de lâimplĂ©mentation du composant au sein du produit. Elle dĂ©pendra de son Ă©tat, de la maniĂšre dont les Ă©lĂ©ments de bases ont Ă©tĂ© dĂ©veloppĂ©s ! Cette implĂ©mentation peut devenir un casse tĂȘte surtout si la frĂ©quence est Ă©levĂ©e et quâils Ă©tĂ© dĂ©veloppĂ©s unitairement !
La fréquence
Le second critĂšre de frĂ©quence peut ĂȘtre assimilĂ© Ă la valeur. On peut imaginer que plus un composant est rĂ©curent, plus celui ci Ă de la valeur. Par exemple, un bouton dâaction est lâĂ©lĂ©ment qui va dĂ©clencher lâaction de lâutilisateur, il a donc beaucoup de valeur. Et on risque de le retrouver partout. Il a Ă la fois une forte valeur et une forte frĂ©quence !
Ă contrario, on peut avoir un composant trĂšs spĂ©cifique rĂ©pondant Ă un besoin mĂ©tier prĂ©cis et central. On le retrouve quâune fois mais il a une importance primordiale ! Il a du coup une forte valeur alors quâil a une trĂšs faible frĂ©quence. Un autre cas est un composant que lâon ne retrouve quâune fois mais partout ! Typiquement la navigation principale. Sa valeur est importante (il permet de naviguer et de se repĂ©rer dans le produit) mais il n'apparaĂźt quâune fois. Il sâagit dâun composant unique Ă forte valeur ! Ces cas particuliers sont Ă identifier et Ă mettre en exergue afin dâĂȘtre embarquĂ©s.
Ainsi la valeur de notre composant est vu sous deux prismes : sa rĂ©currence (le plus facile Ă identifier) et sa valeur mĂ©tier pour l'utilisateur final. Câest en prenant en compte ces facteurs et en les associant avec la complexitĂ© de crĂ©ation que lâon pourra Ă©tablir une roadmap du design system au service du ou des produits quâil sert ! Et ainsi commencer Ă lâimplĂ©menter !
Il est primordial de bien prioriser la crĂ©ation et lâimplĂ©mentation des composants afin de trouver un juste Ă©quilibre avec lâimplĂ©mentation et/ou lâĂ©volution de fonctionnalitĂ©s. Il est Ă©galement important si la mise en place dâun design system intĂšgre une refonte visuelle de votre produit, dâĂ©viter un Big Bang pouvant crĂ©er une friction et un rejet plus ou moins important auprĂšs des utilisateurs finaux.
Conclusion
CrĂ©er un design system est quelque chose de complexe, mĂ©thodique, pouvant ĂȘtre fastidieux. Il risque de remettre en cause certaines choses dĂ©jĂ Ă©tablies, de peut ĂȘtre ralentir le delivery de valeur fonctionnelle pour l'utilisateur. Mais il faut avant tout le voir comme un apport Ă la fois pour lâutilisateur et pour lâĂ©quipe. Car crĂ©er un design system, câest avant tout amĂ©liorer la communication, lâutilisabilitĂ© et lâExpĂ©rience dâun produit !