Blog technique sur mes expériences de développeur.
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.
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 :
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 !
Cette section s’adresse principalement aux développeurs.
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 !
Puisque j’ai déjà parlé dans le chapitre précédent des technologies utilisées pour développer des applications natives, je vais ici me concentrer sur les fameux frameworks.
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 :
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 :
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 :
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.
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.
Qu’est-ce que ça signifie ?
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 :
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 !
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 !
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.
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.
Tu nous fais peur là ! Combien ça coûte une application développée par une agence ?
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.
C’est énorme… Ça prend combien de temps à développer une application mobile ?
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.
Comment savoir le temps que mon application va prendre à développer ?
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.
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 :
Lequel choisir ?
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.
Pour quelle raison devrais-je alors choisir un freelance dont ce n’est pas l’activité principale ?
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.