Tout ce que j’aurai aimé savoir avant de développer des applications Android

Tout ce que j’aurai aimé savoir avant de développer des applications Android

Je suis en train de créer JavaScript de Zéro, une formation vidéo en ligne pour apprendre le JavaScript. Elle est conçue spécialement pour les débutants complets en programmation. Regardez gratuitement le module débutant sur YouTube dès maintenant.

Salut à tous,

Ça fait un moment que ce billet me trotte dans la tête. Je vais condenser mon expérience et les connaissances générales que j’ai acquises sur le développement d’apps mobiles ici. Je le mettrai à jour si besoin. Si vous souhaitez y participer ou poser des questions, n’hésitez pas à me laisser un commentaire. Si vous souhaitez vous lancer dans le développement d’apps mobiles (ou que vous êtes pressés), vous pouvez directement lire mes conseils aux nouveaux développeurs.

Je parle d’Android principalement mais beaucoup de choses sont transposables à iOS ou Windows Mobile.

Généralités

On a souvent beaucoup de préjugés ou d’idées préconçues sur le développement d’applications android. Les médias n’aident pas à éclaircir les choses puisqu’ils ne relayent que des success stories complètement amputées d’une tonne de travail effectué par le(s) développeur(s). Bah oui, un média ne cherche pas à vous raconter la vérité, il cherche à avoir beaucoup de lecteurs, et titrer « comment je suis devenu millionnaire en 2 semaines avec une app » attirera plus de lecteurs que de titrer « comment j’ai réussi à vivre d’une app après 3 ans de développements, 12 échecs, et en bossant 14h / jour »…

Bref, je ne remets pas en cause les success stories, car il y en a, mais les médias zappent la plupart des infos sur ce qui s’est réellement passé. Par exemple ils peuvent titrer « bla bla bla succès en 3 semaines », en évinçant complètement le fait que le mec ça fait 2 ans qu’il bosse sur son app, qu’il en a chié pour en arriver là mais qu’en 2 semaines, il a réussi à avoir suffisamment de traction pour générer beaucoup de revenus d’un coup grâce à l’effet réseau extrêmement important dans le monde du numérique. Bref, je vais remettre les pendules à l’heure ici.

Voici une petite liste en vrac de trucs que j’aurai bien aimé savoir avant de me lancer :

  • Le revenu net d’une vente d’un produit numérique via le play store en France (TVA à 20 %) n’est pas de 70 % mais de 58 % comme je l’explique ici. Donc quand vous vendez une app ou un in-app purchase 1 €, vous recevez 0,58 €, Google prend 30 % de commission et collecte pour vous la TVA qu’il reverse à la France (donc vous n’en voyez pas la couleur, même si vous n’êtes pas assujetti à la reverser à l’état vous pouvez vous asseoir dessus).
  • Vivre de la pub est très compliqué, car les taux de conversion (gens qui cliquent sur les pubs) sont très faibles d’une part et d’autre part les CPC (coût par clics) sont faibles aussi. Qu’est-ce qu’on entend par « faible » ? Dans ces 2 cas, et bien les taux de conversion sont en général de 2-5 %, ça varie énormément selon le type d’apps, de public visé etc. Mais vous attendez pas à avoir 10 % de clics ! Concernant le CPC, il varie aussi beaucoup, et généralement on peut compter sur des revenus type 0,02 € – 0,60 € / clic.Vous attendez donc pas à faire 3 € / clic à chaque fois, même si certains domaines peuvent rapporter jusqu’à 5 ou 6 € / clic, c’est très rare et il faut vraiment driver un traffic de qualité vers les annonceurs pour que les enchères montent si haut. Une fois de plus ça varie en fonction du type de secteur que vous visez et du type de pubs que vous diffusez, de la régie que vous utilisez etc. mais si vous voulez vous dégager un salaire va falloir avoir vraiment beaucoup d’utilisateurs quotidiens actifs sur votre app ;-).
  • Allez une phrase choc pour continuer : Une app pourrie mais bien marketée peut mieux performer qu’une bonne app mal marketée ! Ça fait mal au coeur (pour pas dire autre chose) mais c’est la triste vérité. Alors si vous pensiez qu’il faut « juste » une bonne idée + un bon développeur pour faire un carton sur le play store, vous êtes loin du compte. Il vous faudra aussi un très bon marketeur / growth hacker pour réussir à se faire connaître dans cette jungle. Ne sous-estimez pas cette partie dans votre budget / équipe, car sans ça vous resterez coincés au fin fond du play store.
  • Les revenus que vous générerez seront à peu près stables tout au long de l’année. Ils semblent être directement correlés avec votre rang dans le play store (et donc le nombre de visiteurs que vous avez chaque jour sur votre fiche).
  • Google reste le maître tout puissant : si demain il décide de retirer votre app du play store, de changer les conditions générales pour être développeur etc. Vous n’aurez aucun moyen de vous défendre, on n’est pas en démocratie, c’est une dictature, soyons clair. Donc le couperet peut tomber à tout moment soyez-en conscient !
    Bah oui, sur le papier vous pouvez toujours attaquer Google au tribunal, engager un avocat et des procédures judiciaires pour vous faire entendre, mais pour ça il faut de l’argent et du temps (ça revient à avoir de l’argent) mais ils auront tout le loisir de faire durer les choses. S’attaquer juridiquement à une entreprise qui pèse $512 000 000 000 (oui y’a 9 zéros à milliards) je pense qu’il faut avoir un peu de ronds de côté hein :-D. « Mais mais mais… !! Mais tout le monde a le droit à la justice !« . LOL. Oui si t’es riche sinon tu peux t’asseoir dessus. Comme la TVA :-).

Matériel & Développement logiciel

  • Alors ce point là, il vaut de l’or à lui tout seul : utilisez l’API 16 Jelly Bean au minimum pour votre app si vous voulez touchez un max de gens. Ne descendez pas en dessous ! Pourquoi ? Tout simplement parce que je l’ai fais (Hercule était compatible jusqu’à l’API 8 Froyo) et croyez-moi ça n’en vaut pas la peine ! La complexité que vous allez ajouter au code pour supporter toutes les versions et les temps de développement plus longs qui seront nécessaires ne vous rapporteront jamais plus que ce que vous allez perdre !Vous ne trouverez cette info nulle part ailleurs. Je vous conseille ça car dans la doc Android j’ai souvent voulu utiliser des fonctions qui n’étaient pas disponibles avant l’API 16, pareil pour la librairie de support pour le Material Design. De plus à l’heure où j’écris ces lignes, vous toucherez 93,5 % des utilisateurs avec cette version minimum. Ah oui et si vous vous dites que vous voulez toucher les pays en développement (Afrique tout ça tout ça), ça sera aussi le cas. En effet, les mobiles Android à $50 sont vendus avec Android Lollipop (API 21) ! Bref, c’est un no-brainer : minSdkVersion 16 tu mettras dans ton build.gradle !
  • Allez une autre phrase choc : One code for all platforms is a myth! Alors ce point là va faire débat, mais je m’en fou. Je ne crois pas aux frameworks, outils, appelez-ça comme vous voulez qui vous promettent de développer avec un seul code pour générer des apps pour toutes les plateformes.
    Pour plusieurs raisons : déjà vous serez toujours à la bourre par rapport à ce qui sort sur la plateforme en natif car les équipes qui développent ce genre d’outil vont devoir intégrer ces nouveautés dans leur code, boum ça fait un délai.
    Deuxièmement je pense que pas mal de fonctionnalités ne pourront pas être portées dans le framework pour des raisons techniques, ce qui risque de vous limiter dans les possibilités de votre app dans le futur.
    Enfin dernier point très important, le design. Je pense qu’il est vite compliqué en utilisant ce genre de framework de pouvoir pondre plusieurs designs différents respectant les guidelines de chaque plateforme avec le même code.
    Bref je pense que les frameworks one code to rule them all tiennent leurs promesses pour des apps très simples. Mais dès que vous voulez faire un truc un peu évolué on est vite limité. Donc mon conseil c’est de développer en natif dès le début et de supporter plusieurs bases de code. Oais, c’est chiant, oais ça coûte plus cher, mais pour moi c’est la seule vraie façon de faire les choses proprement. Notez que j’ai beaucoup utilisé le verbe « penser » car je n’ai jamais utilisé de framework dans ce but (oh quel connard, il critique sans avoir essayé !), mais si vous avez des contre-arguments, n’hésitez pas à essayer de me convaincre que j’ai tort.
  • Le développement d’apps Android est un travail continu : si vous pensez que vous pouvez coder une fois et vous reposer après, vous vous trompez. Pourquoi ? Parce qu’une app moins « fraîche » va perdre des places dans le play store, le fait de ne pas la faire évoluer va vous faire perdre des utilisateurs aussi. Vous devez répondre aux commentaires / emails qu’on vous envoie sous peine de voir votre note chuter et de perdre à nouveau des places dans le play store (donc de la visibilité et de finir au fin fond du cimetière des apps).
    Vous aurez des bugs, donc vous devrez les corriger. Le code de votre app devra évoluer avec le SDK Android mis à jour régulièrement pas Google : remplacer les fonctions deprecated par les nouvelles fonctions, adapter votre code pour supporter les nouvelles versions d’Android etc. Bref. C’est un travail à plein temps continu que de développer une app Android et surtout de la faire vivre et perdurer, c’est comme un enfant :).
  • Concernant le matériel, il vous faudra un PC qui supporte la virtualisation et qui soit 64 bits. Le 64 bits est fortement recommandé si vous ne voulez pas changer de PC dans quelques semaines… en effet récemment j’ai mis à jour le SDK et visiblement Google va casser la compatibilité avec les processeurs 32 bits pour le programme adb sous Linux, outil indispensable pour le développement… donc je vais devoir passer par la case achat d’un nouveau PC… #fail. Et de là à ce qu’ils cassent la compatibilité pour les autres plateformes Mac & Windows, il n’y a qu’un pas, mieux vaut donc assurer ses arrières avec un proc 64 bits.
    Concernant la virtualisation, cette option est facultative mais je la recommande chaudement ! Car l’émulateur (que vous utiliserez sûrement pour développer) l’utilise de façon intensive pour booster sa réactivité. Et croyez-moi, pour ne pas avoir le support de la virtualisation, l’émulateur est très très lent sans ça. Même si ça s’est amélioré au fil du temps, l’émulateur reste lent et pour débugguer sur différentes versions d’Android, c’est indispensable d’avoir un truc qui tourne à peu près bien si vous voulez pas attendre plusieurs secondes après un clic dans votre app émulée…

Comportements des utilisateurs

Je pense que cette partie est applicable à tous les domaines ou toutes les professions ayant affaire à des clients. C’est peut être exacerbé par le fait que les gens sont cachés derrière un PC, je ne sais pas, mais bon au niveau des utilisateurs et des clients vous allez vivre de grands moments :-).

  • On trouve de tout… des utilisateurs super sympas qui feront la promo de votre app et vous diront tout le bien qu’ils pensent de votre appli aux haineux inutiles qui disent juste « c’est de la merde » sans plus d’arguments et vous notent 1 étoile. Mon conseil : ne prenez pas pour vous ces commentaires, sinon vous allez vite vriller :-D. Pensez bien qu’ils jugent votre application, pas vous en tant qu’être humain. C’est facile à dire, mais plus dur à appliquer, surtout au début. Discutez le plus possible avec vos utilisateurs qui vous font des critiques constructives, c’est grâce à eux que vous pourrez améliorer votre app.
    Notez aussi que les gens vous contacteront à 99 % pour vous dire ce qui ne va pas dans votre app, mais quand ça va personne ne vous contacte (du moins c’est plus rare). Donc ne vous inquiétez pas si les gens vous disent « ah oui au fait ton app est super » seulement après avoir échangé 4 ou 5 mails pour discuter d’un problème ou d’une nouvelle fonctionnalité ! Généralement quand on est satisfait d’une app, on ne prend pas la peine d’en féliciter l’auteur, par contre s’il manque un truc, on n’hésite pas à se pourfendre d’un email pour lui dire que ça ne va pas. C’est la vie, deal with it.
    Mais vous verrez après vous serez habitués à filtrer les haineux (et à vous en contre foutre complètement) et à prendre plaisir à discuter avec des utilisateurs mécontents car vous aurez le mindset qui va bien : chouette ! Un utilisateur mécontent avec qui je vais pouvoir discuter pour résoudre son problème et améliorer mon app. Et oui ! Je vous souhaite de penser comme ça le plus vite possible, car il y a quelque chose de pire que les haineux ou les critiques, c’est l’indifférence. Croyez-moi faire en sorte que les gens prennent le temps de vous écrire un mail pour vous dire que votre app est super ou qu’il manque telle fonctionnalité est déjà un exploit en soi et signe de réussite.
  • Les gens achètent de nouveaux portables tout le temps : mais quand je dis tout le temps, c’est genre tous les 6 mois. J’hallucine. Ils s’en foutent que ça consomme des ressources naturelles et des métaux rares, que ce soit fabriqué en Chine dans des conditions indécentes. Non, eux, ils veulent le dernier <insérez la marque de votre choix ici> avec un écran plus grand, qui va plus vite et qui fait le café aussi. Bref, vous l’avez compris, j’aime pas la consommation pour consommer, je suis plutôt pour une consommation raisonnée, voire la déconsommation, mais c’est un autre sujet. A retenir donc pour faire vos choix de développements, les gens changent de portable assez souvent, tous les ans ou tous les 2 ans facilement.
  • Les gens ne lisent pas. Mais vraiment vraiment pas. Ils ne liront pas votre doc (donc vous devrez concevoir votre app pour qu’elle soit intuitive, design inside). Ils ne liront pas la description de votre app (ça ne sert qu’à l’ASO les descriptions) vous devez tout leur servir sur un plateau d’argent. Y’a même un mec qui m’a envoyé un mail une fois pour me dire « j’ai la flemme de chercher comment faire pour faire X dans Hercule, dis moi comment on fait ». Whaooo, awesome! Et Bonjour tu connais ? Merci ? Au revoir ? C’est des mots qui te parlent ou bien ? Bref, vous aurez de sacrés mails, c’est folklorique. Maintenant ça m’amuse quand je reçois ce genre de mails. J’y réponds toujours avec politesse et avec le plus grand professionnalisme car on ne sait jamais à qui on répond et parfois ils s’excusent d’avoir été si abrupte quand ils voient la forme que j’ai mis au mail pour leur répondre ;-).
  • Les gens ne savent pas grand chose sur Android. Mais vraiment. Ni sur leur téléphone d’ailleurs. Par exemple ils ne savent pas qu’ils peuvent se faire rembourser dans les 24h une app payante. Du coup ils préfèrent ne pas télécharger une app payante croyant qu’ils ne pourront pas obtenir le remboursement facilement… La plupart ne savent pas quelle version d’android ils utilisent ni comment la connaître, parfois même pas le modèle du téléphone… Bref ce qu’il faut retenir, c’est que les utilisateurs n’ont absolument aucune idée du travail que ça représente de développer une application, ils pensent que ça pousse sur les arbres. Et que c’est pour ça que ça devrait être gratuit d’ailleurs. Donc quand ils râlent « ça fait 2 semaines que je t’ai envoyé un mail pour telle fonctionnalité, c’est quand que ça arrive ? », essayez de ne pas leur en vouloir, mettez vous à leur place, ils pensent que ça prend 2 minutes de faire ce qu’ils ont demandé, donc forcément ils râlent. Et puis ils ne savent pas que vous êtes seul au développement aussi derrière.
    Ah oui encore une autre anecdote (j’aurai dû écrire un bouquin), un mec m’a limite engueulé par commentaire sur le play store en me disant que c’était un scandale que « l’équipe de développement » n’ait pas prévu je ne sais plus quoi dans l’app, etc. bref il m’a allumé. Je lui ai donc gentiment répondu que l’équipe de développement était composé d’une seule personne, moi, qui gère le site web, la communication sur les réseaux sociaux, le développement et le design de l’application ainsi que sa promotion, le support client, et qu’il n’était pas tout seul à demander des fonctionnalités et à vouloir qu’on lui réponde. Bizarrement, ça l’a calmé tout de suite et il s’est excusé ne sachant pas que j’étais seul, il n’aurait pas dis ça s’il avait su. Voilà ce que vous devez retenir, les gens ne savent rien mais ça ne les empêche pas de critiquer, tout le temps :-).
  • C’est trop cher ! Ça c’est sûrement le truc qu’on lit le plus souvent. Surtout en France. 2,99 € ou 3,99 €, c’est le prix d’un petit déjeuner avec 2 croissants et 3 pains au chocolats. Mais c’est trop cher ton appli !!! Bah oui mec, tu peux jouir du travail d’1 an et demi d’un ingénieur qui coûte 42 k€ / an, donc tu disposes d’une app qui a coûté 60 000 € à développer pour le prix d’un petit déjeuner. Avec le support client à vie. Est-ce que vous connaissez beaucoup de services si peu cher avec une « garantie » à vie ? Moi pas. Mais bon c’est vrai… c’est trop cher pardon. Moi je vis d’amour et d’eau fraîche derrière mon ordinateur.
    Si les gens achètent et se plaignent que c’est trop cher, c’est que c’est le bon prix. Si c’était trop cher, ils n’achèteraient tout simplement pas.

Conseils aux nouveaux développeurs

Ci-dessous vous allez retrouver tout ce que j’ai dis plus haut mais d’une façon beaucoup plus condensée et résumée :

  • Vendre une app ou un in-app purchase à un Français (TVA à 20 %) vous rapporte 58 % du prix TTC. Donc 1€ TTC => 0,58 € net dans votre poche. Conclusion, vendez aux US et dans les pays étrangers où la TVA est plus faible.
  • La pub : les taux de conversion sont généralement de 2 à 5 %, le CPC fait gagner entre 0,02 € et 0,60 € en moyenne, ça peut monter jusqu’à 5 ou 6 € mais c’est très très très rare.
  • Le marketing a une place capitale dans le développement d’apps mobiles, sans visibilité, vous n’existez pas, que votre app plaise aux utilisateurs ou pas. Une app pourrie mais bien marketée peut mieux performer qu’une bonne app mal marketée !
  • Les revenus générés sur le play store sont plutôt stables tout au long de l’année, ils dépendent de votre visibilité.
  • Google reste tout puissant, il peut changer à tout moment ses conditions pour être développeur ou retirer votre(vos) app(s) du play store et vous n’aurez aucun moyen de vous défendre.
  • Utilisez l’API 16 (Jelly Bean) au minimum pour votre app, ne descendez pas en dessous, ça n’en vaut pas la peine.
  • One code for all platforms is a myth : si vous voulez développer sérieusement pour Android et iOS, vous devrez développer en natif et gérer 2 codes sources en parallèle.
  • Développer des apps Android est un travail continu, si vous pensez pouvoir développer une fois et vous reposer après, vous êtes à côté de la plaque, désolé !
  • Pour le matériel, il faut un processeur 64 bits qui supporte la virtualisation.
  • Abonnez-vous à la chaîne YouTube Android developers et regardez les vidéos *Bytes (DevBytes, DesignBytes etc.).
  • Vous aurez à discuter avec des utilisateurs ultra sympa comme des sales cons, deal with it!
  • Les gens changent de portable régulièrement
  • Les gens ne lisent pas : jamais. Ils ne liront pas votre doc, ils ne liront pas la description complète de votre app, vous êtes prévenu.
  • Les gens ne savent rien sur Android, sur leur téléphone, ni sur les gens qui développent des apps. Donc quand vous êtes contrariés par un email d’un utilisateur, rappelez vous qu’il dit tout ça car il n’y connaît strictement rien. Expliquez lui gentiment la réalité des choses, calmez le jeu, soyez patient et persévérez, parfois des gens formidables se cachent derrière un premier contact difficile.
  • C’est trop cher !! C’est sûrement ce que vous entendrez souvent. Si les gens achètent et se plaignent que c’est trop cher, c’est que c’est le bon prix. Si c’était trop cher, ils n’achèteraient pas.
  • Travaillez sur une idée qui vous plaît vraiment sur laquelle vous pourriez bosser plusieurs années de suite, car ce sera le cas !

Voilà je me suis bien éclaté à écrire cette grosse pavasse bien longue. J’espère que vous avez appréciez la lire ! N’hésitez pas à liker / partager / commenter.

Je ne blogguerai pas avant Noël ni le nouvel an, alors je vous souhaite à tous et à toutes de joyeuses fêtes de fin d’année ! (oh oh oh ! Bruit de clochettes qui s’éloigne au loin avec un sifflement de vent d’hiver)