slidenumbers: true
#[fit]15 minutes avec l'équipe Caradisiac
^ G-S Bonjour; voici 15 minutes avec l'équipe Caradisiac
^ S discours off pates
^ [G] Maintenant, je vous invite à rechercher Caradisiac, non pas sur Google Images parce que vous allez avoir du NSFW mais plutôt sur Google Play et sur l'App Store.
- Pôle d'Expertise Mobilité - Xebia Studio
- Sprints Scrum d'une semaine
- Services Web gérés en interne par le client
- La recette gérée par le client
- Application sortie et bien notée
^ [G]
Mais ce qu'il faut retenir [citer]
Le projet s'est plutÔt bien déroulé dans l'ensemble malgré la non agilité évidente de notre PO qu'on a tenté de remettre sur le droit chemin à plusieurs reprises
^ [G] Le plan... Alors on a parlé de plein de trucs cools
<La flemme, Personne lit ça>
https://twitter.com/viteinfinite
https://plus.google.com/+GautierMechling
^ [G]
Et on va se présenter
Lui c'est Simone, il fait de l'iOS
Et moi Gautier sur Android
On est consultant chez Xebia
^ [G]
C'est un projet Studio supervisé par François Laurain
On a un interlocuteur de leur côté, le PO
J'ai pas trouvé de photo de notre PO, mais il ressemble un peu à un ours mignon donc voila, c'est lui
^ [G] Ou peut-être juste qu'il y avait pas le budget.
^ Au final Caradisiac c'est un contrat Studio avec CarAndBoat qui édite entre autres l'application LaCentrale sur 1 an où Xebia doit developper et maintenir leurs applications mobiles
C'est plutôt cool
^ [G] Qui est l'heureux gagnant ?
D'ailleurs il est dans la salle ou pas ? (chercher dans la salle)
Non... normal on en avait pas
En vrai on est le rêve des coachs agiles, l'équipe auto-organisée
Une chose pas plus mal c'est notre coach agile
^ S Allo? ipad Mamma envoyé 3kg de pâtes
^ [G] Pour Android, on est parti d'une application PhoneGap tellement pourrie qu'ils ont décidés de tout refaire de zéro
^ Et c'est pas plus mal
^[S]
^[S] Objectif c'était d'adapter l'application iPad à la taille de l'iPhone
^[S] Le client voulait créer des applications comme celles-ci
^ [S]
^ [S]
^ [S]
^ [S] et une rétro de fin sprint très intense
^ [S] Généralement on fait un daily tous les jours Avec plein de monde
^ [S]
^ [S]
^ [S]
^ [S] Oui Excel, l'outil agile
^[S]
Au niveau de la méthodo, on a pris le choix de tout piloter par Excel
[G]
- "éxel", pas "ixel"
^[S]
- et le déploiement chez le client est au top, dans le respect des meilleures méthodologies DevOps
^[G] Je le connais lui !
^[S] ...savoureux
^[S] La qualité du code de l'appli cliente ne nous preoccupe pas trop car le code des WS est [savoureux]
^[S]
^[S] Finalement le binaire est deploié sur la plateforme de distribution d'applications Xebia
^[S] Nous avons mis en place un serveur de mock avec Node
^[S]
^[S] et fonctionnels
^[S] executer les tests unitaires
^[S] À l'interieur d'un job Jenkins qui s'occupe de
^[S] Mais heureusement qu'on a des bons outils Notre usine logicielle recupère le code depuis BitBucket
^ [S] Pour la créer il faut récuperer du JSON...
^ [S] Comme par exemple dans cette page de détail
^ [G] Dans certains écrans de l'application, il faut appeler jusqu'à 9 services en même temps pour avoir les bonnes informations -STOP-
^ [G] Voila c'est cet espèce de truc super galère à parser qu'on a en permanence
^ [G] Non pas ça
Actuellement
<result>
<_connexion_db>OK</_connexion_db>
<_erreurs/>
<_data>
<tag label="Clio 3" url="modele--renault-clio-3">
<tag label="Renault" type="brand"/>
<tag label="Clio" type="model"/>
<logo path="/logos-ref/modele">modele--renault-clio-3.jpg</logo>
</_data>
</result>
- Nom: tag[type="brand"] + " " + tag[url=""]
- Image: "http://images.caradisiac.com" + logo[path] + "/S5-" + logo
^ [G]
En vérité c'est plutôt comme ça
Il faut retrouver dans le XML plein de valeurs et les concaténer entre elles
[expliquer concatenation]
Et encore, on a simplifié pour l'exemple parce qu'en vrai c'est plutôt ça
Idéalement
<model name="Renault Clio 3"
image="logos-ref/modele/modele--
renault-clio-3/S5-modele--renault-clio-3.jpg" />
^ [G]
Et puis tant qu'à faire, autant les rendre super compliqués à utiliser
Idéalement pour l'écran suivant j'ai besoin d'un WS avec champ pour le nom du modèle : "Renault Clio 3" et l'url de l'image
Normal quoi
<commentaire>
<line>
Salut <smiley mnemo=":hello:"/> les gamins <smiley mnemo=":lol:"/> !
</line>
</commentaire>
? Connaît pas
^ [G]
En plus de ça leurs WS XML sont invalides
Ils contiennent des tags à des endroits qui ne devraient pas en contenir
Ça serait trop facile sinon
- REST-like (mais pas RESTful)
- XML + JSON
- content-type="text/plain"
- Tous les services sont en XML
- La moitié aussi dispo en JSON
- 1 WS est en JSON uniquement
^ [G]
- Leurs services web, on va dire qu'ils sont en REST
- Avec un content-type incorrect sinon ça serait trop simple
- Tous leurs services web sont en XML sauf 1
- Du coup t'es obligé côté code de faire une stack qui gère à la fois XML et JSON
^ [G] Par contre un truc qu'on aime pas, c'est leurs Services Webs
^ [G] Mais bon c'est le client, c'est lui qui nous paye et du coup on l'aime bien quand même.
^ [G] Et me fait EXACTEMENT le même coup la semaine d'après
^ [G] Il teste que dalle pendant 1 mois, reporte la release parce qu'il teste le jour même
^ [G] Je me fais chier à sortir son app dans les temps (qui sont déjà ultra courts)
^ [G]
Résultat : Release Android reportée d'un sprint
Vous imaginez ma réaction
^ [G] Ça c'est un peu la réaction de notre PO quand il s'est rendu compte qu'une story correspondait pas à ce qu'il attendait pendant cette recette. Bien sûr il avait pas écrit les BDD de ce qu'il souhaitait vraiment et avait validé la story il y a 1 mois de cela
^ [G] Et le jour de la release Sinon c'est pas drôle
^ [G - S] "La recette : 10 minutes !"
^ [S]
^ [G] Oui
^ [S]
^ [G] Non
^ [S]
^ [G] Non
^ [S] ...et nous on fait pas de recette d'un sprint
^ [G] Non
^ [S] Nous sommes agiles...
^ [S]
^ [S] ...et la rétro de fin projet
^ [S] ...comme nous aimons les pratiques agiles
^ [S] Eh oui, Caradisiac aime la pub
^[S] ...partout
^[S] ...partout
^[S] ...partout
^[S] Au fait... Il y a de la pub partout
^ [S] Une grande histoire d'amour... Mais comme beaucoup d'histoires d'amour, elles peuvent mal tourner
^ [S] Au fait la pub chez Caradisiac c'est plutôt grande histoire d'amour
^ [S] Dont la pub!
^ [S] Les commentaires positifs c'est surtout grâce aux fonctionnalités exclusives de l'application
^ [S] Linette; le DP s'appelle Aline, probablement un homonyme
^ [G] Ou pas
^ [S] Voici d'ailleurs quelques commentaires sur les stores A tel point qu'elle apparaît même dans les captures d'écran du store
^ [S] Vous serez étonnés mais malgré l'icône nous avons même eu des commentaires positifs
^ [S] Bannières dans les screenshots
^ [S]
^ [G] Qui a installé l'application ?
^ [S] Bon, personne. Ca fait plaisir, merci.
^ [G] Aujourd'hui, on va vous parler de Caradisiac, une application native de news auto (comme turbo ou auto plus) qu'on a réalisé et qu'on a sorti dernièrement
^ [G] Mais merci d'être venus si nombreux
^ [S] Même si vous aviez pas trop le choix
^ [G] Vous êtes vraiment un public formidable
^ [G] OK, On aura pas le temps pour les questions