Dans le monde du travail, les employeurs regardent deux types de compétences différentes :
les compétences transversales, dites “soft skills” ;
les compétences techniques, dites “hard skills”.
Les soft skills prouveront que vous pouvez vous adapter à n’importe quel environnement. Certaines de ces compétences sont déjà en vous, sans même que vous vous en rendiez compte. Les autres peuvent s'apprendre ! Les soft skills sont des compétences, elles peuvent donc se développer. OpenClassrooms propose d'ailleurs des cours sur ces soft skills comme le cours Développez vos soft skills.
Les hard skills montrent votre talent pour un travail spécifique – dans votre cas, le développement – personne ne naît avec. Ce serait trop beau ! 🤷♂️
Voyons dans ce chapitre les composantes principales qui feront de vous le développeur dont toutes les entreprises raffolent.
Les compétences transversales : “soft skills”
Tous les points que nous allons voir dans cette section représentent les points les plus importants pour rayonner dans votre travail. Soyez vous-même avant tout, ce ne sont que des points sur lesquels travailler si vous ressentez une faiblesse.
Ces compétences comprennent des éléments tels qu’une bonne communication, le travail d’équipe, la ponctualité, l’honnêteté ou l’organisation.
Restez calme et patient
En tant que développeur, il est important que vous restiez calme. Prenez le temps de bien faire les choses et soyez attentif au moindre détail. Vous serez face à des problèmes à longueur de journée. Votre capacité à regarder au bon endroit, ne pas vous énerver, trouver une ou plusieurs solutions fera toute la différence.
Ne codez pas trop
Vous allez ressembler à un zombie ! Traduire une demande en lignes de code et gérer tous les bugs liés demande beaucoup d’énergie mentale. Votre concentration va devenir une denrée rare.
Il vaut mieux créer un petit code qui marche, plutôt que 2 000 lignes à jeter à la poubelle.
Pensez aux autres
Je ne cesserai jamais de le répéter, vous n’êtes pas tout seul. Vos compétences techniques perdront énormément de valeur si vous ne savez pas travailler en équipe ou échanger avec des clients.
Vous devez être capable d’expliquer votre travail d’une manière simple à des personnes qui n’y connaissent rien, et d’une manière technique à d’autres développeurs.
Ayez une bonne logique
Pour la plupart des métiers de développeur, vous n’aurez pas besoin d’être une brute en mathématiques. Cependant, votre logique sera fortement mise à l’épreuve. Sans logique ni algorithmique, il vous sera difficile d’évoluer en tant que développeur. Vous effectuerez certes beaucoup de tâches basiques, souvent répétitives, mais votre esprit de logique vous permettra d’aller plus loin, d’automatiser et d’optimiser votre code.
Formez-vous tout le temps
Les technologies évoluent tellement vite qu’il devient même dangereux de stocker des connaissances dans ce domaine. On dit qu’elles deviennent rapidement “obsolètes”.
Il est donc important de se former tout le temps et surtout d’apprendre rapidement.
Faites de la veille
Chaque langage de programmation que vous utiliserez sera constamment mis à jour. Il est donc important d’être au courant des dernières bonnes pratiques à mettre en œuvre. Soyez à la pointe !
Cherchez sur Google
Faites de Google votre meilleur ami ! Dorénavant, vous passerez plus de temps avec lui qu’avec n’importe quelle personne que vous côtoyez. Rechercher sur Google doit être un automatisme. N’ayez pas peur de rechercher des choses complètement bêtes ! Google ne vous jugera pas ; au contraire, il sera toujours là pour vous aider. Économisez votre réflexion au maximum, elle est très précieuse.
Si vous voulez vous différencier des autres candidats pendant un entretien, ce sont les compétences humaines, transversales ou le savoir-être qui vont primer. Les “soft skills” sont indispensables et vous devez sûrement vous en douter, mais sans compétences techniques, cela n’a pas de sens...
Les compétences techniques : “hard skills”
Non ! Les compétences techniques d’un développeur ne sont pas qu’une liste interminable de langages de programmation.
Quelles sont les compétences de base ?
Évidemment, vous devez avoir une spécialité et un langage de prédilection, mais nous en parlerons dans la partie 2, consacrée à chaque spécialité.
Voyons les compétences qui vous démarquent techniquement.
Gestion des versions – le “versioning”
Pour chacun de vos projets, vous aurez besoin d’une solution de sauvegarde plus communément appelée “backup”, à laquelle nous ajoutons une gestion des versions.
Pour chacun de vos projets, vous allez enregistrer chaque changement du code sur 2 formats :
le "backup", ou sauvegarde ;
le gestionnaire de versions.
Le backup permet d’archiver les données pour protéger votre code en cas de suppression ou de panne.
Le gestionnaire de version. Un gestionnaire de version sert principalement à :
garder un historique de modifications ;
travailler en équipe sur le même projet de développement ;
créer des branches de développement (séparer chaque nouvelle fonctionnalité de la version principale tant qu’elle n’est pas terminée).
Le protocole permettant de gérer les versions d’un projet s'appelle Git. Il existe plusieurs plateformes d’hébergement de dépôts Git, comme GitHub ou GitLab.
Cette image représente les versions d'un projet versionné avec Git. En gris, la branche principale dite master, et en bleu une branche qui a servi à développer une autre fonctionnalité, appelée new-feature. Les deux ont ensuite été fusionnées. Chaque point représente une version du code, et Git permet de revenir à ces versions.
Il est très important de conserver toutes les versions de la solution que vous développerez, pour pouvoir revenir sur une version différente en cas de problème. Plusieurs modifications peuvent être apportées sur un projet chaque jour.
Test de votre code – le “testing”
Le testing est une partie à ne pas négliger ! Il est indispensable de tester que votre solution effectue bien ce qu’il faut. On parle souvent de tests “unitaires”. Pour chaque fonctionnalité, définissez en quoi elle consiste, puis créez les tests associés.
Mieux vos tests sont définis, plus vous réduisez le nombre potentiel de bugs sur votre solution.
Vous ne pourrez pas tester tous les comportements possibles, mais vous pouvez essayer ! Les utilisateurs finaux de votre solution seront également considérés comme des testeurs. Faites simplement en sorte qu’ils rencontrent le moins de bugs possible.
Clarté et lisibilité de votre code – le “norming” ou “beautifying”
Vous n’êtes pas seul ! Vous devez à tout prix utiliser une norme dans le langage que vous utilisez, pour que tout le monde puisse se comprendre.
Cette norme s’applique aussi bien dans le nom des fichiers ou dossiers que dans le code en lui-même. Elle peut aller jusqu’au nombre de caractères par ligne, ou de lignes par fichiers.
Pourquoi ?
Un code “sale” peut devenir un réel enfer à déchiffrer et donc une perte de temps considérable.
Lorsque vous aurez besoin d’aide, la personne qui vous aidera n’aura pas de mal à comprendre votre code. Le contraire est également vrai.
Si un développeur doit travailler sur votre code, son temps d’adaptation sera relativement court. Le contraire est également vrai.
Si votre code est propre et lisible, c’est toute votre équipe qui vous remerciera.
Conseil d’ami : prenez le temps qu’il faut pour écrire un code propre et normé. Il existe des normes et/ou des bonnes pratiques dans chaque langage de programmation.
Rédaction de documentation et de commentaires
Si votre code est lisible et clairement commenté quand c'est nécessaire, vous n’aurez (presque) pas besoin de le documenter.
Package app;
/**
* Defines methods to encrypt passwords
* Use the Bcrypt tools
*
* @version 1.1
*/
public class Password {
/**
* Options for the Bcrypt algorithm
*/
private static final int WORKLOAD = 12;
/**
* Used to generate a string representing a password.
*
* @param password_plaintext The account's plaintext password.
*
* @return String - the bcrypt hash password
*/
public static String hashPassword(final String passwordPlaintext) {
final String salt = BCrypt.gensalt(WORKLOAD2);
final String hashedPassword = BCrypt.hashpw(passwordPlaintext, salt);
return (hashedPassword);
}
}
N’hésitez pas à utiliser les commentaires dès que c'est nécessaire. Indiquez en haut de chaque partie son utilité. Plongez-vous dans la tête d’une personne tierce en train de lire votre code. Mettez-vous à sa place !
Si vous avez passé une après-midi entière à créer une seule ligne de code complexe (ce qui est normal), il est tout à fait normal qu’une personne externe ne la comprenne pas du premier coup. Indiquez donc son utilité, expliquez potentiellement pourquoi cette ligne est la conclusion de votre réflexion. Elle deviendra tout de suite claire pour l’utilisateur qui la verra.
Lorsque que je travaillais en entreprise, mon code était carrément refusé s'il n’était pas correctement commenté. Je n’avais pas le droit d’importer mes modifications sur la partie principale de l’application si elles n’étaient pas correctement expliquées. Même si elles marchaient. Car mon patron savait que je n’allais pas rester dans l’entreprise pour toujours, et que quelqu’un allait devoir réutiliser mon code.
En résumé
Dans ce chapitre, nous avons vu que :
il existe deux types de compétences auxquelles tous les recruteurs font très attention : vos compétences transversales (soft skills) et vos compétences techniques (hard skills) ;
les soft skills prouvent que vous vous intégrerez correctement dans une équipe ;
les hard skills montrent votre talent pour un métier en particulier. Dans notre cas, le métier de développeur ;
les soft skills peuvent aller de la bonne communication à l’organisation, en passant par la ponctualité, l’honnêteté ou le travail d’équipe ;
soft skills : en tant que développeur, restez calme et patient, ne codez pas trop, pensez aux autres et à votre équipe, ayez une bonne logique, formez-vous tout le temps, faites de la veille et ayez l’esprit de recherche ;
les hard skills représentent principalement le ou les langage(s) de programmation que vous devrez maîtriser pour mener à bien votre mission. Mais pas que… ;
hard skills : en tant que développeur, vous devez savoir gérer les versions d’un projet, tester votre code, mettre votre code à la norme, rédiger de la documentation et des commentaires.
C'est bientôt la fin de cette première partie ! Je vous invite à passer le quiz afin d'évaluer votre bonne compréhension de ce que nous avons vu précédemment.
Dans la prochaine partie, nous entrerons dans les détails de chaque métier de développeur et leurs spécificités. À tout de suite !