Ludovic ROLAND

Blog technique sur mes expériences de développeur.

Concrétiser son idée d’application mobile (3/3) : Développer​ son​ ​application​ mobile

15 octobre 2017

Grâce aux deux chapitres précédents, vous avez pu roder votre idée de projet et vous avez pu prendre plusieurs décisions importantes quant au type de votre application, les plates-formes sur lesquelles vous allez vous lancer ainsi que la rétro-compatibilité de votre future application.

Avant de nous attaquer aux business models qui existent dans le domaine de la mobilité, je vous propose de nous intéresser aux différentes possibilités disponibles pour le développement d’une application.

Ce chapitre est également très important car suivant les choix que vous allez faire, vous allez investir beaucoup de temps et d’argent qu’il faudra tenter de rapidement rentabiliser au lancement de votre application.

Plan

Développer son application soi-même

La première option qui s’offre à vous est de développer vous-mêmes votre application. Dans ce cas-là deux situations sont possibles :

  • Vous avez déjà de l’expérience dans la programmation, peut-être même dans le développement d’applications mobiles.
  • Vous êtes un grand débutant.

Peu importe votre profil. Si vous êtes motivés, vous pouvez réussir à sortir un très beau produit tout seul. Mais si je peux vous donner un conseil, c’est de ne jamais réinventer la roue !

Les technologies

L’une des erreurs principales que font les développeurs c’est de vouloir réinventer la roue. Beaucoup de développeurs vont chercher à développer eux-mêmes une fonctionnalité, un composant graphique plus ou moins complexe sans savoir que bien souvent d’autres les ont déjà développés et les offrent gratuitement à l’utilisation. En plus de vous faire gagner du temps, ce qui rappelons-le est très important, l’avantage de réutiliser le travail des autres est qu’il est souvent éprouvé. En cherchant sur Google, on trouve souvent tout ce qu’on veut !

Si certains ne proposent que des petits composants, d’autres vous proposent ce qu’on appelle des frameworks, c’est-à-dire des boîtes à outils complètes qui vous faciliteront la vie et vous feront gagner énormément de temps lors du développement de votre application. L’apprentissage de ces frameworks n’est pas toujours évident, mais ce temps est vite rentabilisé par la suite quand on voit à quel point certaines tâches sont simplifiées à l’extrême !

Développer des applications natives

Quand on développe pour le Web, que ça soit en PHP, JavaScript, Python ou Java, on trouve des dizaines voire des centaines de frameworks qui sont de véritables références et qui n’ont plus besoin de faire leurs preuves. Pour ne citer que les plus connus :

  • Symfony
  • jQuery
  • JSF
  • Spring
  • Cake PHP
  • MooTools
  • etc.

Quand on développe des applications mobiles natives, ici je pense surtout à Android, iOS et Windows, on se contente bien souvent des outils de développement “basiques”, à savoir les différents SDK, auxquels on ajoute différentes briques logicielles dont l’utilisation a pour objectif d’aider les développeurs sur une tâche très précise. Par exemple, si l’on regarde du côté d’Android, on peut citer :

  • Jackson et Gson pour manipuler le JSON ;
  • Picasso et Glide pour télécharger et mettre en cache des images ;
  • Retrofit, okhttp ou Volley pour réaliser des requêtes web ;
  • etc.

Attention ! Je n’ai pas dit qu’il n’existait pas de frameworks complets pour développer des applications mobiles natives, juste que ceux qui existent n’ont pas nécessairement la renommée d’un Symfony ou d’un jQuery. On peut tout de même en citer quelques-uns :

  • droid4me, eMobc et Spring for Android pour le développement d’applications Android ;
  • ModernApp4Me pour le développement d’applications Windows.

Développer des applications cross-platform

Quand on développe des applications cross-platform, trois technologies ont tendance à s’affronter :

Ces trois technologies vous permettent la même chose : utiliser les technologies web, à savoir HTML, CSS et JavaScript, pour développer des applications mobiles capables de tourner sur n’importe quelle plate-forme.

N’ayant jamais utilisé ces technologies, il est très difficile pour moi de vous faire un retour d’expérience objectif sur ce qu’elles valent vraiment. Elles sont cependant utilisées par de grandes marques.

Mutualiser du code entre vos applications

Comme je vous le disais dans le chapitre précédent, il est possible d’utiliser des technologies qui permettent de mutualiser du code entre vos applications Android, iOS et pourquoi pas Windows. Il existe plusieurs technologies capables de réaliser ce travail, mais j’ai décidé de ne vous parler que de deux : Cobalt et Xamarin.

Cobalt est un framework open source qui utilise des technologies web pour mutualiser du code entre les différentes plates-formes. Les applications produites utilisent un bon nombre de contrôles natifs propres à chaque plate-forme. Mais grâce à ce framework, il est possible d’utiliser les technologies web sur certains écrans - comme l’affichage d’un article - puis de faire remonter les événements web - comme le clic sur un lien - à la partie native de votre application pour la traiter de manière native. Ainsi, il est possible de mutualiser toute la partie web entre les différentes plates-formes et de n’avoir à implémenter que la partie native dans chacune des applications.

Si ce framework n’est pas encore aussi connu qu’un Phonegap ou qu’un Apache Cordova auprès des développeurs, sachez qu’il est tout de même utilisé dans les applications de grandes marques comme BFMTV ou encore RMC Sport.

Parlons maintenant de Xamarin. Il s’agit d’une technologie qui permet de développer des applications natives en C# depuis une unique base de code.

Le fonctionnement de Xamarin est très différent de celui des technologies permettant de développer des applications cross-platform comme Phonegap ou Apache Cordova. En effet, pour rappel, quand vous développez une application avec Phonegap ou Apache Cordova, vous ne développez qu’une seule application que vous êtes en mesure de déployer sur plusieurs plates-formes. Xamarin, quant à lui, oblige à créer autant de projets et donc d’applications que de plates-formes visées. L’utilisation du même langage de programmation, à savoir le C#, sur chacun des projets, permet de mutualiser du code et le partager. Par exemple, si vous souhaitez récupérer et afficher la liste des contacts du téléphone, vous allez être en mesure de ne coder qu’une seule fois la logique métier et la réutiliser dans chacune des applications des plates-formes visées. Il est ainsi possible de mettre en commun de 40% à 90% du code de vos applications en fonction que vous utilisiez :

  • Xamarin afin de vous limiter à mutualisation du code métier (objets métier, web-services, etc.) ;
  • Xamarin Forms afin de mutualiser également le code des interfaces graphiques.

Développer des jeux vidéos

Quand on développe des jeux vidéos, il est très vivement conseillé d’utiliser un outil dédié, sauf si recoder un moteur physique ou un moteur 3D à la main ne vous fait pas peur ! À l’image des outils proposés pour le développement des applications cross-platform, les frameworks destinés au développement de jeux vidéos permettent de ne développer qu’une seule application et de la déployer sur plusieurs plates-formes. Deux technologies connues et reconnues pour développer des jeux vidéos sur mobiles sont :

N’ayant jamais utilisé ces technologies, il est très difficile pour moi de vous faire un retour d’expérience objectif sur ce qu’elles valent vraiment. Sachez tout de même qu’elles sont utilisées par des milliers de jeux !

Le graphisme

Si vous décidez de développer vous-mêmes votre application, peu importe son type, il conviendra toujours d’apporter un soin particulier à son design.

Il s’agit malheureusement du point faible de nombreux développeurs : proposer des produits fonctionnels, parfois innovants, riches en fonctionnalités mais moches ou peu ergonomiques. La première chose que verra un utilisateur, avant même d’installer une application, c’est son icône et des captures d’écrans, sur le magasin d’applications. Aussi, si sur les captures d’écran votre application ne respecte absolument pas les guidelines de la plate-forme ou embarque un design qui semble daté, il y a de grandes chances que vous fassiez fuir les utilisateurs qui se redirigeront alors sur des applications plus belles même si ces dernières possèdent peut-être moins de fonctionnalités.

Quitte à passer plusieurs semaines ou mois à développer vous-mêmes votre application, prenez quelques jours en plus pour soigner son design !

Choisir un prestataire

Malheureusement, ou heureusement c’est au choix, tout le monde n’est pas développeur ou n’a ni les compétences ni l’envie de se lancer dans le grand chantier qu’est le développement d’une application mobile. Il existe alors une alternative simple : faire développer son projet d’application mobile par quelqu’un d’autre.

Choisir un prestataire n’est pas une mince affaire et c’est surtout un investissement financier, souvent important, qu’il va falloir rentabiliser par la suite. Je vous propose dans les prochaines lignes un petit guide qui va, je l’espère, vous permettre d’y voir plus clair entre différents prestataires qui s’offrent à vous : un freelance ou une agence.

Une agence

Il est très difficile de qualifier une agence tant il en existe en France et à l’étranger et tant leur cœur de métier peut être différent. Vous trouverez par exemple certaines agences qui ne travaillent que pour une seule plate-forme mobile et d’autres capables de toutes les d’adresser. Vous trouverez des agences qui ne font que du mobile tandis que d’autres feront également du développement web. Certaines agences ne font que des applications natives alors que d’autres ne font que des applications cross-platform. Finalement, vous trouverez des agences qui en plus du développement de votre application vous proposeront une prestation de design tandis que d’autres se contenteront de reproduire des maquettes que vous leur fournirez. Et je ne parle même pas de la taille. Vous trouverez des agences de deux employés alors que d’autres emploient plus d’une centaine de personnes.

Bien évidemment, vous vous doutez que plus une agence est grosse, plus elle vise des clients que l’on qualifie de grands comptes et si le développement de votre application ne représente pas un budget conséquent, il y a de fortes chances que vous ne les intéressiez pas.

Je ne détiens malheureusement pas la réponse universelle puisque chaque agence est libre de pratiquer ses propres tarifs. Mais je ne pense pas trop me tromper si je vous dis qu’un développeur vous sera facturé au minimum 500€ la journée.

Notez également qu’une agence vous facturera également des jours relatifs à la gestion de projet et la recette interne. Ces tâches, généralement réalisées par un chef de projet, sont quant à elles facturées plus ou moins 700€ la journée.

Encore une fois, il n’y a pas de réponse universelle. Tout dépend de votre application ! Vous souhaitez faire une boîte à meuh ? Deux jours suffisent ! Vous souhaitez développer un nouveau réseau social riche en fonctionnalités ? Il faudra très certainement entre 100 et 150 jours !

Vous l’aurez compris, tout dépend de votre projet. Sachez quand même qu’un projet mobile raisonnable prend généralement trois mois pour être développé et qu’en moyenne les agences facturent cinq jours de gestion de projet chaque mois.

Sauf si vous êtes milliardaires et que vous avez de l’argent à ne plus savoir quoi en faire, n’acceptez jamais de travailler au consommé, c’est-à-dire de laisser l’agence travailler sur votre projet puis de payer à la fin en fonction du temps que ça a pris. Il convient toujours de travailler dans ce qu’on appelle un mode forfait !

Le forfait c’est tout simplement déterminer avant de signer quoi que ce soit le temps que va prendre le projet, sa date de commencement, sa date prévisionnelle de fin (ne soyons pas naïfs, il y a toujours du retard ;) ) et combien ça vous coûtera. Bref, demandez un devis précis avant de signer quoi que ce soit !

Finalement, exigez toujours une période de garantie après la livraison de votre application, c’est-à-dire un laps de temps pendant lequel l’agence s’engage à corriger gratuitement les bugs rencontrés par les utilisateurs sur votre application. Suivant les agences, cette période de garantie peut aller de un à trois mois.

Un freelance

Suivant votre budget et la complexité de votre application, il sera peut-être plus judicieux de se tourner vers un freelance, c’est-à-dire une personne qui possède les compétences techniques pour réaliser correctement votre projet mais qui travaille à son compte.

On distingue généralement deux types de freelances :

  • ceux dont c’est l’activité principale ;
  • ceux qui font ça sur leur temps libre.

Tout dépend si vous êtes pressé et du budget dont vous disposez. Un freelance dont c’est l’activité principale sera en mesure d’accorder au moins cinq jours par semaine à votre projet (si bien évidemment il travaille dessus à plein temps) voire six pour les jeunes freelances qui ont parfois du mal à dire stop. Un freelance qui n’exerce cette fonction que pendant son temps libre aura quant à lui du mal à accorder plus de deux à trois jours homme par semaine au projet. Choisir un freelance dont ce n’est pas l’activité principale c’est donc rallonger le temps de développement de votre projet.

Le prix ! Bien évidemment, chaque freelance, au même titre que les agences, est libre de pratiquer ses propres tarifs. Mais je ne pense pas trop me tromper si je vous dis qu’un freelance dont c’est l’activité principale facture généralement plus ou moins 400€ la journée, même si vous trouverez des freelances qui facturent pas loin de 1000€ la journée ! Si vous vous tournez vers un freelance dont ce n’est pas l’activité principale, vous pouvez espérer obtenir des tarifs plus attractifs, soit plus ou moins 300€ la journée.

Comme pour une agence, n’acceptez jamais de travailler au consommé, et exigez de travailler selon un mode forfait en demandant un devis précis avec l’estimation du temps que va prendre le développement du projet, sa date de commencement, sa date prévisionnelle de fin et le prix. Finalement, comme pour une agence, exigez une période de garantie après la livraison de votre application.

En résumé

  • Développer soi-même son application c’est investir du temps et beaucoup d’énergie.
  • Faire développer son application c’est investir du temps, de l’énergie et de l’argent.
  • Si vous décidez de faire développer votre application mobile, choisissez intelligemment votre prestataire et soyez attentif au devis proposé.

Commentaires