Process
Notre solidité est basée sur plusieurs piliers : notre expertise technique, avec des équipes expérimentées qui maîtrisent leur sujet, mais aussi une large expertise méthodologique.
Nous sommes des passionnés d’innovation, et nous allions ce goût à une approche solide et pragmatique. Nous avons ainsi un haut niveau d’exigence : nous ne sacrifions jamais la qualité à l’innovation, mais intégrons à un socle technologique et méthodologique éprouvé les innovations les plus prometteuses.
Agile ou Séquentiel ?
Nous sommes depuis le début convaincus des avantages des méthodes agiles mais notre choix de méthodologie dépend toujours du contexte de chaque projet et des objectifs client.
Scrum
Scrum est une méthode agile largement répandue, dans laquelle le projet progresse en itérations qui sont appelées sprints. Cette méthode offre au client une visibilité fine sur l’avancée du projet, ainsi que la liberté de le faire évoluer en cours de développement. Elle est particulièrement adaptée aux projets de nouveaux produits ou services :
- Périmètre fonctionnel du projet encore en définition
- Objectifs centrés sur la valeur pour l'utilisateur et pilotés par les équipes métier
- Investissement régulier et fréquent du client dans le projet
Lean
Lean est une façon d’envisager le projet plus qu’une méthodologie à proprement parler. C’est une adaptation des méthodes agiles basée sur les principes de livraison de valeur rapide et d’amélioration continue. Elle fait passer les boucles de feedback de quelques semaines à quelques jours, en mettant l’accent sur des retours rapides plus que sur des normes de qualité prédéfinies. Un projet Lean n’a pas de taille d’équipe ni de durée minimale – cela peut être quelques heures seulement… Elle convient bien aux projets de prototypes ou au déploiement continu de solutions industrielles :
- Nécessité d'une première version du projet le plus tôt possible et de nouvelles versions très rapprochées
- Objectifs et moyens à définir demandant une équipe très experte
- Investissement quotidien du client dans le projet
7@af83
7@af83 est une méthodologie séquentielle classique, apparentée aux méthodes de «cycle en V » ou en cascade, qui est très bien adaptée aux projets techniques ou de taille industrielle :
- Périmètre fonctionnel du projet formalisé de façon détaillée
- Objectifs et moyens habituels et maîtrisés
- Présence du client sur des phases précises du projet
Test-Driven Development
Nous mettons en place des tests automatiques dès le début d'un projet pour couvrir tous les aspects d’un projet : des tests unitaires (comment fonctionne chaque méthode) aux tests d’intégration et de comportement (comment se comporte l’ensemble du système).
Nous faisons du TDD (Test-Driven Development) pour nous assurer qu’une partie spécifique du code fonctionne correctement par rapport aux spécifications, et ce indépendamment du reste du projet. Dans une démarche d’intégration continue, cela nous permet d’être sûrs qu’il n’y ait pas de régression de qualité avec le code nouvellement produit.
Intégration Continue
Nous mettons en place des serveurs d’intégration continue sur lesquels nos tests tournent en permanence, pour garantir la meilleure qualité possible à chaque étape du projet. Chaque fois qu’un développeur ajoute du code, celui-ci est testé automatiquement – et les voyants doivent rester au vert en permanence.
Nous mesurons la performance de nos systèmes avec des indicateurs métiers et techniques précis pour en tirer des informations utiles, grâce entre autres à Logstash et Kibana. Nous pouvons ainsi accélérer le déploiement des applications tout en réduisant les coûts.
Cloud et Déploiement
Nous construisons des applications qui peuvent tourner sur une infrastructure dédiée ou sur un cloud public, voire le cas échéant, mélanger des éléments des deux. Nos architectures dans les deux cas sont toujours les mêmes : elles doivent proposer une montée en échelle horizontale.
Nous n'aimons pas créer une adhésion trop forte avec un fournisseur cloud spécifique. Nos clients doivent pouvoir migrer de l'un à l'autre. Pour ce faire il est important d'avoir des moyens de déploiement et de gestion de configuration automatisés. Nos outils de prédilection sont Capistrano, pour les infrastructures simples et Chef ou Puppet, pour les déploiements complexes.
Qualité
Nous attachons de l'importance à la qualité de nos réalisations, tout particulièrement quand nous allons faire vivre celles-ci sur le long terme : nous testons notre code, nous pratiquons régulièrement des revues de code sur tous nos projets, et nous recherchons en permanence comment nous améliorer.