Comment NE PAS commencer à apprendre la programmation

Salutations, Khabrovtsy!



J'ai décidé de partager mon expérience d'apprentissage «réussi» du (des) langage (s) de programmation.



Pour ne pas dire que je suis un profane dans l'industrie informatique, mais mon plan de formation "pour devenir développeur informatique" - a été un succès.



Un peu de contexte.



Je dois dire tout de suite que je n'ai pas suivi de formation ciblée en informatique. Et ma spécialisation en éducation est loin d'être technique. Il travaille depuis 2005. à 2012 dans diverses entreprises, petites et grandes, directement liées à l'industrie informatique. J'ai appris un peu de tout: sis. l'administration de Windows (même MCP, MCSA a réussi à l'obtenir), un peu VMware (VCP est également dans la tirelire), a également étudié un autre groupe de programmes que le système. les administrateurs utilisent généralement dans leur travail quotidien.

Je me suis essayé dans les ventes aux entreprises, au fait, cela a bien fonctionné. J'ai réussi à travailler un peu avec un distributeur de logiciels, ainsi qu'avec des sociétés d'intégrateurs, et j'avais une bonne compréhension des politiques de licences logicielles. Il prévoyait de devenir chef de projet, a même commencé à étudier le PMBOK, la gestion du temps, diverses normes internationales telles que ISO, Tier et même basculé à PCI DSS.



Mais à un certain moment, il s'est épuisé et a tout abandonné. Je suis parti en vacances pendant 8 ans, pour ainsi dire.

Après une longue analyse, j'ai quand même mûri et réalisé qu'il était temps de me tourner vers l'ouest, et de préférence plus près de la Silicon Valley, car avec l'anglais c'est plus ou moins normal, vous pouvez vous hisser au niveau requis.



Il est clair que personne ne m'attend là-bas, mais ma soeur. les administrateurs, les vendeurs et les chefs de projet là-bas et il y en a assez. De plus, sans connaître la situation sur le marché local, il sera immédiatement possible de trouver un emploi, enfin, du moins c'est problématique.



Un chemin a été choisi dans ma tête qu'il était temps de se recycler en tant que développeur. Ce sera plus facile et meilleur en termes de perspectives et de travail sur le marché occidental. Il y a toujours eu une pénurie de programmeurs sur le marché du travail et il n'y a toujours pas assez de programmeurs.



De plus, j'ai longtemps voulu apprendre la programmation et me spécialiser dans la direction SAP. La voie de l'étude indépendante des bases, le langage ABAP, a été choisie, mais a en quelque sorte abandonné cette activité. Je ne me souviens pas pour quelle raison, cela semble à cause de la difficulté à comprendre.



Maintenant, l'histoire elle-même, allons-y ...



Ainsi, après 8 ans de repos de l'informatique en général, j'ai commencé à étudier le marché du travail à l'étranger et j'ai décidé de me spécialiser d'abord dans le développement mobile. Après avoir recherché sur Google les langages de programmation pour les applications mobiles et inspiré par le fait que Google a officiellement annoncé le langage Kotlin comme langue prioritaire pour une application Android, j'ai fermement décidé d'apprendre Kotlin par moi-même dans un délai maximum d'un an et de planifier l'immigration vers la résidence permanente aux États-Unis.



Quelques semaines à regarder des formations et à lire des manuels m'ont suffi pour m'assurer qu'il n'y a rien à faire à Kotlin sans connaissance de Java. Bien que sur Internet, beaucoup de gens disent que vous pouvez apprendre à partir de zéro. Et après m'être enregistré sur GitHub, avoir installé IntelliJ IDEA, JDK et essayé de comprendre le code, j'ai déjà commencé à réaliser que je devrais étudier très, très longtemps et durement.

Il a été décidé de mettre Kotlin de côté pour le moment et d'approfondir le langage java. Et il l'a fait. Eh, je me souviens qu'à mon époque, java était encore une idée originale de SUN.



Je suis rapidement passé à Java sans regret. et il y a plus de manuels pour l'auto-apprentissage et il y a beaucoup plus de postes vacants pour les développeurs Java. Certes, je n'ai pas décidé par où commencer, ce serait mieux: avec Java, ou encore passer à JS, mais bon, j'ai pensé que je vais le découvrir. J'ai lu quelque part sur les forums qu'il est beaucoup plus facile et plus rapide d'entrer dans le monde du développement avec JS.

J'ai commencé à apprendre Java de manière standard, après avoir lu une montagne d'articles et visionné un tas de vidéos "Comment devenir un programmeur Java". J'ai téléchargé le livre de Bruce Eckel "La Philosophie de Java", selon les recommandations de beaucoup sur les forums, comme le début le plus correct pour apprendre la langue pour les débutants.



Alors je vais vous dire honnêtement, ce n'est pas du tout pour les débutants.



J'ai essayé de ne pas y prêter attention et de continuer à lire, la digestibilité est d'environ 20-25%, j'ai réalisé que cela ne fonctionnera pas. Nous devrons comprendre le langage C, et même dans le livre, ils écrivent régulièrement en noir et blanc que le matériel est conçu pour des lecteurs connaissant les bases du langage C.



Eh bien, pas le choix. Encore une fois j'ai lu un tas d'informations, des centaines de vues de vidéos sur divers sujets concernant le langage C. Je télécharge le livre de Kernighan et Ritchie "C Language", je commence à étudier, l'assimilation est déjà meilleure qu'en Java, pour ainsi dire, environ 50-60%, ce qui ne me plaît pas du tout.



Une chose était rassurante que les vrais développeurs aient tous commencé avec le langage C, et aussi qu'après avoir appris le C, d'autres langages, en particulier Java, seraient compris plusieurs fois plus rapidement et plus facilement.



Cependant, les titres du livre tels que:

«Ce livre n'est pas un cours d'introduction à la programmation; il suppose une certaine familiarité avec les concepts de programmation de base tels que les variables, les instructions d'affectation, les boucles, les fonctions "

ou:

" suppose une connaissance pratique des éléments de programmation de base; il n'explique pas ce qu'est un ordinateur ou un compilateur, n'explique pas la signification d'expressions comme N = N + 1 "

et de phrases telles que:

Constantes symboliques.

etc.

petit à petit, je me suis rendu compte que je ne pouvais plus me passer d’études d’informatique.

En même temps, je commence à me plonger dans Computer Sciense, en téléchargeant à nouveau des tonnes de livres. Je m'inscris au cours Harvard CS50, commence à apprendre les bases de la programmation, lis attentivement le livre de Vladston Ferreira Philo "Le minimum théorique en informatique".



Je remarque que l'apprentissage du langage C passe à l'arrière-plan, de plus en plus de temps est consacré aux bases de la programmation.



Et si en binaire, variables, fonctions, boucles, compilateur, interprète, équations simples, etc. Je l'ai compris encore plus ou moins, puis une expression comme N = N + 1 et des équations plus complexes m'a conduit dans une stupeur facile.



J'ai passé beaucoup de temps à me demander pourquoi la puissance de 0 à 0 est égale à 1, et j'ai le sentiment de ne pas avoir pleinement compris tout ce point.



Mais cette tâche m'a poussé à m'arrêter à la lecture d'un livre sur CS. plus je lisais, plus les équations et les problèmes étaient déjà compliqués:







je devais chercher sur Google les équations quadratiques, comme il est écrit dans le livre, et plonger dans les discriminants. Eh bien, j'ai oublié, j'ai pensé, l'algèbre, avec qui ne se produit pas. Cependant, je ne pouvais pas résoudre le problème par moi-même, j'ai dû me tourner vers le professeur de mathématiques de l'enfant pour obtenir de l'aide.



J'ai eu une solution, mais je n'ai pas pu comprendre comment l'enseignant l'a résolue:











A ma question: «comment de telles équations sont-elles résolues?», La réponse était très simple:

«enseignez l'étude d'une fonction, lancez l'analyse et les problèmes d'optimisation. Algèbre Grade 10-11 ".

Eh bien, je pense, ok, je vais regarder quelques exemples de vidéos pour les écoliers sur youtube, je vais comprendre comment les résoudre, et je continuerai à «glock» en étudiant en CS.



Et après avoir regardé ces vidéos sur l'algèbre m'est



apparu ... www.youtube.com/watch?v=RbX_QHxu7Lg

www.youtube.com/watch?v=FVSG7Neopuo



Non pas que je ne me souvienne pas comment résoudre de tels problèmes - je suis élémentaire comme il s'est avéré que je ne connaissais tout simplement pas l'algèbre pour les classes 10-11!



Expressions telles que: limites, pensée mathématique, extremum, dérivés, polynômes, etc. pour moi s'est avéré être comme un discours dans la langue de la tribu maya.



Ma connaissance des mathématiques est probablement restée au niveau des cours de mathématiques de la 5e à la 6e année.



Je commence à réaliser que pour avoir une image complète de la compréhension de l'informatique, je devrai réapprendre l'algèbre, puis HigherMat. Je n'exclus pas que la campagne devra probablement répéter les cours de physique et autre chose du programme scolaire. Et avant d'apprendre réellement Java et JS, j'aurai besoin de 5 ans d'étude de l'algèbre et des mathématiques supérieures.

Voler vers Mars et revenir plus vite, à peine 1,5 an, selon les scientifiques ...



Ainsi, après avoir analysé le mois et demi passé d'étude indépendante, il m'est devenu évident que je suis comme un "hamster dans une roue", comme si je courais (j'étudie ), mais en fait je suis immobile. Je n’ai pas augmenté mes connaissances en programmation, sauf que je peux exécuter un programme en langage C ("Hello, world").

De plus, après qu'une tonne de nouvelles informations sont tombées dans mon petit cerveau, elles semblent s'être «fermées» du tout, et refuse catégoriquement d'accepter de nouvelles informations.

L'algorithme que j'ai construit pour apprendre la programmation a échoué presque au tout début.

Il est devenu clair que vous devez réviser votre plan de formation et votre approche.

Cependant, je ne suis pas encore pleinement conscient du tableau, et de quel côté faut-il aborder maintenant pour acquérir le métier de «développeur Java», car la formation standard, à partir des bases de l'algèbre et de l'enseignement supérieur, sera très longue et ne convient pas à mon cas.



Et c'est alors que j'étais déjà assez triste.



Est-ce que cela prend autant de temps pour devenir programmeur sans formation technique?

Bien sûr, je suis inspiré par les articles sur Internet, où les gens écrivent qu'en un an et demi, ils sont devenus développeur Java et sont partis pour l'Allemagne, le Canada, les États-Unis, mais en évaluant ma triste expérience, je ne suis pas sûr que cela soit possible.



Ou n'est-ce toujours pas le mien? Et la profession est-elle "développeur" pour l'élite, pour la "caste des gens spéciaux"?



Je sais qu'il y a des gens qui maîtrisent la programmation sans avoir fait d'études supérieures en informatique. Il y a beaucoup d'entre eux.



Et je suis impatient de rejoindre des personnes aussi merveilleuses et déterminées.

Désabonnez-vous dans les commentaires, pliz, qui a réussi à maîtriser la programmation, ainsi que votre vision des raisons pour lesquelles mon plan et mon approche de l'apprentissage ont échoué. Vos recommandations me seront très utiles, révisant mon plan d'apprentissage de la programmation, ainsi que l'ambition et l'attente du résultat final.



Je doute que je sois le seul confronté à un problème similaire. Je peux même dire qu'il y a beaucoup de gens comme moi ...



Merci d'avance!



All Articles