L'industrie du développement logiciel adopte de plus en plus massivement les méthodes agiles, avec raison. Et pour cause, l'agilité apporte des solutions pertinentes aux problèmes posés par la gestion de projet old school.
Il va sans doute devenir de plus en plus facile de convaincre votre patron de lorgner du côté des méthodes agiles. Par contre, du côté des clients, c'est une autre paire de manches. En tant que développeur web freelance (Oui, je travaille mon seo), j'ai souvent l'occasion d'être en contact avec des clients potentiels dont le domaine d'activité n'a rien à voir avec le développement. Par conséquent, l'agilité est un concept complètement nouveau pour eux.
Construire ou faire construire des logiciels reste encore aujourd'hui une
entreprise hasardeuse. D'autant plus lorsqu'on utilise des méthodes de travail
qui ne sont pas adaptées.
Il y a quelques jours, alors que je bossais sur mon pet project du moment, je
me suis surpris à penser « tiens, ça serait bien si cette fonctionnalité
devenait une application Django réutilisable ». La fonctionnalité en
question ne nécessitant pas plus de quelques lignes, je me suis dit que ce
serait rapidement torché.
Le fait que je me retrouve 10 jours plus tard et deux applications
supplémentaires me prouve encore une fois que je suis vraiment mauvais avec les
estimations. Et on s'étonne que je ne travaille pas au forfait …
Quoi qu'il en soit, pour la dernière app, j'ai décidé de tester l'approche
Documentation Driven Development. Retours d'expérience.
Ces quelques années m'ont amené à considérer certaines façons de faire plutôt
que d'autre, et à compiler une liste de bonnes pratiques qui me paraissent
positives dans la majorité des cas.
Ces bonnes pratiques ont différents objectifs, qui finissent plus ou moins par
se rejoindre :
« Bonjour à toutes et à tous ! Ce mardi 8 octobre, l'actualité du jour, c'est bien évidemment l'ouverture de la chasse. De bon matin, tous les recruteurs de la région se sont réunis pour chasser ingénieurs et techniciens qui constitueront les futurs cheptels des départements informatiques de leurs entreprises. Découvrez notre reportage, Martha Coustique et Jean-Pierre Bière. »
L'obsolescence des compétences est l'un des dangers qui guettent le vaillant
travailleur du Web. Notre domaine d'activité évolue tellement vite, tant au
niveau des outils, des méthodes, des pratiques, des technologies… que rester à
la page est un défi permanent.
Si, fraîchement émoulu de son école, notre jeune Webie·ne se lancera à corps
perdu dans l'apprentissage du x-ième framework Javascript avec un enthousiasme
toujours renouvelé, le senior finira peut-être par ressentir ennui et lassitude
face à la répétitivité de la chose.
Comment prendre de la distance avec sa veille techno sans pour autant se
laisser distancer par le Web ?
Bien que Django constitue un outil de travail de fort bonne facture, je tombe de plus en plus souvent sur des projets avec des besoins de CMS. Or, je veux bien être pragmatique, mais ça me fait un peu mal quand je me retrouve à conseiller à un client l'installation d'un Wordpress ou d'un Drupal, même si c'est l'outil le plus approprié sur le moment.
J'ai fini par fouiner pour voir s'il n'existait pas de bons CMS en Python. Les principaux proposés par la communauté sont Django-cms, FeinCMS et Mezzanine. Résolu à tester les trois, j'entrepris de les installer rapidement pour jouer un peu avec. Las, la documentation des deux premiers semble lacunaires, car dés les premières commandes, je fut confronté à des erreurs non référencées, et après plus d'une demi-heure passée sur Stackoverflow, je laissais tomber pour ne pas perdre trop de temps.
Finalement, j'ai fini par installer Mezzanine, sur recommandation de @n1k0, et il a bien voulu fonctionner docilement sans mettre ma patience à l'épreuve (Mezzanine, pas @n1k0). C'est donc ce projet que j'ai testé plus en profondeur.
L'indépendant sera toujours confronté, tôt ou tard, au mauvais payeur.
D'ailleurs, les forums sont remplis de sujets postés par des âmes en détresse
s'interrogeant sur la marche à suivre pour récupérer leur argent durement
gagné.
Du coup, on se retrouve souvent avec des docs pourries et donc des logiciels
difficiles / pénibles à utiliser.
Voyons donc comment documenter correctement une application Django (ou
n'importe quel projet Python, hein, c'est juste pour l'exemple concret et mon
référencement).