Mieux coder

"Pas seulement des logiciels opérationnels, mais aussi des logiciels bien conçus." Manifeste Software Craftsmanship

Un logiciel est une modélisation de la réalité, non une fin en soi

La création d’une dette technique

Concevoir un logiciel de manière à accepter les changements avec un coût et des impacts réduits est un réel challenge. Pourtant la compréhension des besoins utilisateurs évolue au fur et à mesure des expériences et du temps. Si on n’y prend garde le code en pâtira tôt ou tard, c’est ce qu’on appelle la dette technique.

Nous pensons qu’en mettant au centre de vos préoccupations quotidiennes une communication efficace et de l’amélioration continue il est possible d’obtenir de bons résultats.

Communiquer efficacement

Il est important qu’une équipe comprenne le besoin final de la solution qu’elle développe afin de pouvoir faire les meilleurs choix au quotidien.
Un exemple parlant est le nommage au sein du code : il est fréquent de voir une méthode nommée Cart::substrCoup() être le centre d’incompréhension dans une discussion entre un « développeur » et un « manager », alors qu’un nommage dans les termes du métier tel que Cart::applyDiscountCoupon()
faciliterait la discussion.

De plus, il est fréquent de voir des équipes où les compétences sont individualisées. Le risque est d’en arriver à une situation où par exemple un nouvel arrivant doive optimiser un site que seule la personne qu’il remplace connaissait !

Pistes de solutions : des pratiques telles que le standup meeting, le pair programming, la revue de code, les sprints en équipe peuvent considérablement aider.

L’amélioration continue

L’amélioration vise à réduire toutes les tâches qui ne consistent pas à construire quelque chose de nouveau et qui apportent de la valeur. Nous pensons que certaines choses ont parfois intérêt à être automatisées.

Il y a énormément d’outils disponibles ! Le vrai challenge est d’être à l’écoute des problèmes rencontrés, et de mettre en place des outils adaptés avec parcimonie en s’assurant qu’ils sont compris de tous et utilisés avant d’en insérer de nouveaux. C’est ce que nous appelons l’amélioration continue.

Quelques questions pour faire le point :

  • Combien de temps vous ou votre équipe passe-t-elle à déployer une nouvelle version de l’application en production ?
  • La documentation de la procédure de mise en production est-elle à jour ? Toute l’équipe est-elle capable de la suivre ?
  • Combien de temps la validation des non-régressions prend-elle ?
  • Savez-vous dire rapidement et efficacement à quel besoin répond cette méthode process() ajoutée il y a 2 ans ? La documentation de celle-ci est-elle à jour ?
  • Comment un développeur frontend teste-t-il une modification de style ou de code Javascript pour s’assurer que cela fonctionne sous tous les navigateurs que vous supportez ?
  • À quand remonte le dernier problème lié à un humain (oubli, inattention) ? lié à un outil ?
  • Combien de temps est-ce que cela prend à un développeur de changer d’environnement pour corriger et déployer une ligne de code sur un autre projet, puis de reprendre son travail où il l’a laissé ?
  • Combien d’interruptions de ce type un membre de votre équipe doit effectuer chaque semaine ?

Pistes de solutions : (A)TDD, Git, Jenkins, Capistrano, Vagrant, Docker, Grunt, Gulp, Browserstack, Composer, npm, PHPUnit, Mocha, CasperJS, editorconfig, un Wiki …

Discutons-en

Toutes nos formations

Voir aussi : Conception d’un produit agile et Expert CakePHP

Louez un développeur

Un membre de notre équipe vient une journée par semaine au sein de votre équipe pour faire ce que vous souhaitez !

Nous vous proposons d’apporter à votre équipe notre retour d’expérience en toute humilité (et non la théorie seule). Si nous pouvons vous aider à avancer, vous nous aurez fait progresser !

Ça m’intéresse !

La plupart de ces constats, analyses, pratiques et cette philosophie ne sont pas nouveaux. Nous croyons beaucoup en l’Extrême Programming et y avons vu depuis plusieurs années des solutions à nos problèmes fréquents.

Voici quelques idées d’interventions :

  • revue de code, expertise,
  • pair programming,
  • facilitation d’une rétrospective,
  • initiations et échanges autour de pratiques de développement : TDD, Clean Code, Refactoring…
  • aide à la mise en place et utilisation de Git,
  • mise en place de tests fonctionnels avec CasperJs, de tests unitaires PHPUnit,
  • ajout d’un outil de build pour vos développements frontend (Gulp, Grunt),
  • facilitation d’un code retreat,
  • injection de bonnes pratiques Javascript dans une application NodeJS,
  • … discutons de la moindre de vos idées, nous verrons qui chez nous est le plus apte à vous aider si nous le pouvons !

Louez un Occitech-ien

  • Nous avons passé une bonne journée et demie chez OCCITECH afin de monter en compétences dans la qualité logicielle. L’accueil était top et l’ambiance décontractée. Malgré son expertise, Pierre a fait preuve d’une écoute remarquable et d’une saine humilité qui ont favorisé l’échange entre les participants. Etienne sait soigner les « petits détails » qui font la différence. On ne s’étonne pas que OCCITECH soit la référence CakePHP en France! ;-) On se réjouit de collaborer à nouveau avec vous!