GraphQL expliqué simplement en 5 minutes

Logo de GraphQL

2012.

Les statistiques du web mobile commencent à exploser.

Les entreprises de la tech flairent le filon des applications web responsives design accessibles via les navigateurs web.

Parmi elles, Facebook.

Sa première web app pour iOS est créée la même année. Sauf que les experts de l’expérience utilisateur du réseau social remarquent vite un gros problème : l’interface-utilisateur n’est pas fluide.

Les ingénieurs de la firme se creusent les méninges… et décident de créer une application mobile native pour iOS.

Et là encore, nouveau problème, leurs APIs REST renvoient trop d’informations et ne sont pas adaptées aux spécifications du développement mobile.

Les APIs REST consomment beaucoup trop de bande passante. Ralentissent la version mobile du réseau social. Et surtout, surchargent les serveurs en back-office pour rien.

De là, vient l’idée à Lee Byron et à deux de ses collègues de créer un nouveau langage de requêtes : GraphQL.

Publié pour la première fois en 2012, il devient open-source en 2015, et depuis, il ne cesse de séduire les développeurs web et mobiles.

Et aujourd’hui, on va parler de GraphQL, quels avantages vous pouvez en tirer et comment il fonctionne.

Let’s go.

Qu’est-ce que GraphQL ?

Pour comprendre GraphQL, vous devez savoir ce qu’est une API (si si, c’est important). Une API, ou “Application Programming interface”, est un ensemble de protocoles qui permettent à deux composants logiciels de communiquer.

Elles sont énormément utilisées dans les architectures client-serveur pour permettre à l’utilisateur de récupérer des données depuis une base de données.

C’est au concepteur-développeur de l’application de choisir et de concevoir l’interface de programmation qui sera utilisée.

GraphQL, ou Graph Query Language, est un langage de requêtes et un environnement d’exécution côté serveur pour API.

Sa particularité ? C’est la requête du client qui définit la structure des données qu’il veut.

Particularité qui a déjà séduit plusieurs entreprises, dont :

  • PayPal ;
  • Coursera ;
  • Dailymotion ;
  • GitHub ;
  • Meta.

Vous en trouverez plus en vous rendant sur le site de la fondation GraphQL (voici une partie de la liste).

Entreprises utilisant les API GraphQL

Et cette nuance est importante. Car les autres APIs les plus utilisées sont les APIs REST (Representational State Transfer).

Et elles vous renvoient des informations prédéfinies par le développeur qui a conçu l’architecture serveur. Même si elles ne correspondent pas aux besoins de l’utilisateur.

Parfois, elles envoient trop de données, et côté client, on ne sélectionne que celles qui nous intéressent. On parle d’over-fetching.

Parfois, à l’inverse, elles n’envoient pas toutes les informations, ce qui oblige à faire plusieurs appels sur la base de données. On parle d’under-fetching.

Ces deux problèmes peuvent être évités grâce à une API GraphQL.

Comment fonctionne une API GraphQL ?

Au sein d’une API GraphQL, toutes les requêtes sont des requêtes POST avec, en attribut, une structure de données.

Et c’est la structure de données passée en paramètre qui contient les noms des attributs que l’on souhaite recevoir en retour.

À l’intérieur du code de l’API, vous trouverez deux catégories de données :

  • les données « Types » ;
  • les données « Champs ».

Et parmi les objets, vous trouverez 3 types d’objets différents :

  • les objets « Requêtes », qui contiennent toutes les requêtes acceptées par l’API et qui vérifient que les formats reçus sont autorisées ;
  • les objets « mutation » qui définissent toutes les actions possibles et qui permettent de faire des modifications sur les modèles définis ;
  • les objets « abonnement », qui définissent les modèles de la base de données.

Bon, ok, tout ça, c’est un peu théorique.

Alors voici un exemple de code-source.

On va définir, en GraphQL, une structure de données représentant un concessionnaire automobile (juste son nom et son emplacement). Ensuite, on va récupérer son emplacement.

Voici ce que ça donne.

type Concessionnaire {
 nom: String
 emplacement: String
 voitures: String
}

Définition du graphe de données.

Vous voyez à quel point c’est simple ? Let’s go pour un appel en javascript.

const { ApolloClient, InMemoryCache, gql } = require('@apollo/client');
// Remplacez l'URL par l'endpoint de votre serveur GraphQL

const graphqlEndpoint = 'https://votre-serveur-graphql.com/graphql';

// Initialisez le client Apollo

const client = new ApolloClient({
 uri: graphqlEndpoint,
 cache: new InMemoryCache(),
});

// Définissez votre requête GraphQL
const GET_EMPLACEMENTS = gql`
 query {
   concessionnaires {
     emplacement
   }
 }
`;
// Effectuez la requête

client.query({ query: GET_EMPLACEMENTS })
 .then(result => {
   const emplacements = result.data.concessionnaires.map(concessionnaire => concessionnaire.emplacement);
   console.log('Emplacements des concessionnaires (GraphQL) :', emplacements);
 })
 .catch(error => {
   console.error('Erreur lors de la récupération des données (GraphQL) :', error);
 });

Prêtez bien attention à la définition du schéma de requête.

const GET_EMPLACEMENTS = gql`
 query {
   concessionnaires {
     emplacement
   }
 }
`;

Clairement, on fait comprendre au serveur qu’on ne veut que l’emplacement et rien d’autre.

Ainsi, pas besoin de filtrer le résultat qu’il retourne.

Si on fait la même chose avec une API REST, voici ce que ça donne :

const axios = require('axios');

// Remplacez l'URL par l'endpoint de votre API REST
const restEndpoint = 'https://votre-api-rest.com/concessionnaires';

// Effectuez une requête GET pour récupérer les données
axios.get(restEndpoint)
.then(response => {
const concessionnaires = response.data;
const emplacements = concessionnaires.map(concessionnaire => concessionnaire.emplacement);
console.log('Emplacements des concessionnaires (REST) :', emplacements);
})
.catch(error => {
console.error('Erreur lors de la récupération des données (REST) :', error);
});

Vous voyez la nuance sur les lignes :

const concessionnaires = response.data;

    const emplacements = concessionnaires.map(concessionnaire => concessionnaire.emplacement);

Ici, on récupère toutes les informations des concessionnaires. Et après ça, on extrait le champ qui nous intéresse.

Imaginez un peu si on avait plus d’informations sur les concessionnaires :

  • Des images de plusieurs centaines de voitures au format .png ;
  • Des vidéos de présentations ;
  • Des dizaines d’informations textuelles supplémentaires, etc.

Devinez quoi ? On aurait dû tout transférer depuis les serveurs avec une API REST pour, au final, ne garder qu’une seule colonne.

Bon, c’est un peu exagéré, généralement, on définit une API spécifique qui ne renvoie que des données précises pour chaque cas. Mais vous voyez l’idée.

Pourquoi GraphQL est (parfois) un meilleur choix qu’une API REST ?

Quel API choisir pour concevoir vos logiciels ? À quels protocoles allez-vous faire confiance pour le transfert de vos données ?

Le cabinet Postman a posé la question à plusieurs développeurs dans le monde. Et voici les résultats qu’ils ont obtenus :

Statistiques sur les architectures des API, Postman Report 2023

source : 2023 State of API Report, Postman

Dans les faits, 89 % des devs utilisent des APIs Rest dans leur pile technique contre à peine 29 % pour les APIs GraphQL (ils pouvaient choisir plusieurs réponses).

Qu’est-ce qui explique ces choix ?

1ʳᵉ Réponse : vos besoins applicatifs (ceux que vous avez listés dans votre cahier des charges).

Et pour être sûr de tirer un maximum d’avantages de GraphQL, incluez-la comme critère lorsque vous composez votre équipe de développeurs.

 2ᵉ réponse : les avantages et les inconvénients de GraphQL.

Et justement, voyons-les tout de suite.

3+1 Avantages de GraphQL

GraphQL a 4 avantages majeurs comparé à REST.

1 – Vous évitez l’under-fetching

L’under-fetching se produit lorsqu’une requête ne retourne pas toutes les données dont le programmeur a besoin.

En conséquence, il doit encore faire un appel serveur et initier un autre transfert de données pour avoir toutes les informations qu’il veut. 

Vous sentez la dégradation des performances de votre app venir ?

Du moins, ça se passe comme ça dans une API Rest.

Dans une API GraphQL, vous n’avez pas ce problème. Vous demandez des données, et le serveur vous les retourne, un point c’est tout.

2 – Vous évitez l’over-fetching

L’over-fetching est l’autre face de l’under-fetching.

Il se produit lorsque vous avez besoin d’une information, mais que l’API vous retourne tout un tas d’autres données dont vous n’avez pas besoin.

Sur les APIs REST, c’est fréquent.

On fait un appel à la base de données via une API dont les champs retours sont déjà spécifiés. Ensuite, après avoir consommé la bande passante du serveur et du client, on jette tous les champs qui ne nous intéressent pas.

Du gaspillage pur.

Et ça empire si vous avez besoin de données sur le même serveur, mais accessibles via des API différentes.

Heureusement, avec GraphQL, ça ne se produit pas.

Le développeur précise clairement les champs qu’il attend et le back-end lui fournit uniquement ceux-là.

Vous vous souvenez de l’extrait de code qu’on vous a fourni plus haut avec le concessionnaire ? C’est exactement ce qui s’y passe.

const concessionnaires = response.data;

    const emplacements = concessionnaires.map(concessionnaire => concessionnaire.emplacement);

Avec l’API Rest, malgré le fait que l’on ne souhaite avoir que l’emplacement, on télécharge d’abord toutes les données renvoyées par le serveur.

L’over-fetching est particulièrement énervant pour les applications mobiles et web car elle les ralentit fortement.

3 – Gérer les versions n’a jamais été aussi simple

Vos applications évoluent. Les versions se succèdent et parfois ne se ressemblent pas.

Très souvent, vous ajouterez ou retirerez des fonctionnalités de l’app.

Problème : vos équipes de dev vont devoir modifier les champs retournés par l’API.

Si vous utilisez REST, apprêtez-vous à de longues journées à chercher exactement quelles fonctions dépendent de quelles APIs.

Essayez de retirer un champ dans une API alors qu’il est critique pour une fonction utilisant cette API… et une pluie de bugs informatiques et de crash vont vous tomber dessus.

À l’inverse, rajoutez trop de champs dans vos APIs pour faire tourner vos nouvelles fonctions, et vos systèmes informatiques vont ralentir. Sans compter les risques de vulnérabilité accrus aux cyberattaques.

(Si vous vous reconnaissez dans l’un de ces cas, notre chef de projet informatique peut vous aider à éviter que vos applications explosent. Faites-lui un message).

Bref, la gestion des versions d’un logiciel va vous obliger à aller toucher à vos APIs et aux requêtes serveurs qui les utilisent.

Sauf si vous utilisez GraphQL.

Alors non, les APIs GraphQL ne sont pas immuables. Mais elles ont une meilleure rétrocompatibilité, sont plus simples à faire évoluer et à adapter à vos nouveaux besoins.

4 – GraphQL vous facilitent l’accès aux données éparpillées dans plusieurs bases de données relationnelles

Voici ce à quoi ressemble l’architecture des bases de données typiques des grands groupes :

Architecture typique d'une base de données distribuée

Source : Oracle https://docs.oracle.com/cd/A58617_01/server.804/a58227/ch21.html

Les silos représentent ici des bases de données.

Vous voyez où je veux en venir ? Les informations peuvent être contenues dans différents serveurs situés à des emplacements géographiques différents.

Et c’est logique : si votre entreprise ouvre une branche à Paris, vous voudrez très probablement stocker les informations de vos clients de Paris à proximité de Paris. Question de simplifier l’accès aux données de vos collaborateurs qui gèrent ces clients.

Par contre, vous n’avez pas besoin de dupliquer les informations de votre département Ressources Humaines sur place. Vous les garderez donc près de votre siège.

Et si, comme tous les GAFAM, vous décidez d’installer votre siège européen à Dublin, devinez quoi ? Vous allez assurément y stocker les informations sur vos ventes, vos finances, etc.

Pourquoi je vous parle de ça ?

Pour vous faire comprendre que vos données peuvent facilement être éparpillées dans des data centers aux 4 coins du monde.

Et il n’est pas rare que vous ayez besoin, dans une seule requête, d’informations situées dans plusieurs data centers différents.

Vos équipes de développement vont devoir faire appel à plusieurs APIs. Ensuite faire des JOIN/Merge en SQL entre les clés primaires et secondaires de leurs retours.

C’est fastidieux. Ça consomme énormément de ressources (électricité + bande passante). Enfin, ce flux de SELECT, JOIN et de MERGE diminuent la durée de vie de votre infrastructure informatique.

Pour au final ne récupérer que peu d’informations.

Avec une couche GraphQL, les performances de telles requêtes vont considérablement s’améliorer, car il s’appuie sur des technos web.

C’est ce qu’a fait Netflix lors de la création de son système de gestion des publicités Monet. En effet, ses pages devaient charger des informations éparpillées sur ses différents serveurs.

Grâce à l’ajout d’une couche de GraphQL, les pages qui chargeaient 10 MB de données n’avaient plus besoin que de 200 KB. Et les performances globales du système ont fait un boost de x8.

API REST vs API GraphQL

Les 4 inconvénients majeurs de GraphQL

Après tout ce qu’on a dit plus haut, on peut être tenté de se dire que GraphQL est la solution technique à tous vos problèmes.

Attendez.

Parce que les API GraphQL ont aussi leurs défauts.

1 – Pas de mise en cache côté serveur (ou trop complexe)

Avec une API Rest, vous savez exactement quelles informations le client va vous demander.

Et si le même client demande les mêmes informations plusieurs fois, vous pouvez les mettre en cache côté serveur pour gagner en vitesse.

C’est impossible ou très peu envisageable avec une API GraphQL.

La raison : la structure des données retours n’est pas définie côté serveur.

Une tactique utilisée par les développeurs GraphQL est de mettre les informations dans le cache du client. C’est moins efficace, mais ça marche.

2 – La courbe d’apprentissage du langage de requête peut être abrupte

REST est une norme d’échanges d’informations créée en 2000.

Ça fait 24 ans qu’elle est enseignée par défaut aux geeks et autres passionnés d’informatique par défaut.

Tous ceux qui s’intéressent aux codes informatiques et à la gestion des données doivent maîtriser par cœur la formule CRUD des API REST. (CRUD = CREATE READ UPDATE DELETE).

En conséquence, la transition du modèle CRUD vers les schémas, résolveurs, souscriptions et graphes de GraphQL peut s’avérer difficile.

3 – Il y a peu de développeurs spécialisés sur cette technologie (comparée aux API REST)

Si vous ne voulez pas, ou n’avez pas le temps de faire une montée en compétence, l’autre solution est d’embaucher un expert maîtrisant cette technologie.

Sauf que, vous vous en doutez, ils sont moins nombreux que ceux maîtrisant les interfaces de programmation d’applications REST.

En écrivant ces lignes, je suis allé faire un tour sur Fiverr, l’une des marketplace de freelance les plus populaires au monde.

J’ai fait une recherche sur le terme « Développeur API GraphQL » et ensuite, j’ai filtré les prestataires parlant français et/ou anglais.

Requête "Développeur GraphQL API" sur Fiverr

Bilan : 1.444 prestataires ( et à peine 75 qui parlent au moins le français)

À l’inverse, les développeurs d’API REST parlant français et/ou anglais sont  15.180 ! (et 656 quand je ne prend que ceux qui parlent français).

Requête "Développeur API REST" sur Fiverr

Je vous laisse faire les calculs vous-mêmes pour voir la différence de taille dans le vivier de talents disponible sur la technologie GraphQL. 

4 – Sécuriser les serveurs est plus compliqué

Sécuriser un serveur utilisant une API GraphQL présente des défis en termes de cybersécurité plus importants qu’avec une API REST.

La raison ? les réponses des points terminaux (les clients) ne sont pas statiques comme dans une API REST.

Bien sûr, il y a des moyens pour les sécuriser, sinon Facebook et tous les autres géants de la tech ne l’utiliseraient pas 😉

Et hop, transition parfaite pour le prochain point.

Comment sécuriser son API GraphQL ? (4 méthodes)

Logo de GraphQ

On est d’accord, GraphQL a ses avantages, si ça fait de votre système informatique une passoire pour hacker, hors de question de l’utiliser.

Heureusement, il existe une myriade de techniques pour transformer vos API GraphQL en coffres-forts anti-hackers.

1 – Restreindre les autorisations

Oui, GraphQL permet à l’utilisateur de demander les données qui l’intéressent.

Mais encore faut-il qu’il ait l’autorisation de lire tous les champs de données qu’il demande.

Raison pour laquelle, l’un des moyens les plus sûrs pour diminuer le risque d’attaque informatique est de limiter les autorisations.

Couplé à une politique d’authentification robuste et le chiffrement des données et vous êtes presque invulnérable.

Enfin, une autre technique consiste à surveiller les activités de l’API pour identifier et neutraliser les menaces. Ainsi, même si les identifiants d’un utilisateur sont compromis, vous pourrez rapidement repérer la source de l’attaque et la bloquer.

2 – La validation des requêtes de l’API

L’API peut être une source d’attaque.

Comment ? Il suffit que l’attaquant demande des informations sensibles ou injecte du code malveillant via un appel-serveur.

Évitez ça.

Pour cela, rien de plus simple : pensez à toujours vérifier les inputs/outputs de l’API et à les nettoyer au besoin.

Ça vous évitera notamment des attaques par injection.

3 – Gérez la complexité des requêtes avec soin

Vous vous souvenez de ce que l’on disait que GraphQL permet de limiter l’under-fetching en récupérant directement toutes les données ?

Ça aussi, ça peut être une source de vulnérabilités informatiques.

Si un individu malveillant parvient à faire une requête profonde, il peut récupérer un lot d’informations sensibles. Ou pire, il peut surcharger les serveurs qui hébergent vos données via une attaque par déni de service DDoS.

Pour parer à ça, une seule solution : limitez la profondeur et l’étendue des requêtes.

4 – Soyez vigilant sur les demandes d’introspection

L’introspection est une fonctionnalité de GraphQL qui permet au développeur de connaître le schéma de votre base de données. 

Elle révèle absolument tous les champs… ce qui peut vite devenir problématique si un individu malveillant utilise cette fonction.

Raison pour laquelle il est nécessaire de toujours restreindre et gérer soigneusement les données exposées via les points de terminaison.

Comment faire pour implémenter une API GraphQL ou une API REST sur votre projet ?

Ok.

À ce stade, vous savez ce qu’est GraphQL (et REST, vu que j’en ai beaucoup parlé). Et vous voulez savoir si ça peut booster les performances de votre application web/mobile ou de votre logiciel.

Alors comment faire ?

J’aimerais bien vous donner une réponse type faite A puis B puis C, seulement, votre projet est unique. Et les solutions techniques dont vous avez besoin le sont aussi.

Alors, j’ai une autre réponse à vous donner : venez en discuter avec notre chef de projet informatique.

En lui exposant votre projet, il pourra alors mieux vous conseiller et vous dire que faire.C’est par ici pour le rencontrer.

7 Experts Essentiels à Votre Équipe de Développement D’app Mobile

Personnes travaillant ensemble

OK, vous voulez développer votre application mobile.

Vous avez déjà listé ses futures fonctionnalités, avez même déjà pensé à comment la monétiser.

Mais si vous êtes ici, c’est que vous faites face à un gros, très gros problème : vous n’avez pas encore une équipe de développement sous la main. Et surtout, vous ne savez pas exactement de quels experts et spécialistes vous avez besoin.

N’est-ce pas ?

Raison pour laquelle aujourd’hui, on va vous montrer les profils indispensables à votre équipe de développement d’applications + 3 manières de la créer.

Mais avant…

Pourquoi est-ce que faire appel à un seul développeur ne suffira pas pour créer votre application mobile

Ce n’est un secret pour personne, les logiciels ne sont que des amas de code.

Logiquement, si vous engagez un excellent programmeur, ça devrait faire l’affaire… Sauf que non.

Pour de petits projets personnels ou la création de site d’e-commerce basique, un seul programmeur peut faire l’affaire.

Par contre, dès que vous voulez développer une application mobile interactive avec des éléments complexes – GPS, réalité virtuelle, analyse de données, capteurs, IA, publicités in-app, etc.  –, c’est autre chose.

Vous aurez besoin d’une équipe.

Et pas seulement d’une équipe de développeurs mobiles aguerris.

6+1 profils qu’il vous faut obligatoirement dans votre (future) équipe de développement

Sans transition, voici les expertises dont vous aurez besoin pour créer une équipe de développement d’application mobile efficace :

  • 1 chef de projet informatique ou 1 product manager
  • 1 stratège marketing ou 1 business analyst
  • 1 ou plusieurs développeurs front-end
  • 1 ou plusieurs développeurs back-end
  • 1 ou plusieurs UX/UI designers
  • 1 ou 2 ingénieurs en assurance qualité
  • (facultatif) 1 architecte logiciel

Voici typiquement les experts qu’il vous faut. En fonction de vos besoins, vous pouvez aussi avoir besoin d’autres spécialistes, tels que les devOps, les scrum masters, etc.

Comment les personnes des équipes IT se voient mutuellement
Comment les personnes des équipes IT se voient mutuellement

Mais restons sur les profils “essentiels”.

Voyons précisément à quoi chacun d’entre eux vous servira.

1 – Le chef de projet informatique / product manager

Le chef de projet informatique ou product manager a une double fonction :

  • veiller à ce que votre projet d’application soit réalisé en respectant les délais, votre budget et le cahier des charges ;
  • assurer la communication entre l’équipe de développement et la maîtrise d’ouvrage (vous).

De plus, si vous optez pour le développement selon la méthode agile, alors c’est lui qui définira les objectifs des différents sprints.

C’est donc un excellent communicateur et qui maîtrise les technologies nécessaires pour donner vie à votre idée.

Ce sera d’ailleurs le premier membre de votre équipe que vous embaucherez. Toutefois, sachez que tous les chefs de projets informatiques n’ont pas les mêmes rôles.

Car derrière ce titre, se cache souvent deux métiers totalement différents : les projects managers et les products managers.

Lorsque l’équipe est suffisamment grande – et que votre budget vous le permet -, ces deux rôles sont séparés. Par contre, il n’est pas rare qu’ils soient assumés par la même personne.

Les project managers

Le project manager se focalise sur un et un seul projet.

Plus exactement, sa préoccupation principale se trouve au niveau des performances de l’application en cours de développement.

Il se pose des questions du type :

  • Est-ce que le processus de développement est respecté ?
  • Quelles sont les tâches à prioriser lors du prochain sprint ?
  • Est-ce que la documentation du code est exhaustive ? Est-ce que quelqu’un d’externe à l’équipe peut la lire et la comprendre ?
  • Quel membre de l’équipe fait quoi ?

Passons au product manager.

Les Products managers

Contrairement au gestionnaire de projets, le product manager se focalise sur un produit, et non sur un projet.

Ça signifie que lorsque le développement sera terminé, il restera là pour travailler avec vous. Il vous aidera en plus à atteindre des objectifs qui ne sont pas purement techniques.

Voici quelques questions qu’il se posera :

  • Est-ce qu’il y a un marché favorable pour votre concept d’application ?
  • Quels types d’utilisateurs peuvent être intéressés par votre (futur) produit ?
  • Quelles seront les fonctionnalités principales de l’app ?
  • Pourquoi vos cibles potentielles la téléchargeront sur les magasins d’applications ?
  • Quels paints points allez-vous résoudre ?
  • Quelle est votre USP, votre proposition de valeur unique, et comment la mettre en avant via un call to action puissant ?
  • Quels segments de marché seront les plus rentables ?
  • Comment allez-vous monétiser votre application ?

Bref, vous l’avez compris, le product manager est un passionné de business plan et d’analyses de marchés.

De plus, dès que votre app sera déployé, il analysera vos premiers feedbacks.

Ses objectifs : trouver ce que les mobinautes adorent sur l’application et ce qu’ils détestent, puis corriger le tir si nécessaire.

2 – Le stratège marketing + 1 business Analyst

En fonction de la complexité de l’application – et de votre budget -, vous avez trois alternatives :

  • soit n’embaucher qu’un chargé de marketing digital qui va se charger de toute la communication et du lancement de l’application ;
  • ou embaucher un business analyst qui va monitorer en permanence les résultats de vos campagnes et les actions de vos utilisateurs ;
  • soit faire appel aux deux types d’experts.

Peu importe votre choix, la personne ou l’équipe en charge de ce poste fournira au moins les 3 services suivants :

  • la gestion de l’ASEO – l’optimisation des métadonnées de votre application mobile sur les magasins d’applications. Sans ça, votre application sera mal classée sur l’app store d’Apple et sur le Google Play Store. Votre nombre de téléchargements en prendra un coup ;
  • le suivi et l’analyse des résultats de vos actions marketing ainsi que des comportements des utilisateurs sur vos interfaces ;
  • la mise sur pied de stratégies marketing et de modifications à apporter à l’app pour augmenter votre ROI.

Sans transition, passons au prochain expert dont vous aurez besoin.

3 – Le ou les développeur(s) front-end

Tous les développeurs n’ont pas les mêmes rôles.

Nope.

En réalité, ils peuvent être regroupés en 3 catégories distinctes :

  • les développeurs front-end, qui se chargent de créer les fonctionnalités de l’application, de coder les interfaces que l’utilisateur verra, d’optimiser le SEO de l’app… Bref, il gère toute la partie « client » de l’app ;
  • les développeurs back-end, qui se chargent de la partie serveur de votre logiciel, des protocoles d’échanges de données entre vos serveurs et les périphériques de vos utilisateurs. Ainsi que le stockage des données dans le cloud.
  • enfin, les développeurs full-stack, qui maîtrisent tous les outils et langages nécessaires pour faire les deux.

 

Peu importe la complexité de votre projet, vous aurez besoin d’au moins un développeur front-end. Pour les reconnaître, jetez un œil aux langages de programmation et aux frameworks qu’ils maîtrisent.

En voici quelques-uns :

  • les langages de programmation JavaScript, HTML, CSS
  • quelques frameworks et librairies : React Native, Jquery, Angular, etc.

Et la liste n’est pas finie.

Sur quelle(s) plateforme(s) allez-vous déployer votre application ? Android ? iOS ? Les deux ?

Est-ce que ce sera une application native (c-a-d développée pour un seul système d’exploitation) ?

Ou cross-plateforme ?

Normalement, vous devriez avoir la réponse dans l’étude de marché faite par votre product manager.

En plus d’être un des facteurs les plus importants du budget de la création de votre app, ça influence aussi… les profils de développeurs mobiles front-ends nécessaires.

Voici les choix qui s’offrent à vous :

  • les développeurs iOS, maîtres des langages de programmation Swift et Objective-C ; de l’IDE Xcode et très fins connaisseurs du très sévère « Apple Human Interface Guidelines ».
  • les développeurs Android, qui maîtrisent plutôt les langages Kotlin et Java, ainsi que l’environnement de développement Android Studio ;
  • un développeur mobile cross-plateformes, qui ne jurent que par les frameworks React Native et/ou Flutter.

Ouf.

La liste est enfin finie. Si vous êtes confus sur le choix du profil de développeur à choisir, c’est normal. Heureusement, notre chef de projet informatique est là, et sera ravi de vous aider à faire le meilleur choix (et c’est gratuit).

4 – Le ou les développeurs back-end

Imaginez un instant que votre application soit un restaurant…

Les clients commandent les plats et se les font apporter via des serveurs. Ça, c’est la partie front-end.

C’est ce que vos consommateurs voient.

Mais ce ne sont pas les serveurs qui préparent les plats. C’est le chef cuisinier et son staff.

Même s’ils sont invisibles aux yeux des clients, c’est bel et bien eux qui font tourner le restaurant. C’est la partie back-end.

Et dans le cadre du développement d’applications mobiles, ce sont les développeurs back-ends qui se chargent de cette partie.

Différences entre développeur full stack vs back end vs front end
Différences entre développeur full stack vs back end vs front end

Comme dit plus haut, ce sont eux qui mettent en place la logique opérationnelle de votre app. Et qui veille à ce que l’échange de données entre toutes les entités se fasse de manière fluide et en toute sécurité.

En cas de manque d’effectifs, les développeurs back-end se chargent aussi de faire les tests sur le logiciel.

Pour en reconnaître un, c’est assez simple, regardez s’il maîtrise l’une des compétences suivantes :

  • les langages de programmation orientés serveur : Python, PHP, Ruby, SQL, etc. ;
  • les frameworks et librairies dédiées aux serveurs web : Nest.js, Node JS ou Express JS pour ne citer que ceux-là – on vous a d’ailleurs fait un article qui explique les différences entre Node.JS et les autres ;
  • des systèmes de gestion de bases de données (SGBD) : MariaDB, MongoDB, MySQL, Microsoft SQL Server ;
  • le système d’exploitation Linux et les commandes bash.

Maintenant, passons au prochain profil.

5 – L’UX/UI designer

L’UX/UI designer est un mélange de deux fonctions :

Voici les missions qu’un UX/UI designer fera pour vous :

  • il créera étape par étape les différents parcours utilisateur et éliminera (ou pas) tout point de friction ;
  • en collaboration avec le développeur front-end, il concevra les interfaces et les widgets de votre app ;
  • peaufinera votre user persona – qui est différent du buyer persona que fourni par votre chef de projet ;
  • il va créer des prototypes visuels et fonctionnels de votre app en amont, et la faire tester pour l’améliorer.

Enfin, si vous devez régulièrement discuter de votre projet avec d’autres personnes, c’est vers lui que vous vous tournez pour avoir des maquettes.

Pour en reconnaître un, regardez s’il maîtrise Figma ou un autre logiciel de conception comme Adobe XD.

Si votre chef de projet le juge nécessaire – et que votre budget vous le permet – n’hésitez pas à prendre deux profils spécialisés. L’expérience-client proposée par votre plateforme sera bien meilleure (et vos clients plus heureux).

Pour bien voir l’utilité de chacun, voyons-les plus en détail.

Meme sur la différence entre la conception UI et la conception UX
Meme sur la différence entre la conception UI et la conception UX

L’UX designer

Son principal objectif : faire que vos utilisateurs vivent une expérience inoubliable sur vos plateformes.

Contrairement à l’UX design qui mise sur la beauté des interfaces, l’UX quant à elle s’intéresse à un autre élément : l’usabilité, ou facilité d’utilisation.

Pour citer le site web Interaction Design Foundation : « La facilité d’utilisation est une mesure de la capacité d’un utilisateur spécifique, dans un contexte spécifique, à utiliser un produit/concept pour atteindre un objectif défini de manière efficace, efficiente et satisfaisante. ».

L’UX designer prend énormément en compte la psychologie humaine et les comportements des utilisateurs. Grâce à ça, il conçoit des flux utilisateurs sans friction – sauf s’il estime qu’un point de friction est nécessaire – et qui vont créer une expérience utilisateur inoubliable.

Voici quelques missions qu’il va réaliser pour vous :

  • la définition et la construction de votre branding ;
  • l’amélioration de l’utilisabilité de l’app ;
  • le listing des fonctionnalités à ajouter/retirer pour augmenter la satisfaction utilisateur ;
  • un peu de webdesign ;
  • une recherche approfondie sur vos consommateurs et vos concurrents ;
  • enfin, c’est lui qui définit comment les informations seront organisées au sein de l’architecture d’information.

Il utilise exactement les mêmes outils listés plus haut, les cartes mentales en plus.

L’UI designer

L’UI designer est un Picasso 2.0 dans l’âme.

Centré sur l’utilisateur, il cherche à concevoir des interfaces interactives aux graphismes les plus irréprochables.

Tandis qu’un UX designer se contentera d’indiquer l’emplacement d’un élément – un bouton par exemple-, l’UI designer choisira le reste. Sa couleur, son style, ses effets visuels, son comportement lorsque l’utilisateur clic dessus ou le survole, etc.

Concrètement, voici ce qu’il fera pour vous :

  • il créera des layouts de toutes vos pages pour les rendre plus interactives ;
  • supervisera aussi la rédaction des contenus textuels de vos pages
  • le benchmarking graphique ;
  • définira les éléments visuels de votre branding (guideline visuel, création de logo, choix de la palette des couleurs, choix des polices, styles d’images, etc.).

Sans transition, passons au prochain profil.

6- L’ingénieur en assurance qualité

Septembre 1999.

125 millions de dollars.

Prononcez ces deux phrases devant un passionné d’espace, et vous lirez de la tristesse dans ses yeux.

Pourquoi ? Parce qu’en septembre 1999, l’orbiter climatique de Mars a réussi un exploit (dans le mauvais sens du terme) : exploser à la fin d’un voyage terre mars de 10 mois sans encombre.

Les calculs étaient bons. La trajectoire parfaite. Les matériaux irréprochables.

Bref, la NASA avait tout bon… mais elle s’est planté à cause d’une erreur banale sur les métriques.

Car, voyez-vous, le projet a été réalisé par deux entreprises : une utilisant le système métrique pour ses mesures (kilogramme, kilomètres, etc.) et l’autre, le très compliqué système impérial américain (livre, pounds, miles, yards et j’en passe).

Résultat : la sonde spatiale ne comprenait plus ses propres données… et vous connaissez la suite.

Tout ceci aurait largement pu être évité si la NASA avait fait appel à un ingénieur assurance-qualité.

Comme son nom l’indique, son rôle est de tester toutes les fonctionnalités de votre produit. Si vous êtes encore sceptique sur l’importance des tests utilisateurs, lisez ceci.

En plus de vous faire économiser beaucoup d’argent en frais de réparation – sans compter la protection de votre image de marque -, un ingénieur QA a pour rôle de :

  • vérifier que le produit répond bel et bien à toutes les spécifications de son cahier des charges ;
  • veiller à ce que le livrable finale soit de la plus haute qualité en contrôlant ses progrès et en repérant les bugs passés sous le radar des devs au fur et à mesure ;
  • tester et écrire tous les scénarios de tests.

Côté outils, attendez-vous à ce qu’il maîtrise des outils comme Jira, TestComplete ou Appium.

7 – L’architecte logiciel

Si votre équipe n’est pas très grande, celui-ci est facultatif.

Son rôle consiste à établir des normes de codage, choisir les plateformes et les outils à utiliser. Il n’est d’ailleurs pas rare que le chef de projet endosse ce rôle.

C’est donc un fin communicateur, un maître de la gestion des ressources humaines et quelqu’un de doué pour faire des prévisions financières.

8 – Bonus : un conseiller juridique ou un avocat spécialisé en droit des logiciels

L’une des pires choses qui puissent vous arriver n’est pas d’échouer le lancement de votre application.

Ni de ne pas réussir à mener son développement au bout.

Non.

C’est de réussir à la monétiser, d’en tirer des revenus conséquents… puis de voir une légion d’avocats sonnés à votre porte, vous expliquant que vous devez payer des frais pour la propriété intellectuelle.

Tout comme l’assurance-qualité, la question de la propriété intellectuelle d’une application est souvent oubliée par les propriétaires d’applications web et mobiles.

Résultat : les cas de conflits entre les entreprises qui ont développé lesdites applications et celles qui les ont payées s’enchaînent.

Parce que oui, l’idée de l’application vient de vous, vous avez financé son développement à 100 %… Mais vous n’êtes pas forcément le propriétaire de tous les droits moraux et patrimoniaux du livrable final.

Du moins aux yeux du Code de la propriété intellectuelle.

Si vous voulez en apprendre plus sur ce sujet, on vous a consacré un billet sur le thème : « Qui détient la propriété intellectuelle de votre application ? ».

Un conseil : si l’une personnes que vous voulez intégrer à votre équipe, ou l’agence web, refuse de signer un accord de transfert de propriété intellectuelle, fuyez.

Vos avocats vous diront que vous avez un excellent choix.

2 astuces pour trouver les team members fiables et efficaces

Homme assis devant son ordinateur
Homme assis devant son ordinateur

Maintenant que vous savez de qui vous avez besoin, comment est-ce que vous allez les trouver ?

En naviguant sur les plateformes ou sur le web, vous trouverez des légions de freelances et d’agences webmarketing.

Et aussi d’innombrables histoires d’horreurs de personnes ayant fait appel à des prestataires.

Alors pour éviter que vous ne deveniez un des nombreux auteurs des forums de réclamations contre des prestataires, suivez ces deux conseils.

1 – Ne cédez pas aux sirènes des bas coûts : cherchez des experts qualifiés

pouce tendu vers le bas
pouce tendu vers le bas

Ça peut être tentant de vouloir faire des économies en optant pour des partenaires peu chers – et très souvent offshores.

Oui, mais voilà, le moins cher est toujours cher. Et une application ne se résume pas qu’à un amas de code mélangé à des éléments graphiques.

Car pour créer un logiciel, le tout n’est pas d’avoir des rudiments de codage informatique.

La communication, la réglementation, les performances du produit final, l’accompagnement… autant de choses que seuls des prestataires expérimentés peuvent vous garantir.

Et qui comptent pour beaucoup dans la réussite de votre projet.

2 – Vérifiez systématiquement les références de vos potentiels partenaires

Dans les portfolios et les CVs que vous recevrez, soyez toujours attentif aux références marquées.

N’hésitez pas à chercher le nom de la compagnie mentionnée sur Google et à passer un coup de fil pour avoir le cœur net.

Aucun doute : vous serez parfois surpris, désagréablement.

De plus, si vous recrutez via une plateforme type Upwork ou Fiverr, prenez les avis clients sous les profils avec des pincettes. Il n’est pas rare que des agences et des freelances s’échangent des avis positifs.

Même son de cloche si vous trouvez votre agence via votre moteur de recherche. Scrutez attentivement les avis laissés sur la page Google My Business de ladite agence. Ensuite, piochez-en quelques-unes et passez des coups de fils.

3 façons de construire la dream team pour le développement de votre application mobile

Selon vos besoins, vous pouvez opter pour 3 modèles différents de collaboration avec les membres de votre équipe de développement :

  • embaucher vos collaborateurs en tant qu’employés à temps plein ;
  • faire appel à des freelances via des plateformes comme Malt ou Fiverr ;
  • déléguer la création de votre application mobile à une agence de développement web.

Allez, voyons tout de suite les avantages et les inconvénients de chacun de ces modes de fonctionnement.

1 – Embaucher des spécialistes en tant qu’employés à plein temps

Si vous optez pour cette option, alors, you are the boss.

Ni plus ni moins.

CEO, fondateur, PDG… Cette option vous propulse dans cette catégorie.

Hormis le prestige, embaucher des experts IT à temps plein à son lot d’avantages :

  • vous avez une équipe dédiée à votre projet et qui ne travaille que sur votre projet ;
  • vous obtenez le contrôle total sur la propriété intellectuelle de votre future application ;
  • la confidentialité des informations stratégiques est optimum.

Par contre, ça a ses inconvénients :

  • c’est le mode de collaboration le plus cher de tous parce que vous devez payer un loyer, des équipements informatiques, des logiciels hors de prix, des taxes, des cotisations sociales et d’autres impôts que vous ne voulez pas payer ;
  • si vous n’êtes pas familier avec le processus de recrutement, vous allez vite déchanter, tant c’est difficile ;
  • le projet va débuter très lentement.

Clairement, cette option n’est valable que si vous avez plusieurs projets sur lesquels vous voulez travailler à la suite.

Sans compter les milliers d’euros que vous devez avoir en réserve pour honorer vos obligations. Et ce même si votre application ne génère pas de revenus immédiats.

2 – Faire appel à des freelances

Femme devant son PC face à la plage
Femme devant son PC face à la plage

Faire appel à un prestataire externe a plusieurs avantages :

  • vous ne le payez que lorsque vous avez besoin de ses compétences ;
  • il s’adaptera très rapidement à vos nouveaux projets ;
  • vous avez un vaste choix de prestataire et pouvez accéder à des talents situés à l’autre bout du monde.

Toutefois, avant de vous ruer à la conquête de vos freelances, prenez en compte les inconvénients qui vont avec :

  • si vous optez pour un freelance offshore, vous êtes exposé à un flou juridique ;
  • vous ne serez que rarement sa priorité vu qu’il alternera entre plusieurs projets ;
  • ce mode de fonctionnement marche difficilement pour des projets complexes ;
  • les risques de fuites de données seront accrus ;
  • vous serez exposé à des problèmes de communication, surtout si vous parlez des langues différentes.

De plus, si vous optez pour une tarification à la régie au lieu de celle au forfait, votre budget risque d’exploser.

3 – Déléguer votre projet à une agence de développement web

Développeurs web en séance de travail
Développeurs web en séance de travail

Récapitulons.

Créer sa propre agence coûte affreusement cher.

Faire appel à des freelances vous exposent à des risques de fuites de données et des risques légaux.

Alors pourquoi ne pas combiner le meilleur des deux mondes ?

Laissez-nous vous présenter les agences de développement web.

En passant par ces structures, vous pouvez déléguer votre projet de A à Z si vous le voulez. Et ça, ça à beaucoup d’avantages :

  • vous n’avez pas à gérer une équipe ;
  • vous gagnez du temps que vous pouvez allouer à d’autres projets ;
  • l’équipe est déjà prête à l’emploi et peut lancer votre projet à l’instant ;
  • c’est moins onéreux que d’embaucher vous-même les spécialistes.

Toutefois, cette option a aussi ses inconvénients :

  • vous avez un contrôle limité sur le processus de développement ;
  • vous êtes exposé à des erreurs de communication ;
  • rien ne vous garantit que l’agence qui vous a tapé à l’œil est compétente.

Heureusement, vous pouvez contourner ces difficultés en optant pour une agence utilisant la méthodologie agile comme Poyesis.

De plus, vous pouvez aisément reconnaître une agence web de mauvaise qualité grâce à quelques reds flags.

Et par la même occasion, vous pouvez vérifier qu’une agence web est compétente en regardant quelques éléments.

Mais vous pouvez faire encore plus simple.

Venez discuter avec notre chef de projet informatique. C’est gratuit. Ça ne vous engage à rien, et il fera son maximum pour vous aider à avancer dans votre projet.

Alors qu’attendez-vous ? C’est par ici.