Débat : les apps mobiles doivent-elles être plus optimisées et contrôlées ?

Mathieu Chartier Autour du web 1 commentaire

Les applications mobiles et leurs problèmes d'optimisation

Les applications mobiles sont de plus en plus nombreuses sur le marché mais une grande majorité d'entre elles souffrent généralement des mêmes maux, à savoir des optimisations douteuses voire des problèmes de compatibilité. Au même titre que les pages web avec le W3C, les apps mobiles devraient-elles aussi être contrôlées et mieux programmées ?

La problématique est posée, le débat est lancé, et je ne vous cache pas que j'y réfléchis depuis un bon moment. Je risque mettre en colère bon nombre de développeurs d'applications mobiles mais aussi de convaincre moult détracteurs. Mon objectif n'est en aucun cas de diviser, ni d'apporter une vérité générale, ce n'est que ma vision des choses avec des arguments et contre-arguments, l'idée est plutôt de trouver le juste équilibre pour qu'on se pose les bonnes questions.

Après un bref constat du monde mobile, nous verrons les arguments "pour" et "contre" qui peuvent se contrebalancer autour de la problématique. Comme je n'ai pas la science infuse et que je ne peux pas penser à tout, il est fort probable que des arguments aient été omis dans les deux catégories. C'est tout là l'intérêt du débat, vous pourrez vous-même apporter vos lumières. :D

Constat du marketing mobile

Le mobile constitue un fort attrait pour les entreprises et marques car il s'agit avant tout d'un objet marketing par excellence. Mobilité, Push en direct, SMS, connexions avec d'autres applications (notamment en développement natif), GPS, photos et vidéos (...) sont tant de qualités propres aux smartphones et tablettes que de nombreuses entreprises y voient une bonne occasion de "tracker" leurs prospects et clients à longueur de journée.

Cette forte empreinte marketing prêtée au monde du mobile explique en grande partie le succès des smartphones et tablettes, au-delà même des aspects pratiques qui nous plaisent dans ces objets. De ce fait, l'idée de génie d'Apple a été de créer des applications pour iOS, reprise depuis par l'ensemble des concepteurs d'OS mobile. Ces applications fourmillent de possibilités pour les marketeurs, et toute application quelque peu innovante peut faire sauter la tirelire. Par exemple, au moment où j'écris ces lignes, c'est l'application Pokémon Go de Nintendo qui est en train de déferler la chronique, grâce à son idée intelligente de mêler réalité et chasse virtuelle aux Pokémons (de la réalité "augmentée" en somme). Croyez-vous que Nintendo ne veut pas gagner d'argent derrière cela ? :D

Quid de la confidentialité et de la vie privée ?

Dans le jargon marketing, le suivi marketing continuel s'appelle le Big data. Dans la vie de tous les jours, on considère plutôt qu'il s'agit d'une intrusion dans la vie privée. Tous les objets connectés, dont les smartphones font partie, posent le même problème de sécurité et de protection de la vie privée. Mais qu'importe, il faut penser marketing avant tout, et vendre, beaucoup, souvent, et répéter ça jusqu'à épuisement. Alors la vie privée et la confidentialité, on s'en fout un peu quand on doit vendre, même si ça fait bien de dire "qu'on respecte les gens". ^^

Bref, quitte à savoir à quelle heure nous allons aux toilettes ou les endroits où nous aimons dormir la nuit, le Big data nous accompagne. Pour ma part, je n'ai rien contre le fait qu'un outil en ligne ou connecté utilise des données pour se parfaire et donc pour nous aider encore davantage par la suite. Mais si c'est utilisé pour tracker et faire uniquement du Push, c'est pauvre voire nul (mais très courant !). Google, souvent critiqué, en est un exemple. Grâce aux masses de données qu'il a récolté, le moteur de recherche nous permet d'obtenir des résultats souvent plus pertinents, mais aussi de profiter d'outils excellents comme Google Maps.

Le constat est là, les applications se multiplient et la création d'objets (souvent gadgets ?) connectés aussi. Mais dans tout ça, les performances de ces apps mobiles sont souvent sujettes à débat tant elles vacillent. Qui n'a jamais entendu parler d'un smartphone "ancien" (2 ans c'est vieux dans le monde du smartphone, un comble quand on voit le prix de départ et les capacités des engins...) qui n'arrive plus à faire tourner certaine application ou qui rame comme jamais ? Qui n'a jamais entendu une personne dire que telle ou telle app mobile s'arrête toute seule sur Android ou iOS ? La terre entière se moque de Microsoft et Windows, mais ce n'est pas parce que c'est du Apple ou du Google que c'est toujours mieux, et les applications mobiles nous le prouvent tous les jours... :D

Quel est le niveau des développeurs ?

Les intégrateurs et webdesigners qui pratiquent couramment l'HTML et le CSS savent que les grandes règles édictées par le W3C sont généralement à appliquer pour que tout fonctionne à merveille. Les développeurs PHP, Javascript, Python, Java, Perl (...) savent également que des conventions d'écriture et de syntaxe sont à respecter pour fournir des programmes plus compréhensibles, efficaces et maintenables. Toutefois, aucune association comme le W3C ou aucun système de contrôle ne permet de dire que c'est plus ou moins bien programmé dans ces langages (Java impose tout de même une certaine rigueur). Qu'en est-il des applications mobiles avec du C# ou encore du Java ? En théorie, les mêmes règles s'appliquent et pourtant, on ressent comme une forme d'anarchie dans ce milieu.

Loin de moi l'idée de vouloir mettre en langage plus en avant qu'un autre, cela revient à faire un "combat de quequettes" inapproprié, sachant que chacun a des qualités et des défauts qui lui sont propres (Javascript est bourré de défauts, et pourtant, c'est un langage incontournable dans bien des cas) et que tous peuvent être parfaits pour tel ou tel usage. De même, les conventions d'écriture et de syntaxe relatives à chaque langage sont plutôt bonnes, il suffit juste de les connaître et de les suivre au mieux pour conserver une forme compréhensible par tous. Malheureusement, il reste des lacunes à combler, encore plus présentes dans le développement mobile :

  • La formation des développeurs est-elle adaptée et bien acquise ? Qu'on soit autodidacte ou non, nous pouvons vraiment être de bons développeurs mais il faut s'en donner les moyens. Souvent, les critiques faites contre les langages "laxistes" comme PHP proviennent de ce manque de formation. Le langage en lui-même est bon, mais s'il est codé avec les pieds (voire avec seulement les talons...), le résultat est rarement probant. ^^
  • Ces langages manquent-ils de contrôle interne ? Devraient-ils être moins permissifs pour forcer les développeurs à être rigoureux (le comble...) ?
  • Devrait-il exister un organisme comme le W3C pour chaque langage, avec des validateurs de code ?

La réponse est certainement dans un peu tout ça, mais je reste persuadé que le principal défaut des programmes mobiles provient essentiellement du développeur. Bien sûr, chaque développeur se considère toujours meilleur que son voisin, donc il faut aussi savoir se regarder dans un miroir, faire son auto-critique et de fait, progresser ! Il est temps pour nous de débattre...

Développement d'apps mobiles

Oui, il faut davantage d'optimisation et de contrôle

Les applications mobiles ont un côté obscur qui évite toute transparence, contrairement aux langages côté client que l'on retrouve dans les pages web standards. Par conséquent, on peut programmer n'importe comment et n'importe quoi sans vraiment avoir à justifier qu'on le fait bien ou non. Cette opacité de développement explique peut-être en partie le manque d'optimisation très marqué de certaines apps mobiles.

S'il existe des malfaçons dans le BTP, il y en a au moins autant dans le monde informatique, alors ne nous voilons pas la face, il y a beaucoup de travail à faire pour améliorer nos programmes. Si vous avez une bonne équipe de développeurs, votre application mobile sera donc parfaitement développée, mais si vous avez une équipe de bras cassés ou de je-m'en-foutistes, le résultat peut être sévère.

Alors oui, il faut davantage de contrôle de la part de "app stores" ou de marques comme Apple et Google. Oui, il faut davantage optimiser les applications pour éviter d'avoir un smartphone jetable au bout de deux ans d'utilisation. Oui, il faut commencer à se regarder en face et à coder proprement comme on le fait dans d'autres langages, en arrêtant de profiter de l'opacité du code pour dissimuler des fautes aberrantes.

Je prends un exemple simple que je vis au quotidien. Je possède actuellement un Samsung Galaxy S3 daté de 2012 (vendu encore près de 200€ en moyenne), qui offre 1Go de Ram et un processeur Quad Core cadencé à 1,4Ghz, tout cela sous Android 4.3. Loin d'être pathétique sur le papier pour lancer de petites applications. Parallèlement, je me suis doté d'une tablette Teclast X98 Air 3G qui offre 2Go de Ram et également un Quad Core 1,33Ghz (avec boost à 1,83Ghz) offrant un Windows 10 et un Android 5.0. Si on y regarde de près, ce n'est pas le très haut de gamme hors de prix, mais c'est plus que correct sur le papier en tout cas.

Comment expliquez-vous que ce matériel n'arrive pas à faire tourner certaines applications mobiles simples sans ramer ? Si on prend le cas du jeu Candy Crush Saga par exemple, ce n'est pas du Battlefield graphiquement, donc normalement, ça vaut l'équivalent d'un Tetris plus puissant, qui tournait jadis sur une Gameboy. Et beh les développeurs font forts, il arrive à faire ramer le jeu ! Je ne parle pas du cas de Fifa 16 qui est tout bonnement injouable si vous ne possédez pas un octa-core avec 4Go de Ram, alors que le graphisme proposé s'approche davantage d'un Fifa 2008 en gros. Mais il y a mieux, car on peut comprendre que ça tire sur la corde pour des jeux vidéo, qu'en est-il des applications courantes ? C'est bien simple, les Facebook, Twitter, Instagram, SnapChat et consorts tirent de plus en plus sur la Ram. Le pire est certainement l'infâme Periscope, un gouffre de performance qui semble ne choquer personne. :D

En d'autres termes, trouvez-vous normal qu'il faille posséder un smartphone très haut de gamme pour faire tourner... Periscope et Candy Crush ? Si on vous disait de devoir posséder une PS4 pour lancer Mario Bros, ça ne vous choquerait pas ? Si on vous disait de posséder le futur téléviseur 8K de LG (UH9800) pour lancer LCI en SD, ça vous irait ? J'ai volontairement pris des caricatures, mais le constat est là, et bien là, il y a un manque flagrant d'optimisation et de calcul des performances sur mobiles. Tant que ça rapporte, peu importe si ça embête l'utilisateur, c'est un peu ce qui semble se passer ! Cela a existé dans le web et nous avons réussi à contrecarrer ce problème, il serait peut-être temps d'en faire de même avec les apps mobiles car les consommateurs ne vont pas supporter bien longtemps ces ressentis désagréables...

Non, il faudrait déjà des mobiles fiables !

On peut aussi se positionner du côté des développeurs mobiles (je vous le rappelle, ils sont meilleurs que leurs voisins eux aussi), qui n'arrivent pas forcément à voir les défauts de leurs programmes. Et quand bien même ils développeraient proprement, il peut arriver que des optimisations puissent être apportées pour améliorer encore davantage le rendu final (par exemple, nombre de programmes sont récursifs alors qu'une dérécursification peut accélérer les processus considérablement). Toutefois, à leur corps défendant, les OS mobiles sont souvent la cause des problèmes.

Prenons le cas du magnifiquement bogué Android 5.0 Lollipop, bon nombre d'applications, pourtant compatibles avec cette version de l'OS de Google, plantant tout simplement. La version 5.1 a quelque peu corrigée le problème mais il faut espérer que Android 6 Marshmallow fera oublier cette version calamiteuse. Il est d'ailleurs souvent préconisé d'opter pour Android 4.4 Kitkat, c'est celle qui a les meilleures retours à ce jour.

Les développeurs mobiles ont souvent du fil à retordre pour développer proprement sur un maximum de plateformes. J'ai cité Android car je le connais mieux, mais les problèmes identiques existant pour iOS. Le fait d'utiliser des langages propres est également la cause de bon nombre de soucis. Etant donné que chaque OS privilégie tantôt C#, Objective C ou Java (pour ne citer qu'eux), les développeurs doivent jongler pour fournir des applications sensiblement identiques sur tous les OS mobiles.

Souvent, la solution trouvée est de procéder à un développement multiplateformes, avec des outils comme PhoneGap/Cordova, qui permet à partir d'un seul code de "dupliquer" l'application sur tous les OS. C'est un gain de temps pour les développeurs, une économie de compétences à trouver, mais ça veut aussi dire que les applications "traduites" qui en découlent peut-être plus ou moins bien codées. Pour faire un parallèle, cela reviendrait à faire un site web en mode "Création" sur Adobe Dreamweaver. Le résultat fonctionnerait, mais il ne faudrait sûrement pas regarder le code... ^^

Donc si on se positionne ainsi, il faut reconnaître que les logiciels comme PhoneGap ou les OS mobiles ne facilitent clairement pas les optimisations et performances d'applications mobiles.

Conclusion

La réponse à ce débat sans fin est sûrement entre le "oui" et le "non", mais il faut que chacun fasse sa part. Si les OS mobiles vont forcément s'améliorer et s'affiner avec le temps et l'expérience, il faut aussi que les développeurs se forment davantage et n'hésitent plus à contrôler leurs codes (à défaut de validateurs en ligne). Je sais bien qu'une grande partie des développeurs fait de son mieux, et veut vraiment faire bien, et je les engage à continuer dans cette voie en allant encore plus loin dans les optimisations. À l'heure où la vitesse d'exécution est dans toutes les têtes, il serait peut-être temps que le monde mobile se mette à la page.

Je terminerai ce débat en vous invitant à faire un petit test. Installez une application comme CleanMaster sur votre mobile, procédez uniquement aux mises à jour de vos applications courantes, sans en ajouter ni en supprimer. Vous constaterez que sans rien changer, vous perdrez peu-à-peu de la RAM, alors que les applications ne proposent parfois pas de nouveautés flagrantes voire consommatrices d'énergie. En somme, plus le temps passe, plus la mémoire vive des smartphones et tablettes est bouffée sans explication, et quel que soit l'OS mobile installé. Je vous laisse deviner pourquoi ? :D