Le développement logiciel est un univers très complexe. Il englobe une multitude de langages, de méthodologies et d'approches, ce qui peut être difficile à démystifier lorsqu’on est moins familier avec le domaine. C'est pourquoi nous avons créé un glossaire regroupant 24 termes en développement logiciel, qui définissent le mieux l’approche de Nexapp et que notre équipe utilise régulièrement. Et ils vous seront certainement utiles aussi!
Le Component Driven Development (développement axé sur les composants) est une approche utilisée par les développeurs et les designers, spécifiquement pour les interfaces graphiques, web et mobiles. Cette approche met l'accent sur le processus de décomposition de l'interface utilisateur en composants individuels. Chaque composant est responsable d'une fonction distincte et peut être développé, testé et débogué indépendamment.
En se concentrant sur les composants, les designers et les développeurs peuvent construire et améliorer les systèmes logiciels de manière structurée et efficace, en respectant les principes de qualité, de simplicité et d'adaptabilité.
Le craftsmanship en développement logiciel est l'art d'élever la programmation à un niveau supérieur, maximisant la valeur ajoutée dans chaque projet. Cela implique de maîtriser le métier, de se concentrer sur la qualité et d'améliorer continuellement ses compétences. Les développeurs créent des logiciels bien conçus, maintenables et efficaces grâce à un code propre et en s’appuyant sur l’idée de «less is more». Cela incarne le professionnalisme, la responsabilité et l'apprentissage perpétuel dans le domaine.
Le Domain-Driven design est une approche qui met l'accent sur la compréhension du domaine métier et la conception du logiciel en fonction de ses réalités. Le DDD favorise une communication claire grâce à un langage omniprésent défini par les experts et les développeurs. Le DDD est utile dans les secteurs complexes où le logiciel doit refléter des processus métier complexes. En se concentrant sur le domaine, le DDD crée un logiciel flexible et adaptable centré sur les véritables besoins.
Le déploiement est lorsqu’on installe une version logicielle sur un environnement. Le release (mise en production) est lorsqu’on rend un logiciel disponible à un utilisateur.
Le design itératif (ou Lean UX) est une approche qui privilégie la répétition et le raffinement progressif. Au lieu de chercher à concevoir une solution parfaite dès le départ, le design itératif encourage l’équipe de développement à produire rapidement un premier prototype, puis à l'améliorer au fil de plusieurs cycles d'évaluation et de révision. Cette méthode repose sur l'idée que les erreurs sont inévitables dans le processus de design, mais qu'elles peuvent être corrigées et utilisées comme des opportunités d'apprentissage. En travaillant de manière itérative, les équipes peuvent s'adapter aux changements, répondre aux feedbacks des utilisateurs et améliorer constamment le produit tout au long de son développement.
Un audit design est une évaluation approfondie de l'expérience qu'un utilisateur a lorsqu'il interagit avec un produit ou un service numérique, tel qu'un site web, une application mobile ou un logiciel. L'objectif de l'audit est d'identifier les problèmes d'utilisabilité, de navigation, de conception et d'interaction qui peuvent causer des frictions et des frustrations pour l'utilisateur.
La conception de l'expérience utilisateur (ou UX design) se concentre sur la compréhension des besoins, des attentes, des motivations et des douleurs de l’utilisateur pour créer des produits ou services qui offrent une expérience fluide, intuitive et satisfaisante. Plus précisément, le design UX inclut : la recherche utilisateur, la conception d’interactions, les test utilisateurs et l’accessibilité. Ça inclut aussi des outils comme la création de personas, de Journey Maps, de User Flows et de Wireframes.
La conception de l’interface utilisateur (ou design UI) est la création visuelle des interfaces dans les logiciels ou les appareils informatiques, en se concentrant sur l'aspect ou le style. C’est créer des éléments graphiques (boutons, menus, icônes, typographies, couleurs, etc.) en veillant à ce qu’ils soient esthétiquement attrayants, intuitifs et fonctionnels pour offrir une expérience utilisateur optimale.
Un système de design est un ensemble de composants réutilisables, guidés par des standards clairs, qui peuvent être agencés ensemble pour créer et maintenir une identité visuelle et une expérience utilisateur unifiées à travers différents produits et plateformes. Chez Nexapp, le design system est surtout une façon de mieux collaborer entre l’équipe design et l’équipe développement, en créant un vocabulaire commun pour les éléments visuels d'un produit.
Le développement de logiciels est le processus de création et de maintenance d'applications logicielles. Il comprend la conception, le codage, le débogage, les tests, la configuration et la documentation de ces applications.
C’est un processus collaboratif qui rassemble un groupe diversifié d'experts. Il peut s'agir de développeurs, designers, de product owners, de gestionnaires d'ingénierie, etc. Chacun de ces rôles apporte une perspective unique et des compétences essentielles au processus de développement, garantissant la conception d'un produit efficace et efficient.
Chez Nexapp, l’écosystème d’experts est l’ensemble des membres qui gravitent à l’intérieur de l’organisation et qui outillent les clients à toutes les étapes du processus d’ingénierie. On parle de développeurs, team leads, designers, product owners, gestionnaires d’ingénierie et gestionnaires de produit.
L’auto-organisation met l'accent sur le fait que les membres de l'équipe sont les mieux placés pour déterminer comment le travail doit être réalisé. L'objectif d'une équipe auto-organisée est de rendre l’équipe plus flexible et réactive au changement, en plus de créer un environnement où chacun se sent motivé à contribuer de manière significative. L’équipe est maître de son plan, qui peut être changé à tout moment dans le but d’atteindre les objectifs. Cette approche améliore la qualité du travail et encourage l'initiative, la responsabilité et l’innovation.
Les meilleures architectures, spécifications et designs viennent des équipes auto-organisées.
La livraison continue est une méthode de développement logiciel visant à réduire les risques et le temps nécessaire pour mettre sur le marché des modifications logicielles. Elle implique une automatisation rigoureuse du processus de livraison logicielle, permettant des mises à jour régulières et fréquentes, donc un ajout constant de valeur. Cela permet aux équipes d'obtenir rapidement des commentaires et de réduire les coûts liés au déploiement de nouvelles fonctionnalités, de corrections de bogues et de mises à jour. En suivant cette approche, l’équipe de développement s'assure que leur produit est toujours prêt pour le déploiement.
Le mob programming (ou programmation en groupe) est une approche du développement logiciel dans laquelle toute l'équipe travaille sur la même chose, au même moment, dans le même espace et sur le même ordinateur. Cette approche étend le concept de programmation en binôme à l'ensemble de l'équipe, qui collabore en permanence sur un seul ordinateur pour fournir un seul élément de travail à la fois.
Lire notre article : Le pair et le mob programming au service de la sécurité psychologique
L’observabilité se réfère à la capacité de comprendre l'état interne d'un système en examinant simplement ses sorties, sans qu'il soit nécessaire d'y apporter des modifications supplémentaires. L'observabilité est essentielle pour contrôler les performances des applications, comprendre le comportement des utilisateurs, détecter et résoudre rapidement les problèmes.
En développement logiciel, "output" et "outcome" ont des significations distinctes qui ont un impact considérable sur le succès du produit. Le output fait référence aux produits tangibles tels que le code, les fonctionnalités ou les corrections de bogues, produits à la fin de chaque sprint. Le outcome fait plutôt référence à l'impact plus large sur l'activité ou les utilisateurs finaux, tels que l'amélioration de l'expérience utilisateur, l'optimisation de l'efficacité ou l'augmentation du trafic web. Le développement agile se concentre sur la création de valeur et l'alignement des résultats sur les objectifs du produit.
Le pair programming (ou programmation en binôme) signifie que deux personnes écrivent du code ensemble sur un ordinateur. C’est une méthode de travail très collaborative qui implique beaucoup de communication. Lorsqu'une paire de développeurs travaille ensemble sur une tâche, ils ne se contentent pas d'écrire du code : ils planifient et discutent également de leur travail. Ils clarifient leurs idées en cours de route, discutent des approches et trouvent de meilleures solutions.
Un product sprint est une approche innovante d'une réflexion stratégique visant à imaginer, prioriser et réduire les risques lors de la création ou l'amélioration d'un produit numérique. Le processus vise à aider les équipes à définir clairement les objectifs, à valider certaines hypothèses et à décider d'une feuille de route pour le produit incluant les orientations technologiques avant de commencer son développement. Le but du product sprint est de définir et s’aligner sur les outcomes pour trouver les outputs qui vont apporter le plus de valeur. Il est composé de 3 ateliers complémentaires d'une durée de trois heures. Bien qu’il existe une recette pour l’exercice, Nexapp se permet de l’adapter selon les besoins du client.
La découverte produit (ou Product discovery) est un processus de recherche destiné à comprendre les problèmes et les besoins des utilisateurs, afin de les transformer en un produit efficace qui résout leurs problèmes. Ce processus est dirigé par le Product Trio (un Lead développeur, un Lead designer, un Product Manager) et comprend le brainstorming, la recherche, les entretiens et la création de prototypes. L'objectif est de trouver les meilleures hypothèses à aller valider régulièrement avec le consommateur pour construire le bon produit, générant une réelle valeur pour l'entreprise et assurant la satisfaction des utilisateurs. Teresa Torres est une référence sur le sujet, avec son livre Continuous Discovery Habits.
Le Product Mindset dans le développement de logiciels fait référence à une approche où l'équipe de développement, l’équipe de stratégie et l’équipe design se concentrent non seulement sur les aspects techniques, mais s'alignent avec les objectifs d’affaires et les besoins des utilisateurs. Cela va au-delà de la livraison d'un logiciel fonctionnel, pour fournir une réelle valeur et ainsi atteindre les résultats souhaités. Cette mentalité met l'accent sur l'expérience utilisateur, l'amélioration continue et la compréhension des besoins du marché et de l'entreprise. C’est de faire les plus petites expérimentations possibles pour valider que nous sommes dans la bonne direction.
Le refactoring (ou la refonte) est le processus d'amélioration du code sans ajouter de nouvelles fonctionnalités. Cela implique de restructurer et d'optimiser le code existant pour améliorer sa lisibilité, réduire la complexité et faciliter sa maintenance tout en préservant les fonctionnalités. Cette pratique est en accord avec le principe agile d'amélioration continue et permet de garder votre logiciel en bon état.
Lire notre article : Lisibilité des test, DSL et refactoring
Le RevOps (revenue et opérations) est une approche de collaboration qui regroupe les objectifs opérationnels du marketing, des ventes et de la relation client en un seul département, pour atteindre les objectifs d’affaires de l’entreprise. Pour Nexapp, l’approche RevOps permet de briser les silos, s’aligner sur une vision commune et communiquer un message cohérent tant à l’interne qu’à l’externe.
L’utilisateur est le client final du produit numérique. Un stakeholder est une partie prenante, une personne qui est impliquée de près ou de loin dans un projet ou dont les intérêts pourraient être affectés (positivement ou négativement) en raison de l'exécution ou de l'achèvement du projet. Les stakeholders peuvent être internes (par exemple le Product Owner ou le comité de direction), ou externes (par exemple les investisseurs).
Il est facile de confondre l’utilisateur et le stakeholder lors du développement d'un produit, mais il est important de faire une distinction claire entre les deux pour s'assurer que le produit répond réellement aux besoins.
Le Test driven development (développement piloté par les tests) est une méthodologie de développement logiciel qui met l'accent sur l'écriture des tests avant de développer le code fonctionnel. Le processus commence par la création d'un test simple pour une petite fonctionnalité. Initialement, ce test échouera, car la fonction qu'il teste n'existe pas. La prochaine étape consiste à développer le code minimal nécessaire pour réussir le test. Une fois le test réussi, les développeurs peuvent refactoriser le code, en étant confiants que toute rupture de fonctionnalité sera détectée par le test. Ce cycle se poursuit avec les tests suivants et les fonctionnalités correspondantes. Le TDD permet d'obtenir un code robuste et bien testé, soutenant les principes de simplicité, de clarté et de retour d'information rapide.