Nous avons fait un décryptage abrégé avec les principales pensées de Python Junior Podcast: nous y avons discuté par où commencer et où aller pour un développeur Python novice. Récemment, nous avons beaucoup de contenu pour les intermédiaires et les seniors, mais ce problème est définitivement pour les jones.
Thèmes principaux:- Quelles connaissances un programmeur novice doit-il faire?
développement web? - Qu'attendent les employeurs des développeurs?
- Que faire pour trouver du travail sans expérience?
- Comment un développeur Python peut-il se développer?
Python Junior Podcast est un podcast de programmation pour ceux qui veulent mieux comprendre Python. Les ondes sont dirigées par les évangélistes de la communauté MoscowPython et les enseignants des cours Learn Python .La conversation a impliqué:
- Valentin Dombrovsky, co-fondateur de MoscowPython
- Zlata Obukhovskaya, chef d'équipe NVIDIA
- Grigory Petrov, évangéliste de MoscouPython
- Alexey Shtyrnyaev, développeur chez FinEx, professeur de cours Learn
Python
Pourquoi Python est bon pour le développement Web
Valentin Dombrowski: Pourquoi Python convient-il au développement Web? Pourquoi pas PHP ou JavaScript par exemple?
Grigory Petrov: Il n'y a donc vraiment pas le choix. Malgré le fait que sur le Web moderne, il est possible pratiquement sans backend - uniquement sur les technologies frontales, en JavaScript - d'assembler une application d'une seule page ou une application Web progressive, elle est encore trop compliquée, mal indexée et nécessite des développeurs sympas.
Si nous voulons créer un site Web ou un service, nous utilisons une approche combinée: nous avons une sorte de backend qui implémente la logique et crée des pages Web et une interface dessine ces pages Web dans un navigateur. Et lorsque nous devons collecter rapidement tout cela sur quelque chose, il n'y a pas beaucoup de choix.
Examinons les options possibles.
- C # Microsoft est vraiment génial, ils ont créé .NET Core et le promeuvent de toutes les manières. Mais, premièrement, il s'agit d'une nouvelle technologie multiplateforme, et tout ne se passe pas bien là-bas. Deuxièmement, c'est vraiment cher, il y a peu de développeurs C # - simplement parce qu'il est impopulaire.
- Java C'est compliqué. Faire un site normal en Java n'est pas 10 lignes de code, comme en Python. C'est beaucoup de code, ce sont des frameworks, et vous devez connaître les spécificités de la configuration des serveurs Java. En général, douleur et souffrance continues.
- PHP Dans les versions récentes, c'est merveilleux. Je dirai même ceci: PHP 7.2 n'est pas pire que Python. Mais vous ne pouvez pas simplement utiliser et utiliser PHP 7.2. Si un développeur régulier et non top fait un site en PHP, il n'écrira pas seulement sur 7.2: vous devez toujours lire quelques manuels, tutoriels, partout un tas de code hérité, et ce n'est pas très bon.
- JavaScript et Node.js. C'est merveilleux et très moderne quand une langue est à la fois sur le frontend et le backend. Seulement pas très stable. Node.js est une bonne chose, mais il est problématique de le déployer en production afin qu'il ne tombe pas et fonctionne de manière stable. De plus, si nous voulons écrire du code JavaScript de qualité, nous n'avons pas besoin de JavaScript, mais de TypeScript. Mais TypeScript est d'une complexité inattendue, à la vue de cela, un développeur ordinaire se résume.
Omettons Ruby, Haskell, Erlang et d'autres trucs de niche, et nous avons ... Python. Un langage avec une syntaxe cohérente, une bibliothèque standard uniforme, la meilleure documentation, des frameworks légers populaires, la combinaison Django très populaire.
Il s'avère que, malgré le choix le plus large, si nous avons des développeurs ordinaires, pas des meilleurs développeurs, nous sommes une entreprise régulière qui veut faire des sites ordinaires, nous n'avons pas de département de développement pour 50 personnes, alors nous prenons Python.
Quelles connaissances sont nécessaires pour accéder à la profession
Zlata Obukhovskaya: Je pense que vous devez bien connaître un cadre - et savoir ce qui se passe d'autre et quand ils sont utilisés. Où est Tornado, où est Django, où est Flask, où est aiohttp et ainsi de suite.
Il est utile de savoir qu’il existe des protocoles. En particulier, la connaissance du protocole http est essentielle à la création d'applications Web.
Encore faut-il au moins imaginer approximativement comment le frontend est organisé dans les projets web: qu'est-ce que HTML, CSS, JS.
Alexey Shtyrnyaev: Et sachez où se trouve la documentation. C’est la chose la plus importante.
Grigory Petrov: Ici, nous marchons sur un sol très instable. Si nous n'avons pas de chance et que nous avons commencé à étudier sérieusement le frontend moderne, ce sera environ 10 fois plus difficile que le backend Python. Un développeur novice doit limiter sa concentration afin qu'il commence à apprendre le HTML, mais pas à tomber dans toutes ces divs, span, float, comment tout est aligné et aligné là-bas.
Alexey Shtyrnyaev: Nous avons besoin d'un cours de base Bootstrap. Et les bases du HTML.
La première année, vous ne devez pas vous plonger dans les frameworks JS (si vous vous concentrez sur le backend). Le cours de base Bootstrap a déjà des modules prêts à l'emploi: si vous voulez un curseur, faites un curseur, si vous voulez un menu flottant, faites un menu flottant.
Zlata Obukhovskaya: Je pense qu'étudier le front-end peut être plongé, en particulier, dans la manière dont la statique est généralement donnée aux applications web. Ainsi, le développeur procède en douceur pour commencer à apprendre comment, en principe, l'architecture des applications Web est organisée et comment elles vivent de la production.
Grigory Petrov: Oui, je recommanderai tout de suite au cas où vous choisiriez Python comme langage de développement et, par exemple, Django comme framework: Django a de la documentation dans le livre Django, c'est vraiment cool, c'est tout ce que Zlata a dit Elle est vraiment bonne pour un débutant.
Alexey Shtyrnyaev: Une autre Django Girls convient pour un démarrage rapide, si l'objectif est d'étudier Django. Il s'agit d'un tel didacticiel où, en une journée, vous pouvez monter à l'étage, comprendre les bases et ce dont le cadre est capable.
Valentin Dombrovsky: En préparant l'enregistrement d'un podcast, nous avons dressé une liste de ce dont un programmeur Python a besoin pour le développement Web, qui résume ce qui a été dit précédemment.
Ce qui est inclus dans la base du développement Web Python
- Framework Web Django, Flask, aiohttp, Tornado, etc. (et connaître l'existence du reste).
- Protocoles et API: principalement HTTP, JSON-RPC, tampons de protocole, gRPC.
- ORM et migrations, bases de données relationnelles, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Les bases de HTML, CSS, Bootstrap, ainsi que les frameworks JS et JQuery.
- Les principes des applications sur la production, les tests, les tests unitaires, les autotests, les systèmes de contrôle de version, git.
Le Junior a-t-il besoin d'algorithmes
Zlata Obukhovskaya: Au début, vous n'avez pas besoin de connaître les algorithmes, ils apparaîtront eux-mêmes progressivement dans votre tête si vous vous engagez dans le développement pendant longtemps. Je connais un tas de bons ingénieurs qui n'avaient pas un bon cours formel en algorithmes.
Grigory Petrov: Je veux ajouter de l'huile au feu. D'où vient notre envie d'algorithmes?
Maintenant, nous n'avons pas de formation fondamentale en algorithmes, nous ne savons pas comment former les programmeurs, il n'y a pas de base technique.
Ils essaient de le faire, mais ici nous avons l'histoire de Poudlard: nous ne pouvons pas faire une école de sorciers avant d'avoir un seul sorcier. Par conséquent, à quoi l’université devrait-elle s'adresser et demander: «Commencez à former des programmeurs», mais ils n’ont pas de programmeurs, parce que tout le monde travaille chez Mail.ru, Rambler et Yandex, sont-ils bons là-bas?
À l'université, ils regardent et disent:
- Ok programmation. Trouvons une sorte de domaine de connaissance connexe et invitons des spécialistes à partir de là. Invitons les journalistes qui savent écrire du texte, les ingénieurs électriciens qui savent faire des circuits électriques et les mathématiciens qui savent écrire des algorithmes.
En conséquence, il s'avère que c'est aussi pratique que d'enseigner à un constructeur la physique des particules élémentaires uniquement parce que la brique et le ciment sont composés de particules élémentaires.
En même temps, ils ne parlent pas du ciment et de la brique eux-mêmes, car un physicien qui essaie de former un constructeur ne sait pas comment construire une maison. En conséquence, nous obtenons un constructeur qui est capable de peindre parfaitement comment "le ciment fonctionne", mais ne l'a jamais vu et sait comment en faire quoi que ce soit.
Les algorithmes et les structures de données sont très bons, mais il s'agit d'un très petit domaine d'application. Ils sont nécessaires de toute urgence, par exemple, si vous écrivez un moteur de jeu, un compilateur, un protocole réseau.
La plupart des programmeurs résolvent les problèmes commerciaux où les algorithmes et les structures de données ne sont pas nécessaires.
Les mathématiques les plus difficiles sont de plier deux fois puis de diviser. Ils ont besoin de connaissances complètement différentes. La résolution de problèmes commerciaux nécessite avant tout des connaissances appliquées plutôt que fondamentales.
Il est préférable pour un développeur novice d'avoir une idée de l'entreprise et comment assembler correctement et rapidement les structures nécessaires à partir de blocs prêts à l'emploi, comment les déboguer, comment s'assurer qu'elles ne se désagrègent pas, savoir pourquoi elles se désagrègent, que se passe-t-il lorsque les exigences changent et que le programme démarre «Installez-vous sur la fondation», comme une maison après la pluie.
Ce sont les choses appliquées et la compréhension de la façon d'écrire des logiciels. Il doit savoir qu'en plus du débogueur, il dispose d'un ensemble d'outils qui montreront exactement où le programme ralentit.
Valentin Dombrovsky: Cette comparaison m'est venue à l'esprit: il s'agit d'une traduction de la langue des affaires vers une langue dans laquelle vous pouvez communiquer avec un ordinateur. Autrement dit, le programmeur est une sorte de linguiste spécifique.
Grigory Petrov: Les entreprises ont besoin d'un écrivain, pas d'un linguiste. L'écrivain n'a pas besoin de savoir pourquoi ce mot s'est transformé en celui-ci il y a mille ans. Il doit être capable d'appliquer ces mots.
Ce dont vous avez besoin pour trouver un premier emploi en tant que développeur
Alexey Shtyrnyaev: Probablement, il n'y a pas de recette universelle pour laquelle vous devez préparer un junior.
Si vous venez dans une entreprise, vous ne serez pas pris pour le fait que vous connaissez Django, JSON et certains algorithmes. Vous serez très probablement pris pour les compétences dont cette entreprise a besoin ici et maintenant.
Il existe de nombreuses entreprises et chacun a des exigences différentes. Il n'y a pas une telle quantité universelle de connaissances qui doivent être acquises afin de préparer davantage un curriculum vitae et d'aller chercher un emploi.
Grigory Petrov: Lorsque nous recherchions plusieurs jones chez VoxImplant, notre directeur technique a formulé l'exigence de base comme suit: une personne doit être capable de résoudre des problèmes. Il est clair que June ne le fera pas toujours efficacement, pas de la meilleure façon et pas toujours correctement, mais idéalement, vous définissez une tâche pour une personne, il se tend et la résout. C'est la compétence que les employeurs recherchent principalement.
Zlata Obukhovskaya: Les personnes qui recherchent du travail, déménagent d'autres régions, ont un certain avantage du point de vue des entreprises, car elles ont déjà fait un certain chemin et savent comment résoudre les problèmes rapidement. Ce sont des compétences générales, je dirais même que c'est une culture de travail. Souvent, les étudiants diplômés de cette culture de travail n'ont pas encore été développés.
Mais je voudrais quand même essayer de donner une recette pour les débutants.
Premières étapes pour un développeur novice
Zlata Obukhovskaya: Le premier est encore une sorte de votre propre projet, car vous devez écrire quelque chose dans le CV et montrer le portfolio minimum. C'est plus cool quand ces projets ne sont pas faits pour eux-mêmes, mais en freelance - pour quelqu'un.
Après les premiers projets, il est déjà possible de faire un CV et de l'envoyer à toutes les entreprises où il y a des postes en juin. Les entretiens permettront de comprendre les besoins des entreprises. Tôt ou tard, quelqu'un vous emmènera, au moins dans une petite entreprise. Par la suite, cette expérience de travail vous donnera l'opportunité d'entrer dans l'entreprise de plus en plus intéressante.
Valentin Dombrovsky: Soit dit en passant, nous préparons les étudiants aux cours afin qu'ils aient leur propre projet pour 10 semaines de formation. De plus, nous formons les compétences de développement d'équipe. Ce ne sont que les compétences générales dont Zlata a parlé.
Alexey Shtyrnyaev: Par expérience, je dirai que vous pouvez chercher un premier emploi pendant très longtemps. Lorsque vous recherchez un mois ou deux, c'est normal. Si vous soumettez un curriculum vitae à toutes les entreprises, rendez-vous pour des entrevues, au cours du troisième mois, vous trouverez certainement quelque chose.
Valentin Dombrovsky: Vous pouvez couper vos projets ou prendre des projets simples en freelance et envoyer simultanément des CV.
Quelles sont les perspectives pour un développeur Python
Zlata Obukhovskaya: Un développeur Python peut aller n'importe où. Vous pouvez passer aux tests, continuer à évoluer vers un architecte senior. Ou même en gestion. Les responsables techniques sont différents et vous pouvez évoluer vers la direction. Vous pouvez développer en science des données, DevOps, aller aux autotests ou au machine learning.
Valentin Dombrovsky: En général, il y a beaucoup d'options, d'opportunités aussi, y compris nos cours. Vous n'avez pas besoin de beaucoup de connaissances à l'entrée, mais il est alors conseillé de couvrir une gamme plus large, car plus vous en pouvez, mieux c'est pour vous.
***
Ce n'est qu'une partie de la version
Python Junior . Vous pouvez
écouter la version complète de l'épisode.
Ou même voir:
Podcast RSSMerci d'avoir lu, écouté ou regardé.