86 lines
3.9 KiB
TeX
86 lines
3.9 KiB
TeX
\part{Environnement et méthodes de travail}
|
|
|
|
\begin{quote}
|
|
Make it work, make it right, make it fast
|
|
|
|
--- Kent Beck
|
|
\end{quote}
|
|
|
|
En fonction de vos connaissances et compétences, la création d'une
|
|
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 lorsqu'une nouvelle demande sera introduite,
|
|
lorsqu'un bug sera découvert et devra être corrigé ou lorsqu'une
|
|
dépendance cessera de fonctionner ou d'être disponible. Or, une
|
|
application qui n'évolue pas, meurt. Tout application est donc destinée,
|
|
soit à être modifiée, corrigée et suivie, soit à déperrir et à être
|
|
délaissée par ses utilisateurs. Et c'est juste cette maintenance qui est
|
|
difficile.
|
|
|
|
L'application 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'au « \textbf{You Ain't Gonna Need It} » (ou \textbf{YAGNI\index{YAGNI}}), qui
|
|
consiste à surcharger tout développement avec des fonctionnalités non
|
|
demandées, juste « au cas ou ». Pour paraphraser une partie de
|
|
l'introduction du livre \emph{Clean Architecture}
|
|
\cite{clean_architecture}:
|
|
|
|
\begin{quote}
|
|
Getting software right is hard: it takes knowledge and skills that most
|
|
young programmers don't take the time to develop. It requires a level of
|
|
discipline and dedication that most programmers never dreamed they'd
|
|
need. Mostly, it takes a passion for the craft and the desire to be a
|
|
professional.
|
|
|
|
--- Robert C. Martin Clean Architecture
|
|
\end{quote}
|
|
|
|
Le développement d'un logiciel nécessite une rigueur d'exécution et des
|
|
connaissances précises dans des domaines extrêmement variés. Il
|
|
nécessite également des intentions, des (bonnes) décisions et énormément
|
|
d'attention. Indépendamment de l'architecture que vous aurez choisie,
|
|
des technologies que vous aurez patiemment évaluées et mises en place,
|
|
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 (ou
|
|
plutôt, les "\textbf{garde-vous}"), 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
|
|
fiabiliser ainsi chaque étape de communication.
|
|
|
|
Dans cette partie-ci, nous parlerons de \textbf{méthodes de travail},
|
|
avec comme objectif d'éviter que l'application 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 rendue la plus automatisée/automatisable
|
|
possible. Dans son plus simple élément, une application pourrait être
|
|
mise à jour simplement en envoyant son code sur un dépôt centralisé: ce
|
|
déclencheur doit démarrer une chaîne de vérification
|
|
d'utilisabilité/fonctionnalités/débuggabilité/sécurité, pour
|
|
immédiatement la mettre à disposition de nouveaux utilisateurs si toute
|
|
la chaîne indique que tout est OK. D'autres mécanismes fonctionnent
|
|
également, mais au plus les actions nécessitent d'actions humaines,
|
|
voire d'intervenants humains, au plus la probabilité qu'un problème
|
|
survienne est grande.
|
|
|
|
Dans une version plus manuelle, cela pourrait se résumer à ces trois
|
|
étapes (la dernière étant formellement facultative):
|
|
|
|
\begin{enumerate}
|
|
\def\labelenumi{\arabic{enumi}.}
|
|
\item
|
|
Démarrer un script,
|
|
\item
|
|
Prévoir un rollback si cela plante (et si cela a planté, préparer un
|
|
post-mortem de l'incident pour qu'il ne se produise plus)
|
|
\item
|
|
Se préparer une tisane en regardant nos flux RSS (pour peu que cette
|
|
technologie existe encore\ldots\hspace{0pt}).
|
|
\end{enumerate}
|
|
|