Back end vs Front end – par où commencer ? La suite du défi de lecture android m’amène à tenter de résoudre cette question importante.
Actuellement J’ai lu une grande partie de la documentation Android sur la nouvelle architecture.
Pour vous résumer à peu près pour ceux qui sont intéressés, l’architecture des applications d’Android suit le modèle de conception basé sur les couches.
La première couche est la couche UI ( couche de l’interface utilisateur ). C’est la partie qui représente tout ce qui est visible à l’écran de même que les interractions avec l’application.
La seconde couche la plus importante est la couche de données. Elle ne concerne pas seulement les base de données mais beaucoup plus. Elle s’occupe de tout ce qui sert à extraire et produire les données.
Ensuite il ya la couche de domaine qui est optionnelle. Son existence dépend de ce que votre application android fera. Son rôle est de gérer les logiques complexes de votre application.
Elle contient le plus souvent des fonctions réutilisable pour tout votre programme. A utiliser seulement quand c’est vraiment nécessaire.
Pour en savoir plus , lisez la page de l’aperçu de l’architecture android.
Après une longue lecture et de bonne réflexion sur cette section de la documentation , une question m’est revenue. Il s’agit d’une question importante qu’on rencontre souvent.
Pour développer une application doit-on commencer par le front end ou le Back end ?
C’est quoi le back end et le front end ?
Back end et front end ne sont pas des termes nouveaux. vous allez souvent les entendre par les termes développeurs back end ou développeur front end ou encore développeur fullstack pour désigner les deux.
Nous avons parlé plus haut de l’architecture en couche d’android. Si vous avez lu l’introduction, le back end regroupe les couches de données et de domaines. Le front end concerne la couche UI.
Pour faire court, le front end concerne toutes les tâches que l’utilisateur peut voir et/ou interargir avec.
Dans un éditeur de texte, celà revient à l’action de cliquer sur un bouton de sauvegarde.
Le back end concerne toutes les tâches que l’utilisateur ne peut voir dans votre application.
Si on revient sur notre simple éditeur de texte comme exemple, le back end équivaut à l’écriture de votre texte dans un fichier après avoir cliqué le bouton sauvegardé.
Maintenant qu’on sait ce qu’un front end et un back end, on peut maintenant se demander par où commencer si on veut programmer une application. On conçoit et code d’abord le front end ou bien le back end en premier ?
Back end vs Front end – par où commencer ?
Dans la conception et le développement d’une application, android ou autre , on est souvent confronter à plusieurs dilemme.
Est ce qu’on commence par la conception graphique ou visuelle ? c’est à dire le front end ? ou bien on travaille sur l’architecture des données et des fonctionnalités ? c’est à dire le back end ?
Plusieurs arguments s’affrontent.
Arguments en faveur du back end
J’ai souvent commencé mes projets personnels de développement par le back end parce qu’on nous a souvent appris ainsi dans mes études.
Débuté par le back end permet plus de flexibilité dans le projet et aide à gagner du temps.
Cela est vrai parce que lorsqu’on on fait le back end on crée une sorte de noyau qui peut être utilisé à plusieurs reprises pour les interfaces graphiques.
Si on fait très bien notre architecture, le back end peut avoir plusieurs types d’interfaces graphiques et être adapté pour plusieurs design.
Commencer par le noyau permet d’avoir une sorte de base sur lesquels construire tout ce qu’on veut.
Problèmes avec le back end
Quand j’ai commencé à travailler avec les clients en freelance , j’ai constaté que presque que tout le monde juge la qualité de ton travail par ce qu’il voit.
Je ne connais personnellement aucun client qui va être satisfait par le fait qu’on lui dise qu’on a fait X fonctionnalité et il reste Y sans voir le résultat de ses propres yeux. C’est normal et c’est humain.
Même si on doit faire une sorte de prototype pour se mettre d’accord avec le client, c’est encore le visuel ou le front end du programme qui est mise en avant.
Un autre problème que je trouve souvent c’est que le développement du back end n’est pas souvent linéaire. Il peut arriver que j’ai des interruptions pendant longtemps et après je reviens sur le projet.
Ces interruptions peuvent être le travail sur un projet plus urgent.
Dans ce cas de figure il est souvent difficile de se souvenir de ce qu’il reste comme travail à faire si on y revient .
Il y a des stratégies permettant de noter son évolution et ce qui reste à faire mais elles ne sont pas les plus facile à appliquer parce que cela requiert de la discipline et de l’organisation .
Commencer par le back end nous obligerait à fouiller dans le code pour trouver le manque sur lequel il faut travailler à chaque reprise.
Arguments en faveur du front end
Personnellement je n’ai commencé par le front end que très récemment.. Dans mes études en programmation et dans mon entourage, on me l’a souvent déconseillé .
Récemment quand j’ai commencé par cette stratégie, les bénéfices étaient presque immédiats.
En commençant par l’interfaces graphiques:
Je peux tout de suite montrer au client l’apparence visuelle de son futur produit .
On peut très rapidement se mettre d’accord sur les détails visuels de son produit.
Le client a une idée de ce que son logiciel pourrait ressembler et il a le temps de l’étudier et de proposer des améliorations.
De mon côté en tant que développeur j’ai une sorte de maquette qui me permettra de ne pas perdre de vue l’avancement du projet.
Après s’être mis d’accord avec le client il est plus facile de se concentrer sur le Back end.
S’il s’agit d’un projet personnel j’ai constamment la motivation de continuer le développement parce que j’ai l’apparence du logiciel déjà en face de moi.
Avoir l’apparence du produit permet de facilement faire le marketing de l’application avant même le début du vote développement.
Cela permet de collecter les contacts des prospects qui sont intéressés par le produit pour faciliter son lancement.
Le front end donne plus de visibilité sur ce dont on a besoins pour faire le back end.
A moins de connaître tous les détails d’un projet, commencer par le back end n’est pas sans changement profond pour plutard.
Lorsqu’on commence par le front end, il est plus facile de faire valider le projet et de confirmer les contenus de formulaires et certains détails pouvant servir au développement du back end.
Problèmes quand on commence avec le front end
Cette section peut être biaisée parce que je viens de commencer par la pratique du front end d’abord.
La premier problème c’est que la conception visuelle de l’expérience utilisateur n’est pas mon fort. Je ne peux aller plus loin que l’interface native android ou les frameworks boostrap ou materialize.
Si le design visuel d’application n’est pas votre fort, commencé par le front end pourrait vite tourner au cauchemar.
Si le projet doit être porté sur plusieurs plateforme , écran ou systèmes, la conception du front end peut vite se compliquer
C’est en ce moment que le back end est important, le noyaux donne une base sur lequel on peut adapter et faire facilement évoluer le front end .
A part ça, je n’ai trouvé que des qualités. J’attend d’avoir plus d’expérience et d’éléments pour développer cette section.
Conclusion
Alors qu’elle stratégie est la meilleure ? le back pour le front ?
Tout dépend du projet et de la technologie que vous utiliser pour travailler. Généralement chez les développeurs d’application web, la séparation du front et du back est plus nette que chez les développeurs android.
A mon avis faire le back end arrange plus le développeur que les clients alors que faire le front end arrange plus le client que le développeur.
Je vote pour le front end en premier et par défaut parce qu’à chaque fois on perd la motivation dans le back end, le front est là pour nous ramener à la raison.
De plus, il permet de travailler plus facilement avec les clients plutôt que si je commence avec le back end.
Je commencerai par le back end si le projet sera porté sur plusieurs plateforme ou/et que je n’ai absolument aucune idée sur comment je vais concevoir le front end.
Pour être un bon développeur, il faut savoir se mettre à la place du client, donc front end first.