Comment rater vos revues de code ? – Épisode 1

Dans le précédent article, nous avons présenté la pratique de la revue de code ainsi que deux formats que nous utilisons sur nos projets.

Mais introduire une nouvelle pratique avec succès n’est pas une chose aisée. C’est un peu comme mettre une barque à la mer : une fois dans l’eau, les premiers mètres sont assez chaotiques. Il y a beaucoup de vagues, on commence à se demander si c’était une bonne idée. Ne serait-il pas plus sage de retourner au rivage ? Mais en persévérant, on arrive finalement au large, où la mer est plus calme : il suffisait de s’accrocher.

Nous avons rencontré dans nos expériences de revue de code plusieurs écueils qui nuisent aux bénéfices attendus et qui peuvent mettre en péril la pratique dans l’équipe.

Voyons au travers de quelques anecdotes vécues* pourquoi vos premières revues de code risquent d’être difficiles et quels sont les fondamentaux nécessaires à des revues de code réussies.

Lire la suite

Revue de code : quel format choisir ?

Nous utilisons principalement deux formats de revue de code dans nos projets : la revue collective, plutôt formelle et la revue par un pair, un format plus léger. Les deux présentent des avantages et des inconvénients : revenons ensemble sur ces formats et comment les mettre en place dans une équipe.

Mais commençons par le commencement : qu’est-ce qu’une revue de code et quels bénéfices apporte-t-elle ?

Dans la plupart des domaines impliquant l’écriture, on n’imagine pas que ce qui est écrit soit publié sans avoir été relu. Un article sera toujours relu avant publication (par exemple celui que vous êtes en train de lire), que ça soit pour une vérification sur le fond – le sujet de l’article est-il bien traité ? – ou sur la forme – orthographe, grammaire, structure et lisibilité du texte.
De la même manière, la pratique de la revue de code consiste à faire relire son code afin d’y trouver le maximum de défauts, que ça soit sur le fond – est-ce que ce code fonctionne, et matérialise bien la fonctionnalité prévue ? – ou sur la forme – clarté, lisibilité, respect des standards, etc.

Et chez vous, combien de lignes de code mettez vous en production sans qu’elles aient été relues ?

Lire la suite

Software Craftsmanship : une culture à transmettre

Software CraftsmanshipLe manifeste du mouvement Software Craftsmanship est sous-titré par Raising the bar, élever le niveau.

 

Nous pensons effectivement que c’est l’enjeu principal derrière les motivations de ce mouvement : pour créer des produits qui “déchirent”, il faut s’appuyer sur les personnes qui savent le faire, qui aiment le faire, et qui veulent toujours apprendre à le faire mieux.

Il ne s’agit pas que de pratiques à mettre en oeuvre : c’est une véritable culture du développement, qui implique des changements, dans les mentalités, dans le fonctionnement des équipes et de l’entreprise.

Mais une culture ça ne s’impose pas : comment faire entrer les valeurs du Craftsmanship dans l’entreprise afin qu’elles deviennent le standard et non l’exception ?

Lire la suite

Les artisans codeurs chez OCTO

Chez OCTO, nous considérons que le partage du savoir et des bonnes pratiques est un élément essentiel à l’épanouissement professionnel de chacun. Autrement dit, c’est sympa d’être une « Great Place to Work », mais c’est encore mieux d’être « Best Place to Grow ». Dans la continuité de « Partageons ce qui nous départage », nous souhaitons diffuser régulièrement à l’extérieur d’OCTO les pratiques qui nous permettent de nous améliorer au quotidien.

Si les BOFs constituent l’événement principal pour partager nos retours d’expérience, on voit aussi régulièrement des OCTOs investir une salle de réunion durant la pause de midi pour aborder leur(s) sujet(s) de prédilection, dans le cadre d’un BBL, ou Brown Bag Lunch.

Je vous propose donc un retour sur notre BBL des Artisans Codeurs, qui nous réunit régulièrement sur le thème du mouvement Software Craftsmanship. Ce mouvement vise notamment à remettre en valeur le métier de développeur : nous pensons qu’être développeur est une carrière aussi prestigieuse que celle de chef de projet ou de consultant, et que le développement de logiciel est une activité complexe pour laquelle la qualité n’est pas négociable.

Afin de partager ces valeurs et de permettre  aux plus jeunes (et pas que les plus jeunes !) de progresser, il faut donner les moyens de faire cet apprentissage permanent.

Lire la suite

Bases de données graphes : un tour d’horizon

Dans un précédent article, nous avons introduit quelques concepts à propos des graphes, et les avons illustrés par deux exemples en utilisant la base de données graphe Neo4j.
Au cours de ces dernières années, de nombreuses compagnies ont développé leur solution de base de données graphe, en tant qu’éditeur comme Neo Technology avec Neo4j, Objectivity avec InfiniteGraph ou encore Sparsity avec dex*, ou en développant leur propre solution pour l’intégrer à leur application, comme LinkedIn ou Twitter.
Il est donc assez difficile de s’y retrouver dans ce paysage riche, qui continue à évoluer très vite.
Dans ce nouvel article qui se focalise sur les bases de données graphes, nous donnerons les éléments nécessaires à la compréhension de leur positionnement dans leur écosystème, par rapport aux autres types de base de données et aux autres types d’outils dédiés au traitement de graphes.
Plus précisément, nous essaierons de répondre à une question importante, à savoir quand utiliser une base de données graphes et quand ne pas en utiliser, ce qui n’est pas forcément évident.

Lire la suite

Introduction aux graphes avec Neo4j et Gephi

Les solutions permettant de modéliser, stocker et parcourir de façon efficiente des graphes ont profité de plusieurs éléments qui les ont rendues populaires ces dernières années.

Le premier élément aidant à leur démocratisation est l’explosion des réseaux sociaux. Un cas d’usage évident, facile à comprendre même  si, étrangement, les solutions mises en œuvre ne sont pas forcément de « type graphe » (par exemple avec FlockDB chez Twitter).

Le second est lié au mouvement NoSQL qui a aidé à diffuser l’idée que la base relationnelle n’est pas la seule solution de stockage et de requêtage.

Enfin, et même si la théorie des graphes n’est pas neuve, les algorithmes sous-jacents et certaines implémentations ont atteint un niveau de maturité permettant la « commoditisation » de ces technologies, les aidant du même coup à sortir de zones très spécifiques.

Alors qu’est-ce qu’un graphe? A quoi cela peut-il bien servir? Et finalement comment travaille-t-on avec  en termes d’API et  de solution ?

A travers deux exemples simples, voici une introduction aux graphes, leur stockage et leur analyse, en utilisant Neo4j, une base de données graphe, et Gephi, un outil open-source de visualisation et d’analyse de graphe.

Lire la suite

Les grandes tendances de Devoxx 2011

La plus grand conférence de la communauté Java avec JavaOne a eu lieu à Anvers en Belgique au mois de Novembre. Cette année, les thèmes principaux de Devoxx étaient (sans ordre particulier):

  • Le futur de Java
  • Les langages alternatifs sur la JVM
  • HTML5
  • JavaFX
  • Android
  • Un peu de Cloud, de NoSQL et d’architecture haute performance

Nous avons aussi eu droit à une grande annonce pour une nouvelle conférence qui démarre en 2012 : Devoxx France!

Bien sûr, OCTO était sur place. Dans cet article, nous ne couvrirons pas toute la conférence en détail, de nombreux blogs l’ont déjà très bien fait. Nous allons néanmoins vous résumer les grandes tendances de cette édition et vous donner nos impressions à froid.

La suite de cet article en anglais, international oblige! Lire la suite…

Vers des API haut niveau pour Java et NoSQL avec Spring Data

A l’heure où les nouvelles technologies de stockage de données regroupées sous les termes NoSQL et Distributed Data Grid deviennent populaires, il est intéressant de suivre l’évolution de cet écosystème et notamment des librairies d’intégration avec ces outils.
Des librairies apportant un certain niveau d’abstraction émergent, avec l’espoir de voir apparaître des solutions de haut niveau comparables aux ORM que nous utilisons pour les bases relationnelles. Nous allons nous intéresser aujourd’hui au projet Spring Data, qui propose une certaine unification pour les accès aux bases de données dites NoSQL. Lire la suite

Les perspectives des CDN en mode Pay as you go

Les services de réseau de diffusion de contenu, ou Content Delivery Network (CDN), adressent des problématiques liées à l’optimisation des performances du web, que ce soit en terme de scalabilité ou de haute disponibilité.

Une présentation des solutions de CDN vient d’avoir lieu chez Octo dans le cadre du WebPerf User Group France. En parallèle, voici un petit retour suite à une étude menée sur le sujet, abordée dans l’optique d’avoir une solution à moindre coût notamment pour ressources d’une application iPhone.

Avec la démocratisation des moyens de diffusion d’information instantanés, allant de Facebook à Twitter, on assiste régulièrement au phénomène de buzz. Le phénomène existe depuis des années déjà et rejoint les problématiques rencontrées par tout site web qui connait un gain soudain de popularité. Celui-ci est encore plus vrai avec les applications pour smartphones : en moyenne, un mois après l’installation, seulement 15% des applications iPhone téléchargées sont encore utilisées : il est difficile de prévoir à l’avance le nombre de téléchargements et d’utilisateurs simultanés.

D’un point de vue technique, ce phénomène soulève plusieurs questions:

  • Comment répondre à cette montée en charge imprévisible?
  • Et si l’application proposée a un succès franc et durable, comment garantir des performances correctes pour tous les utilisateurs, quelle que soit leur localisation?
  • Les entreprises ne sont pas forcément prêtes à investir dans des serveurs et/ou des hébergements dédiés supportant ces pics de fréquentation : comment pallier à ces problématiques rapidement et à moindre coût?

Depuis plusieurs années, les CDN offrent des réponses intéressantes en termes de performances pour la distribution de ressources statiques. Ces solutions sont largement utilisées par des acteurs tels que Youtube, Allociné, ou encore par des sites de presse tels que Le Parisien.

La nouveauté est que certaines de ces solutions deviennent aujourd’hui accessibles même pour des petites structures grâce à une facturation entièrement basée sur la consommation.

Lire la suite