New! Checkout our new GitHub homepage! Follow the latest activity of eZ Publish Developers on GitHub.com


(En plus du flux RSS global, les billets veille et uniquement ceux là sont listés dans le flux RSS correspondant)

01/17/2019 07:41 pm   pwet.fr/blog   Mirror   Link  

Et un peu hors-sujet :

(En plus du flux RSS global, les billets veille et uniquement ceux là sont listés dans le flux RSS correspondant)

01/16/2019 12:37 pm   pwet.fr/blog   Mirror   Link  
  • How To Speed Up The Code Review (en) : un article intéressant si vous souffrez de revues trop lentes/difficiles. Clairement la taille est un facteur clé et essayer de ne pas mélanger refactoring, nouvelle(s) fonctionnalité(s) ou renommage semble plutôt une bonne idée.
  • Better naming convention (en) : des réflexions plutôt intéressantes surtout sur les préfixes/suffixes des classes/interfaces. Je suis plus partagé sur l'abandon de get pour les getters
  • Use React.lazy and Suspense to Code-Split Your App (en) : ou comment React 16.6 permet de faire du chargement à la volée (code splitting) sans bibliothèque externe.
  • Build a PWA in Just 10 Minutes (en) : faut vraiment que j'essaie avec mon site :)
  • Semantic Versioning - why you should care (en) : une bonne explication de ce qu'apporte le semantic versionning et de comment gérer les versions. C'est orienté PHP mais ça s'applique potentiellement à tous les langages.
  • New in PHP 7.4 (en) : PHP 7.3 est encore tout chaud, mais voici ce qui se profile pour la version 7.4 avec des fonctionnalités plutôt sympas (surtout les propriétés typées et la partie Improved type variance)
  • CPU Utilization is Wrong (en) : en fait, la notion d'occupation CPU est plus subtile qu'il n'y paraît ce qui fait que le pourcentage d'occupation CPU peut induire en erreur.
  • A declarative router for service workers (en) : une proposition d'API pour rendre l'écriture de Service Worker plus simple. Ce n'est qu'une proposition, mais le besoin est là il me semble.

(En plus du flux RSS global, les billets veille et uniquement ceux là sont listés dans le flux RSS correspondant)

01/16/2019 12:37 pm   pwet.fr/blog   Mirror   Link  

Comme je l'écrivais dans ma rétrospective 2018, je crois qu'avoir changé de travail m'a fait progresser sur pas mal d'aspects et pas seulement techniques. Je n'ai pas attendu d'être sur le point de terminer ma quatorzième année d'expérience et d'avoir le titre (un peu ronflant) de lead developer pour découvrir que développer un logiciel est un travail d'équipe mais je crois en avoir saisi quelques subtilités qui m'échappaient auparavant.

Deux bras de cuisinier en train
    de complèter des assiettes

C'est quoi une équipe ?

Cette question peut paraître anodine mais elle est en fait bien plus subtile qu'il n'y paraît. Pendant ma veille technologique (pas si technologique que ça pour le coup), j'étais tombé sur The First Question To Ask When Building Teams – Is This Really A Team?. Cet article reste l'une de mes meilleures lectures de 2018. L'auteur y décrit les différents types de groupes et finalement qu'une équipe est un groupe de personnes qui partagent un but et ont besoin des autres pour l'atteindre. Rapporter à mon expérience personnelle, j'ai compris (au moins en partie) pourquoi certaines collaborations n'ont pas donné tous les fruits espérés.

Agilité

Il y a quelques jours je relisais le manifeste pour le développement Agile de logiciels et les 12 principes sous-jacents où on peut notamment lire (le gras est de moi) :

La méthode la plus simple et la plus efficace pour transmettre de l’information à l'équipe de développement et à l’intérieur de celle-ci est le dialogue en face à face.

[…]

Les meilleures architectures, spécifications et conceptions émergent d'équipes autoorganisées.

À intervalles réguliers, l'équipe réfléchit aux moyens de devenir plus efficace, puis règle et modifie son comportement en conséquence.

Le concept d'équipe est au cœur de l'agilité et même mieux, l'agilité met l'équipe au centre en la reconnaissant comme une entité à part entière (en anglais on dirait a first class citizen). L'équipe s'auto-organise, réfléchit, modifie son comportement, s'améliore et développe un logiciel pour résoudre un problème… Je ne vois ça pas seulement comme un élément d'une méthode agile ou d'une autre mais comme un vrai état d'esprit à acquérir et à cultiver.

Travailler en équipe

En effet, il ne suffit pas de mettre des personnes sur un projet pour travailler efficacement en équipe. À vrai dire, en fonction des personnes, travailler efficacement en équipe n'est pas forcément simple et c'est rarement une évidence. J'écrivais il y a quelques temps que je regrettais ne pas avoir au moins été initié à cette pratique à l'école, je le pense d'autant plus maintenant.

Je n'ai pas de recette magique pour bien travailler en équipe, mais j'ai pu remarquer qu'une bonne dose de capacité à communiquer (clairement), pas mal d'humilité, un peu d'empathie et une pointe de discipline aident beaucoup. En fait, toutes ces qualités (ce qu'on appelle parfois des soft skills) se traduisent par une large gamme de comportements qui font partie du développement en équipe :

  • accepter les remarques par exemple dans une revue de code et les discussions qui en découlent
  • faire l'effort d'écouter les autres membres
  • arriver à l'heure aux réunions
  • définir une procédure collectivement pour le bien de tous et s'astreindre à la suivre
  • savoir donner un coup de main sans infliger de l'aide
  • faire confiance aux autres membres
  • et se parler tout simplement ;-)

Avantages à travailler en équipe

Lorsqu'on parle de travail en équipe, j'aime beaucoup ce proverbe africain :

Tout seul on va plus vite, ensemble on va plus loin

À elle seule, cette petite phrase résume plutôt bien l'intérêt à travailler en équipe. Au delà des aspects purement humains, si on rentre un peu dans le détail du développement logiciel et qu'on parle d'un logiciel destiné à durer, le travail en équipe apporte ou améliore au moins deux aspects essentiels :

  1. un meilleur partage des connaissances
  2. un résultat de meilleure qualité

Une bonne répartition des connaissances permet notamment d'augmenter le bus factor. Sans même parler de catastrophe, cette répartition rend l'équipe plus résiliente à toute sorte de changements ou d'imprévus et facilitera d'autant les évolutions et la maintenance. En quelque sorte, travailler en équipe est un investissement pour l'avenir.

Le travail en équipe favorise la qualité du résultat (au sens général du terme, pas seulement la qualité logiciel) car il est probable que les problèmes à résoudre ne soient pas triviaux et dans ce cas là, plusieurs cerveaux et plusieurs points de vue amènent à les envisager sous différents angles là où un cerveau unique aura tendance à s'arrêter à la première solution. Au passage, cet effet positif sera d'autant plus amplifié que l'équipe sera composée de personnes diverses (à tout point de vue).

Performance d'une équipe

L'évaluation des performances est déjà une matière difficile lorsqu'on parle d'une seule personne, alors pour une équipe…

Plutôt que de vouloir mesurer à tout prix la performance, il est peut-être plus simple de se poser uniquement la question de comment l'améliorer. À ce niveau, que l'on parle de vitesse de réalisation, de qualité, de quantité de bugs ou de n'importe quelle autre métrique, j'ai souvent remarqué que la performance d'une équipe était en bonne partie calquée sur celle de ces membres les moins… performants. En d'autre terme, pour progresser collectivement il faut s'intéresser en premier lieu à ces membres pour les faire progresser individuellement. Cette progression individuelle aura des effets positifs multiples qui amélioreront d'autant les performances de l'équipe dans son ensemble. Ensuite, comme tout problème non trivial, l'équipe peut se prendre en main, et même si elle peut parfois manquer de recul sur elle-même, là encore l'intelligence collective d'une équipe auto-organisée et la liberté d'une équipe autonome permet d'envisager différentes solutions.


Après presque 1000 mots, il me reste à conclure en disant que travailler en équipe pour développer un logiciel, c'est non seulement quasi inévitable mais en plus c'est à la fois enrichissant sur le plan humain et potentiellement très efficient.

01/16/2019 12:37 pm   pwet.fr/blog   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezpublish-kernel Jan 16, 2019
2 commits to master
01/16/2019 12:12 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezpublish-api Jan 16, 2019
2 commits to master
01/16/2019 12:11 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/ezpublish-kernel Jan 16, 2019
2 commits to master
01/16/2019 12:00 pm   eZecosystem @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/ezpublish-api Jan 16, 2019
2 commits to master
01/16/2019 12:00 pm   eZecosystem @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/ezmigrationbundle Jan 16, 2019
2 commits to master
01/16/2019 11:59 am   eZecosystem @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/phpunit Jan 16, 2019
1 commit to master
  • @epdenouden ab39282
    Update download URL to use /latest/ directory
01/16/2019 12:28 am   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezplatform Jan 16, 2019
2 commits to master
01/16/2019 12:10 am   eZPublishLegacy @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/ezplatform Jan 16, 2019
2 commits to master
01/15/2019 11:59 pm   eZecosystem @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/xrowworkflow Jan 15, 2019
1 commit to master
  • 1b3acb7
    Enable deletion of workflow by deleting date (Ablaufdatum) #13391
01/15/2019 12:41 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/repository-forms Jan 15, 2019
2 commits to master
01/15/2019 12:34 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/phpunit Jan 15, 2019
2 commits to master
01/15/2019 12:33 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/Sylius Jan 15, 2019
2 commits to master
01/15/2019 12:07 pm   eZecosystem @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/repository-forms Jan 15, 2019
2 commits to master
01/15/2019 12:06 pm   eZecosystem @ GitHub   Mirror   Link  
@ezecosystem
ezecosystem pushed to master in ezecosystem/NetgenAdminUIBundle Jan 15, 2019
2 commits to master
01/15/2019 12:04 pm   eZecosystem @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/phpunit Jan 15, 2019
2 commits to master
01/15/2019 12:26 am   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/repository-forms Jan 14, 2019
2 commits to master
01/14/2019 12:32 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/phpunit Jan 14, 2019
2 commits to master
  • @epdenouden 9cbee9d
    Make line-splitter more tolerant of different EOLs in error messages
  • @epdenouden 5021548
    Make left margin of colored Testdox look like a railway map
  • 9 more commits »
01/14/2019 12:30 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezstudio Jan 14, 2019
2 commits to master
01/14/2019 12:16 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezpublish-spi Jan 14, 2019
2 commits to master
  • @brookinsconsulting f83bf67
    Merge remote-tracking branch 'upstream/master'
  • @webhdx 32c84b7
    EZP-29997: Exposed information about removed content items in EmptyTr…
01/14/2019 12:14 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezpublish-kernel Jan 14, 2019
2 commits to master
01/14/2019 12:13 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezpublish-api Jan 14, 2019
1 commit to master
  • @webhdx 1590bac
    EZP-29997: Exposed information about removed content items in EmptyTr…
01/14/2019 12:12 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezplatform-demo Jan 14, 2019
2 commits to master
01/14/2019 12:11 pm   eZPublishLegacy @ GitHub   Mirror   Link  
@ezpublishlegacy
ezpublishlegacy pushed to master in ezpublishlegacy/ezplatform Jan 14, 2019
2 commits to master
01/14/2019 12:11 pm   eZPublishLegacy @ GitHub   Mirror   Link