Apprendre à coder : sagesse et outils pour le voyage

Publié: 2022-03-11

La programmation est une grande compétence à avoir. C'est extrêmement gratifiant tant sur le plan personnel que professionnel, vous donnant la possibilité de construire, de bricoler et d'inventer. Cela peut ouvrir les portes à toutes sortes de cheminements de carrière avec de grands avantages, qu'il s'agisse d'un salaire respectable, de la liberté de travailler quand et où vous voulez, ou de tout ce qui précède.

Il n'est pas surprenant que de plus en plus de personnes, de tous horizons, décident d'apprendre à coder. Mais, chaque personne qui s'attaque à la tâche est vite confrontée à une réalité désagréable : apprendre à programmer est difficile.

Compliqué et déroutant, au début, une grande partie du codage n'a aucun sens. Contrairement aux attentes, le sentiment de "je ne comprends pas" peut persister longtemps dans le voyage, faisant que les débutants aux yeux brillants se sentent désespérés, perdus et prêts à abandonner.

La morale de l'histoire est la suivante : Soyez prêt. Le chemin vers le paradis des programmeurs est long, et sans le bon état d'esprit au départ, il peut rapidement perdre son attrait.

Dans cet article, je vais essayer de vous donner quelques conseils sur ce à quoi vous attendre pendant votre voyage, la meilleure façon de s'y prendre et les outils et ressources que vous pourriez trouver utiles en cours de route.

Le voyage vers le paradis des programmeurs commence par une seule étape.

À quoi s'attendre

C'est peut-être évident, mais la première chose dont vous devez vous assurer est que la programmation, à la base, est une discipline technique. Les premières compétences que vous apprendrez nécessiteront beaucoup d'« exactitude » et d'« exactitude », et essayer de prendre des raccourcis ne vous mènera nulle part. Vous devrez apprendre au moins un peu de mathématiques, ainsi que beaucoup de choses qui pourraient ressembler à des mathématiques, comme la logique procédurale.

Le fait est que l'apprentissage des bases de la programmation demande beaucoup de concentration et de pratique. Cependant, d'innombrables personnes, technophiles ou non, ont fait ce voyage avant vous, alors ne vous découragez pas. Comme nous le verrons, il existe une abondance de ressources pour les personnes comme vous afin de rendre le processus aussi simple que possible.

L'apprentissage de la programmation n'est pas facile.

La courbe d'apprentissage de la programmation est la plus raide au début. Il y a une quantité énorme de "fondamentaux" à assimiler, y compris les différentes parties d'un langage de programmation (expressions, variables, types de données, opérateurs, boucles, instructions conditionnelles, fonctions, classes), et les techniques pour comprendre quelle part de votre ordinateur le temps et l'espace mémoire que votre code va utiliser (complexité). Vous écrirez beaucoup de code qui ne fonctionnera pas la première fois, vous devrez donc accepter le fléau de l'existence de tout programmeur : le débogage.

Une fois que vous aurez appris à écrire du code, vous pourrez apprendre à écrire du code robuste . Rendre le code efficace, facile à lire et à comprendre et facile à développer est un art en constante évolution. Vous pourrez commencer à explorer différentes philosophies logicielles et passer d'un simple « codeur » à un « architecte logiciel ». C'est aussi un processus qui demande beaucoup de temps et de pratique, mais plus vous y parviendrez, plus vous découvrirez d'opportunités qui s'ouvriront à vous.

Comment apprendre à coder

Le voyage de chaque personne vers le paradis de la programmation est différent, mais il existe de bons principes dont tous les voyageurs peuvent bénéficier. Voici le processus de base que je recommande si vous débutez :

1. Choisissez votre destination : choisissez une langue, n'importe quelle langue

Si vous voulez vraiment apprendre à coder, le langage que vous choisissez n'a pas vraiment d'importance. La plupart des langages de programmation populaires partagent les mêmes concepts fondamentaux, et une fois que vous aurez vraiment maîtrisé la programmation dans votre premier langage, en choisir un nouveau sera plus facile que la première fois. Si vous apprenez dans le cadre d'un programme universitaire ou similaire, votre langue sera probablement choisie pour vous.

Dans tous les cas, à moins que vous ne sachiez exactement ce que vous voulez faire à long terme, il n'y a que cinq langues que je recommande de considérer, qui trouvent un équilibre entre la facilité d'apprentissage, la polyvalence des connaissances acquises et une abondance d'emplois à long terme. prospects : Ruby , JavaScript , Python , C et Java .

Voici quelques notes générales sur chacun, pour vous aider à décider :

Langues interprétées

Les langues interprétées sont plus faciles à utiliser . En effet, leur code source peut être exécuté dès qu'il est écrit. En revanche, les langages compilés nécessitent une étape supplémentaire entre l'écriture et l'exécution du code.

En conséquence, les langages interprétés permettent un codage plus rapide , mais ils n'utilisent pas les ressources informatiques aussi efficacement , et il est plus facile pour les bogues de passer inaperçus . Ils sont mieux adaptés aux applications où les performances ne sont pas une priorité. Ces langages sont très populaires pour le développement Web. En fait, l'un d'entre eux, JavaScript, est le seul langage pouvant être exécuté directement dans un navigateur Web, contribuant à son ascension rapide comme l'un des langages les plus lucratifs à connaître.

Langue Avantages Les inconvénients Couramment utilisé pour
Rubis
  • Syntaxe extrêmement flexible.
  • Facile à démarrer.
  • La forte demande crée des emplois bien rémunérés.
  • La flexibilité peut obscurcir une grande partie des processus sous-jacents.
  • La lenteur des performances en fait un mauvais choix pour les applications haut de gamme.
  • Les back-ends Web. Voir Ruby on Rails.
Javascript
  • Seule option pour les logiciels intégrés au navigateur.
  • Essentiel à tout site Web moderne.
  • Une demande extrêmement élevée équivaut à une abondance d'emplois bien rémunérés.
  • La syntaxe complexe peut parfois prêter à confusion.
  • Plus difficile que Ruby ou Python pour les débutants.
  • Frontaux Web. Voir React, Angular, Ember, jQuery et autres.
  • Backends Web. Voir Node.js.
Python
  • La syntaxe de frappe élégante et minimaliste est appréciée des praticiens.
  • Facile à démarrer.
  • Des performances lentes signifient un mauvais ajustement pour les applications haut de gamme.
  • Mauvaise évolutivité. La conception du langage crée des problèmes dans les grandes applications.
  • Les back-ends Web. Voir Django.
  • Recherche scientifique et universitaires. Voir SciPy.

Langages compilés

Lorsque le code est compilé , il est converti du code lisible par l'homme en code machine optimisé avant son exécution. Le résultat s'exécute beaucoup plus rapidement et plus efficacement que les langages interprétés. Le compilateur qui fait cela doit, dans le cadre de son travail, s'assurer que tout ce qui a été codé "a du sens" et, par conséquent, il peut identifier et prévenir de nombreux types de bogues auxquels les langages interprétés sont sensibles.

Pour cette raison, il est plus difficile de s'en tirer avec des erreurs ou un mauvais code avec ces langages. Ils vous forceront à mieux comprendre ce qui se passe réellement « sous le capot », et vous en apprendrez beaucoup plus sur le fonctionnement réel d'un ordinateur . Le prix est que ces langues demandent plus de main-d'œuvre et sont généralement plus difficiles à apprendre pour les débutants.

Les langages compilés sont utilisés dans les applications qui nécessitent performances et fiabilité, y compris les applications embarquées, qui peuvent s'exécuter sur du matériel avec des limitations de ressources strictes, et les applications volumineuses et complexes, où même un petit bogue peut faire des ravages.

Langue Avantages Les inconvénients Couramment utilisé pour
C
  • Peut offrir de meilleures performances que tout autre "langage de programmation de haut niveau".
  • Vous en apprendra le plus sur le fonctionnement d'un ordinateur.
  • Probablement le plus difficile à maîtriser de cette liste.
  • Systèmes d'exploitation.
  • Jeux vidéo haut de gamme.
  • Systèmes embarqués.
  • Robotique et intelligence artificielle.
Java
  • Langue la plus largement utilisée, dans l'ensemble.
  • Une dactylographie stricte oblige à une façon de penser claire et efficace.
  • La syntaxe complexe peut être lourde à lire et à utiliser.
  • Considéré par beaucoup comme démodé, monolithique et proche du déclin.
  • Applications d'entreprise à grande échelle.
  • Développement web.
  • Développement Android.

HTML et CSS : pas des langages de programmation

Il convient de noter que HTML et CSS, qui sont utilisés dans pratiquement toutes les pages Web qui ont jamais existé, ne sont pas des langages de programmation . Ce sont des langages de présentation, utilisés pour définir à quoi quelque chose doit ressembler et ce qu'il doit contenir, mais pas comment il doit se comporter. Néanmoins, ils peuvent être un bon point de départ, car ils sont beaucoup plus faciles à comprendre et vous apprendront à taper correctement les choses. De plus, si vous envisagez de faire du développement Web, vous devrez de toute façon les apprendre à un moment donné.

2. Commencez petit

Apprendre prend du temps et il y a beaucoup à absorber. Si vous essayez de créer une application complète le premier jour, cela ne fonctionnera pas. Pour vous épargner la frustration, commencez par résoudre de petits problèmes simples, puis progressez.

Par exemple, le premier programme qui est traditionnellement écrit lors de l'apprentissage d'une nouvelle langue est le programme "Hello World", qui imprime simplement les mots "Hello World" à l'écran. Dans la plupart des langages, il est presque impossible d'écrire un programme plus simple, et il est clair que ce programme n'a que peu d'utilité réelle. Cependant, il intègre toujours de nombreuses parties fondamentales de la langue, et il est donc parfait pour s'initier à la façon dont la langue est typée.

À partir de là, vous pouvez écrire quelque chose qui ajoute ou soustrait des nombres, puis quelque chose qui prend l'entrée de l'utilisateur. Vous pouvez ensuite en apprendre davantage sur les conditions, qui sont un moyen de prendre des décisions, et sur les boucles, qui effectuent des tâches répétitives. Bientôt, vous serez prêt à créer votre premier objet, et à ce stade, vous pourrez commencer à expérimenter la création d'applications complètes.

3. Soyez patient

Les concepts de base de la programmation peuvent être assez difficiles. Beaucoup d'entre eux ne sont pas du tout intuitifs si vous ne savez pas déjà comment fonctionne l'ordinateur à un niveau plus profond.

Par exemple, quand j'ai commencé, j'ai trouvé que le débogage était un processus exaspérant ; ça n'avait pas l'air de programmer. Au lieu d'écrire un nouveau code qui faisait de nouvelles choses sympas, je passais une journée entière à parcourir quelque chose que j'avais écrit, essayant de comprendre, "Comment ai-je merdé cette fois?" me gratter la tête et prêt à abandonner. Finalement, je découvrirais que j'avais laissé un seul point-virgule quelque part, ou utilisé une tabulation au lieu d'un espace, et le temps que mon code fonctionne à nouveau, ce serait la fin de la journée. Je me sentirais comme un idiot total; ce serait comme une telle perte de temps.

Apprendre à coder demande beaucoup de persévérance, surtout les jours où vous sentez que vous n'avancez pas.

Ce genre de chose va vous arriver, et cela vous rendra complètement fou. Donc, l'une des clés du succès est la suivante : soyez patient et soyez indulgent avec vous -même. Certains des meilleurs conseils sur le sujet recommandent de se concentrer sur le processus, et non sur les objectifs. Si vous vous concentrez sur votre objectif final ("Je veux créer un site Web d'ici la fin juin"), vous vous découragerez et vous vous sentirez comme un échec. En vous laissant prendre le temps qu'il faut pour progresser, vous aurez plus de succès.

4. Pratique Pratique Pratique

Comme toute compétence, devenir bon dans ce domaine se résume vraiment à la pratique. Rien de tel que de faire quelque chose, pour apprendre à le faire ! Même si vous ne disposez que de quelques heures par semaine, si vous continuez à pratiquer régulièrement, vous vous retrouverez un jour à savoir programmer. Finalement, vous développerez une intuition pour les choses, et quelque chose qui prenait une journée entière au début (comme la recherche d'un bogue), peut maintenant ne prendre que quelques secondes.

Lorsque vous sentez que vous maîtrisez plus ou moins les bases de la programmation, un excellent moyen de vous entraîner est de commencer votre premier projet. Pensez à une application simple que vous aimeriez créer, comme une liste de tâches ou une calculatrice (encore une fois, commencez petit), et essayez-la. Cela vous apprendra à résoudre des problèmes d'architecture et de conception et à construire différentes pièces afin qu'elles s'emboîtent dans un tout fonctionnel. Ce sont les compétences essentielles qui vous permettront de vraiment vous appeler programmeur.

Ressources

En fonction de vos objectifs, de votre style d'apprentissage et de vos moyens, vous souhaiterez peut-être utiliser différentes ressources tout au long de votre parcours. Pour vous aider à déterminer quelles méthodes vous conviennent, voici un bref résumé de certains des outils que vous pouvez utiliser, classés, grosso modo, de l'apprentissage le plus structuré à l'apprentissage le moins structuré.

Ces outils et ressources vous aideront à apprendre à coder.

Apprentissage structuré

C'est la catégorie d'options qui fournit des instructeurs, des devoirs, des tests, des notes, des délais et des conséquences réelles si vous ne faites pas de vos études votre priorité absolue. Ce sont les options où vous devrez aller en classe ou échouer du programme.

Diplôme universitaire formel

L'option la plus coûteuse mais, pour beaucoup, la plus précieuse, un diplôme universitaire formel vous donnera la meilleure base pour une carrière florissante en programmation et en technologie informatique. Vous recevrez une reconnaissance pour vos réalisations sous la forme de votre diplôme (une avancée majeure lors de votre entrée sur le marché professionnel). Mais plus important encore, vous en sortirez avec une compréhension profonde et approfondie de tout ce qui concerne l'informatique, et vos capacités à écrire des logiciels vraiment de premier ordre et efficaces en seront le reflet.

Voici certaines des choses que vous pouvez vous attendre à apprendre en profondeur de tout programme universitaire décent, et il peut être plus difficile de trouver des instructions approfondies ailleurs.

  • Circuits électriques - La physique de base sous-jacente à pratiquement tout le matériel informatique.
  • Circuits logiques numériques - Comment représenter la vérité et les constructions logiques avec des circuits.
  • Microprocesseurs et systèmes informatiques - Comment les circuits logiques sont combinés pour former une machine informatique programmable. Que se passe-t-il sur toutes ces petites broches métalliques et ces fils imprimés.
  • Systèmes d'exploitation - Comment programmer un ordinateur pour gérer, organiser et se protéger, et permettre le fonctionnement en toute sécurité de plusieurs applications.
  • Bases de données - Comment stocker et copier de grandes quantités de données sans les perdre, les corrompre ou rendre la recherche impossible.
  • Réseaux - Comment des systèmes informatiques différents et non liés peuvent communiquer entre eux.
  • Mathématiques supérieures - y compris le calcul et l'algèbre linéaire. Essentiel pour toute carrière dans des domaines avancés ou de pointe.
  • Traitement du signal - Comment franchir la frontière entre le monde analogique et le monde numérique, et vice-versa.
  • Méthodes numériques - Pour les cas où les problèmes du monde réel ne s'intègrent pas parfaitement dans un ordinateur.

L'école d'informatique et d'ingénierie vous bottera le cul, et vous devrez vous sacrifier et vous consacrer à la terminer. Mais les récompenses en valent la peine. J'ai eu du mal à obtenir mon propre diplôme, mais le jour où je l'ai obtenu reste l'un des jours les plus fiers de ma vie.

Camps d'entraînement

Les programmes dits « bootcamp » ont vu le jour pour répondre aux besoins de ceux qui n'ont pas le temps ou les ressources nécessaires pour obtenir un diplôme officiel, mais qui sont prêts à travailler dur et au moins à apprendre le minimum nécessaire pour démarrer une carrière dans le développement de logiciels. En termes de coût et d'engagement requis, ils se situent entre un diplôme officiel et les options autogérées décrites ci-dessous.

Les bootcamps impliquent généralement 8 à 12 semaines d'études intenses et coûtent environ 10 000 USD. Ils couvrent beaucoup de matériel en peu de temps, pendant lequel vous devrez sacrifier la plupart des autres activités. Mais, ils promettent de vous préparer au développement de logiciels dans le monde réel et de vous mettre sur la voie rapide vers une carrière en programmation. De nombreux bootcamps se terminent par des journées de carrière ou tentent de vous placer dans un emploi rémunéré peu de temps après l'obtention de votre diplôme.

Les bootcamps sont un phénomène relativement récent et explosif. En tant que tel, il est encore difficile de mesurer leur taux de réussite, et nombre d'entre eux n'ont pas encore fait leurs preuves en matière de placement des diplômés. Cela dit, on ne peut que s'attendre à ce que les programmes disponibles s'améliorent à mesure que cette nouvelle industrie en plein essor continue de croître. Tant que vous faites vos recherches avec soin, vous trouverez peut-être que c'est l'option parfaite pour vous.

La plupart des bootcamps sont des programmes locaux, vous devrez donc voir ce qui est disponible dans votre ville. Si vous vivez dans une grande métropole, vous trouverez peut-être ce que vous cherchez sur cette liste, ou celle-ci.

Apprentissage semi-structuré

De plus en plus de ressources deviennent disponibles chaque jour pour ceux qui travaillent le mieux avec un élément de structure et d'orientation, mais qui n'ont pas le temps ou les ressources pour s'engager dans un programme officiel de diplôme ou de bootcamp. Ces options sont généralement proposées entièrement en ligne, et nombre d'entre elles sont totalement gratuites ! Au fur et à mesure que la forte demande pour de tels services est devenue évidente, ces outils ont rapidement gagné en sophistication et en valeur. Les cours de développement de logiciels ont naturellement été à l'origine d'une grande partie de cette évolution, car l'apprentissage et l'enseignement de logiciels par le biais de logiciels présentent des avantages évidents.

Donc, vous voulez être programmeur, n'est-ce pas ? Ces conseils et outils vous aideront à démarrer.
Tweeter

Cours en ligne ouverts et massifs (MOOC)

Les MOOC sont une ressource incroyable et font des progrès majeurs dans l'uniformisation des règles du jeu pour une éducation de qualité et abordable. Ils offrent une grande partie de la structure et des conseils des meilleures classes universitaires formelles du monde, mais sont disponibles en ligne pour toute personne, n'importe où, disposant d'une connexion Internet. De nombreux MOOC populaires sont également entièrement gratuits , bien que moyennant un prix supplémentaire (et un engagement à étudier), des crédits formels peuvent également être obtenus pour de nombreux cours, équivalents à des crédits universitaires.

Il existe de nombreuses plateformes MOOC de premier ordre disponibles en ligne avec des cours dispensés par des professeurs des universités les plus prestigieuses du monde, et des plateformes communautaires pour que vous et vos camarades de classe du monde entier puissiez vous entraider à apprendre. Voici quelques-uns des fournisseurs les plus connus :

  • Coursera
  • EdX
  • Udace

Sachez que, comme annoncé, ces cours offrent des cours de niveau universitaire, alors mieux vaut être prêt à travailler dur pour les réussir!

Sites Web de tutoriels guidés

Si vous aimez la structure et les conseils, mais que vous n'aimez pas les délais, il existe de nombreuses plateformes en ligne qui offrent une formation automatisée et étape par étape grâce à un large éventail de méthodes de livraison. Certains sont pilotés par des didacticiels vidéo, d'autres par du texte. Beaucoup incluent des éditeurs de code interactifs sur lesquels vous pouvez vous entraîner dans votre navigateur. Ceux-ci vous offrent une grande flexibilité pour apprendre à votre rythme, qu'il s'agisse d'une demi-heure de pratique à la fin de chaque journée ou d'un marathon de 10 heures le week-end.

Alors que beaucoup de ces plateformes nécessitent un abonnement payant pour accéder à tout le contenu, la plupart proposent des essais gratuits afin que vous puissiez commencer immédiatement et décider par vous-même si cela fonctionne pour vous.

  • Académie Kahn
  • Udemy
  • Codecademy
  • Vengeurs du code
  • École des codes
  • Cabane dans les arbres
  • Lynda
  • Vue plurielle

Ceci n'est qu'une courte liste, alors cherchez et voyez ce qu'il y a d'autre!

Apprentissage non structuré

Pour ceux qui veulent trouver leur propre chemin ou améliorer leurs connaissances sur leur temps libre, sans la pression des leçons structurées, les outils suivants offrent une approche autodirigée. Même si vous envisagez d'adopter l'une des approches ci-dessus, vous trouverez peut-être bon nombre de ces ressources utiles pour compléter votre apprentissage ou fournir une plate-forme de pratique.

Sites Web de forage

Si votre objectif est simplement de vous entraîner à résoudre des problèmes de programmation, Internet, encore une fois, vous couvre. Les sites suivants proposent des ensembles de défis de codage sans cesse croissants, ainsi que des interfaces de codage interactives, pour résoudre des problèmes, faire évaluer vos solutions à la volée et comparer comment elles se comparent aux solutions d'autres utilisateurs.

  • Exercice.io
  • CheckiO
  • CodeChef
  • CodeEval
  • Guerres de code
  • codilité
  • HackerRank

Vidéos

L'apprentissage passif de la programmation a un caractère pratique limité, mais si vous voulez absorber certains des concepts les plus profonds, entre les réunions ou avec un verre de vin le soir, ces séries de conférences sont parmi les meilleures. Si vous aimez ce genre de choses, découvrez ce qui est disponible sur YouTube et sur le Web.

  • MIT OpenCourseWare
  • Série de conférences de l'Université de Stanford

Livres

Même avec toutes les merveilles de la technologie disponibles, pour beaucoup de gens, il n'y a toujours rien de tel qu'un bon livre pour se plonger et acquérir une compréhension approfondie d'un sujet. Si vous aimez apprendre de cette façon, consultez la liste des meilleurs livres de programmation gratuits de Toptal.

En conclusion

Apprendre à coder est un voyage très personnel. Tout le monde commence avec des ressources différentes et des objectifs différents et rencontre différents défis et opportunités en cours de route. Ne vous souciez pas de ce que font les autres ou de la façon dont ils y sont arrivés. Même pour les programmeurs expérimentés, le voyage lui-même ne se termine jamais, car il y a constamment de nouvelles choses à apprendre.

Une fois que vous êtes devenu programmeur, un monde de merveilles vous attend.

Donc, mon conseil pour vous est, allez-y doucement et profitez du voyage ! Il y a beaucoup à explorer et un monde de merveilles vous attend. Un voyage de mille kilomètres commence par un seul pas. Voici de bonnes chaussures. Bonne chance!