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.
Nombreux sont ceux qui se sont reconnus lorsque j'ai tenté d'établir une (modeste) nomenclature des types de développeurs. L'exercice était amusant, et d'ailleurs, je vais le reproduire aujourd'hui avec les clients.
Quels sont les buts fondamentaux de tout être humain ? D'après les enseignements bouddhistes, nous désirons le bonheur et craignons la souffrance. Cela me parait un point de départ relativement consensuel. Quel devrait être le but de toute structure sociale ? Le bon sens me souffle qu'il devrait être de permettre au plus grand nombre d'atteindre le plus haut niveau de bonheur possible, et de réduire au maximum la quantité de malheur ((Tout ceci est discutable, mais ce n'est pas le sujet de l'article.)). Quel devrait être le but fondamental de tout freelance travaillant pour ses clients ? J'ai encore une fois envie de répondre : les satisfaire au mieux, et leur éviter le malheur.
Everybody works from multiple devices nowadays. I do. And if you are like me, you want your data to be synchronized between your desktop, laptop, smartphone, tablet, and so on.
Let's take emails, for example. When I read an email on my laptop, it should automatically be marked as such on my desktop. When I send a message from my smartphone, I want it to appear in the "sent" directory of my laptop's mail reader. You get the point.
The thing is I use several email addresses. One for work, one for personnal stuff, one for every site that I manage, and so on. It makes synchronization much more difficult. And I want to read and send all my emails from a desktop client.
Par exemple, il m'arrive fréquemment, quand je facture un client, de devoir
inclure dans la facture des remboursements de frais. Et à chaque fois, je peste
car j'ai totalement oublié la bonne façon de faire.
Pour les neuneus en compta comme moi, voici donc la méthode facile et logique
pour émettre une facture qui intègre des remboursement de frais.
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.
Hier, réunion chez un client pour lancer la phase de recette. Au menu, formation au bugtracker. Le soir même, alors que nous devisions politique avec ma douce et tendre, l'évidence me sauta aux yeux. Mais oui ! Que n'y avais-je pensé plus tôt ?! Je tenais la solution à tous les problèmes nationaux !
Et si je vous disais que la lecture d'un seul billet sur le Web pouvait vous faire gagner des milliers, voire dizaines de milliers d'euros ?
« Diantre, me répondriez-vous ! Une affirmation aussi péremptoire ne pourrait que relever de la réclame la plus sordide ! Un tel billet constituerait à coup sûr un abject prostitulien, indigne de l'urbanité qui règne habituellement en ces lieux ! »
Et pourtant ! pourtant ! je n'aime que toi Je ne peux peut-être pas vous faire gagner de telles sommes, en revanche je peux sûrement vous aider à ne pas les perdre !
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é.
Imaginez un combat homérique entre les forces du bien et du mal, luttant pour la domination du monde. Dans le camp des forces du mal : la procrastination, Internet Explorer et les cycles en V ; dans le camp des forces du bien : Python, le café et les tests automatisés.
Tout le monde aujourd'hui est d'accord pour dire qu'écrire des tests est probablement la tâche la plus efficace quand il s'agit de garantir un code robuste et maintenable. (Enfin, presque tout le monde ; ceux qui dénigrent les tests sont en général ceux qui sont trop flemmards pour en écrire.)
À ce titre, Django se montre exemplaire, et la documentation relative aux tests est aussi complète que détaillée. Seulement voilà, quiconque a déjà travaillé sur un projet Django pendant plus de quelques semaines sait que de nombreuses questions sont laissées de côté. Et notre développeur / testeur est réduit à parcourir les bas-fonds du web pour trouver réponse à ses questions.
Comment écrire une suite de tests maintenable ?
Comment tester des fonctionnalités qui utilisent javascript intensément ?
Comment tester des fonctionnalités qui font appel à des web services et sont fortement couplés ?
Comment être certain que les tests qui tournent sur ma machine fonctionneront aussi sur la prod ?
Sans plus tarder, voici quelques réponses à ces questions.
Le billet qui suit est une nouvelle Polargeek et
s'étend sur 7300 mots ; son temps de lecture est estimé aux alentours de 20 à
30 minutes. Vous pouvez aussi la télécharger aux formats
pdf,
epub et
mobi. Bonne
lecture.
Dés qu'elle est entrée dans mon bureau, j'ai su que l'affaire ne sentait pas bon. On ne fait pas carrière dans ma branche si on ne développe pas un solide sixième sens pour flairer les problèmes. Et manifestement, mon embrouillomètre me criait que je ferais mieux de me planquer sous mon bureau la tête cachée dans une des poches de mon imper.