gwift-reborn/environment.asc

63 lines
4.7 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[[p01-environment]]
= Environnement et méthodes de travail
"Make it work, make it right, make it fast"
-- Ken Beck
En fonction de vos connaissances et compétences, la création dune nouvelle application est une étape relativement facile à mettre en place.
Le code qui permet de faire tourner cette application peut ne pas être élégant, voire buggé jusquà la moëlle, il pourra fonctionner et faire ”preuve de concept”.
Les problèmes arriveront lorsquune nouvelle fonctionnalité vous sera demandée, lorsquun bug sera découvert et devra être corrigé ou lorsquune dépendance cessera de fonctionner ou dêtre disponible.
Comme une application qui névolue pas finira inlassablement par mourir, toute application est destinée :
* Soit à être modifiée, corrigée et suivie
* Soit à déperrir et à être délaissée par ses utilisateurs.
Cest cette maintenance qui est difficile : selon certaines études académiques et industrielles cite:[django_for_startup_founders], 60 à 80% du coût associé à nimporte quelle ligne de code correspond à de la maintenance de la ligne initialement écrite.
Ceci est dû à des bogues, à des modifications de fonctionnalités, à des dépendances qui évoluent, qui ne sont plus maintenues ou qui doivent être remplacées.
Lapplication des principes présentés et agrégés ci-dessous permet surtout de préparer correctement tout ce qui pourra arriver, sans aller jusquà surcharger tout développement par des fonctionnalités non demandées, juste "au cas ou", aussi connu sous l'acronym *YAGNI* ou "_You ain't gonna need it_".
Pour paraphraser une partie de lintroduction du livre Clean Architecture cite:[clean_architecture]:
"Getting software right is hard : it takes knowledge and skills that most young programmers dont take the time to develop. It requires a level of discipline and dedication that most programmers never dreamed theyd need. Mostly, it takes a passion for the craft and the desire to be a professional."
-- Robert C. Martin
Le développement dun logiciel nécessite une rigueur dexécution et des connaissances précises dans des domaines extrêmement variés.
Il nécessite également des intentions, des prises de décisions et énormément dattention.
Indépendamment de larchitecture que vous aurez choisie et des technologies que vous aurez patiemment évaluées, une architecture et une solution peuvent être cassées en un instant, en même temps que tout ce que vous aurez construit, dès que vous en aurez détourné le regard.
Un des objectifs ici est de placer les barrières et les gardes-fous, afin de péréniser au maximum les acquis, stabiliser les bases de tous les environnements (du développement à la production) qui accueilliront notre application, et ainsi fiabiliser chaque étape de la communication.
Dans cette partie-ci, nous parlerons de méthodes de travail, avec comme objectif déviter que lapplication ne tourne que sur notre machine et que chaque déploiement
ne soit une plaie à gérer.
Chaque mise à jour doit être réalisable de la manière la plus simple possible, et chaque étape doit être le plus possible automatisée.
Dans son plus simple élément, la mise à disposition dune nouvelle version dune application
pourrait se résumer à ces trois étapes :
image::deploy-without-hassle.drawio.png[align="center"]
Dans une version plus automatisée, une application pourrait être mise à jour simplement en envoyant son code sur un dépôt centralisé : ce déclencheur a la responsabilité de démarrer une chaı̂ne de vérification dutilisabilité, de bon fonctionnement et de sécurité, pour immédiatement la mettre à disposition de nouveaux utilisateurs si chaque acteur de cette chaı̂ne indique que tout est OK.
image::basic-automation.drawio.png[align="center"]
Dautres mécanismes fonctionnent également, mais au plus les actions nécessitent d'étapes ou d'intervenants humains, au plus la probabilité quun problème survienne est grande, même dans le cas de processus de routine.
Sans aller jusquà demander de développer vos algorithmes sur douze pieds, la programmation reste un art régit par un ensemble de bonnes pratiques, par des règles à respecter et par la nécessité de travailler avec dautres personnes qui ont souvent une expérience, des compétences ou une approche différente.
include::book/environment/maintenability.adoc[]
include::book/environment/elements-of-architecture.adoc[]
include::book/environment/development-tools.adoc[]
include::book/environment/python.adoc[]
include::book/environment/gdpr.adoc[]
include::book/environment/new-project.adoc[]
include::book/environment/tests.adoc[]