Transcript
Page 1: Comment transformer un débutant en super-développeur

Comment transformer des «débutants»...en super développeurs en un an ?

Page 2: Comment transformer un débutant en super-développeur

Définitions(à considérer dans le contexte de l’entreprise !)

Page 3: Comment transformer un débutant en super-développeur

Un débutant...

= n’apprend pas de ses erreurs

= passe l’essentiel de son temps à écrire du code

= s’identifie à son code

= ne met pas son travail dans une perspective «business»

Page 4: Comment transformer un débutant en super-développeur

Un «Super développeur»...

= se focalise sur la satisfaction client

= prend le temps de concevoir et tester avant d’écrire du code

= remet en question la qualité de son travail

Page 5: Comment transformer un débutant en super-développeur

Postulat de départ

= équipe constituée= renforcée d’une nouvelle recrue

= à la recherche de plus d’efficacité

= nouvelle équipe= from scratch (oui, ça existe encore !)

Page 6: Comment transformer un débutant en super-développeur

EnvironnementTiming : 2 à 4 semaines

Page 7: Comment transformer un débutant en super-développeur

Objectifs

= Bénéfices-> éviter de perdre du temps au quotidien

-> amener chacun à exploiter au mieux les outils utilisés

= Risques-> ne pas imposer les outils - laisser l’équipe en décider

-> ne pas être rigide - selon les tâches, les outils peuvent varier

Page 8: Comment transformer un débutant en super-développeur

Définir un environnement cohérent

= uniformiser-> les systèmes

-> les IDE

-> les accessoires

= rester en veille-> nouveaux outils, nouveaux besoins

Page 9: Comment transformer un débutant en super-développeur

Organisation du teamTiming : 4 à 8 semaines

Page 10: Comment transformer un débutant en super-développeur

Objectifs= Bénéfices

-> optimiser les ressources de l’équipe

-> permettre à chacun d’exploiter ses talents

-> responsabiliser et donner confiance en soi à l’équipe

-> éviter le bloquage de situations grâce à des arbitrages

= Risques-> une responsabilité ne doit pas être qu’une pression de plus

-> enfermer les membres de l’équipe dans un rôle peut causer des frustrations contre-productives

Page 11: Comment transformer un débutant en super-développeur

Chacun doit trouver sa place= prendre ses responsabilités

-> exercer le super-pouvoir du développeur : le pouvoir de dire «Non» ! Refuser les contraintes irréalistes sera le meilleur moyen de préserver la qualité du projet

-> quand il n’est pas possible de s’opposer à une mauvaise décision, le super-pouvoir doit se transformer en super-devoir : il faut alerter sur les risques engendrés

= partager son expérience

= faire confiance !

Page 12: Comment transformer un débutant en super-développeur

MéthodologieTiming : 5 à 14 semaines

Page 13: Comment transformer un débutant en super-développeur

Objectifs= Bénéfices

-> optimiser les cycles de développements

-> améliorer la relation avec le client en l’impliquant plus

-> avoir plus de visibilité et de contrôle sur le déroulement des projets

-> introduire la qualité à tous les moments du cycle de développement

= Risques-> appliquer de manière dogmatique la méthodologie ne permettra pas d’atteindre ces objectifs

Page 14: Comment transformer un débutant en super-développeur

Sélectionner= "Manifeste pour l'agilité"

-> agilemanifesto.org

= Se documenter

= Faire un choix? Scrum

? Kanban

-> Scrum :)

Scrum propose un compromis intéressant entre souplesse et visibilité, qui s’adaptera à la majorité des équipes/projets mais pas à tous !

Page 15: Comment transformer un débutant en super-développeur

Implémenter = adapter

= à son organisation

= à ses priorités

= rester souple≠ dogme

= l'équipe doit devenir responsable de son projet= éduquer son "client" (interne ou externe)

= pour collaborer avec lui

Page 16: Comment transformer un débutant en super-développeur

Code ReviewsTiming : 2 à 4 semaines

Page 17: Comment transformer un débutant en super-développeur

Objectifs= Bénéfices

-> détection précoce des erreurs de conception et d’implémentation

-> réduction de la quantité de code écrite

-> réduction de la quantité de bugs !

= Risques-> sans aucun protocole, peut consommer un temps trop important

-> mal comprises ou mal menées, les code reviews peuvent déclencher des conflits d’ego

Page 18: Comment transformer un débutant en super-développeur

Trouver le rythme et la forme

= planifiées ou spontanées

= formelles ou informelles-> améliorer la qualité

= laisser son ego au vestiaire-> il est votre pire ennemi !

Texte

Page 19: Comment transformer un débutant en super-développeur

RefactoringTiming : 4 à 8 semaines

Page 20: Comment transformer un débutant en super-développeur

Objectifs= Bénéfices

-> uniformisation des API (application des coding standards)

-> réduction de la quantité de code déployé

-> amélioration de la réutilisabilité

= Risques-> rentrer dans des boucles infinies de réécriture

-> causer des régressions

-> c.f. «Tests unitaires» pour prévenir ce risque

-> déclencher des conflits d’ego en reprenant le code d’un autre membre de l’équipe de manière arbitraire

Page 21: Comment transformer un débutant en super-développeur

Quoi et quand ?

= Quoi ?-> priorité aux objets métiers

-> composants

= Quand ?-> après les code reviews

-> après les retrospectives

Page 22: Comment transformer un débutant en super-développeur

Unit TestingTiming : 2 à 6 semaines

Page 23: Comment transformer un débutant en super-développeur

Objectifs= Bénéfices

-> prévention des régressions

-> documentation du code

-> validation des règles métiers

= Risques-> perdre du temps tenter de tester trop d’éléments, notamment des éléments non-testables

-> ne pas maintenir les tests les rend inutiles

Page 24: Comment transformer un débutant en super-développeur

Parmi les bénéfices du test unitaire= facilite le refactoring

-> informe des régressions immédiatement

= guide la conception-> en appliquant le TDD, qui consiste à écrire les tests avant le code, on

= vision objective de la qualité-> le résultat du test ne dépend pas de qui l’exécute

= métrique de progression-> une méthode est implémentée lorsqu’elle passe tous les tests associés

Page 25: Comment transformer un débutant en super-développeur

Intégration continueTiming : 4 à 8 semaines

Page 26: Comment transformer un débutant en super-développeur

Objectifs

= Bénéfices-> exploitation maximale des bonnes pratiques mise en oeuvre

-> automatisation des tâches répétitives souvent source d’erreurs (particulièrement le déploiement)

= Risques-> aller trop vite vers l’intégration continue au risque de ne pas avoir mis en oeuvre toutes les pratiques associées en amont !

Page 27: Comment transformer un débutant en super-développeur

Le Graal !

= convergence

= visibilité

= contrôle

= Early bug killing-> plus vite on identifie un bug, plus on limite ses conséquences, et donc son coût

Page 28: Comment transformer un débutant en super-développeur

Conclusion

Page 29: Comment transformer un débutant en super-développeur

Prendre le temps !

= faire la différence entre "perdre" et "investir"= organisation

= méthodologie

= formation

= refactoring

= tests unitaires

Page 30: Comment transformer un débutant en super-développeur

Ne pas oublier l’essentiel !

= acceptation de l’équipe

= esprit d'équipe

= communication

= partage

Page 31: Comment transformer un débutant en super-développeur

Merci de votre attention !Gauthier Delamarre / [email protected] / @gdelamarre

Christophe Massin / [email protected]@Christophe2dot0