Article original : Programming Projects for New Developers – What to Build to Get Coding Experience
Par Moshe Feuchtwanger
Si vous êtes un nouveau développeur, vous êtes probablement familier avec le « Paradoxe de l'expérience ».
Il décrit le cycle frustrant que beaucoup d'entre nous traversent lorsque nous essayons d'obtenir notre premier emploi de développeur :
Pour obtenir un emploi, vous avez besoin d'une « expérience professionnelle ». Mais pour obtenir une « expérience professionnelle », vous avez besoin d'un emploi... !
L'emploi nécessite de l'expérience => nécessite un emploi => nécessite de l'expérience
Bien sûr, il y a des raisons pour lesquelles les entreprises préfèrent embaucher des développeurs plus expérimentés. Mais il est également vrai que les candidats sans expérience peuvent être plus motivés, mieux s'intégrer à la culture de l'entreprise, etc.
Dans cet article, je n'explorerai pas toutes les différentes façons dont les nouveaux développeurs peuvent contourner ce paradoxe (augmenter votre présence en ligne, parler lors de meetups, entrer en contact avec les responsables RH, etc.).
Au lieu de cela, je suis ici pour parler de ce que je crois être l'approche principale que les débutants devraient adopter pour éviter complètement le paradoxe : obtenir une expérience réelle.
Comment obtenir de l'expérience en développement avant d'avoir un emploi
Pour obtenir une expérience réelle en codage (pas seulement en codage – mais nous en parlerons plus tard), vous devez être activement en train de, eh bien, coder. Cela a du sens, n'est-ce pas ?
En tant que mentor, on m'a souvent demandé quelles étaient les meilleures idées de projets sur lesquelles les développeurs devraient travailler et créer pour pratiquer et démontrer leurs compétences.
Bien que ce ne soit pas une réponse directe, je dirai que l'idée du projet elle-même n'est pas la chose la plus importante.
Il existe de nombreuses idées de projets. Oui, certaines sont meilleures que d'autres en termes de complexité, de démonstration de compétences et de variété de technologies. Mon point est que vous ne devriez pas nécessairement opter pour le projet le plus spectaculaire.
Au lieu de cela, je recommande de créer un produit que vous ou quelqu'un que vous connaissez utiliserez réellement.
Pourquoi est-il important de construire un produit que vous utiliseriez ?
L'un des objectifs de la création d'un projet de portfolio est de démontrer aux entreprises que vous pouvez travailler sur leur produit tout comme vous l'avez fait sur votre projet.
Je ne parle pas seulement du produit final – mais aussi des débats, des décisions de conception et des choix que vous avez faits. Tout cela est ce que les développeurs font au quotidien et c'est ce que les entreprises attendront de vous.
Chaque écart entre votre projet et leur produit est une variable inconnue, un risque qu'ils devront prendre en vous embauchant. Votre objectif est de leur montrer que le risque est aussi petit que possible.
Hypothétiquement, si votre projet était exactement comme leur produit, ils vous embaucheraient sur-le-champ. Ce n'est bien sûr pas le cas, mais mon point est que votre projet devrait démontrer autant d'aspects d'un projet réel que possible. Tout ce que vous leur montrez que vous pouvez faire – chaque compétence que vous confirmez – diminue leur risque de vous embaucher.
Lorsque je dis « aspects » du projet, je veux parler des composants du système, des couches et des compétences que chaque produit nécessite.
Si nous parlons d'un produit basé sur le web, ces fonctionnalités peuvent être techniques telles que des frameworks et des bibliothèques pour l'UI/serveur, l'authentification, la communication, les intégrations tierces, etc. Vous pouvez également montrer vos connaissances en ingénierie sur des sujets tels que l'architecture, la conception de systèmes, le code propre, le code lisible, les solutions évolutives, etc.
Avec cette compréhension, nous pouvons convenir qu'il est préférable de construire un projet plus grand et plus complexe que vous ne l'auriez peut-être pensé initialement.
Il y a certains défis qui accompagnent la construction de grands projets complexes. C'est en fait le sujet dont je veux parler dans cet article.
Comment construire un grand projet complexe – avec succès
Lorsque vous travaillez sur un projet, votre plus grand ennemi n'est pas votre niveau de connaissances techniques (vous pouvez l'améliorer), votre confiance (vous pouvez l'améliorer), ou le manque de ressources (il y en a une tonne).
Le plus grand ennemi est vous-même ou plus précisément votre motivation. De nombreuses fois, les développeurs, y compris moi-même, commencent un nouveau projet avec beaucoup d'enthousiasme mais perdent leur motivation en cours de route et abandonnent le projet.
Pourquoi la motivation s'estompe-t-elle ?
Faisons un pas en arrière et rappelons-nous comment fonctionne la motivation. En tant que fiers propriétaires d'un système de récompense, nous sommes « programmés » pour continuer à faire des choses qui nous aident à accomplir des objectifs en nous donnant de bonnes sensations (la « récompense »).
Plus le « lien » entre l'action et la récompense est fort, plus la chance que nous le fassions à nouveau est grande. C'est ainsi que notre corps et notre esprit nous « dirigent » pour faire les bonnes choses.
Pensez simplement aux choses que vous faites pour obtenir des récompenses émotionnelles : produire des vidéos drôles pour obtenir des likes sur TikTok, répondre à des questions sur StackOverflow pour construire votre réputation, ou travailler dur pour pouvoir financer les vacances dont vous avez toujours rêvé.
Notre motivation est fortement affectée par le système de récompense.
La motivation est une fonction de la taille du prix et du temps qu'il faut pour l'obtenir.
Mais que se passe-t-il si le prix n'est pas immédiat ? Que se passe-t-il si le chemin vers le prix est long ? Le lien entre l'action et le prix s'affaiblit, et la motivation aussi.
Comment rester motivé lorsque vous travaillez sur un projet
Une solution consiste à augmenter le prix – mais ce n'est pas toujours possible. Souvent, le prix est donné. Une autre solution consiste à « diviser » le prix en plus petits morceaux afin que nous puissions gagner des choses en cours de route.
Par exemple, 100 000 $ en un an = ~274 $ par jour.
Ainsi, pour garder notre motivation forte, nous devrions nous préparer à gagner, même de petites victoires, plus souvent. Nous devrions obtenir la récompense fréquemment pour garder la motivation élevée, sinon, elle chute.
Connaissez-vous « Flappy Bird » ? C'est un jeu où vous devez continuer à appuyer sur « espace » (récompense) pour empêcher l'oiseau (motivation) de tomber.
Capture d'écran prise depuis https://flappybird.io/
Même chose pour votre projet. Lorsque un projet vous aide à atteindre un objectif (obtenir un emploi) ou vous fait ressentir un sentiment positif tel que la fierté (vous avez relevé le défi), vous obtenez une récompense. Ou peut-être obtenez-vous de la satisfaction en aidant des personnes qui vous sont chères, ou vous vous sentez flatté lorsque quelqu'un vous mentionne sur Twitter.
Dans tous ces cas, vous êtes récompensé. Mais ce n'est pas suffisant d'avoir cette bonne sensation de temps en temps. Pour rester motivé, vous devriez la ressentir fréquemment.
Maintenant, nous pouvons comprendre pourquoi le type exact de projet n'a pas tant d'importance. Parce qu'il ne vous récompense pas nécessairement souvent.
Voici quelques exemples de projets qui peuvent récompenser souvent :
- Un produit utilisé par de nombreux utilisateurs et recevant de bons retours. Récompense : likes, nombre de téléchargements/visites, etc.
- Un produit pour une bonne cause (comme une organisation à but non lucratif). Récompense : Votre visage heureux dans le miroir chaque matin, en faisant quelque chose de bien.
- Un produit qui améliore votre vie. Récompense : Votre qualité de vie est constamment améliorée.
Et un produit qui vous aide à obtenir un emploi ? Cela devrait vous donner une bonne sensation, n'est-ce pas ?
Eh bien, c'est délicat. Vous vous souvenez de l'équation : « La motivation est une fonction de la taille du prix et du temps qu'il faut pour l'obtenir » ? Le prix d'être embauché est bien sûr très élevé, mais le temps ? Le temps est inconnu. Donc, au fur et à mesure que le temps passe, « le lien entre l'action et le prix s'affaiblit, et la motivation aussi ».
Alors que travailler sur un projet qui reçoit de bons retours vous fait vous sentir bien fréquemment, un projet sans signification que vous faites uniquement pour obtenir un emploi ne le fait pas (sauf si vous êtes embauché, bien sûr).
Comment construire un projet que vous utilisez réellement
Habituellement, les deux premiers types de projets – celui avec des tonnes d'utilisateurs et celui pour une bonne cause – sont plus difficiles à obtenir en tant que débutant. Cela peut prendre un certain temps pour atteindre un tel point.
Cela nous laisse avec le 3ème type – « Un produit qui améliore votre vie ». Le bon côté de ce type de projet est qu'il commence généralement comme une simple amélioration de votre vie. Ensuite, en cours de route, vous découvrez plus de fonctionnalités dont vous avez besoin et vous les ajoutez au fur et à mesure. Utiliser un bon produit que vous avez créé vous récompense bien sûr, donc votre motivation reste élevée.
À mesure que vous ajoutez plus de fonctionnalités, l'application devient plus complexe. Maintenant, vous ne pouvez pas simplement ajouter des composants ici et là. Vous devez faire des plans et prendre des décisions sur la structure, la conception et l'architecture. Vous devez prendre des décisions sur les outils et les bibliothèques à adopter.
Chaque pensée et chaque décision que vous prenez couvre des aspects de la « liste d'aspects » dont j'ai parlé ci-dessus (c'est-à-dire les compétences que les entreprises veulent voir que vous avez). Si vous faites cela correctement, cela réduit le risque pour les entreprises lorsqu'elles vous embauchent.
En fait, selon mon expérience, une grande partie de l'entretien technique est la conversation sur les « expériences précédentes ». Dans cette conversation, les intervieweurs vous posent des questions sur votre expérience précédente, en se concentrant sur les décisions que vous avez prises, les défis que vous avez relevés et à quel point vous connaissez bien le produit en termes techniques.
Plus vous avez de choses à dire dans cette section, plus vos chances de bien performer et d'impressionner l'intervieweur sont élevées.
D'accord, revenons à votre grand projet. Un jour, vous commencez à penser « Cette application est géniale. Si j'en tire une réelle valeur, peut-être que d'autres aussi ». Vous la publiez donc. Maintenant, les gens peuvent trouver et utiliser votre application et qui sait, peut-être qu'ils l'aimeront même.
Certains d'entre eux l'aimeront tellement qu'ils laisseront de bons retours publiquement. Il y a des responsables RH dans la foule. Ils utilisent votre application, ils lisent les retours, et par hasard, ils ont besoin d'un nouveau développeur – une heureuse coïncidence !
Voyez ce qui s'est passé ? Vous avez créé cette application pour améliorer votre vie, et ensuite :
- Elle fait du bien aux autres ❤️ et ensuite
- Vous recevez de bons retours 👍 et ensuite
- Vous obtenez un entretien 📋
C'est une situation gagnant-gagnant-gagnant-gagnant.
Le bon côté de cette idée est qu'elle vous aide même si elle ne se termine pas par une offre d'emploi. Peut-être que d'autres personnes n'utiliseront même pas votre application – mais hé, elle améliore toujours votre vie et vos compétences en codage, ce qui vous rapproche d'un emploi. Les avantages supplémentaires ne sont que des extras.
Quel est le risque ici ?
Alors que vous lisez ceci, à un moment donné, vous pourriez penser « pourquoi devrais-je créer un produit pour moi-même ? Tous les produits dont j'ai besoin ont déjà été créés. Il n'y a aucun moyen que je puisse le faire mieux ».
Tout d'abord, vous n'êtes pas une startup (encore). Rien de mal ne se passera si vous construisez un produit qui a déjà été construit.
Deuxièmement, vous avez probablement quelques bonnes idées sur la façon d'améliorer les produits que vous utilisez. Peut-être quelques fonctionnalités que vous aimeriez voir ajoutées, certaines qui pourraient être supprimées, etc.
Voici un exemple : J'ai utilisé l'une des applications de liste de courses. C'est une excellente application, synchronise la liste entre tous les appareils de la famille, vous permet de définir des catégories, conserve l'historique pour réajouter des produits plus facilement, et peut être ouverte sur les téléphones et les ordinateurs de bureau. Très pratique.
J'ai vraiment apprécié l'utiliser, mais en cours de route, j'ai senti que ce n'était pas parfait pour moi. Certaines fonctionnalités manquaient, comme il n'y avait pas de moyen de télécharger une photo de produit. Je ne pouvais pas non plus définir un niveau d'urgence et je ne pouvais pas voir qui avait ajouté chaque produit si c'était une liste partagée. De plus, la vue de l'historique montrait des produits qui étaient déjà ajoutés à la liste, donc c'était confus.
Je suis assez sûr que cela vous semble familier pour au moins l'une des applications que vous utilisez. Alors prenez vos idées et essayez de les concrétiser.
Conclusion
Alors, quelle était la question ? Quel type de projets devriez-vous réaliser en tant que nouveau développeur ?
Créez un produit que vous ou quelqu'un que vous connaissez apprécierez réellement d'utiliser et trouverez utile.
Comment sais-je que cela fonctionne ? Eh bien, c'est exactement ce que j'ai fait pour obtenir mon premier emploi il y a 10 ans. C'est aussi ainsi que certains de mes propres projets réussis ont commencé.
Oh, et à propos de l'application de liste de courses ? Oui, j'en ai créé une moi-même. C'est une Progressive Web App, avec toutes les fonctionnalités que j'ai mentionnées et plus encore. Vous êtes plus que bienvenus pour la consulter ainsi que mes autres projets open source sur mon Github.
Merci d'avoir lu ! Bonne chance dans votre parcours de développeur.