Le résumé des épisodes précédents

Bonjour, je suis Pierre Benayoun, développeur indépendant à Bordeaux. 

Je travaille depuis un peu plus d’un an sur des applications Android liées à l’Activity Tracking (actimétrie en Français).

Depuis fin mars,  je travaillais sur une nouvelle version de mon application Fit Plus. L’objectif principal était de passer d’un simple prototype à quelque chose de plus consistant avec des fonctions d’analyse de l’activité par exemple. J’avais prévu d’y passer une semaine.

L’essentiel fut assez rapide à mettre en place. Reste que la liste des choses restantes était énorme et les contretemps (dont la nouvelle version de Google Fit) nombreux.

Au final je n’ai livré cette version que le 31 juillet. Soit 4 mois après. Comment en est-on arrivé là ?

Le GIF qui résume ma semaine

Comme promis depuis un moment un retour sur la dernière version de Fit Plus.

Comment une simple mise à jour de version prévue pour une semaine peut prendre quatre mois ?

Quand on part dans l’inconnu, on ne peut pas dire qu’on rentrera pour le diner

Résumons :

  • Je travaille depuis début 2014 sur l’actimétrie
  • Début 2015 je décide de jouer avec l’API Google Fit. Cette brique logicielle qui me permet d’explorer les données recueillies par l’application Google Fit.
  • Première étape : Fit Plus une petite application qui permet d’afficher simplement des données de Google Fit avec quelques statistiques ( plus de détails ici)
  • Fin mars j’ai finalisé un petit prototype et je compte livrer une nouvelle version la semaine qui suit. Cela sera le cas au final fin juillet. 4 mois plus tard

Mais pourquuuuoooiiii ?

Une startup/appli indé c’est un projet ou les incertitudes sont légion.

On ne peut donc maitriser son emploi du temps. Je me suis attaqué à un beau défi et penser le résoudre en une semaine était très présomptueux.

Voici les six challenges que j’ai dû affronter et qui expliquent ces quatre mois.

Challenge 1 : le piège du développeur

À l’origine cette version ne devait rajouter que quelques fonctionnalités.  Je suis tombé dans le piège du développeur : en rajouter au fur et à mesure du développement. C’est un très bon moyen d’exploser les timings.

Le problème n’est d’ailleurs pas tellement été de tester des fonctionnalités. le problème est de de le faire en permanence avec l’illusion que cela pourrait être intégré facilement et sans VRAIMENT réflechir au benefice final pour l’utilisateur.

On s’amuse mais on alourdit l’application en perdant du temps. Pas très malin.

Challenge 2 : Une application n’est complète que si l’utilisateur la comprend

Même s’il faut savoir se limiter sur les fonctionnaliAnd tés cela ne veut pas dire que l’application doit être aride.

Mon prototype était vraiment brut de pomme. On lance l’application -> PAF un écran pour se connecter à Google Fit -> PAF on a la page des résultats.

Après un échange avec un collège je me suis rendu compte qu’il fallait à minima rajouter une page expliquant le but du jeu de l’app et pourquoi on se connecte à Google Fit. Une page « à propos » (ne serait-ce que pour remercier la région Aquitaine pour son soutien) était aussi nécessaire.

Dans un monde idéal votre application est tellement bien conçue que tout s’enchaîne naturellement et le pourquoi du comment de chaque fonctionnalité apparait naturellement à l’utilisateur. Mais c’est extrêmement difficile. Une petite intro n’est pas parfaite mais vaut mieux que rien, croyez-moi.

Ceci dit l’avantage c’est que le travail est capitalisé : je n’ai pas à tout revoir pour une nouvelle version/application.

Challenge 3 : Un concurrent fait la même chose que vous

C’est encore plus drôle quand c’est Google et que cela arrive deux fois.

Mi-mai donc Google Fit sortait sa nouvelle version. Elle faisait grosso modo ce que je comptais faire avec… la mienne. Il a fallu revoir pas mal de choses ce qui a évidemment fait « perdre » du temps. Je dirai un mois à la louche.

C’est une chose à laquelle il faut se préparer, à n’importe quel moment vous pouvez tomber sur une application qui fait la même chose que vous. C’est le jeu, il n’y a pas d’échappatoire.

On ne peut prévoir l’imprévisible, mais on peut se préparer à effectuer des changements radicaux :

  • Prévoir une ou deux fonctionnalités en tant que plan B (et ne surtout pas les coder de suite)
  • Faire en sorte que le logiciel soit assez souple pour pouvoir être modifié radicalement en cas de besoin. Bien plus facile à dire qu’à faire certes mais le savoir dès les premières lignes de code aide.

Challenge 4 : « Material » sexy, mais buggé

Appliquer le nouveau design Material de Google va de soi quand on travaille sous Android.

 

Dans l’absolu pourquoi pas, le style est sexy et Google donne (gratuitement !)  tous les guides et outils pour l’utiliser. Il a de plus l’avantage de permettre aux utilisateurs de trouver une interface familière, quelle que soit l’application.

De plus sa sobriété permet de ne pas avoir de solides notions artistiques pour l’appliquer. Ainsi si vous voulez afficher l’heure vous écrivez : « 20H15 », vous ne créez pas une reproduction de jolie horloge.

Mais ce fut « un peu » plus compliqué que prévu.

Si vous voulez que le style soit appliqué sur un terminal qui n’a pas au moins lollipop (soit environ …80 % ) vous vous apercevez que Google ne vous donne pas tous les outils et que certains sont buggés.

On perd donc pas mal de temps; je me suis ainsi retrouvé à utiliser une librairie (un brin buggée elle aussi) pour afficher en haut de ma page : « aujourd’hui », « semaine » et « mois ». Résultat : deux semaines après  Google sortait l’officielle…

Un bon moyen de perdre du temps donc.

L’avantage est que les choses sont en perpétuelle amélioration : depuis que j’ai commencé à programmer sous Android on a eu 29 nouvelles versions….oui 29. Mais le rythme des nouvelles versions baisse et les changements sont de plus en plus mineurs. Ce genre de désagréments a donc tendance à être moins fréquent et à avoir moins d’impact.

Challenge 5 : Google Fit puissant, mais peu intuitif

Passons au coeur du logiciel : les données de Google Fit.

Google met donc à dispo gratuitement une API qui permet de consulter ses données. Parfait ? Pas encore.

Mon premier prototype demandait grosso modo à Google Fit : « donne-moi les pas pour aujourd’hui ». Facile.

La volonté d’avoir des statistiques du type : le jour ou j’ai le plus marché, la semaine ou j’ai parcouru la plus petite distance, etc. a demandé un travail que je ne soupçonnais pas.

Il a fallu construire une architecture pour demander à Google Fit (et stocker dans la mémoire) une multitude de données et les consulter par jour, semaines et mois.

Cela n’a vraiment pas été simple. Le langage utilisé pour programmer sous Android est le Java. La version utilisée n’est pas encore capable de manipuler le type de données que je stocke contrairement à certains langages comme Scala.  Donc il faut faire pas mal de choses sois-même. C’est long, fastidieux et source d’erreur.

D’autant plus que la plateforme Google Fit n’est pas encore mature et souffre donc de quelques bugs et de problèmes de performances. Ainsi par défaut l’API ne donne pas le bon nombre de pas, il faut écrire 5 lignes de code dénichées sur un forum pour avoir le bon nombre pour une période donnée.

Problème de performance aussi : je me suis aperçu en cours de développement que mon application mettait plus d’une minute pour accéder à toutes les données dont j’avais besoin…quand je ne perdais pas la connection avec Google Fit au milieu de ma requête. Cela impacte bien sûr sur le temps de développement.

Heureusement la page Google + consacrée à Google Fit est animée par les développeurs de Google Fitet on a donc assez rapidement des réponses à ses problèmes. Et l’équipe débugge petit à petit l’application. Le plus dur est fait !

Challenge 6 : Trouver des données c’est bien, savoir quoi en faire c’est mieux.

C’est peut-être le coeur du problème. Google Fit met à disposition le temps, les pas, la distance parcourue, les calories dépensées pour au moins quatre activités telles que la marche, la course, le vélo ou le temps en véhicule, et ce depuis que l’utilisateur utilise le système de monitoring de Google. On a déjà pas mal de choses à afficher.

Si l’on ajoute des statistiques (plus grande distance parcourue par exemple) sur des périodes différentes (par jour, mais aussi hebdomadaire et mensuelle) cela en multiplie les possibilités.

Si l’on veut faire des graphes, que j’ai lâchés en route, des analyses, cela peut prendre du temps…beaucoup. C’est à mon avis la cause principale de ces quatre mois.

D’une part et tout simplement, car pour afficher 25 infos c’est un casse-tête. J’ai fait de nombreux, nombreux essais dont ne voici que quelques exemples:
screenshot !device-2015-07-07-140216device-2015-07-29-094741

 

 

 

 

 

 

Avant d’arriver à ceci :
device-2015-07-31-133809Et chaque essai peut prendre un temps fou parce que cette satanée icône veut pas s’aligner avec le titre ou que tel texte déborde un peu trop.

Mais surtout parce qu’on n’a pas trouvé la méthode miracle pour afficher les infos efficacement.

L’actimétrie est un domaine ou les données sont si nombreuses, donc, qu’on peut s’y perdre.

Il n’y a pas à ma connaissance aujourd’hui d’application qui a trouvé la recette magique pour afficher exactement l’information pertinente. La plupart affichent tout simplement les données à leur disposition. On a beau rajouter de jolis graphes ce n’est pas forcément pertinent.

J’ai voulu faire autre chose : ajouter plus de statistiques, mais aussi une analyse, une projection sur l’avenir avec l’estimation des données en fin de journée par exemple. Je me suis donc retrouvé à faire de la R&D une bonne partie de mon temps.

Cela a pris beaucoup de temps mais il n’est pas perdu.

J’ai conscience que je suis au milieu du chemin. Mais j’ai des idées intéressantes pour la suite, on en parle la semaine prochaine.

Pour télécharger mon app (et vous faire votre propre avis)

Fit Plus
Libérez vos données Google Fit™ avec Fit Plus !Fit Plus est le meilleur moyen de gérer vos données sous Google Fit :- Données cachées à propos du temps en véhic...
Le Cabinet Numérique 0

Pour me suivre

LE JOLI FEED RSS