Etre développeur back-end, c’est quoi ?
Le métier de développeur est de plus en plus sollicité. Cependant, il existe plusieurs spécialisations et il est parfois difficile d’y voir clair.
Ayant moi-même effectué une reconversion professionnelle pour devenir développeur back-end, j’ai été gêné par le manque de ressources détaillées sur la profession, la plupart des articles étant très généralistes.
J’avais une multitude de questions en tête, qui restaient souvent sans réponse :
- Comment se passe le travail d'équipe entre les différents développeurs back-end sur un même projet ? Quelle relation existe-t-il entre développeurs front-end et back-end ?
- Comment est géré un projet ? Aurai-je des interactions avec les clients ?
- Un développeur junior doit-il maîtriser la mise en ligne complète d'un projet avec configuration des serveurs et intégration continue ?
- Et les conditions de travail dans tout ça ?
Autant de questions auxquelles je vais aujourd’hui tenter d’apporter une réponse.
Quelle différence entre développeur back-end et front-end ?
Avant de voir les particularités du métier de développeur back-end, il est intéressant de bien comprendre en quoi il consiste. Tous les sites et applications connectées à internet fonctionnent sur un système de client (un navigateur, comme Chrome, ou une application mobile) qui communique avec un serveur. Le travail des développeurs back-end est principalement de concevoir le code qui s’exécute du côté du serveur.
Les développeurs front-end prennent, quant à eux, en charge l’interface client visible par les utilisateurs.
Les langages utilisés pour le développement back-end sont très variés, allant du PHP au Python en passant par Java, C#, Ruby ou encore… JavaScript.
Etre développeur : travailler solo ou en équipe ?
On a beau passer une bonne partie de la journée seul devant son écran, le métier de développeur requiert des interactions permanentes avec l’équipe. Une bonne communication est, en effet, primordiale pour effectuer un travail de qualité. Voici la liste des personnes avec lesquelles vous pourrez être amené à travailler.
Les chefs de projet
En agence web, le chef de projet sera votre interlocuteur principal. C’est lui qui se charge d’organiser et de planifier vos missions.
Chez Novaway, par exemple, les journées commencent régulièrement par un point faisant état de l’avancée du projet. Le chef de projet guide l’équipe sur les actions à mener et apporte son soutien en cas de difficulté.
Il donne également ses instructions par le biais d'un outil de gestion de projet tel que Jira ou Gitlab. Cela permet de visualiser aisément ce qui est à faire, est en cours ou résolu.
Les collaborateurs développeurs back-end
En fonction de leur envergure ou technicité, certains projets peuvent être effectués par plusieurs développeurs. Bien communiquer est alors important afin de répartir convenablement les tâches ou de transmettre de manière optimale le travail déjà réalisé.
Les développeurs back-end peuvent travailler ensemble à la qualité des projets en pratiquant la revue de code ou le pair programming. Ces méthodes permettent une relecture du code par un collaborateur afin d’éviter les erreurs, ce qui est un avantage non-négligeable du travail en communauté.
Les développeurs front-end
En tant que développeur back-end, il est également nécessaire d’interagir avec les développeurs front-end (bienvenue du côté obscur de la force ;’) ).
Dans le cas de projets où la partie client est simple, les développeurs front-end sont généralement en charge l'intégration du design. Ils passent ensuite le témoin aux développeurs back-end qui dynamisent l'ensemble.
Sur des projets où le côté client est plus “lourd”, les équipes front-end et back-end doivent se mettre d’accord sur une interface leur permettant de bien communiquer (par exemple, une API REST).
Les autres interlocuteurs
En fonction de la composition de votre équipe, vous serez éventuellement amené à collaborer avec d'autres profils :
- le directeur technique (CTO) qui sera à la fois votre manager et un soutien précieux dans votre apprentissage du développement
- l'architecte qui aura en charge de créer ou faire évoluer le schéma technique des applications
- l’administrateur système, qui s’occupera du bon fonctionnement des sites sur les serveurs, ou le développeur Devops qui aura la double compétence de développeur et d'administrateur système
- le responsable webmarketing / SEO qui vous donnera des directives afin d’assurer une bonne visibilité du projet dans les moteurs de recherche
- le responsable commercial qui aura besoin de délimiter le périmètre technique qu’il est possible de proposer au client
- le client : vous pouvez assister à la rédaction du cahier des charges, aux démonstrations ou entretiens téléphoniques afin de donner votre avis technique
Quelle boîte à outils pour un développeur débutant ?
Les cours de développement nous permettent d’apprendre les bases de quelques outils. Seulement, pas toujours simple de comprendre leur utilisation concrète en milieu professionnel. Voici une petite sélection de trois éléments sur lesquels j’aurais aimé avoir plus de précisions.
GIT
Pour travailler ensemble sur une même base de code, il est souvent demandé d’utiliser Git. Voici quelques actions récurrentes réalisables avec le langage Git :
- merger : fusionner une branche sur la branche principale
- récupérer des branches d'autres développeurs et les intégrer à la branche sur laquelle vous travaillez (rebase).
- suite à un rebase, résoudre les conflits générés sans mélanger le code à garder ou supprimer
- merger un commit précis et non la branche entière
- gérer ses erreurs (suppression / modification de commit)
- sauvegarder ses modifications (sans commit) afin d'aller sur une autre branche temporairement
Afin d’acquérir des notions fondamentales et avancées, je vous recommande cette conférence de Christophe Portneuve - Git Pro Tips
Serveurs
L'accès aux serveurs est souvent restreint afin de limiter l'accès aux données sensibles et d’éviter les erreurs de manipulation. De ce fait, cette partie est généralement prise en charge par des développeurs Devops ou des administrateurs système.
Il y a donc peu de chances pour que vous ayez des paramétrages à effectuer au sein des serveurs (manipulations de la base de données, gestion de Cron, intégration continue...).
Cela peut néanmoins arriver si des programmes Cron sont mis en place sur le serveur. Il sera alors fort probable que ce soit à vous de créer les commandes ou scripts exécutés par ces derniers (ex : commandes Symfony).
JavaScript
Vous pensiez que le JavaScript était uniquement pour les développeurs front-end ? Faux !
En tout cas, pas tout le temps. En effet, vous pouvez avoir besoin de gérer dynamiquement certains contenus, par exemple : dynamiser un formulaire suivant certaines conditions.
On reste donc bien dans le domaine du développeur back-end et de la manipulation de données serveur. L'utilisation de Javascript sera, dans ce cas, d'une grande aide pour résoudre votre problème. Avoir quelques notions de JavaScript est toujours un plus et vous permettra de gagner du temps.
Méthode Waterfall / Agile : quelle méthode de gestion de projet utilise-t-on ?
Les différentes méthodes de gestion de projet
Les projets incluant du développement technique peuvent être gérés par le biais de deux méthodes :
- La méthode Waterfall : elle est considérée comme une méthode de gestion "classique". Elle se base sur un cahier des charges. Celui-ci est validé en amont de la phase de développement. Une fois le projet commencé, il n’y a pas ou peu de retours en arrière.
- La méthode Agile : née d’un besoin de souplesse pour évoluer dans des contextes incertains, elle consiste à avancer par itérations. On fixe donc des objectifs à court terme et le projet est divisé en plusieurs sous-projets (sprints). La méthode est plus flexible fonctionnellement et demande au client de s’impliquer plus activement dans le projet.
Conditions de travail
Je souhaitais aborder les conditions de travail du développeur. Cependant, ce qui est vrai pour moi ne le sera pas forcément pour votre futur job.
Malgré tout, les agences web semblent globalement essayer d'adopter un esprit "start-up". Elles sont souvent adeptes de team building et d’afterworks ce qui permet une bonne cohésion au sein de l'effectif.
Ayant côtoyé la pointeuse dans mon précédent travail, je peux reconnaître que j'apprécie grandement cette ambiance et cette façon de travailler.
Néanmoins, ce n’est pas parce que le cadre est agréable que l’équipe n’en est pas pour autant sérieuse et que le travail n’est pas difficile. Etre développeur ne convient pas à tous les profils. Il faudra :
- Accepter les (mini) échecs, savoir se remettre en question constamment afin d'apprendre de ses erreurs
- Supporter la pression de la deadline qui approche alors qu'on est confronté à un souci ou à une technologie qu'on ne maîtrise pas totalement
- Ne pas avoir peur d’être force de proposition, se former et se faire confiance
Pour conclure, j’espère vous avoir éclairé un peu plus sur la profession de développeur. Passionnante, elle vous demandera de nombreuses ressources techniques et mentales. Vous aurez une multitude de choses à apprendre et des mises à niveau à effectuer régulièrement.
Petit conseil final : essayez de déterminer si l'esprit d'équipe est une valeur forte chez votre futur employeur. C'est un point essentiel qui vous permettra de trouver des soutiens, voire un mentor au sein de l'effectif afin de monter rapidement en compétences.