La difficulté de communication entre les informaticiens et les non informaticiens est un constat de fait qui a toujours existé. Il s’est même accentué au fur et à mesure que les technologies venaient enrichir l’existant (Web, Virtualisation, Cloud, Docker, API, intégration continue, etc.) rendant ainsi le paysage encore plus complexe sur certains aspects tout en démocratisant certaines pratiques (moteur de recherche, mail, site Web, dépôt de fichiers, outils distanciels, etc.) connues par la plupart des personnes.
Même entre informaticiens la connaissance de l’univers d’un métier par rapport à un autre n’est pas toujours maîtrisée malgré l’approche DevOps qui tend à resserrer la culture et les outils entre les administrateurs/exploitants systèmes (OPS) et les développeurs (DEV). Il est donc assez logique que les non informaticiens se trouvent éloignés du monde des développeurs.
Cette formation Dialoguer avec les développeurs cherche à vous faire comprendre en quoi consiste le métier d’un développeur logiciel au quotidien, les choix techniques qu’il a à faire ou qu’on lui impose, les outils et langages qu’il utilise au quotidien, les alternatives possibles, et en parallèle de ces explications le vocabulaire associé utilisé par les développeurs. Il ne s’agit donc pas de vous apprendre à développer mais d’évoluer avec aisance dans cet univers quel que soit la nature du projet et des sigles rencontrés (API, production, recette, Jenkins, GitLab, Docker, Kubernetes, Micro Services, WebHook, intégration, frontend, backend, FTP, Java, .Net, PHP, React, etc.).
De la conception à l’implémentation
Cahier des charges et gestion des exigences (Feature, Requirement, Stakeholder requirement)
Comprendre les cas d’utilisation
Notion de workflow
Approches waterfall vs. Agile / RUP / XP
Les tests et l’intégration continue
Comment se traduisent les principes agile pour le développeur ?
Environnement cible et LTS
Maintenance applicative / corrective / évolutive
La sécurité : comprendre les principaux risques et enjeux.Atelier dirigéObjectif : comprendre l‘expression du besoin et les étapes vers son implémentation
Description : présentation d’un mini-projet, description de ses exigences et de leur traduction en cas d’utilisation. Comment le développeur priorise ses actions et définit des stratégies de cycles de développement ?Vocabulaire de base en programmation
Programme compilé vs. interprété – machine virtuelle
Principes de nommage et d’espace de noms
Ubiquitous Language : le métier au cœur du code (DDD)
Pourquoi typer les variables ?
Principes d’une fonction en programmation : DRY et factorisation de code
Regrouper des fonctions dans les bibliothèques (librairie)
Écrire ou utiliser des algorithmes existants ?
Principes de la programmation objet : initiation à la modélisation UML
Les éditeurs et environnements de développement (IDE)
Les outils de débuggage : points d’arrêt et exécution pas à pas.
Les bibliothèques et frameworks : apports et risques pour le développeur
Quelques exemples (.Net/C#, Symfony/PHP, Spring/Java, etc.)
Tests unitaires et Tests fonctionnels : principes de base.Atelier dirigéObjectif : Prendre en main un premier environnement de développement. Comprendre que la programmation consiste à développer des aspects métiers tout en s’appuyant sur des bibliothèques existantes. Sensibilisation aux atomes de base de la programmation (variables, fonctions, types, bibliothèques, …)
Description : On prend en main l’environnement Visual Studio Code pour charger et exécuter un premier programme qui mélange des fonctions existantes (bibliothèques) et une fonction simple écrite par nous-mêmes. On est également sensibilisés au vocabulaire objet de base (classe, instance) et aux problèmes de type de données que l’on cherche à débugger en se mettant « dans la peau » d’un développeur (erreur de type générant des erreurs de calcul par exemple).Les données dans le développement logiciel
Données binaires vs. texte
Différentes sources et format de données (fichier texte, CSV, XML, JSON, …)
Notion de parseur
Philosophie des bases SQL
Exemples de requêtes SQL (simples, jointure, etc.)
Les sécurités pour la cohérence des données (contraintes d’intégrité)
Notion de transaction
Les standards du marché (Oracle, MySQL, PostgreSQL, SQL Server, …)
Les extensions spatiales pour les SIG
Rupture de paradigme proposé par les bases NoSQL
Spécificités du Big Data pour les développeurs
Business Intelligence et outils associés (Talend, Power BI, …)
Structures de données proposées aux développeurs pour « accéder » aux données
Comment un programme accède aux différents formats de données
Traitements asynchrones : cohérence à terme et files d’attenteAtelier dirigéObjectif : Comprendre l’intérêt et les limites des bases SQL
Description : On fait évoluer le schéma d’une base de données et son contenu pour comprendre ce qui est bloquant pour le développeur, complexe ou « simple » à gérer. Exemple de problèmes liés à un mauvais jeu de caractères dans une baseLes outils du développeur
Sources et exécutables
Gérer les différentes versions d’un logiciel avec Git
Principes de Docker
Regrouper les briques d’une application (packages et build)
Livrer une application : exécutable, interprétable et image Docker
Dépôts de fichiers (sftp, DropBox, etc.)
Principes de l’intégration continue (Jenkins, GitLab)
Fournir des informations à d’autres applications en temps réel (API et Webhooks)
Suivre la bonne santé d’une application sur slackAtelier dirigéObjectif : Comprendre le cycle de vie d’une application (développement, intégration, mise à jour, etc.) déployée en continu
Description : On propose de déployer entièrement une application Web simple (du développement des sources à leur dépôt sur le site WEB tout en automatisant le processus avec le serveur d’intégration continue Gitlab)Les bases du développement web et mobile
Les atomes de base : HTML et CSS
En quoi consiste l’intégration d’un site WEB ?
Ce qu’apporte Javascript
Un point de vocabulaire (application Web, site Web, SPA, PWA, portail, etc.)
Quelques éléments techniques autour d’un site WEB (@IP, domaines et sous domaines DNS)
Fonctionnement d’un échange entre navigateur et serveur Web (http, https)
Format d’une URL pour accéder à une page WEB
Problématiques des redirections
Le développement côté serveur : l’exemple de PHP
Synthèse avec une page WEB simple proposant de saisir un formulaire
Vocabulaire et spécificité du développement mobile
Principes du responsive design
Apports de framework comme Bootstrap
Les frameworks et bibliothèques mobiles (React Native, Ionic, …)
Quelles applications utilisent les langages natifs (Swift pour iOS et Java/Kotlin pour Android)Atelier dirigéObjectif : Comprendre le fonctionnement global du chargement d’une page WEB
Description : Exploration et mise en route d’un serveur de développement ; comprendre le format général des URL pour accéder à une page WEB. Explorer une base SQLite simple avec une seule table et analyser un programme PHP qui extrait les données de cette table afin de générer une page HTML affichée depuis notre navigateur (enrichie par des style CSS et de la programmation Javascript pour bien positionner chaque technologie). Utilisation des outils de prévisualisation adaptatifs.Vocabulaire et architecture des applications
La partie front end d’une application Web (HTML, CSS, Javascript)
La partie serveur (back end)
Comment gérer l’ouverture fonctionnelle de son application ?
Philosophie des architectures orientées service (SOA) et ressources (ROA)
Principes d’une API (Application Programming Interface)
En quoi consiste le développement d’un Web Service ?
Les bases de la haute disponibilité (nœud, cluster)
Faire évoluer son application face à la charge (scalabilité : découvrir les outils et les axes d’optimisation)
Quels sont les éléments à la charge du développeur ?
Et ce qui concerne l’administrateur ?
Les services Cloud offerts aux développeurs (stockage, calcul, conteneurs, intégration continue, sécurité, …)Atelier dirigéObjectif : Maîtriser le vocabulaire de base autour des architectures»
Description : Sur la base d’une application simple qui découpe clairement les parties frontend, backend, base de données, et API, on explique en quoi consiste l’intégration d’une application Web puis les différents phases du développement jusqu’à la livraison de l’application. Nous faisons évoluer celle-ci en simulant des demandes clients que l’on vous demande de cibler en termes d’impact dans le code du développeur tout en pondérant votre avis d’un coût (compliqué/simple ?). Nous vous invitons également à réfléchir sur la qualité de l’architecture proposée (est-elle évolutive ? l’application est-elle ouverte aux autres (API) ? etc.)