SlideShare une entreprise Scribd logo
1  sur  14
1
Qualités essentielles pour un développeur agile
A. Barralon
a.barralon@oriions.com
@a_barralon
2
Essential skills for the agile developer :
a guide to better programming and design
Ionic
Angular JS
Spark
Git
Hadoop
…
3
Essential skills for the agile developer
L’informatique est non prédictive.
La technologie est un outil au service du développeur.
4
Essential skills for the agile developer
Le design et la complexité d’un système sont
difficiles à cadrer en totalité en amont d’un
projet.
Complexité simplifiée + Design minimaliste
5
Essential skills for the agile developer
Trim-tabs essentiels :
1. Programmation par intention
2. Séparer l’usage et la construction
3. Considérer les tests avant d’écrire le code
6
Programmation par intention
Découpe le problème en étape fonctionnelle (bullet points) :
1 classe == 1 responsabilité
• on prend une ‘commande’ à commiter
• on tokenize la commande
• on normalise les tokens
• on traite selon les cas de la taille des tokens
• on retourne le résultat
7
Programmation par intention
Avantages :
+ cohésion
+ lisibilité
+ simple à débugguer
+ simple à réfactorer
+ simple à unit-tester
8
Séparer l’utilisation de la construction
On sépare l’utilisation de l’instantiation.
• création d’une instance d’un Service
• on le délègue pour effectuer d’autres tâches
9
Séparer l’utilisation de la construction
Créateurs (:type) : WHAT something IS
Utilisateurs (:interface) : HOW something operates
“what you hide you can change”
10
Séparer l’utilisation de la construction
11
Définir les tests en amont
Les tests et la qualité du code
“je ne peux pas tester ce code…”
• car il fait trop de chose entremêlées -> (problème de cohésion)
• car j’ai besoin d’une douzaine d’autre chose → couplage excessif
• car c’est du code copié dans pleins d’endroits et modifiés à certains points → redondance
12
Définir les tests en amont
Les programmeurs grenouille
• Planification (l’action de faire un plan d’ensemble)
→ écrire les specs de test
• Plan (description des différentes étapes)
→ écrire les tests
• Suivre le plan (effectuer les étapes)
→ jouer les tests
13
Conclusion
Lire, c’est prendre des risques, parfois se mettre en danger.
Non, ce n’est pas un acte neutre et divertissant.
C’est un exercice de liberté, et nous en restons rarement
indemnes. Mais une chose est certaine, palpable, et cette
expérience peut être faite par chaque lecteur, nous agrandissons
notre Moi, nous sortons de nos prisons mentales, nous
déverrouillons notre regard sur le monde, dans l’acte de lire.
14
Merci !

Contenu connexe

Tendances

BDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéBDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéCARA_Lyon
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
 
[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de testsCellenza
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarElsassJUG
 
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?XP Day CH
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveFreddy Mallet
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)Cellenza
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDXavier NOPRE
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineGeeks Anonymes
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifkemenaran
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survieNicolas VERINAUD
 
C'est quoi, du bon code ?
C'est quoi, du bon code ?C'est quoi, du bon code ?
C'est quoi, du bon code ?Rémi Lesieur
 
Coding dojo en entreprise
Coding dojo en entrepriseCoding dojo en entreprise
Coding dojo en entrepriseNicolas Ledez
 
Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewLuc Desruelle
 
Y sont pas cher mes tests
Y sont pas cher mes testsY sont pas cher mes tests
Y sont pas cher mes testsNicolas Ledez
 
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...TelecomValley
 

Tendances (19)

BDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéBDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilité
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec Sonar
 
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG Genève
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDD
 
Self-programming Software
Self-programming SoftwareSelf-programming Software
Self-programming Software
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survie
 
C'est quoi, du bon code ?
C'est quoi, du bon code ?C'est quoi, du bon code ?
C'est quoi, du bon code ?
 
DevOps
DevOpsDevOps
DevOps
 
Coding dojo en entreprise
Coding dojo en entrepriseCoding dojo en entreprise
Coding dojo en entreprise
 
Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labview
 
Y sont pas cher mes tests
Y sont pas cher mes testsY sont pas cher mes tests
Y sont pas cher mes tests
 
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
 

En vedette

Recruter un (bon) développeur - Blend Conférence
Recruter un (bon) développeur - Blend ConférenceRecruter un (bon) développeur - Blend Conférence
Recruter un (bon) développeur - Blend ConférenceCamille Roux
 
Comment paraître sexy auprès des développeurs ?
Comment paraître sexy auprès des développeurs ?Comment paraître sexy auprès des développeurs ?
Comment paraître sexy auprès des développeurs ?Camille Roux
 
Recruter et travailler avec un développeur
Recruter et travailler avec un développeurRecruter et travailler avec un développeur
Recruter et travailler avec un développeurCamille Roux
 
La boucle à gagner du temps
La boucle à gagner du tempsLa boucle à gagner du temps
La boucle à gagner du tempsCamille Roux
 
M01 Metier et Formation
M01 Metier et FormationM01 Metier et Formation
M01 Metier et FormationChingongou ­
 
Zoom sur le Métier de Développeur
Zoom sur le Métier de DéveloppeurZoom sur le Métier de Développeur
Zoom sur le Métier de DéveloppeurANAPEC
 
Les 15 métiers clés du digital - Etude de fonctions et de rémunérations
Les 15 métiers clés du digital - Etude de fonctions et de rémunérationsLes 15 métiers clés du digital - Etude de fonctions et de rémunérations
Les 15 métiers clés du digital - Etude de fonctions et de rémunérationsMichael Page
 

En vedette (7)

Recruter un (bon) développeur - Blend Conférence
Recruter un (bon) développeur - Blend ConférenceRecruter un (bon) développeur - Blend Conférence
Recruter un (bon) développeur - Blend Conférence
 
Comment paraître sexy auprès des développeurs ?
Comment paraître sexy auprès des développeurs ?Comment paraître sexy auprès des développeurs ?
Comment paraître sexy auprès des développeurs ?
 
Recruter et travailler avec un développeur
Recruter et travailler avec un développeurRecruter et travailler avec un développeur
Recruter et travailler avec un développeur
 
La boucle à gagner du temps
La boucle à gagner du tempsLa boucle à gagner du temps
La boucle à gagner du temps
 
M01 Metier et Formation
M01 Metier et FormationM01 Metier et Formation
M01 Metier et Formation
 
Zoom sur le Métier de Développeur
Zoom sur le Métier de DéveloppeurZoom sur le Métier de Développeur
Zoom sur le Métier de Développeur
 
Les 15 métiers clés du digital - Etude de fonctions et de rémunérations
Les 15 métiers clés du digital - Etude de fonctions et de rémunérationsLes 15 métiers clés du digital - Etude de fonctions et de rémunérations
Les 15 métiers clés du digital - Etude de fonctions et de rémunérations
 

Similaire à Essential skills for the agile developer

Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésDjamel Zouaoui
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsAgile Tour 2009 Québec
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testablemartinsson
 
10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptxGuillaume Saint Etienne
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Elapse Technologies
 
Le combat contre l'atrophie technique - Agile en Seine 2020
Le combat contre l'atrophie technique - Agile en Seine 2020Le combat contre l'atrophie technique - Agile en Seine 2020
Le combat contre l'atrophie technique - Agile en Seine 2020Agile En Seine
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgileAgile Tour 2009 Québec
 
Test unitaires - refactoring - clean code
Test unitaires - refactoring - clean codeTest unitaires - refactoring - clean code
Test unitaires - refactoring - clean codeHadrien Blanc
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agilelaurent bristiel
 
Test Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsTest Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsThierry Gayet
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingGeeks Anonymes
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciellauraty3204
 
Bbd dans le flow nov.2012
Bbd dans le flow nov.2012Bbd dans le flow nov.2012
Bbd dans le flow nov.2012guillaumeagilr
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?CGI Québec Formation
 

Similaire à Essential skills for the agile developer (20)

Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisés
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succès
 
Agile Methodologies
Agile MethodologiesAgile Methodologies
Agile Methodologies
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testable
 
10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
Le combat contre l'atrophie technique - Agile en Seine 2020
Le combat contre l'atrophie technique - Agile en Seine 2020Le combat contre l'atrophie technique - Agile en Seine 2020
Le combat contre l'atrophie technique - Agile en Seine 2020
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes Agile
 
Test unitaires - refactoring - clean code
Test unitaires - refactoring - clean codeTest unitaires - refactoring - clean code
Test unitaires - refactoring - clean code
 
Method XP
Method XP Method XP
Method XP
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agile
 
Test Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsTest Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teams
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testing
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel
 
Bbd dans le flow nov.2012
Bbd dans le flow nov.2012Bbd dans le flow nov.2012
Bbd dans le flow nov.2012
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 

Plus de Alice Barralon

L’inclusion dans les équipes agiles : les personnes neuro-atypiques
L’inclusion dans les équipes agiles : les personnes neuro-atypiquesL’inclusion dans les équipes agiles : les personnes neuro-atypiques
L’inclusion dans les équipes agiles : les personnes neuro-atypiquesAlice Barralon
 
Les émotions dans le monde professionnel
Les émotions dans le monde professionnelLes émotions dans le monde professionnel
Les émotions dans le monde professionnelAlice Barralon
 
Alice au pays de l'Agilité
Alice au pays de l'AgilitéAlice au pays de l'Agilité
Alice au pays de l'AgilitéAlice Barralon
 
Agile Tour Bordeaux 2017 - Ne créez pas un produit inutile ! Concentrez vous ...
Agile Tour Bordeaux 2017 - Ne créez pas un produit inutile ! Concentrez vous ...Agile Tour Bordeaux 2017 - Ne créez pas un produit inutile ! Concentrez vous ...
Agile Tour Bordeaux 2017 - Ne créez pas un produit inutile ! Concentrez vous ...Alice Barralon
 
Agile Pays Basque 2017 - Ne créez plus un produit inutile! Concentrez vous su...
Agile Pays Basque 2017 - Ne créez plus un produit inutile! Concentrez vous su...Agile Pays Basque 2017 - Ne créez plus un produit inutile! Concentrez vous su...
Agile Pays Basque 2017 - Ne créez plus un produit inutile! Concentrez vous su...Alice Barralon
 
Lego bonnes pratiques_devoxx_2017
Lego bonnes pratiques_devoxx_2017Lego bonnes pratiques_devoxx_2017
Lego bonnes pratiques_devoxx_2017Alice Barralon
 
Duchess France Women in Tech
Duchess France Women in TechDuchess France Women in Tech
Duchess France Women in TechAlice Barralon
 

Plus de Alice Barralon (10)

L’inclusion dans les équipes agiles : les personnes neuro-atypiques
L’inclusion dans les équipes agiles : les personnes neuro-atypiquesL’inclusion dans les équipes agiles : les personnes neuro-atypiques
L’inclusion dans les équipes agiles : les personnes neuro-atypiques
 
50 shades of SM
50 shades of SM50 shades of SM
50 shades of SM
 
Les émotions dans le monde professionnel
Les émotions dans le monde professionnelLes émotions dans le monde professionnel
Les émotions dans le monde professionnel
 
Alice au pays de l'Agilité
Alice au pays de l'AgilitéAlice au pays de l'Agilité
Alice au pays de l'Agilité
 
Agile Tour Bordeaux 2017 - Ne créez pas un produit inutile ! Concentrez vous ...
Agile Tour Bordeaux 2017 - Ne créez pas un produit inutile ! Concentrez vous ...Agile Tour Bordeaux 2017 - Ne créez pas un produit inutile ! Concentrez vous ...
Agile Tour Bordeaux 2017 - Ne créez pas un produit inutile ! Concentrez vous ...
 
Agile Pays Basque 2017 - Ne créez plus un produit inutile! Concentrez vous su...
Agile Pays Basque 2017 - Ne créez plus un produit inutile! Concentrez vous su...Agile Pays Basque 2017 - Ne créez plus un produit inutile! Concentrez vous su...
Agile Pays Basque 2017 - Ne créez plus un produit inutile! Concentrez vous su...
 
Lego bonnes pratiques_devoxx_2017
Lego bonnes pratiques_devoxx_2017Lego bonnes pratiques_devoxx_2017
Lego bonnes pratiques_devoxx_2017
 
Alice in Agile Land
Alice in Agile LandAlice in Agile Land
Alice in Agile Land
 
Atelier Lego pratique
Atelier Lego pratiqueAtelier Lego pratique
Atelier Lego pratique
 
Duchess France Women in Tech
Duchess France Women in TechDuchess France Women in Tech
Duchess France Women in Tech
 

Essential skills for the agile developer

  • 1. 1 Qualités essentielles pour un développeur agile A. Barralon a.barralon@oriions.com @a_barralon
  • 2. 2 Essential skills for the agile developer : a guide to better programming and design Ionic Angular JS Spark Git Hadoop …
  • 3. 3 Essential skills for the agile developer L’informatique est non prédictive. La technologie est un outil au service du développeur.
  • 4. 4 Essential skills for the agile developer Le design et la complexité d’un système sont difficiles à cadrer en totalité en amont d’un projet. Complexité simplifiée + Design minimaliste
  • 5. 5 Essential skills for the agile developer Trim-tabs essentiels : 1. Programmation par intention 2. Séparer l’usage et la construction 3. Considérer les tests avant d’écrire le code
  • 6. 6 Programmation par intention Découpe le problème en étape fonctionnelle (bullet points) : 1 classe == 1 responsabilité • on prend une ‘commande’ à commiter • on tokenize la commande • on normalise les tokens • on traite selon les cas de la taille des tokens • on retourne le résultat
  • 7. 7 Programmation par intention Avantages : + cohésion + lisibilité + simple à débugguer + simple à réfactorer + simple à unit-tester
  • 8. 8 Séparer l’utilisation de la construction On sépare l’utilisation de l’instantiation. • création d’une instance d’un Service • on le délègue pour effectuer d’autres tâches
  • 9. 9 Séparer l’utilisation de la construction Créateurs (:type) : WHAT something IS Utilisateurs (:interface) : HOW something operates “what you hide you can change”
  • 11. 11 Définir les tests en amont Les tests et la qualité du code “je ne peux pas tester ce code…” • car il fait trop de chose entremêlées -> (problème de cohésion) • car j’ai besoin d’une douzaine d’autre chose → couplage excessif • car c’est du code copié dans pleins d’endroits et modifiés à certains points → redondance
  • 12. 12 Définir les tests en amont Les programmeurs grenouille • Planification (l’action de faire un plan d’ensemble) → écrire les specs de test • Plan (description des différentes étapes) → écrire les tests • Suivre le plan (effectuer les étapes) → jouer les tests
  • 13. 13 Conclusion Lire, c’est prendre des risques, parfois se mettre en danger. Non, ce n’est pas un acte neutre et divertissant. C’est un exercice de liberté, et nous en restons rarement indemnes. Mais une chose est certaine, palpable, et cette expérience peut être faite par chaque lecteur, nous agrandissons notre Moi, nous sortons de nos prisons mentales, nous déverrouillons notre regard sur le monde, dans l’acte de lire.

Notes de l'éditeur

  1. Bonjour, j’ai choisi ici de vous parler d’un livre et non pas d’une technologie. Ce livre s’intitule ‘Essential Skills for the agile developer : a guide to better programming and design’. C’est un livre au look carrément ringard, édité la 1ere fois en 2011. C’est sûr quand on compare avec les autres pitch de l’événement sur AngularJS, Ionic, l’API Rest, Spark, etc. ; vous pouvez vous demander ce que vous faires ici. Une blonde qui parle d’un bouquin, au secours… c’est le moment de partir à votre cours d’aqua-poney.
  2. Pourquoi j’ai choisi de présenter un livre? Car l’informatique est en constante évolution. On ne peut pas prédire le futur. On ne peut pas assumer à ce jour si TypeScript va supplanter Angular, si Ionic va faire un flop ou pas. Depuis 10 ans on spécule sur la mort du Javascript qui est présent plus que jamais. Lorsque je suis arrivée dans le monde du travail, il y a quelques années déjà, j’étais jeune , je parlais techno et versionning. Pour moi connaître le numéro de la dernière version de JAVA, Tomcat, Postgres était une manifestation de ma ‘culture ‘informatique. Je l’affichais fièrement dans mon CV. 10 ans plus tard, j’ai eu la chance de participer à un groupe de travail leadé par Julien Dollon (dev chez Microsoft puis chez Amazon US qui a fait table rase de mes grands principes pour m’ouvrir les yeux sur le fait que la technologie est un outil au service du développeur. C’est un peu comme un mécanicien. Il peut être équipé d’un tournevis manuel ou d’une visseuse électrique, s’il ne sait pas ou trouve la panne ses outils ne lui servent à rien. Le principe s’applique aussi en informatique ou un algo peu performant le restera quelle que soit la techno utilisée. C’est important de garder à l’esprit qu’on ne fait pas de choix technologique parce que c’est cool, ça le fait bien sur un CV, on a envie de se faire plaisir et de joue un peu. Mais qu’on analyse les besoins techniques pour en déduire la technologie à utiliser.
  3. Dans son livre Alan Shalloway part de ce constat : Le design et la complexité d’un système sont difficiles à cadre en totalité en amont d’un projet. Quand un besoin est recueilli, un cahier des charges est posé mais on a pas la visibilité complète sur l’ensemble du projet. On y va mais on ne maitrise pas toujours ou on va. La plupart du temps la complexité est très simplifiée et le design est minimaliste (la V1 inclut le minimum syndical pour faire fonctionner le système). Par ailleurs, en admettant que les fonctionnalités soient TOUTES analysées en amont du projet, la demande des utilisateurs et le marché font que des ajustements sont nécessaires: On se confronte à des besoins de réfactorisation (le nettoyage du code, le changement de structure en préservant le comportement) L’amélioration du système (ajout ou modification de comportement pour matcher un besoin) L’objectif étant d’avoir des coûts réduits (en terme de temps de développements) , sans effets de bord, sans bugs, sans retour arrière dans les fonctionnalités. C’est important que chaque développeur ait en tête que son code n’est pas immuable et qu’il est amené à être refactorisé, et à évoluer.
  4. En introduction du livre, Alan Shalloway pose donc 3 trim-tabs (principes fondamentaux): Trim-tabs essentiels : Programmation par intention Séparer l’usage et la construction Considérer les tests avant d’écrire le code Je vais vous les présenter rapidement.
  5. La programmation par intention consiste à découper le problème à résoudre en étape fonctionnelle (en bullet points). Un exemple de code qui parle de lui-même Par exemple : 1 classe à 1 responsabilité. L’interprétation et la compréhension rapide du code se fait comme suit : on prend une ‘commande’ à commiter on tokenize la commande on normalise les tokens on traite selon les cas de la taille des tokens on retourne le résultat Les commentaires de code sont en réalité les noms des méthodes. C’est simple, rapide et efficace. Le contraire de la politique ou à la fin de la réflexion, on ne se rappelle plus le sujet de la question posée.
  6. Les avantages sont nombreux : + cohésion + lisibilité + simple à débugguer + simple à réfactorer + simple à unit-tester
  7. Lorsqu'on a besoin d’une nouvelle fonctionnalité, on passe plus de temps à l’intégrer plutôt qu’à l’implémenter. L’ajout ou modification de fonctionnalité nécessite de changer le code client qui peut rapidement devenir un problème (source de bug, réfactoring complexe, etc.). Quand on change du code client, on doit faire attention au type des objets (sauf cas des classes abstraites). D'où l’intérêt de cacher (=d’encapsuler) l’implémentation de ces objets. Le fait de cacher l’implémentation est très important, car il permet de pouvoir la changer sans modifier les clients qui l’utilisent. Un exemple très simple. - création d’une instance d’un Service on le délègue pour effectuer d’autres tâches Même si cette façon de faire parait naturelle, c’est une erreur qu’il faut éviter. En effet la classe BusinessObject est créateur et utilisateur du service. Il faut séparer cette relation. Dans des langages fortement typés tels que Java ou C#, le mot clé new créé une instance typée d’un objet concret, en d’autre terme, ce n’est pas une classe abstraite ou une interface. Si on remplace Service myServiceObject = new Service Par : Service myServiceObject = new Service_Impl on aura une erreur de compilation.  
  8. On peut donc changer ce que l’on cache les créateurs sont couplés au type (‘new’ créé un objet concret typé ; on ne peut pas faire new ClasseAbstraite() ) -> lié à l’instantiation mémoire de l’objet WHAT something IS les utilisateurs sont couplés à l’interface (ex : web services : fournissent un API pour utiliser le service) HOW something operates   Ils doivent être utilisés séparément car les 2 partis peuvent changer pour différentes raisons. Mantra à se rappeler “what you hide you can change” → encapsulation   Garder à l’esprit qu’un changement peut entraîner des effets de bords. Donc on change une interface si et seulement si le client (qui consomme le service) a un nouveau besoin et non pas pour une implémentation spécifique du code (ou un caprice du développeur).
  9. Penser à faire du design minimal. On ne peut pas prédire si une classe va changer dans le futur. Ne pas faire de l’over-design… La pratique minimum à engager quand il n’y a pas de complexité justifiée est la recommandation suivante :
  10. Avec l’avènement des méthodes agiles, le TDD (Test Driven Developpement) a gagné de l’importance. L’un des mantra de l’agilité est que chaque ‘story’ est complète à la fin de l’itération (tests compris!). La testabilité est fortement corrélée avec la qualité du code (perte de couplage, cohésion, pas de redondance).Lorsqu’on commence les tests, on se trouve face à des problématiques de type : “je ne peux pas tester ce code…” car il fait trop de chose entremêlées” -> (problème de cohésion) car j’ai besoin d’une douzaine d’autre chose → couplage excessif car c’est du code copié dans pleins d’endroits et modifiés à certains points → redondance Il faut considérer comment le code va être testé avant de l’écrire.
  11. Comme la théorie de la grenouille de Platon, les programmeurs ne remarquent pas la dégradation de leur code. Au début les développeurs sont très vigilants et petit à petit le laxisme s’installe jusqu’au point de non retour. Il faut faire preuve de discipline. Ne pas ajouter de fonctionnalité dont on a pas besoin au moment présent.   La planification des tests se fait en 3 étapes: Planification (l’action de faire un plan d’ensemble) → écrire les specs de test Plan (description des différentes étapes) → écrire les tests Suivre le plan (effectuer les étapes) → jouer les tests
  12. EN conclusion je n’insisterai jamais assez sur l’importance de lire et le capital intellectuel que l’on se créé. Une personne qui lit en moyenne un livre par mois, elle capitalisera 10 livres sur une année. Rendez-vous compte de l’importance et du savoir qu’elle aura accumulé sur une carrière et une vie.