Un Guide complet pour devenir un Programmeur Autodidacte
Partie II: Penser, Planifier et Exécuter Comme un Programmeur
Maintenant que vous savez résoudre les problèmes, raisonner sur la solution et communiquer vos idées couramment, il est temps pour vous de mettre ces compétences en pratique, comme le fait un programmeur.
Dans cette partie, il y a trois choses que vous devez apprendre. Tout d’abord, vous apprendrez le C ++ en tant que deuxième langage, ce qui est plus proche des descriptions au niveau de la machine que de Python. Python est plus proche du spectre de l’anglais ordinaire, tandis que C++ est plus proche de la fin du spectre des 0 et 1. Apprendre C++ vous familiarisera avec plus de constructions de programmation comme des pointeurs. Deuxièmement, vous améliorerez votre vitesse de codage en vous entraînant intensivement, en lisant la documentation et en affinant davantage vos compétences en débogage. Enfin, vous apprendrez la récursivité, qui est la magie que les programmeurs et les informaticiens utilisent pour exploiter la puissance du calcul.
Apprenez le C++ et commencez à écrire des programmes simples
Vous avez déjà appris Python dans la partie précédente. Python est un langage convivial pour les programmeurs, car il cache beaucoup de détails de bas niveau au programmeur pour une facilité d’utilisation. Cependant, si vous voulez progresser, il est absolument nécessaire d’apprendre les fondamentaux de la programmation en C++.
Sur quoi se concentrer: Écrire du code en C ++ vous fera vous sentir plus programmeur, car vous allez plus vers des descriptions au niveau de la machine. Apprenez la différence entre la syntaxe et la sémantique. Passez du temps à apprendre la saisie statique et dynamique, la gestion de la mémoire et les pointeurs. Apprenez à implémenter des conditions, des boucles, des fonctions, des types de données et tout ce que vous avez appris en Python en C ++. Si tout cela ressemble au grec et au latin, ne vous inquiétez pas. La section ressources vous expliquera tout clairement.
Gestion des erreurs: Chaque fois que vous obtenez une erreur, ne vous découragez pas. Même les programmeurs les plus expérimentés ont des erreurs et des bugs dans leurs programmes. Tout ce que vous avez à faire est de lire l’erreur, de faire une recherche rapide sur Google et de résoudre le problème dans votre code. Pendant que vous faites cela, comprenez où vous avez fait une erreur, corrigez votre compréhension et continuez. Parfois, vous devrez peut-être lire un peu de documentation. Vérifiez la section suivante.
Lire de la documentation devrait être une seconde nature pour vous
Tout comme faire une recherche Google, la compétence d’un programmeur dépend de sa capacité à comprendre la documentation et à écrire des programmes utiles. En apprenant à lire la documentation, vous apprendrez également à commenter votre code, à écrire du code lisible et à écrire de la documentation pour le code que vous écrivez.
Pourquoi devriez-vous apprendre cela? Beaucoup de gens ont du mal à apprendre de nouvelles technologies et recherchent des cours prêts à l’emploi pour apprendre. Bien que cela soit bien dans les premières étapes, à mesure que vos connaissances s’approfondissent, vous ne trouverez pas de tutoriels prêts à l’emploi avec lesquels vous vous nourrissez à la cuillère. Vous devrez lire la documentation et ramasser ce dont vous avez besoin. Encore une fois, apprenez à filtrer les informations et à prendre exactement ce dont vous avez besoin pour faire le travail.
Pratique. Répéter. Pratiquer.
Maintenant, il vous suffit de continuer à vous entraîner. Rendez-vous sur Hackerrank et résolvez tous les problèmes faciles dans la section d’échauffement et de mise en œuvre. S’il y a un problème que vous ne pouvez pas résoudre, lisez les discussions, lisez l’éditorial et voyez comment vous pouvez le résoudre vous-même. S’il y a quelque chose que vous ne comprenez pas, utilisez Google.
Si vous avez fait les lectures de la partie précédente, vous ne devriez pas avoir de problème ici. Si vous avez du mal, je vous suggère de revenir en arrière et de revoir ces sections. Vous devez devenir bon à écrire du code, alors ne sautez pas cette partie. L’idée est d’exprimer couramment vos solutions en anglais simple dans leurs équivalents de programmation. Une fois que vous n’êtes pas embourbé par les spécificités linguistiques, vous pouvez continuer. Prenez tous les programmes que vous avez écrits en Python et codez-les en C++.
Vous pouvez rencontrer le battage médiatique autour de la programmation compétitive, je vous recommande de rester à l’écart à ce stade car cela fera plus de mal que de bien. Une fois que vous avez terminé la partie III, vous pouvez l’expérimenter et, si cela est bien fait, cela peut considérablement améliorer vos compétences en résolution de problèmes.
Bien comprendre la récursivité
Le cœur d’un informaticien réside dans la capacité de comprendre la récursivité. Récursionner signifie exprimer quelque chose en termes de lui-même. Tout ce que vous pouvez faire en utilisant des boucles peut être fait récursivement et de manière très élégante. Essayez de comprendre cela intuitivement et regardez les vidéos que j’ai fournies dans les ressources. Si vous êtes un développeur de logiciels qui ne comprend pas assez bien la récursivité, je vous recommande de le faire tout de suite.
Résumé
Jusqu’à présent, vous connaissez un langage de bas et de haut niveau et pouvez suffisamment apprécier les différences de « contrôle” que vous avez sur vos programmes. Maintenant, vous devriez être capable d’écrire des programmes simples en utilisant Python et C ++ et d’apprécier la différence entre les deux langages.
À partir de là, beaucoup de gens vont dans l’ornière d’apprendre plus de langues, ce qui n’est rien d’autre qu’un exercice inutile en soi. L’une des questions les plus courantes que les débutants me posent est « Combien de langues connaissez-vous? », ce qui m’amène à réaliser à quel point les débutants sont généralement mal avisés car ils associent les prouesses de programmation à la connaissance de plus de langages. La programmation ne consiste pas à connaître beaucoup de langues. La langue que vous utilisez n’est qu’un moyen pour vous d’exprimer et de résoudre efficacement votre problème. A ce stade, vous êtes un « programmeur”, mais cela ne suffit pas. Vous devez maintenant apprendre l’informatique pour faire passer vos compétences au niveau supérieur.
Partie III: Votre Rendez-vous avec l’informatique
Une solide compréhension des ressources à cette étape vous rendra meilleur que la plupart des programmeurs de votre groupe de pairs. Vous pouvez même devenir meilleur que la plupart des étudiants en ingénierie de 2e / 3e année en Inde. Votre progression à partir d’ici dépend de votre soif de matériel dans cette section. Alors concentrez-vous.
La plupart des sujets de cette section sont abordés en 2e année d’un cours de génie informatique de premier cycle. Je les ai abordés un peu différemment pour mieux répondre aux objectifs de ce guide.
En quoi cela diffère-t-il d’un programme régulier de premier cycle? Les programmes de premier cycle réguliers sont fortement chargés de théorie. Les cours que j’ai suggérés dans la section ressources ont un bon mélange de théorie et de pratique. Bien que cela puisse être une bonne chose pour les ingénieurs en herbe, pour les profanes, ce n’est pas très utile. Vous perdez la trace de la fin de la théorie et du début de la pratique. Je vais vous indiquer exactement ce que vous devez apprendre en théorie afin que vous puissiez aller droit de l’avant et pratiquer. La théorie n’est qu’un outil pour vous aider à écrire un meilleur code à ce stade, alors ne vous enlisez pas trop.
Fait amusant: Lors de mon 2ème semestre d’ingénierie, nous avions un sujet appelé SGBD (Systèmes de gestion de bases de données). J’ai été surpris de trouver des gens qui dessineraient les meilleurs diagrammes ER pour leurs conceptions de base de données, mais lorsqu’il s’agissait de concevoir une base de données pour des applications pratiques, ils échoueraient lamentablement. Ils étaient tellement concentrés sur l’obtention des détails du diagramme qu’ils oubliaient la raison même pour laquelle ils le faisaient en premier lieu. Je ne leur en veux pas, car on ne leur a jamais appris que le diagramme est là pour qu’ils construisent de meilleures bases de données, pas pour améliorer leurs compétences en croquis.
Mathématiques discrètes
Vous avez déjà utilisé les mathématiques discrètes sans le savoir. Les mathématiques discrètes sont une combinaison de domaines des mathématiques appliquées qui ont été utilisés à plusieurs reprises en informatique. Les experts dans le domaine ont décidé de regrouper tout cela et de lui donner un nom — ce que nous appelons maintenant les mathématiques discrètes.
Lors de l’apprentissage des mathématiques discrètes, suivez le même principe que celui que j’ai décrit dans la partie I. Pensez en termes de structures mathématiques et de procédures utilisées pour les manipuler. Les mathématiques discrètes augmentent simplement le nombre d’outils à votre disposition pour résoudre les problèmes. Si vous avez surmonté votre peur des mathématiques, vous apprécierez pleinement le cours que j’ai lié dans la section ressources.
Structures et algorithmes de données
C’est l’épine dorsale de tout votre parcours. En fait, vous avez déjà utilisé des structures de données et des algorithmes tout ce temps – encore une fois sans le savoir. Maintenant, nous allons le formaliser et l’étudier plus en détail.
En tant que programmeur expérimenté, vous utiliserez des structures de données et des algorithmes partout. En le comprenant assez bien, vous étendrez vos compétences et vos outils mathématiques pour construire des structures de calcul efficaces pour résoudre les problèmes courants. Vous apprendrez également différentes techniques de conception d’algorithmes, qui sont comme des plans pour résoudre certains thèmes en informatique.
De nombreux tutoriels vous diront de commencer à apprendre les algorithmes et les structures de données directement. La raison pour laquelle je n’ai pas fait cela est que vous entreriez dans Einstellung, qui a une mentalité et une approche fixes des problèmes. Croyez-moi, cela paralyse votre pensée parce que vous ne pensez pas en dehors des sentiers battus. À la fin de cela, vous serez un excellent résolveur de problèmes et codeur.
Bonnes pratiques
Écrire un logiciel ne consiste pas seulement à assembler du code au hasard pour faire avancer les choses. Dans la plupart des environnements professionnels, vous ne serez pas le seul programmeur à travailler sur une base de code. Il est important que vous suiviez certaines directives et conventions pour faciliter la programmation de la base de code pour tous les membres de l’équipe. Cela facilite la compréhension du code écrit par quelqu’un d’autre et facilite ensuite la compréhension de votre code par les autres. Si vous êtes un développeur de logiciels junior, concentrez-vous sur cette section.
Que pouvez-vous faire ? Passez du temps à comprendre et à mettre en pratique le principe SEC (Ne vous répétez pas). N’écrivez pas de code répétitif, car cela vous ralentit et vous rend plus enclin aux erreurs. Rédigez des commentaires et de la documentation utiles partout où vous le pouvez. Quand j’ai commencé, j’ai pensé que c’était une chose stupide à faire jusqu’à ce qu’un jour, j’ouvre un vieux projet et réalise que tout mon code était inintelligible. En tant que programmeur, vous n’avez pas besoin de mémoriser beaucoup. Vous mémorisez ce qui est important et recherchez ce qui est nécessaire.
Contrôle de version (Git)
C’est quelque chose que j’ai commencé à faire tôt et cela aide énormément à garder le code organisé. Vous suivez vos modifications et savez exactement quelles modifications vous devez apporter pour implémenter certaines fonctionnalités. Vous apprenez également à prévenir et à corriger rapidement les bugs. Je vois beaucoup de jeunes ingénieurs qui ne savent même pas ce qu’est Git, et c’est extrêmement triste. Ils passeront toute leur carrière à utiliser le contrôle de version — si vous en faites partie, rendez-vous directement dans les ressources ci-dessous.
Programmation orientée objet
Une introduction à une toute nouvelle façon de programmer. Jusqu’à présent, nous avons fait de la programmation procédurale. Nous passons maintenant à la programmation orientée objet, qui est un tout nouveau paradigme. Une introduction à l’encapsulation et à l’abstraction des données vous aidera à apprécier la façon dont ce guide a été conçu. En POO, tout est un Objet et l’idée est de séparer clairement votre interface et votre implémentation. Vous apprendrez aussi les cours et l’héritage. En fin de compte, vous commencerez à concevoir des solutions orientées objet et apprendrez à construire des boîtes noires intelligentes pour résoudre les problèmes. L’apprentissage de Java est un bon moyen de démarrer avec ce nouveau paradigme de programmation. Python prend également en charge la POO, alors essayez d’explorer cela!
Pratiquez dur
Pratiquez chaque compétence / concept / algorithme de cette section en écrivant des extraits de code. Réécrivez l’ancien code avec les nouvelles connaissances que vous avez acquises. Continuez à écrire de petits programmes et apprenez quelque chose de nouveau à chaque étape.
Continuez à apprendre au fur et à mesure de votre progression. J’ai construit des calculatrices, des systèmes de gestion de bibliothèque, des scripts de calcul numérique de tellement de façons différentes, et à chaque fois, j’ai appris quelque chose de différent. Vous finirez par réaliser qu’il n’y a pas de balle en or pour tout réparer. La vie est pleine de compromis. C’est la beauté de l’imperfection.
Résumé
Vous en savez plus qu’assez pour créer des logiciels qui changent la donne. Vous devez tout internaliser jusqu’ici pour passer à l’étape suivante. D’ici, plus de théorie ne vous fera aucun bien. Vous devez uniquement investir du temps dans la pratique et la construction de projets utiles. La programmation est une science appliquée – suivez la règle des 80/20, ce qui signifie passer 80% du temps à pratiquer et 20% du temps à lire la théorie.
Partie IV:Il est temps pour Vous de créer des Trucs Sympas
Si vous avez suivi le guide jusqu’ici, vous êtes bien équipé pour aller de l’avant et construire de grands projets que vous pouvez mettre sur votre CV, montrer à vos amis, ou même générer des revenus de votre travail. À ce stade, je veux vous apprendre à apprendre des choses en cours de route. Chaque nouveau projet que vous entreprenez ou auquel vous êtes affecté exigera d’apprendre quelque chose de nouveau. Il est important que vous abordiez cela avec la bonne attitude.
Il existe quelques directives que vous pouvez suivre chaque fois que vous entreprenez un projet. J’ai développé cette rubrique pour moi-même et j’ai réalisé que ce serait pratique pour vous qui entreprenez de nouveaux projets.
- Identifiez le problème sur lequel vous travaillez et soyez très précis sur les détails. Soyez clair sur vos buts et objectifs.
- Recherchez des projets existants ou similaires et identifiez où ils excellent et où ils manquent. Voyez où s’inscrit votre idée, comment le projet s’aligne avec les buts et objectifs que vous avez en tête et notez tout.
- Faites une liste de toutes les compétences que vous devez apprendre pour réaliser le projet et de la mesure dans laquelle vous devez développer les compétences pour réaliser le projet. Connaissez vos forces et vos faiblesses.
- Créez un plan pour acquérir les compétences nécessaires. Identifiez les bonnes personnes pour vous aider et les tutoriels nécessaires pour commencer. Concentrez-vous exclusivement sur le développement des compétences nécessaires à la réalisation de votre projet. Il est facile de s’emporter pour aller en profondeur. Rappelez-vous, vous apprenez les compétences nécessaires pour terminer le projet et ne rédigez pas de thèse de doctorat à ce sujet. À moins que ce ne soit votre objectif.
- Commencez le projet, mettez à jour vos buts et objectifs et soyez très clair sur vos forces et vos faiblesses. Décomposez le projet en sous-tâches réalisables et attribuez une mesure d’objectivité à chacune. Cela signifie que vous devez savoir quand arrêter de chasser la perfection et vous concentrer sur la vue d’ensemble.
- S’exécute avec impatience. Répétez jusqu’à ce que tous vos objectifs soient remplis.
Lisez ceci pour obtenir des trucs et astuces sur la façon de devenir un meilleur apprenant.
Compte tenu de vos connaissances existantes, vous pouvez apprendre à créer des sites Web, des applications mobiles, des jeux, de petits scripts, des plugins Chrome, des applications de bureau et des logiciels d’analyse de données. Je fournirai plus d’informations à ce sujet dans le prochain article. Une fois que vous avez des projets terminés à votre actif, vous serez un développeur assez bon pour faire de la pige et gagner de l’argent, ce qui est une excellente source de revenus si vous êtes étudiant. Si vous venez d’un autre domaine, cela vous donne une base suffisamment solide pour pouvoir augmenter votre travail actuel avec la technologie. Ce que vous pouvez avec votre ensemble de compétences actuel est infini, même un article de blog entier ne peut pas rendre justice à cela.