Leçons tirées de mon parcours en tant que développeur autodidacte

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

Dans cet article, je vais partager mon parcours de codage à travers une série de leçons que j'ai apprises en cours de route. J'espère que la lecture de mon expérience en m'apprenant à coder vous aidera à réfléchir à votre propre passé et vous motivera à continuer d'avancer.

Leçon n ° 1: Focus sur le processus

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

Mon voyage a commencé quand j'étais un senior à l'université. Je viens de terminer la biographie de Richard Branson et je lisais probablement trop TechCrunch. J'étais plein d'énergie entrepreneuriale.

Je lisais constamment comment les étudiants recevaient des investissements massifs pour leurs idées d'applications mobiles. Je pensais que je pourrais être l'un de ces enfants d'université.

Un jour, en marchant entre les cours, une idée d'application m'a frappé. Je suis rapidement devenu convaincu que j'avais trouvé la prochaine grande chose.

J'ai été absorbé par l'idée et j'ai arrêté de prêter attention aux conférences. Mon enthousiasme pour l'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 capable de créer des applications mobiles.

Alors j'ai pensé, "qu'est-ce que diable, à quel point la programmation pourrait-elle être difficile?" Je perdais tout intérêt pour ma majeure et je passais beaucoup de temps à jouer à la Xbox. Je pourrais consacrer une partie de mon temps libre à développer mon idée d'application mobile.

Parfois, être naïf vous aide à agir alors que vous ne le feriez normalement pas.

J'étais un étudiant sans expérience en programmation, en affaires ou en conception, essayant d'apprendre Android afin de pouvoir créer 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 d'ici.

J'ai acheté quelques livres sur le développement Android et j'ai passé d'innombrables heures dans ma chambre à essayer de scotcher mon application ensemble. Je me fichais du fonctionnement de l'application, je voulais juste un produit fini.

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

Ce n'est que lorsque je suis entré accidentellement dans un cours d'informatique que j'ai réalisé que je devais me concentrer davantage sur l'apprentissage du développement de logiciels.

Mon incapacité à programmer m'a amené à abandonner mon idée d'application initiale. J'étais venu à la réalisation que je n'allais pas faire la prochaine grande chose, du moins pas encore.

Au fil du temps, j'ai corrigé mon comportement et 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 de logiciels.

Ma grande idée d'application m'a consommé pendant longtemps. Cela a mis mon attention sur le résultat final plutôt que sur le processus pour y parvenir.

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

Il est important de se rappeler qu'apprendre 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 la fondation et vous construisez. Si la fondation est défectueuse, tout s'écroulera tôt ou tard.

Parfois, la construction d'une base solide vous oblige à ralentir. Il n'y a pas de honte à aller lentement. Les gens qui comprennent les bases la première fois finiront par devancer ceux qui doivent revenir en arrière et les réapprendre.

Il y a un vieux proverbe chinois qui dit:

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

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

J'étais un parfait exemple. De l'extérieur, j'avais peut-être l'impression d'être un enfant de génie de la programmation. En réalité, je ne pouvais pas créer une application pour sauver ma vie.

Concentrez-vous sur le processus et vous vous surprendrez avec les progrès que vous faites chaque jour.

Leçon n ° 2: Le débordement de pile est génial (mais dangereux)

Alors que je construisais mon application géniale, Stack Overflow est devenu mon meilleur ami.

Chaque fois que je restais coincé, j'essayais de créer ensemble une question parfaite à poser à la communauté Stack Overflow. Je posais en moyenne quelques questions par jour.

Non seulement je publierais des questions, mais je traiterais également les réponses sur Stack Overflow comme un évangile. Je passerais un temps fou à parcourir le site pour essayer de trouver un morceau de code exact qui résoudrait mon problème.

Lorsque j'ai trouvé 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. J'ai passé peu de temps à essayer de comprendre le code que j'ajoutais.

J'ai fait des essais et des erreurs de force brute une nouvelle forme d'art.

Ce processus a duré un certain temps jusqu'à ce que finalement, j'ai compris et réalisé les défauts de mon approche.

Stack Overflow est une bénédiction et une malédiction. C'est excellent pour vous aider à résoudre les problèmes - cependant, si vous ne faites pas attention, vous pouvez rapidement devenir dépendant du site Web.

Parfois, le site Web est trop efficace pour résoudre les problèmes. Cela crée un faux sentiment de confiance qui peut conduire à plus de maux de tête sur la route.

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 bogues doivent être corrigés et le code doit être exécuté.

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

C'est comme la citation ...

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

Copier et coller du code depuis Stack Overflow, c'est comme donner un poisson à quelqu'un. Comprendre pourquoi un bout de code fonctionne, c'est comme leur 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 lorsqu'il devient une béquille et ralentit notre croissance en tant que développeur.

Ce 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 codage au moins plusieurs fois avant de vous rendre sur Google.

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

Leçon n ° 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 de développement Android.

Au début, j'ai suivi de près les exercices des livres et 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 trouver comment programmer par moi-même.

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

J'ai passé d'innombrables heures isolées dans ma chambre à essayer de résoudre de simples problèmes de programmation. J'étais coincé sur chaque nouvelle ligne de code et je n'avais pas l'impression de faire beaucoup de progrès.

J'étais impuissant et ma vie était un cocktail de doute, de frustration et 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 avait besoin d'éditer des vidéos, j'ai donc pensé que c'était une bonne idée d'utiliser les fonctionnalités robustes de la bibliothèque.

Ce n'était pas ma décision la plus intelligente, étant donné 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 pourrais l'utiliser dans mon application. J'ai eu du mal à même importer la bibliothèque dans mon projet Android. Le code Android et le code C ne voulaient pas jouer bien.

Après de nombreuses heures passées à nulle part, j'ai fini par devenir frustré et j'ai abandonné la bibliothèque.

À peu près au même moment que la débâcle FFMPEG, je me suis inscrit à un cours de programmation orientée objet. Honnêtement, je ne sais pas comment je suis arrivé. J'ai découvert plus tard que j'étais la seule majeure non-informatique de la classe. Je pense qu'il y avait un bogue dans le logiciel d'inscription.

La première mission était de construire un programme de Blackjack. J'avais appris moi-même la programmation pendant 5 à 6 mois à ce stade et je me sentais un peu confiant dans mes compétences.

J'ai terminé la mission et je me sentais bien dans mon travail.

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

Tout mon programme a été écrit selon une énorme méthode. Presque tous les autres élèves de la classe ont pu comprendre que le programme devait être séparé en classes.

Pas bon.

Heureusement, le travail de classe et les conseils de l'enseignant m'ont permis de prendre du recul par rapport à mon application Android et de réfléchir à mes capacités de programmation. J'ai commencé à valoriser l'apprentissage et à maîtriser mon désir de créer une application complète.

Je me suis maintenant rendu compte que si j'avais parlé à un seul développeur expérimenté à ces débuts, il aurait vu ce que je faisais. J'aurais pu définir mes priorités et me donner un sens. Ils m'auraient aidé à corriger mon chemin alors que j'allais dans des impasses inutiles (comme essayer de travailler avec FFMPEG).

Au lieu de cela, je me suis isolée du monde en partie parce que j'avais l'impression que personne ne pouvait m'aider.

L'isolement est une arme à double tranchant. D'un côté, cela vous aide à vous concentrer sur la tâche à accomplir. D'un autre côté, cela vous éloigne du monde, vous privant de commentaires cruciaux.

J'aurais pu trouver de l'aide de nombreuses façons. J'aurais pu essayer de trouver un professeur / étudiant à l'université avec une expérience Android ou demander de l'aide à 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 amèneront pas à destination, mais ils veilleront à ce que vous soyez dirigé dans la bonne direction. Leur aide peut souvent faire la différence entre le succès et l'échec.

Assurez-vous de rechercher des conseils partout où vous pouvez les trouver. Cela vous fera gagner du temps et de la frustration sur la route.

Leçon n ° 4: Créez votre environnement

C'est peut-être la seule chose que j'ai sentie comme si j'avais bien fait quand je m'enseignais la programmation.

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

Heureusement, j'ai appliqué cette règle lorsque je m'enseignais la programmation.

J'ai fini par devenir un habitué de quelques cafés locaux. J'ai préféré les cafés aux autres lieux d'étude car ils offraient une certaine variété et il est facile de se 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 un certain temps.

Peu importe où je me trouvais, je m'assurerais que ma musique était suffisamment 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 de l'apprentissage négligée.

La concentration est une composante fondamentale 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 collantes, ce qui entraînera un apprentissage plus lent et plus de temps à étudier.

Votre environnement de travail doit être sans distraction et doit permettre de longues périodes de concentration ininterrompues. Même avec COVID-19 rendant nécessaire le travail à distance, vous pouvez toujours prendre des mesures pour concevoir votre environnement d'apprentissage.

Voici quelques actions que vous pouvez effectuer:

  • Trouvez un endroit où les gens ne vous interrompront pas
  • Mettez votre téléphone en mode avion
  • Utilisez une sorte de bloqueur de site Web chronométré pour les sites de médias sociaux et d'actualités
  • Portez des écouteurs et écoutez de la musique non distrayante (de préférence une longue liste de lecture pour ne pas avoir à changer constamment de chanson)
  • Évitez la télévision ou tout autre environnement très stimulant
  • Ayez un cahier à proximité pour noter toutes les tâches ou idées qui vous viennent à l'esprit
  • Faites savoir aux gens autour de vous que vous ne voulez pas être dérangé

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

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

Décrocher mon premier travail de programmation était en quelque sorte un événement aléatoire.

Je viens 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 angoissant. J'ai passé environ 10 minutes dans ma voiture sur le site à décider si je devais entrer ou partir.

J'étais intimidé. Je n'avais pas confiance en 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, vissez-le 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 entrepreneur Android. Nous avons parlé pendant un moment et j'ai eu un entretien pour le poste plus tard dans la semaine.

Avant l'entrevue, je me sentais en confiance. Lors de l'entretien, j'étais un cerf dans les phares.

L'intervieweur parlait du projet sur lequel je travaillerais et tout me passait par dessus la tête. J'ai essayé de rester fiancé mais ils savaient que c'était hors de ma portée.

Après l'entretien, ils m'ont demandé de passer du temps pendant une heure pour que je puisse parler à quelqu'un d'autre. Sachant que je l'ai gâché, je me suis promené dans le centre-ville en essayant de me vider la tête.

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

J'ai été tellement choqué qu'après avoir signé tous les documents et mis mon ordinateur portable de travail en marche, je suis allé voir le PDG et lui ai demandé s'il s'agissait d'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 de logiciels.

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

Les diplômés des universités de quatre ans et des écoles de code ont l'avantage de tirer parti du réseau de leur école lorsqu'ils trouvent un emploi. Les développeurs autodidactes n'ont pas ce luxe.

Les développeurs autodidactes devront aller dans le monde et construire eux-mêmes leurs réseaux.

Les appels à froid des employeurs et l'envoi de CV peuvent fonctionner. Cependant, j'ai trouvé des gens qui aiment embaucher des gens qui leur sont proches dans leur réseau social.

Les sites Web comme Meetup.com sont parfaits pour trouver des groupes mensuels spécifiques à la programmation. Même en cas de pandémie, il existe encore de nombreux Meetups virtuels qui sont très instructifs et bénéfiques.

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

Faites ce que vous pouvez pour développer le courage de tendre la main et de 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 arriver. Vous ne pouvez pas gagner une tombola si vous n'achetez jamais de billet.

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

Mon stage a été 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.

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

J'espère que vous apprenez de mes erreurs et que vous commettez de nouvelles erreurs passionnantes

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

S'apprendre à coder n'est jamais une voie droite. Toutes nos histoires sont uniques.

La clé est de continuer et d'éviter de se décourager lorsque les choses ne vont pas comme vous le souhaitez.

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

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

Merci d'avoir lu. Si vous voulez en savoir plus sur d'autres idées 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.