Article original : Lessons Learned from My Journey as a Self-Taught Developer

Par Victor Cassone

Le parcours du développeur autodidacte est difficile et rempli d'incertitudes. Il n'y a pas de ligne droite du débutant au programmeur professionnel. Pour cette raison, je crois que tous les développeurs autodidactes ont une histoire unique à raconter.

Dans cet article, je vais partager mon parcours en programmation à travers une série de leçons que j'ai apprises en chemin. J'espère que lire mon expérience d'auto-apprentissage de la programmation vous aidera à réfléchir sur votre propre passé et vous motivera à continuer d'avancer.

Leçon #1 : Concentrez-vous sur le processus

Lorsque j'ai commencé à apprendre à programmer, je n'avais jamais l'intention d'en faire une carrière. Je voulais simplement créer une application spécifique.

Mon parcours a commencé lorsque j'étais en dernière année de licence. Je venais de finir la biographie de Richard Branson et je lisais probablement trop TechCrunch. J'étais rempli d'énergie entrepreneuriale.

Je lisais constamment comment des étudiants recevaient des montants massifs d'investissement pour leurs idées d'applications mobiles. Je pensais que je pouvais être l'un de ces étudiants.

Un jour, en marchant entre les cours, une idée d'application m'est venue. Je suis rapidement devenu convaincu d'avoir trouvé la prochaine grande chose.

J'étais consumé par cette idée et j'ai arrêté de prêter attention aux cours. Mon excitation pour cette idée d'application a rapidement grandi au point où j'ai senti que je devais passer à l'action.

Il y avait un gros problème. Mon idée était une application mobile et je ne connaissais personne qui pouvait développer des applications mobiles.

Alors je me suis dit, "quoi de pire, à quel point la programmation pourrait-elle être difficile ?" Je perdais de l'intérêt pour ma majeure et je passais beaucoup de temps à jouer à Xbox. Je pouvais consacrer une partie de mon temps libre à développer mon idée d'application mobile.

Parfois, être naïf vous aide à passer à l'action lorsque vous ne le feriez normalement pas.

J'étais un étudiant sans expérience en programmation, en affaires ou en design, essayant d'apprendre Android pour pouvoir construire une application mobile complexe. Je suppose que c'est ce que vous obtenez lorsque vous mélangez une grande idée avec la machine à hype de la Silicon Valley.

J'aimerais pouvoir vous dire que les choses se sont bien passées à partir de là.

J'ai acheté quelques livres sur le développement Android et j'ai passé d'innombrables heures dans ma chambre à essayer de bricoler mon application. Je ne me souciais pas de la façon dont l'application fonctionnait, je voulais simplement un produit fini.

Le temps a passé et l'application est devenue un Frankenstein de code copié et collé. L'application n'avait pas beaucoup de fonctionnalités et elle fonctionnait à peine sans planter.

Ce n'est que lorsque je me suis retrouvé par accident dans un cours d'informatique que j'ai réalisé que je devais me concentrer davantage sur l'apprentissage réel du développement logiciel.

Mon incapacité à programmer m'a conduit à abandonner mon idée initiale d'application. J'en suis venu à la réalisation que je ne ferais pas la prochaine grande chose, du moins pas encore.

Avec le temps, j'ai corrigé mon comportement et j'ai pris l'apprentissage plus au sérieux. J'ai commencé à aimer la programmation et j'ai finalement commencé une carrière en tant que développeur logiciel.

Mon idée de grande application m'a consumé pendant longtemps. Elle a mis mon focus sur le résultat final plutôt que sur le processus pour y arriver.

Lorsque vous êtes trop concentré sur le résultat final, vous commencez à prendre des raccourcis. Les raccourcis peuvent mener à quelques progrès à court terme, mais à long terme, votre manque de connaissances vous rattrapera toujours.

Il est important de se rappeler que l'apprentissage de quelque chose de grand, comme la programmation, nécessite de nombreuses petites étapes. Chaque étape devra être traitée avec soin.

Apprendre de nouvelles choses, c'est comme construire une maison. Vous commencez par les fondations et vous construisez vers le haut. Si les fondations sont défectueuses, tout s'effondrera tôt ou tard.

Parfois, construire des fondations solides nécessite de ralentir. Il n'y a pas de honte à aller lentement. Les personnes qui comprennent les bases du premier coup finiront par devancer celles qui doivent revenir en arrière et les réapprendre.

Il y a un vieux proverbe chinois qui dit :

"Il vaut mieux faire beaucoup de petits pas dans la bonne direction que de faire un grand bond en avant pour trébucher en arrière."

Ce n'est pas la vitesse à laquelle vous pouvez faire quelque chose, c'est la lenteur à laquelle vous pouvez le faire correctement.

J'étais un exemple parfait. De l'extérieur, on aurait pu penser que j'étais un enfant prodige de la programmation. En réalité, je ne pouvais pas construire une application pour sauver ma vie.

Concentrez-vous sur le processus et vous vous surprendrez de la quantité de progrès que vous faites chaque jour.

Leçon #2 : Stack Overflow est génial (mais dangereux)

Alors que je construisais mon application tueuse, Stack Overflow est devenu mon meilleur ami.

Chaque fois que je bloquais, j'essayais de formuler une question parfaite à poser à la communauté Stack Overflow. Je posais quelques questions par jour.

Non seulement je posais des questions, mais je traitais aussi les réponses sur Stack Overflow comme de l'Évangile. Je passais un temps fou à parcourir le site pour essayer de trouver un morceau exact de code qui résoudrait mon problème.

Lorsque je trouvais une réponse appropriée, je la copiais et la collais directement dans ma base de code et j'essayais de la faire fonctionner avec mon code existant. Je passais peu de temps à essayer de comprendre le code que j'ajoutais.

J'ai fait de la force brute essai-erreur un nouvel art.

Ce processus a continué pendant un certain temps jusqu'à ce que je finisse par me rendre compte des défauts de mon approche.

Stack Overflow est une bénédiction et une malédiction. Il est génial pour vous aider à résoudre des problèmes – cependant, si vous n'êtes pas prudent, vous pouvez rapidement devenir dépendant du site.

Parfois, le site est trop efficace pour résoudre des problèmes. Il crée un faux sentiment de confiance qui peut mener à plus de maux de tête à l'avenir.

Stack Overflow vous montre comment faire fonctionner quelque chose, mais il ne vous dit généralement pas explicitement pourquoi cela fonctionne.

Comprendre le comment est important. Les bugs doivent être corrigés et le code doit fonctionner.

Cependant, comprendre pourquoi quelque chose fonctionne est ce qui va vous aider à appliquer ces connaissances à l'avenir.

C'est comme la citation...

"Donnez un poisson à un homme, et vous le nourrissez pour un jour. Apprenez à un homme à pêcher, et vous le nourrissez pour toute une vie."

Copier et coller du code de Stack Overflow, c'est comme donner un poisson à quelqu'un. Comprendre pourquoi un morceau de code fonctionne, c'est comme lui apprendre à pêcher.

Il n'y a rien de mal à copier et coller du code. Nous le faisons tous. Ce n'est un problème que lorsque cela devient une béquille et entrave notre croissance en tant que développeur.

La chose que j'ai dû apprendre à la dure, c'est qu'il est impossible d'apprendre quoi que ce soit si les réponses vous sont constamment données. Il n'y a pas de raccourcis dans le processus d'apprentissage.

Lorsque vous êtes bloqué, essayez de résoudre votre problème de programmation au moins quelques fois avant d'aller sur Google.

Lorsque vous vous surprenez à copier et coller du code, passez un peu de temps à essayer de comprendre le morceau de code avant de continuer.

Leçon #3 : Apprenez à trouver de l'aide expérimentée

La première chose que j'ai faite après avoir décidé que je voulais apprendre la programmation a été d'acheter deux livres sur le développement Android.

Au début, j'ai suivi les exercices des livres de près et j'ai travaillé sur les projets d'exemple. Cependant, j'ai rapidement été frustré par les progrès que je faisais en suivant le livre et j'ai décidé de partir et de découvrir comment programmer par moi-même.

Comme vous l'avez lu ci-dessus, cela a lentement conduit à un désastre.

J'ai passé d'innombrables heures isolé dans ma chambre à essayer de résoudre des problèmes de programmation simples. Je bloquais à chaque nouvelle ligne de code et je ne sentais pas que je faisais beaucoup de progrès.

J'étais désespérément bloqué et ma vie était un cocktail de doute, de frustration et d'un sentiment écrasant d'être perdu.

Pour aggraver les choses, j'ai eu la brillante idée de commencer à utiliser une énorme bibliothèque C appelée FFMPEG. Mon application devait éditer des vidéos, alors j'ai pensé que c'était une bonne idée d'utiliser la fonctionnalité robuste de la bibliothèque.

Ce n'était pas mon coup le plus intelligent, considérant qu'à l'époque, je pouvais à peine faire fonctionner mon application Android.

J'ai perdu beaucoup de temps à essayer de lire le code C et à comprendre comment je pouvais l'utiliser dans mon application. J'ai eu du mal à importer la bibliothèque dans mon projet Android. Le code Android et le code C ne voulaient pas bien s'entendre.

Après de nombreuses heures sans avancer, j'ai finalement été frustré et j'ai abandonné la bibliothèque.

Vers la même époque que le désastre FFMPEG, je me suis inscrit à un cours de programmation orientée objet. Je ne suis pas sûr de savoir comment j'ai réussi à m'inscrire. J'ai découvert plus tard que j'étais le seul non-major en informatique dans la classe. Je pense qu'il y avait un bug dans le logiciel d'inscription.

Le premier devoir était de construire un programme de Blackjack. J'apprenais la programmation par moi-même depuis 5-6 mois à ce moment-là, et je me sentais quelque peu confiant dans mes compétences.

J'ai terminé le devoir et je me sentais bien dans mon travail.

Il n'a pas fallu longtemps pour que ce sentiment s'estompe.

Tout mon programme était écrit dans une énorme méthode. Presque tout le monde dans la classe avait compris que le programme devait être séparé en classes.

Pas bon.

Heureusement, les travaux de classe et les conseils de l'enseignant m'ont permis de faire un pas en arrière par rapport à mon application Android et de réfléchir à mes capacités en programmation. J'ai commencé à valoriser l'apprentissage et à modérer mes désirs de faire une application complète.

Je me suis maintenant rendu compte que si j'avais parlé à ne serait-ce qu'un seul développeur expérimenté dans ces premiers jours, il aurait vu ce que je faisais. J'aurais pu mettre mes priorités en ordre et me parler un peu de bon sens. Il m'aurait aidé à corriger mon chemin lorsque je m'engageais dans des impasses inutiles (comme essayer de travailler avec FFMPEG).

Au lieu de cela, je me suis isolé du monde en partie parce que je sentais qu'il n'y avait personne qui pouvait m'aider.

L'isolement est une épée à double tranchant. D'un côté, il vous aide à vous concentrer sur la tâche à accomplir. De l'autre, il vous éloigne du monde, vous privant de retours cruciaux.

Il y avait beaucoup de façons dont j'aurais pu trouver de l'aide. J'aurais pu essayer de trouver un professeur/étudiant à l'université avec de l'expérience en Android ou chercher de l'aide dans la communauté locale. J'aurais aussi pu essayer de trouver une communauté Android en ligne.

Les développeurs expérimentés sont comme une boussole. Ils ne vous mèneront pas à votre destination, mais ils s'assureront que vous êtes orienté dans la bonne direction. Leur aide peut souvent faire la différence entre le succès et l'échec.

Assurez-vous de chercher des conseils où que vous puissiez en trouver. Cela vous fera gagner du temps et de la frustration à l'avenir.

Leçon #4 : Créez votre environnement

Cela pourrait être la seule chose que j'ai sentie avoir bien faite lorsque j'apprenais la programmation par moi-même.

Tout au long de ma vie, j'ai été vraiment mauvais pour étudier pour les tests ou faire mes devoirs à la maison. Il y a simplement trop de distractions à tout moment. Je cherchais souvent refuge dans les bibliothèques ou les cafés.

Heureusement, j'ai appliqué cette règle lorsque j'apprenais la programmation par moi-même.

J'ai fini par devenir un habitué de quelques cafés locaux. Je préférais les cafés aux autres lieux d'étude parce qu'ils offraient une certaine variété et il est facile de s'y cacher (un accès facile à la caféine ne fait pas de mal non plus).

Si j'étudiais à la maison, je m'assurais que ma porte était fermée et que mes colocataires savaient ne pas me déranger pendant une certaine période de temps.

Peu importe où j'étais, je m'assurais que ma musique était assez forte pour que je ne puisse pas entendre ce qui se passait autour de moi.

Je ne peux pas dire que j'étais parfait pour trouver un environnement de travail sans distraction, mais j'ai réussi la plupart du temps.

Avoir le bon environnement de travail est souvent une partie négligée de l'apprentissage.

La concentration est un élément fondamental de la mémoire et de l'acquisition de compétences. Lorsque vous essayez d'apprendre quelque chose de nouveau, la force de l'apprentissage est directement liée à l'intensité de votre concentration. Lorsque votre concentration est faible, les nouvelles informations seront moins mémorables, ce qui entraînera un apprentissage plus lent et plus de temps d'étude.

Votre environnement de travail doit être sans distraction et doit permettre de longues périodes de concentration ininterrompue. Même avec le COVID-19 rendant nécessaire le travail à distance, il y a encore des actions que vous pouvez entreprendre pour concevoir votre environnement d'apprentissage.

Voici quelques choses que vous pouvez faire :

  • Trouvez un endroit où les gens ne vous interrompront pas
  • Mettez votre téléphone en mode avion
  • Utilisez un bloqueur de sites web temporisé pour les réseaux sociaux et les sites d'actualités
  • Portez des écouteurs et écoutez de la musique non distractive (de préférence une longue playlist pour ne pas avoir à changer constamment de chansons)
  • Évitez la télévision ou d'autres environnements très stimulants
  • Ayez un carnet à proximité pour noter les tâches ou idées qui vous viennent à l'esprit
  • Faites savoir aux personnes autour de vous que vous ne voulez pas être dérangé

Seul vous pouvez décider où et comment créer votre environnement. Mais assurez-vous de le faire, car cela en vaut la peine.

Leçon #5 : Sortez dans le monde et rencontrez des gens

Décrocher mon premier emploi en programmation a été une sorte d'événement aléatoire.

Je venais de déménager à Omaha, Nebraska, et j'avais environ un an de développement autodidacte à mon actif.

Je connaissais très peu de gens à Omaha, alors j'ai cherché sur Meetup.com pour essayer de trouver d'autres personnes intéressées par le développement Android. J'ai trouvé un Meetup axé sur le développement mobile qui couvrait à la fois le développement iOS et Android, et j'ai décidé d'y aller.

Aller à cette première réunion était stressant. J'ai passé environ 10 minutes dans ma voiture sur le lieu de l'événement à décider si je devais entrer ou partir.

J'étais intimidé. Je n'étais pas confiant dans mes compétences en programmation et je savais que tout le monde au Meetup avait beaucoup plus d'expérience que moi.

J'ai finalement dit, et puis zut, et je suis entré.

Je suis content de l'avoir fait.

J'ai commencé à y assister régulièrement et lors d'un Meetup, peu de temps après mon déménagement à Omaha, j'ai rencontré un recruteur qui cherchait un contractant Android. Nous avons parlé pendant un moment et j'ai obtenu un entretien pour le poste plus tard cette semaine-là.

Avant l'entretien, je me sentais confiant. Pendant l'entretien, j'étais un cerf dans les phares.

L'intervieweur parlait du projet sur lequel je travaillerais et tout est passé au-dessus de ma tête. J'ai essayé de rester engagé, mais ils pouvaient dire que c'était hors de ma portée.

Après l'entretien, ils m'ont demandé de rester une heure pour que je puisse parler à quelqu'un d'autre. Sachant que j'avais tout gâché, j'ai marché dans le centre-ville en essayant de me vider l'esprit.

J'ai fini par avoir un entretien avec quelqu'un d'autre dans l'entreprise, et peu de temps après, ils m'ont proposé un stage.

J'étais si choqué qu'après avoir signé tous les papiers et avoir fait fonctionner mon ordinateur portable de travail, je suis allé voir le PDG et je lui ai demandé si c'était un stage rémunéré ou non.

Le stage s'est transformé en un emploi à temps plein et j'ai commencé ma carrière en tant que développeur logiciel.

Lorsque vous êtes autodidacte, les gens ne viendront pas vous chercher. Vous devrez trouver des opportunités par vous-même.

Les diplômés des universités de quatre ans et des écoles de code ont l'avantage de pouvoir utiliser le réseau de leur école pour trouver un emploi. Les développeurs autodidactes n'ont pas ce luxe.

Les développeurs autodidactes devront sortir dans le monde et construire leur réseau eux-mêmes.

Appeler des employeurs à froid et envoyer des CV peut fonctionner. Cependant, j'ai constaté que les gens aiment embaucher des personnes qui sont proches d'eux dans leur réseau social.

Des sites comme Meetup.com sont excellents pour trouver des groupes mensuels spécifiques à la programmation. Même en période de pandémie, il existe encore de nombreux Meetups virtuels très informatifs et bénéfiques.

Il existe également d'autres chaînes Slack ou communautés Discord que vous pouvez utiliser pour établir des relations significatives. Vous pouvez également essayer de contacter diverses personnes dans votre région et leur demander de prendre un café virtuel rapide de 15 minutes avec elles.

Faites ce que vous pouvez pour surmonter votre nervosité et parler avec les gens. Soyez amical et parlez-leur de vos expériences. Assurez-vous que les gens connaissent votre objectif à long terme de trouver un emploi.

Mettez-vous dans des situations où quelque chose de positif pourrait se produire. Vous ne pouvez pas gagner une tombola si vous n'achetez jamais de ticket.

Considérez toute opportunité qui se présente à vous, car même si elle semble être une impasse, elle a le potentiel de mener à quelque chose de plus grand.

Mon stage était une énorme réduction de salaire par rapport aux autres offres que j'avais à l'époque. Cependant, je savais que si je travaillais dur, ce serait une opportunité pour moi de percer dans l'industrie technologique.

Le secret est de penser aux opportunités d'emploi à long terme. Les stages ou les emplois à temps partiel peuvent ne pas vous donner le salaire souhaité immédiatement, mais ils peuvent ouvrir des portes à l'avenir.

J'espère que vous apprendrez de mes erreurs et ferez des erreurs passionnantes par vous-même

Comme vous pouvez le voir, j'ai fait beaucoup d'erreurs dans mon parcours pour devenir développeur autodidacte.

Apprendre à coder par soi-même n'est jamais un chemin droit. Toutes nos histoires sont uniques.

Le secret est de continuer et d'éviter de se décourager lorsque les choses ne vont pas dans votre sens.

J'encourage les autres développeurs autodidactes à partager leurs histoires. Non seulement elles fourniront des informations précieuses, mais elles aideront également à mettre en lumière les chemins uniques que nous avons pris.

J'espère que mon histoire et les leçons que j'ai apprises vous aideront à avancer.

Merci d'avoir lu. Si vous voulez entendre d'autres informations que j'ai apprises en cours de route, suivez mon compte Zero to Programmer sur Twitter. Mon objectif est de vous aider à apprendre la programmation plus efficacement.