Upgrade to Pro — share decks privately, control downloads, hide ads and more …

La mesure, ce n'est pas que pour le devops

La mesure, ce n'est pas que pour le devops

De plus en plus de techniciens se lancent dans l'entrepreneuriat, mais leurs projets échouent trop souvent par une identification du besoin erronée, un entêtement irrationnel ou une mauvaise exécution.

La méthode Lean Startup donne des pistes pour essayer de réduire ces risques afin que la solution proposée réponde au besoin réel du client. Cette présentation décrit brièvement cette méthode, insiste sur des points négligés par les développeurs et fournit des outils à utiliser tout au long du projet.

Patrick Allaert

October 23, 2014
Tweet

More Decks by Patrick Allaert

Other Decks in Business

Transcript


  1. Personne, jamais.
    Tout a fonctionné
    du premier coup
    Personne, jamais.
    Tout a fonctionné
    du premier coup


    View Slide

  2. La métrique, ce n’est pas
    que pour le devops
    Forum PHP Paris 2014
    Olivier Garcia, Patrick Allaert

    View Slide

  3. ● CEO de catchy.io
    ● Co-créateur de www.psychologue.pro
    ● Co-organisateur de l’Agile Tour à Lille (Le 18/11, venez nombreux !)
    ● @0livier
    [email protected]
    [email protected]
    Olivier Garcia

    View Slide

  4. Patrick Allaert
    ● CTO de catchy.io
    ● Travaille avec PHP/Linux depuis '98
    ● Auteur de l'extension PHP APM
    ● @patrick_allaert
    [email protected]
    [email protected]

    View Slide

  5. Geek + Garage + ? = Profit

    View Slide

  6. Quit $EDITOR : Get out of the building

    View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. J’ai formalisé
    le Lean Startup
    Hi, I’m Eric Ries.

    View Slide

  13. ● Production par étape “Just In Time”
    ● Offre adaptée à la demande
    ● Focalisé sur la production de valeur
    ● Amélioration continue
    Lean Startup, basée sur le Lean/Toyotisme

    View Slide

  14. Vous le faites déjà (en partie)
    ● Itérations sur un projet
    ● Interactions client pour mieux cerner le besoin
    ● Scoring des stories pour prioritiser
    ● Rétrospective

    View Slide

  15. while(1) {Build(); Measure(); Learn();}

    View Slide

  16. Mesurer ce qui importe
    ● Métriques AAA

    View Slide

  17. ● Métriques AAA
    ○ Actionable
    ○ Auditable
    ○ Accessible
    Mesurer ce qui importe

    View Slide

  18. ● Métriques AAA
    ● Métriques de vanité
    Mesurer ce qui importe

    View Slide

  19. Vanité AAA

    View Slide

  20. Vanité
    ● Nombre de lignes de code
    AAA
    ● Ratio code mort

    View Slide

  21. Vanité
    ● Nombre de lignes de code
    ● Followers sur Twitter
    AAA
    ● Ratio code mort
    ● Interactions avec followers

    View Slide

  22. Vanité
    ● Nombre de lignes de code
    ● Followers sur Twitter
    ● Nombre de visiteurs
    AAA
    ● Ratio code mort
    ● Interactions avec followers
    ● Visiteurs qui s’inscrivent

    View Slide

  23. Vanité
    ● Nombre de lignes de code
    ● Followers sur Twitter
    ● Nombre de visiteurs
    ● Utilisateurs
    AAA
    ● Ratio code mort
    ● Interactions avec followers
    ● Visiteurs qui s’inscrivent
    ● Utilisateurs actifs / 6 mois

    View Slide

  24. Bonnes pratiques
    ● Mesurez (absolument?) tout !
    ● Focalisez-vous sur des métriques en fonction
    de l’avancement du projet / sa réussite

    View Slide

  25. View Slide

  26. AARRR

    View Slide

  27. AARRR

    View Slide

  28. AARRR
    A.cquisition Comment les utilisateurs viennent?

    View Slide

  29. AARRR
    A.cquisition Comment les utilisateurs viennent?
    Exemple “site de recrutement des Chemins de Fer Belges”:
    Une personne visite le site pendant plus de 2 minutes

    View Slide

  30. AARRR
    A.cquisition Comment les utilisateurs viennent?
    A.ctivation Est-ce qu’ils s’enregistrent ?

    View Slide

  31. AARRR
    A.cquisition Comment les utilisateurs viennent?
    A.ctivation Est-ce qu’ils s’enregistrent ?
    Site de recrutement:
    L’internaute complète son profil et postule pour un job.

    View Slide

  32. AARRR
    A.cquisition Comment les utilisateurs viennent?
    A.ctivation Est-ce qu’ils s’enregistrent ?
    R.etention Est-ce qu’ils reviennent/sont actifs?

    View Slide

  33. AARRR
    A.cquisition Comment les utilisateurs viennent?
    A.ctivation Est-ce qu’ils s’enregistrent ?
    R.etention Est-ce qu’ils reviennent/sont actifs?
    Site de recrutement:
    Les chercheurs d’emploi reviennent pour consulter de
    nouveaux jobs.

    View Slide

  34. AARRR
    A.cquisition Comment les utilisateurs viennent?
    A.ctivation Est-ce qu’ils s’enregistrent ?
    R.etention Est-ce qu’ils reviennent/sont actifs?
    R.eferral Font-ils venir d’autres utilisateurs?

    View Slide

  35. AARRR
    A.cquisition Comment les utilisateurs viennent?
    A.ctivation Est-ce qu’ils s’enregistrent ?
    R.etention Est-ce qu’ils reviennent/sont actifs?
    R.eferral Font-ils venir d’autres utilisateurs?
    Site de recrutement:
    1. Combien de personnes partagent-elles un job?
    2. Combien de ces partages mènent-ils à une candidature?

    View Slide

  36. AARRR
    A.cquisition Comment les utilisateurs viennent?
    A.ctivation Est-ce qu’ils s’enregistrent ?
    R.etention Est-ce qu’ils reviennent/sont actifs?
    R.eferral Font-ils venir d’autres utilisateurs?
    R.evenu Quels impacts sur le €€€ ?

    View Slide

  37. AARRR
    A.cquisition Comment les utilisateurs viennent?
    A.ctivation Est-ce qu’ils s’enregistrent ?
    R.etention Est-ce qu’ils reviennent/sont actifs?
    R.eferral Font-ils venir d’autres utilisateurs?
    R.evenu Quels impacts sur le €€€ ?
    Site de recrutement:
    Combien de personnes ont-elles été engagées? … et ce pour plus de 6 mois?

    View Slide

  38. Outils de récolte de métriques

    View Slide

  39. Le plus connu?

    View Slide

  40. Google Analytics

    View Slide

  41. Google Analytics - Mise en place
    <br/>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject' ]=r;i[r]=i[r]||function(){<br/>(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement (o),<br/>m=s.getElementsByTagName (o)[0];a.async=1;a.src=g;m.parentNode.insertBefore (a,m)<br/>})(window,document,'script','//www.google-analytics.com/analytics.js' ,'ga');<br/>ga('create', 'UA-XXXX-Y' , 'auto'); // Creates a tracker.<br/>ga('send', 'pageview'); // Sends a pageview.<br/>

    View Slide

  42. Google Analytics - Dashboards standards

    View Slide

  43. View Slide

  44. View Slide

  45. View Slide

  46. View Slide

  47. Google Analytics - Surveiller des évènements

    View Slide

  48. Google Analytics - Surveiller des évènements
    ga('send', 'event', 'category', 'action');
    ga('send', 'event', 'category', 'action', 'label');
    ga('send', 'event', 'category', 'action', 'label', value); // value is a number.

    View Slide

  49. Google Analytics - Surveiller des évènements
    ga('send', 'event', 'user', 'register');
    ga('send', 'event', 'category', 'action', 'label');
    ga('send', 'event', 'category', 'action', 'label', value); // value is a number.

    View Slide

  50. Google Analytics - Surveiller des évènements
    ga('send', 'event', 'user', 'register');
    ga('send', 'event', 'user', 'apply_job', 'job_123');
    ga('send', 'event', 'category', 'action', 'label', value); // value is a number.

    View Slide

  51. Google Analytics - Surveiller des évènements
    ga('send', 'event', 'user', 'register');
    ga('send', 'event', 'user', 'apply_job', 'job_123');
    ga('send', 'event', 'user', 'share_job', 'job_123', 3); // value is a number.

    View Slide

  52. View Slide

  53. Google Analytics
    Créer des dashboards personnalisés: Embed API
    Démo en ligne:
    http://ga-dev-tools.appspot.com/demos/
    https://github.com/googleanalytics/embed-api-demos

    View Slide

  54. View Slide

  55. Google Analytics Query Explorer
    http://ga-dev-tools.appspot.com/explorer/

    View Slide

  56. View Slide

  57. Google Analytics Query Explorer

    View Slide

  58. Google Analytics Query Explorer

    View Slide

  59. Google Analytics Query Explorer

    View Slide

  60. Google Analytics Query Explorer

    View Slide

  61. View Slide

  62. Google Analytics Query Explorer

    View Slide

  63. View Slide

  64. View Slide

  65. Google Analytics
    Créer des dashboards personnalisés: Embed API
    {
    ids:
    "ga:6172121",
    dimensions:
    "ga:date,ga:eventCategory",
    metrics:
    "ga:totalEvents",
    filters:
    "ga:eventCategory==Account creation",
    start-date:
    "2014-09-01",
    end-date:
    "2014-10-01"
    }

    View Slide

  66. Le plus en vogue?

    View Slide

  67. StatsD + Graphite

    View Slide

  68. StatsD + Graphite
    Application

    View Slide

  69. StatsD + Graphite
    Application StatsD
    UDP

    View Slide

  70. StatsD + Graphite
    Application StatsD
    UDP

    View Slide

  71. StatsD + Graphite
    Application StatsD
    UDP
    inc(login)

    View Slide

  72. StatsD + Graphite
    Application StatsD
    UDP
    inc(login) echo "login:1|c" |
    nc -w 1 -u graphite.
    example.com 8125

    View Slide

  73. StatsD + Graphite
    Application StatsD
    UDP
    inc(login)
    inc(login)

    View Slide

  74. StatsD + Graphite
    Application StatsD
    UDP
    inc(login)
    inc(login)
    inc(register)

    View Slide

  75. StatsD + Graphite
    Application StatsD
    UDP
    inc(login)
    inc(login)
    inc(register)
    duration(search,
    200ms)

    View Slide

  76. StatsD + Graphite
    Application StatsD
    UDP
    inc(login)
    inc(login)
    inc(register)
    duration(search,
    200ms)
    inc(login)

    View Slide

  77. StatsD + Graphite
    Application StatsD
    UDP
    inc(login)
    inc(login)
    inc(register)
    duration(search,
    200ms)
    inc(login)
    duration(search,
    300ms)

    View Slide

  78. StatsD + Graphite
    Application StatsD
    UDP
    inc(login)
    inc(login)
    inc(register)
    duration(search,
    200ms)
    inc(login)
    duration(search,
    300ms)
    duration(search,
    100ms)

    View Slide

  79. StatsD + Graphite
    Application StatsD
    UDP
    inc(login)
    inc(login)
    inc(register)
    duration(search,
    200ms)
    inc(login)
    duration(search,
    300ms)
    duration(search,
    100ms)
    10 secondes:
    inc(login, 3);
    inc(register, 1);
    duration( search, 3, {
    min: 100,
    max: 300,
    avg: 200,
    mean: 200
    });

    View Slide

  80. StatsD + Graphite
    Application StatsD
    UDP
    inc(login)
    inc(login)
    inc(register)
    duration(search,
    200ms)
    inc(login)
    duration(search,
    300ms)
    duration(search,
    100ms)
    Graphite
    TCP
    10 secondes:
    inc(login, 3);
    inc(register, 1);
    duration( search, 3, {
    min: 100,
    max: 300,
    avg: 200,
    mean: 200
    });

    View Slide

  81. StatsD + Graphite
    Graphite

    View Slide

  82. StatsD + Graphite
    Graphite
    24h:
    /10 secondes

    View Slide

  83. StatsD + Graphite
    Graphite
    24h:
    /10 secondes
    2 semaines:
    /1 minute

    View Slide

  84. StatsD + Graphite
    Graphite
    24h:
    /10 secondes
    2 semaines:
    /1 minute
    6 mois:
    /10 minutes

    View Slide

  85. StatsD + Graphite
    Graphite
    24h:
    /10 secondes
    2 semaines:
    /1 minute
    6 mois:
    /10 minutes
    5 ans:
    /1 heure

    View Slide

  86. StatsD + Graphite
    Graphite
    24h:
    /10 secondes
    2 semaines:
    /1 minute
    6 mois:
    /10 minutes
    5 ans:
    /1 heure

    View Slide

  87. Outils de visualisation Graphite
    ● Grafana
    ● Tessera
    ● Graphiti
    ● Giraffe
    ● Graphene
    ● … plus sur: http://graphite.readthedocs.
    org/en/latest/tools.html#visualization

    View Slide

  88. Grafana

    View Slide

  89. Tessera

    View Slide

  90. Et les autres…

    View Slide

  91. Et les autres…
    ● Mixpanel
    ● Pirate Metrics
    ● KISSmetrics

    View Slide

  92. En résumé
    Le succès dépend d’un feedback mesurable.

    View Slide

  93. En résumé
    Le succès dépend d’un feedback mesurable.
    LeanStartup et AARRR donnent des pistes
    pour s’appuyer sur des métriques fiables.

    View Slide

  94. En résumé
    Le succès dépend d’un feedback mesurable.
    LeanStartup et AARRR donnent des pistes
    pour s’appuyer sur des métriques fiables.
    Il existe des outils facilement intégrables en
    PHP pour créer ces indicateurs.

    View Slide

  95. Merci
    https://joind.in/11937 http://lanyrd.com/sddybk

    View Slide

  96. Credits
    www.flickr.com/photos/kk (Lil’ pirates)
    www.flickr.com/photos/betsyweber (Eric Ries)
    www.flickr.com/photos/highersights (Listen...)
    www.flickr.com/photos/[email protected]/4228976596 (Geek)
    www.flickr.com/photos/phobia (Fail Stamp)

    View Slide