Glossaire
En programmation, il y a énormément de choses à apprendre, mais également énormément de termes à assimiler et ce n’est pas toujours facile de les comprendre.
J’ai donc eu l’idée de recenser la plupart des termes techniques que nous, développeurs, nous utilisons régulièrement et que vous devez connaître.
Et le glossaire du développeur est donc né !
Je mets donc à jour régulièrement la page pour que vous ayez le maximum de termes en votre possession.
Alors, n’hésitez pas à me soumettre des termes que vous voulez que j’ajoute dans cette page et que je vous explique.
Jargon de développeur
- Backend : Partie non visible d’une application d’un point de vue utilisateur (il n’y a pas d’interface utilisateur). Techniquement, c’est du code exécuté côté serveur. Dans une architecture MVC, c’est bien souvent le controller qui réalise cela. Dans une architecture plus complexe, cela peut être une API.
- Frontend : Partie visible d’une application d’un point de vue utilisateur. C’est du code exécuté et interprété côté client par exemple un menu, un bouton, un formulaire, un lien, etc.
- Fullstack : Titre catégorisant un développeur comme étant capable de faire du Frontend comme du Backend : Mais c’est bien plus que cela. Un développeur Fullstack est un couteau suisse capable de réaliser énormément de choses sur une application. Il est capable de faire un projet de A à Z et d’être multicasquette.
- IDE : Integrated Development Environment ou environnement de développement intégré est un logiciel regroupant un ensemble de logiciels de programmation utile à un type de projet au sein d’une même interface.
- Framework : Ils y en existent dans la plupart des langages de programmation et on les considère comme une boîte à outils. C’est un ensemble cohérent composant éprouvés et réutilisable combiné un vaste ensemble de méthode et de bonnes pratiques de développement de manière générale et du langage de programmation sur lequel il se base.
- Multithread : Le multithread permet d’effectuer plusieurs threads simultanément. Il n’y a pas énormément de langage de programmation web qui permet de faire cela à ma connaissance. Node.js permet de le faire par exemple.
- Monothread : Le monothread permet d’exécuter un seul thread uniquement. C’est ce que font la plupart des langages de programmation web. Le code s’exécute de manière linéaire et non en parallèle. Il est cependant possible de contourner d’une certaine façon avec la méthode asynchrone.
- Structure de données : C’est un format de données destiné à organiser, traiter, extraire et stocker des données. Un tableau ou un objet est une structure de données.
- Test End-to-End : Les tests “End to end” permettent de définir des tests avec des scénarios complets et complexes basés sur le flux d’utilisation d’une application.
- Clean Code : La meilleure bonne pratique que tous les développeurs se doivent de connaître et de mettre en application. Un condensé des meilleurs techniques pour écrire du code plus propre, plus lisible et plus maintenable
- UI : User Interface ou interface utilisateur en français. C’est le principe de concevoir des interfaces graphiques qui seront utilisées par des utilisateurs. Le but est de penser ses interfaces pour que l’utilisateur soit en confiance et qu’il arrive à son but (faire une action ou rechercher une information). L’UI est très souvent assimilé à l’UX.
- UX : User Experience ou expérience utilisateur en français. L’UX va englober et valider l’UI. Il doit notamment permettre à un utilisateur de trouver facilement ce qu’il recherche, faire en sorte que le design donne envie et confiance ou encore le rendre crédible.
- Stack: Une stack technique c’est tout simplement une liste de tous les outils technologiques utilisés pour développer et faire fonctionner une application. Cela va comprendre l’environnement où tourne l’application mais également les services utilisées, moteurs de base de données, langage de programmation, etc.
Concepts de programmation
- Architecture hexagonale : C’est selon moi la MEILLEURE architecture d’application backend qui existe. A des années lumières en terme d’avantages et d’efficacité de l’architecture MVC, c’est l’apogée pour les développeurs. Ne s’adresse pas directement au débutant car il faut connaître pas mal de concepts de programmation avancés tel que la POO, le DDD et le TDD
- Domain Driven Design (DDD): la conception pilotée par le domaine (et donc par le métier). Très utilisée avec l’architecture hexagonale, ce concept remets au centre de votre projet et donc de votre programmation le code métier de votre application. Grâce à ce concept et à l’architecture hexagonale, vous avez la méthode qui permet d’isoler le code d’infrastructure (ce qui vous sert à faire tourner votre application) et le code métier (celui qui contient toute votre logique métier qui rend votre développement sur mesure unique)
- Asynchrone : Principe d’exécuter du code ou un traitement dans le traitement principal sans bloquer l’exécution complète du code. Dans le web, le mécanisme le plus ancien pour réaliser cela c’est l’Ajax.
- Synchrone : Principe d’exécuter du code ou des instructions les unes à la suite des autres. Si un traitement prend plus de temps que prévu, cela bloque le reste de l’exécution du script.
- Récursivité : En programmation, c’est le principe d’avoir du code qui fait référence à lui-même. La manière la plus simple pour comprendre c’est de définir une fonction qui fait appel à elle-même.
- API : Application Programming Interface sont des interfaces utilisées par des programmes pour interagir sur des applications. Les interfaces sont donc utilisées par des machines et non pas par des humains (ne pas confondre avec les Users Interface).
- MVC : Modèle-Vue-controller est un design pattern principalement utilisé dans la programmation web. Le principe est de notamment séparer l’affichage des informations (la vue), les actions de l’utilisateur (le controller) et l’accès aux données (le modèle).
- Microservice : Architecture applicative visant à décomposer une application en une multitude de petits services indépendants des uns des autres. Le but est de rendre chaque partie d’une application indépendante des unes des autres afin de les rendre plus maintenables et évolutives dans le temps.
- Middleware : C’est un logiciel ou une application qui permet fournis des services et des fonctionnalités d’effectuer un échange d’informations entre plusieurs autres applications. Dans la programmation web, on pourrait le qualifier comme l’ancêtre de l’API sur son principe.
- Design pattern : Patron de conception en français est un concept qui vise à répondre à un problème précis et courant rencontré par de nombreux développeurs. Il existe plusieurs types de design pattern comme les architecturales ou les conceptions. Le MVC est de type architectural par exemple et le Observer est de type de conception.
- DTO : Data Transfer Object ou objet de transfert de données en français est un concept de programmation visant à standardiser une information sous forme d’objet au sein d’une application. Le but est d’uniformiser l’information qui circule afin de garantir l’intégrité de la donnée et de n’avoir qu’une seule et unique version d’une structure de données à maintenir.
- Webhooks: Moyen innovant en programmation web pour notifier à des applications externes qu’un changement ou qu’une évolution de vos données a été réalisée au sein de votre propre application. Les Webhooks ne remplace pas une API. C’est un moyen complémentaire à une API pour récupérer et être au courant des nouvelles données.
Méthodes de programmation
- Test Driven Development (TDD): Méthode redoutablement efficace pour écrire du code simple PAR l’écriture des tests. C’est une méthode qui peut être complexe à appliquer au quotidien au début de sa pratique. En général, on apprend d’abord à produire du code puis à le tester (ou pas) et pas l’inverse. Le gros avantage c’est que vous êtes contraint d’écrire vos tests unitaires mais surtout vous écrivez le code minimum pour répondre aux tests.
Tests
- Test unitaire : Principe de tester de manière individuelle des parties de codes d’une application afin de vérifier leur bon fonctionnement dans le temps. On vérifie généralement des cas précis pour chaque fonction.
- Test de propriétés : Très complémentaire aux tests unitaires, il permet de tester de manière aléatoire et manière intensive les propriétés d’une fonction qui représente une partie de code. Ce sont des tests à l’origine faits pour la programmation fonctionnelle.
Paradigmes
- Programmation procédurale : Paradigme en programmation qui se base sur le concept d’appel procédural. Le principe est de découper son programme sous forme de fonctions ou procédures afin de les utiliser partout dans un programme. Les données sont donc facilement accessibles et modifiables.
- Programmation Orientée Objet (POO) : Paradigme en programmation qui se base sur le concept de découper une application en entité appelée objet.Les données ne sont donc pas accessibles et modifiables facilement.
- Programmation fonctionnelle : Paradigme en programmation qui se base sur le principe de décomposer un problème par un emboîtement de fonctions qui agissent comme une boîte noire. Le but étant de ne plus avoir d’effet de bord dans une application.
- Programmation réactive : Paradigme de programmation basé sur le principe de flux de données. Le but étant de pouvoir suivre l’évolution d’une donnée dans le temps et de le propager à tous ceux qui la suivent. C’est un jeu d’observable et de souscripteur.
Git
- Repository : Dépôt de code dans le but d’être versionner sous Git
- Commit : C’est le principe de sauvegarder un travail à un instant T dans le processus et le fonctionnement de Git.
- Fork : Principe de cloner un repository sous son nom sur Github.com
- PR ( Pull Request) : Une pull request est une action qui consiste à demander à un dépôt distant de prendre en compte des modifications que vous avez effectuées sur les branches principales.
- Git Flow : Workflow Git très répandu pour structurer un dépôt dans le but d’améliorer la collaboration entre développeurs.
- Github : Plateforme en ligne populaire basée sur le protocole Git et qui permet d’héberger des dépôts à distance
Gestion de package
- NPM : le célèbre gestionnaire de paquet et de dépendance de Node.js
- Yarn : Fonctionne globalement comme NPM (il est basé dessus) mis à part qu’il est plus rapide pour installer les dépendances et surtout des dépendances figées.
- Composer : le célèbre gestionnaire de dépendance pour PHP
Méthode Agile
- Sprint : C’est un intervalle de temps défini (souvent 15 jours ou 1 mois) où les développeurs vont réaliser des fonctionnalités définies au préalable en User Stories.
- User Story : Ce sont les fonctionnalités décrites par les utilisateurs (le client demandeur du projet). Il explique en bon français ce qu’ils voudraient pouvoir faire dans l’application.
- Epic : Une Epic permet de centraliser des User Stories par thématique applicative. Ce sont des grosses briques au sein de votre application. L’avantage c’est qu’elle vous permet visuellement de jauger le pourcentage de réalisation de chaque partie d’une application.
- Backlog : Il contient toutes les User Stories non estimé et non placé dans des sprints. Ce sont les fonctionnalités en attente d’arbitrage.
- Points d’effort : C’est l’unité de mesure de la méthode agile pour les User Stories