Ce que les stratégies de versioning nous disent des dynamiques d’équipe

Preview:

Citation preview

Ce que les stratégies de versioning nous disent des dynamiques d’équipe

Benoit Lafontaine & Hervé Lourdin

Benoît Lafontaine - CTO@joel1di1

Hervé Lourdin - CTO@HerveLourdin

Agenda

● Pourquoi cette session ?● Qu’est-ce qu’une branche ?● Modèles & impact sur la communication● Conclusion

"organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations"

— M. Conway

Qu’est-ce qu’une branche ?

Qu’est-ce qu’une branche ?

“ En gestion de configuration logicielle, une branche est une dérivation dans l'histoire de l'évolution des éléments de configuration. Une branche est une évolution d'un élément ayant pour origine une version précise, produisant une «branche de version». Une branche de version correspond à un axe d'évolution de versions. Elle est rattachée à une branche source et peut découler sur plusieurs sous-branches. La gestion de l'ensemble des branches et des versions d'un produit constitue le versionnage (versioning en anglais) et est l'objet de la gestion de configuration.”

Source: Wikipedia

TL;DR

1.1 1.2 1.3 1.4 1.5

2.0 2.1 2.2

1.6

“Une branche est une version alternative du code source d’un logiciel”

Benoit & Hervé

Pourquoi on branche ?

● Pour paralleliser les dev sans se perturber

● Pour livrer les fonctionnalités au fur et à mesure de leur complétion (livrer A sans livrer B qui n’est pas fini, ni C qui ne correspond pas aux attentes)

Qui dit branches, dit...

Modèles de versioning / branching et impact sur la communication dans les équipes

1.1 1.31.2

Trunk Base

Développeur A

Développeur B

master

1.1 1.31.2

Team Branch

Equipe A

Equipe B

master

1.1 1.3

Team Branch

Equipe A

Equipe B

Mergede la mort1.2

Merge trop compliquéon passe

master

1.1 1.31.2

Feature Branch

master

Feature A

Feature B

Git Flow

In Progress Done UAT Expedite Live

Code review

Code review

1.1 1.31.2

Pull Request Flow

Pull Request

Pull Request

Feature Branching + Continuous Merge

+

Feature Toggle

Anti-patterns communs

La branche qui dérive

Le moine codeur

L’équipe d’intégration

Conclusion

Adapter sa stratégie à son contexte

● Les stratégies de versioning elles-aussi peuvent évoluer dans le temps○ Une organisation qui croît ou change nécessite de revoir la validité de sa stratégie○ Challengez vos choix initiaux pour voir si ils sont toujours valables !

● Inspirez-vous des modèles et adaptez les à votre contexte

Merger c’est discuter !

● la communication apparait au moment du merge

○ L’enjeu est de provoquer la conversation au bon moment

● Le merge et surtout la gestion de conflits sont les évenements clés caractérisant les modes de communications○ les merges difficiles sont caractéristiques d’un processus où la communication n’est pas assez

fréquente

● Plus vous mergez tard plus vous repoussez une conversation importante au lendemain○ … dont la résolution sera peut-être plus complexe

Questions ?

Benoît Lafontaine - CTO@joel1di1

Hervé Lourdin - CTO@HerveLourdin

Psst… Nous recrutons !

MERCI !

Recommended