Nos impressions sur la SymfonyCon 2014 à Madrid

Nous étions présents à Madrid pour la seconde édition de la #SymfonyCon. Cet événement international nous a permis une fois de plus de rencontrer nos pairs, et d’assister à quelques très bonnes conférences. Je reviens dans cet article sur les quelques sessions auxquelles nous avons assisté.

SymfonyCon Madrid

Feature Flags par Benjamin Eberlei

Benjamin a présenté sa vision des « feature flags », avec une base d’implémentation pour débuter.

La mise en place de feature flags, courante sur de gros projets, permet d’activer progressivement de nouvelles fonctionnalités ou de ne donner un accès qu’à certains utilisateurs. Mais ils sont rarement abstraits, et reviennent souvent à une série de if/elseif/else.

Avec des feature flags en place, il devient envisageable de merger beaucoup plus de code dans la branche master (ie. la branche de production), même pour des fonctionnalités non finalisées, permettant ainsi de faire des tests utilisateur plus facilement. Flickr pratique cette méthode dont le nom nous rappelle SVN : le « trunk-based development ».

Les flags doivent tout de même être régulièrement nettoyés. En effet, inutile de garder un flag pour une fonctionnalité en production et sans limitation particulière.

Côté implémentation :

  • un onKernelRequest peut servir à modifier à la volée le _controller d’une route ;
  • les Services Factory sont utiles pour instancier une version ou une autre d’un service en fonction d’un flag.

Il existe des bundles aidant à gérer ces problématiques, mais Benjamin recommande de commencer petit avec votre propre implémentation.

Five Weird Tricks to Become a Better Developer par Jordi Boggiano

Le premier talk non technique (et non composer ?) de Jordi, avec l’objectif de nous faire lever la tête du guidon et de nous donner une meilleure perspective sur les « bonnes pratiques », non pas pour notre code, mais pour nous, nos collègues et nos clients.

Think

Ne jamais hésiter à reporter des problèmes sur les petites choses qui nous semblent cassées ou non optimales. Montrer le problème est la première étape de sa résolution.

Pour chaque demande, il est important de comprendre l’utilité de la fonctionnalité demandée, ainsi que de mesurer sa valeur ajoutée.

Empathie

Se mettre dans les chaussures des autres est primordiale car chaque décision que nous prenons affecte d’autres personnes, d’autres développeurs, et très certainement nous-même, dans quelques mois.

Par exemple, il est intéressant de penser à l’interface utilisateur… du code. Il est courant de voir des constructeurs écrit de cette façon :

<?php
class User {
    public function __construct($name, $enabled, $admin, $age);
}

Du côté utilisateur, le code est très obscur :

new User("toto", true, false, 21);

Il est difficile de lire et de comprendre à quoi correspond chaque paramètre.

Jordi recommande :

  • d’apprendre à se taire et à écouter les autres ;
  • écouter, et non « attendre son tour pour parler » !
  • toujours demander si quelque chose n’est pas clair ;
  • reformuler le message pour être sûr qu’il est compris ;
  • se soucier des gens, sans jugement.

Chill

Épargnez vous le burn-out : la fatigue, le stress et le manque de motivation sont des tueurs, à la fois pour votre productivité et pour vous.

Il faut passer plus de temps à perdre du temps. Ne pas utiliser son téléphone aux toilettes, par exemple ! 5 minutes sans informations / twitter / emails… c’est 5 minutes pendant lesquelles votre tête se repose. En voilà un bon protips® !

Pragmatisme

Clean code

De plus, qui est payé pour faire de belles abstractions ? Jordi insiste sur le fait que le client ne se soucie pas de la beauté d’une interface, et l’abstraction faite pour la beauté du geste est souvent inutile ou prématurée.

Faire des concessions

Pour finir, faire des concessions. Développer est une suite sans fin de concessions :

  • usage mémoire VS usage CPU ;
  • espace disque VS qualité d’image ;
  • librairie tierce VS snippet…

Il n’existe pas de bonne réponse pour tous les cas, vous devez rester flexible et prendre ces décisions avec votre équipe, afin de servir au mieux les besoins métier. D’un projet à un autre, tout peut changer.

The DX Initiative par Ryan Weaver

The Developer Experience (DX) Initiative, c’est faire plus avec moins de temps de développement, d’apprentissage, ou de complexité.

La communauté Symfony travaille sur de nombreuses fonctionnalités dans ce sens, sous le nom de DX, dont certaines apparaissent dans la toute récente version 2.6 (taguée pendant la keynote de clôture !).

La conclusion est de ne pas hésiter à reporter les problèmes même mineurs, aussi bien dans la documentation que dans le core.

Rock Solid Deployment of Symfony Apps par Pablo Godel

La conférence de Pablo Godel n’a pas été aussi intéressante que son nom le laissait entendre. Il s’agissait surtout d’une liste des outils les plus utilisés dans une stack Web moderne (de Docker à Kibana). La cible était probablement des gens qui déploient via FTP, et la présentation n’était pas orientée Symfony si ce n’est une mention de Capifony.

Symfony Tips & Tricks par Javier Eguiluz

Très bonne conférence, et surprenamment technique. Parmi les points marquants, nous pouvons noter :

  • la méthode addClassesToCompile() de DependencyInjection\Extension qui permet d’ajouter des classes dans le fichier cache/{env}/classes.php et ainsi d’économiser des appels à l’autoloader ;
  • il ne faut pas utiliser sprintf dans le logger, il y a maintenant un support des {placeholders} avec le PSR log processor (à activer) ;
  • le tag {% do %} de Twig, apparu dans la version 1.5 ;
  • l’option doctrine schema_filter qui permet de dire à l’ORM quelles sont les tables qu’il ne doit pas chercher à gérer.

Il y avait aussi beaucoup d’astuces concernant Assetic, que vous retrouverez dans les slides.

LT OpenLocalization par Matthieu Moquet

Matthieu nous a présenté rapidement mais avec efficacité son projet Openl10n.io permettant de gérer les traductions d’une application. On y trouve une API Symfony2 couplée à un front BackboneJS avec une refonte en cours sur AngularJS. Un projet prometteur que nous allons surveiller !

Openl10n.io

Growing and managing communities for large Open Source projects par Jen Lampton

La seconde journée a démarré avec cette conférence plénière sur l’open source et la gestion de projet. Le sujet aurait pu être intéressant mais j’ai eu le sentiment qu’il concernait surtout des projets de taille importante, comme Drupal & Symfony, et donc, des problématiques qui ne nous touchent pas.

Avoir un projet qui prend de l’ampleur apporte de nombreuses choses :

  • une validation du besoin ;
  • une pérennisation ;
  • un plus grand nombre de ressources.

Mais il y a aussi des mauvais côtés :

  • il devient difficile de contrôler le scope du projet ;
  • tous le monde n’est pas d’accord sur ce qui doit faire partie du Core ;
  • un brouillard se crée : quelques 14k bugs sur Drupal, par où commencer ?

Jen a donc présenté quelques solutions pour palier ces problèmes – solutions appliquées par Drupal – à l’attention des responsables de la communauté Symfony.

Sylius par Paweł Jędrzejewski

Solution e-commerce déjà bien connue dans l’éco-système Symfony, Paweł nous a présenté la série de Bundle et surtout l’intérêt de leur utilisation plutôt que l’écriture d’un système propre.

J’y ai appris l’intégration du CMF, l’apparition récente du multi-store et multi-warehouse, ainsi que l’implémentation du moteur de recherche Elasticsearch qui vient d’être mergée, j’ai hâte de pouvoir y jeter un oeil.

Artificial Neural Network

Sujet très intéressant que nous avons rarement l’occasion de voir en conférence. Ariel Ferrandini et Eduardo Gulias ont réalisé un Tic Tac Toe jouable en mode console, réalisé avec le composant Symfony, et dôté d’une intelligence artificielle… en PHP (enfin presque) !

Bien que pour un jeu de ce type, l’algorithme minimax est le plus pertinent, c’est ici un réseau de neurones qui a été implémenté. Le but étant de permettra à l’IA d’apprendre et de s’améliorer au cours du temps, les deux développeurs ont choisi d’utiliser libfann (Fast Artificial Neural Network), une librairie écrite en C, et son extension PECL.

Une belle introduction, même si l’aspirine était nécessaire après en avoir compris tous les concepts :)

Le Hack Day du samedi

Après les deux jours de conférence se tenait, avec le support d’Heroku, un Hack Day au sein même de l’hôtel. Plus d’une centaine de personnes étaient présentes et on a compté une centaine de pull request sur symfony/symfony uniquement, sans parler de tous les autres projets comme la documentation, elle aussi très ciblée.

Nous avons nous-même apporté notre pierre à l’édifice et joué avec Heroku, avant de nous rendre dans le centre de Madrid pour profiter des tapas et de la sangria :)

Tapas y  sangria

Notre impression générale

Au final, une conférence agréable même si l’organisation aurait sûrement quelques protips® à reprendre d’événements organisés par des associations telles que Paris Web ou Forum PHP – en terme d’accueil, communication et confort du public. En effet il était par exemple impossible d’entendre les questions du public sans micro, l’organisation des lightning talks n’était pas parfaite non plus.

Le programme était diversifié et globalement intéressant, mais j’ai trouvé que de nombreuses sessions n’étaient pas en rapport avec Symfony, ou n’élevaient pas l’état de l’art. L’usage de Varnish par exemple est déjà très bien documenté, et plusieurs conférences ont pris beaucoup de temps à parler d’outils de type Grunt / Bower alors qui deviennent des standards dans tous les projets Web.

La prochaine édition se déroulera à Paris, pour les 10 ans de Symfony, et il y a fort à parier que nous y seront présents – surtout pour le karaoké !

blog comments powered by Disqus