Nous avons réalisé une courte transcription avec les principales réflexions du podcast Python Junior : nous y avons expliqué par où commencer et où aller en tant que développeur Python débutant. Dernièrement, nous avons beaucoup de contenu pour les intermédiaires et les seniors, mais cet épisode est définitivement destiné aux juniors.

Sujets principaux:
- Quelles connaissances un programmeur débutant doit-il mettre en pratique
développement web? - Qu’attendent les employeurs des développeurs ?
- Que faire pour trouver un emploi sans expérience ?
- Comment un développeur Python peut-il développer ?
Python Junior Podcast est un podcast de programmation destiné à ceux qui souhaitent mieux comprendre Python. Les émissions sont dirigées par des évangélistes communautaires et professeurs de cours .
Participants à la conversation :
- Valentin Dombrovsky,co-fondateur de MoscouPython
- Zlata Oboukhovskaïa, Chef d'équipe NVIDIA
- Grigori Petrov, évangéliste MoscouPython
- Alexeï Shtyrnyaev, développeur chez FinEx, professeur de cours Learn
Python
Pourquoi Python est bon pour le développement Web
Valentin Dombrovsky : Pourquoi Python est-il adapté au développement Web ? Pourquoi pas PHP ou JavaScript, par exemple ?
Grigori Petrov : Il n'y a donc pas beaucoup de choix. Malgré le fait que dans le Web moderne, vous pouvez réellement créer une application d'une seule page ou une application Web progressive sans backend - en utilisant uniquement des technologies frontales, en utilisant JavaScript - cela reste trop compliqué, mal indexé et nécessite des développeurs sympas.
Si nous voulons créer un site Web ou un service, nous utilisons une approche combinée : certains backend implémentent la logique et créent des pages Web, et certains frontend dessinent ces pages Web dans le navigateur. Et quand on a besoin de tout rassembler rapidement sur quelque chose, on n’a pas vraiment le choix.
Examinons les options possibles.
- C#. Microsoft est vraiment génial, ils ont créé .NET Core et en font la promotion de toutes les manières possibles. Mais, premièrement, il s’agit d’une nouvelle technologie multiplateforme, et tout n’y est pas encore fluide. Deuxièmement, c'est très cher, il y a peu de développeurs C# - tout simplement parce que c'est impopulaire.
- Java. C'est compliqué. Créer un site Web normal en Java ne nécessite pas 10 lignes de code, comme en Python. Cela fait 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 dernières versions, c'est merveilleux. Je dirai même ceci : PHP 7.2 n'est pas pire que Python. Mais vous ne pouvez pas simplement reprendre et utiliser PHP 7.2. Si un développeur ordinaire, pas top, crée un site Web en PHP, il n'écrira pas uniquement en 7.2 : il devra quand même lire quelques manuels, tutoriels, il y a beaucoup de code hérité partout, et ce n'est pas très bon.
- JavaScript et Node.js. C’est merveilleux et très moderne quand il y a un seul langage à la fois sur le front-end et sur le back-end. Mais pas très stable. Node.js est une bonne chose, mais il est problématique de le déployer en production pour qu'il ne plante 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 étonnamment complexe, et le cerveau du développeur moyen bouillonne quand il le voit.
Laissons de côté Ruby, Haskell, Erlang et d'autres trucs de niche, et il nous reste... Python. Un langage avec une syntaxe cohérente, une bibliothèque standard uniforme, la meilleure documentation, des frameworks légers populaires et la combinaison très populaire de Django.
Il s'avère que, malgré le choix le plus large, si nous avons des développeurs ordinaires et non de premier plan, nous sommes une entreprise ordinaire qui veut créer des sites Web ordinaires, nous n'avons pas de département de développement pour 50 personnes, alors nous prenons Python.
Quelles sont les connaissances nécessaires pour accéder à la profession ?
Zlata Oboukhovskaïa : Je pense que vous devez bien connaître un framework - et savoir quels autres existent et quand ils sont utilisés. Où est Tornado, où est Django, où est Flask, où est aiohttp et ainsi de suite.
Il sera utile de savoir qu’il existe des protocoles. En particulier, la connaissance du protocole http est essentielle à la création d'applications Web.
Vous devez également comprendre au moins approximativement comment fonctionne le front-end dans les projets Web : qu'est-ce que HTML, CSS, JS.
Alexeï Shtyrnyaev : Et sachez où se trouve la documentation. C'est le plus important.
Grigori Petrov : Nous marchons ici sur un terrain très fragile. Si nous n'avons pas de chance et que nous commençons d'une manière ou d'une autre à étudier sérieusement le frontend moderne, alors ce sera environ 10 fois plus compliqué que le backend en Python. Un développeur novice doit limiter sa concentration pour pouvoir commencer à apprendre le HTML, mais ne pas se perdre dans tous ces divs, spans, floats, comment tout est aligné et aligné.
Alexeï Shtyrnyaev : Besoin d'un cours Bootstrap de base. Et les bases du HTML.
Au cours de la première année, vous ne devriez pas vous plonger dans les frameworks JS (si vous vous concentrez sur le backend). Le cours Bootstrap de base contient déjà des modules prêts à l'emploi : si vous voulez un slider, créez un slider ; si vous voulez un menu flottant, créez un menu flottant.
Zlata Oboukhovskaïa : Je pense qu'en étudiant le frontend, vous pouvez vous immerger notamment dans la façon dont la statique est généralement donnée aux applications Web. Ainsi, le développeur commence en douceur à apprendre comment fonctionne en principe l'architecture des applications Web et comment elles vivent en production.
Grigori Petrov : Oui, je vous le recommande tout de suite au cas où vous choisiriez Python comme langage de développement backend et, par exemple, Django comme framework : Django a de la documentation dans le Django Book, c'est vraiment cool, il contient tout ce que Zlata a dit, elle a vraiment bien pour un débutant.
Alexeï Shtyrnyaev : Certaines Django Girls conviennent également pour un démarrage rapide si votre objectif est d'apprendre Django. Il s'agit d'un tutoriel où, en une journée, vous pouvez aller plus loin, comprendre les bases et de quoi le framework est capable.
Valentin Dombrovsky : En préparation de l'enregistrement du podcast, nous avons compilé une liste de ce dont un programmeur Python a besoin pour le développement Web, qui résume ce que nous avons dit plus tôt.
Ce qui est inclus dans les bases du développement Web en Python
- Frameworks Web Django, Flask, aiohttp, Tornado, etc. (et connaître l'existence d'autres).
- Protocoles et API : principalement http, JSON-RPC, Protocol Buffers, gRPC.
- ORM et migrations, bases de données relationnelles, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Bases de HTML, CSS, Bootstrap, ainsi que des frameworks JS et JQuery.
- Principes de fonctionnement des applications en production, tests, tests unitaires, autotests, systèmes de contrôle de version, git.
Les juniors ont-ils besoin d’algorithmes ?
Zlata Oboukhovskaïa : Au début, vous n’avez pas besoin de connaître les algorithmes : ils apparaîtront progressivement dans votre tête si vous vous engagez suffisamment longtemps dans le développement. Je connais une tonne de bons ingénieurs qui n'ont pas suivi un bon cours formel d'algorithmes.
Grigori Petrov : Je veux mettre de l'huile sur le feu. D’où vient notre envie d’algorithmes ?
Nous n’avons actuellement pas de formation fondamentale en algorithmique, nous ne savons pas former des programmeurs, nous n’avons pas de base technique.
Ils essaient de le faire, mais nous avons ici l'histoire de Poudlard : nous ne pouvons pas créer une école de sorciers tant que nous n'avons pas un seul sorcier. Par conséquent, que devrait faire une université lorsqu'elle vient vers eux et leur demande : « Commencez à former des programmeurs », mais ils n'ont pas de programmeurs, car tout le monde travaille chez Mail.ru, Rambler et Yandex, sont-ils heureux là-bas ?
L'université regarde et dit :
- D'accord, programmation. Trouvons un domaine de connaissances connexe et invitons des spécialistes à partir de là. Invitons des journalistes capables de rédiger des textes, des ingénieurs électriciens capables de réaliser des circuits électriques et des mathématiciens capables d'utiliser des algorithmes.
En fin de compte, il s’avère que c’est aussi pratique que d’enseigner la physique des particules à un constructeur simplement parce que la brique et le ciment sont constitués de particules élémentaires.
En même temps, ils ne parlent pas eux-mêmes du ciment et des briques, car le physicien qui essaie de former un maçon ne sait pas construire des maisons. Du coup, on obtient un constructeur qui est capable de décrire parfaitement le fonctionnement du « ciment », mais qui ne l'a jamais vu et ne sait pas 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 ou un protocole réseau.
La plupart des programmeurs résolvent des problèmes commerciaux pour lesquels les algorithmes et les structures de données ne sont pas nécessaires.
Les mathématiques les plus difficiles sont d’ajouter deux fois puis de diviser. Cela nécessite des connaissances complètement différentes. La résolution de problèmes commerciaux nécessite principalement des connaissances appliquées plutôt que fondamentales.
Il est préférable pour un développeur novice de comprendre les affaires et de savoir 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 s'effondrent pas, savoir pourquoi elles s'effondrent, que se passe-t-il lorsque les exigences changent et que le programme commence à « s'installer sur les fondations » comme une maison après la pluie.
Ce sont des choses pratiques et une 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 du langage des affaires vers un langage dans lequel on peut communiquer avec un ordinateur. Autrement dit, un programmeur est une sorte de linguiste spécifique.
Grigori Petrov : Les entreprises ont besoin d’un écrivain, pas d’un linguiste. L’écrivain n’a pas besoin de savoir pourquoi ce mot a été transformé en ceci il y a mille ans. Il doit être capable d'appliquer ces mots.
Ce dont vous avez besoin pour trouver votre premier emploi en tant que développeur
Alexeï Shtyrnyaev : Il n'existe probablement pas de recette universelle pour cuisiner des juniors.
Si vous venez dans une entreprise, ils ne vous embaucheront pas parce que vous connaissez Django, JSON et quelques algorithmes. Vous serez très probablement embauché pour les compétences dont cette entreprise a besoin ici et maintenant.
Il existe de nombreuses entreprises et elles ont toutes des exigences différentes. Il n'existe pas de connaissances universelles à acquérir pour préparer davantage un curriculum vitae et chercher un emploi.
Grigori Petrov : Lorsque chez VoxImplant recherchions plusieurs ingénieurs, 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 qu'un junior ne le fera pas toujours efficacement, pas de la meilleure façon et pas toujours correctement, mais idéalement, vous confiez une tâche à une personne, elle s'efforce et la résout. C’est la compétence que recherchent principalement les employeurs.
Zlata Oboukhovskaïa : Les personnes qui recherchent du travail dans d'autres domaines bénéficient d'un certain avantage d'un point de vue commercial, car elles ont déjà parcouru un certain chemin et sont capables de résoudre les problèmes rapidement. Ce sont des soft skills, j’appellerais même cela une culture du travail. Souvent, les diplômés universitaires n’ont pas encore développé cette culture du travail.
Mais j'aimerais quand même essayer de donner une sorte de recette aux débutants.
Premiers pas pour un développeur novice
Zlata Oboukhovskaïa : La première est qu'il s'agit toujours d'une sorte de projet qui vous est propre, car vous devez écrire quelque chose dans votre CV et présenter un portfolio minimal. C'est plus cool quand ces projets ne sont pas faits pour vous-même, mais en tant que projet indépendant - pour quelqu'un.
Après les premiers projets, vous pouvez déjà rédiger un CV et l'envoyer à toutes les entreprises où il y a des postes en juin. Les entretiens donneront un aperçu de ce dont les entreprises ont besoin. Tôt ou tard, quelqu'un vous embauchera, du moins dans une petite entreprise. Par la suite, cette expérience professionnelle vous donnera l’opportunité d’intégrer une entreprise plus grande et plus intéressante.
Valentin Dombrovsky : D'ailleurs, dans nos cours, nous préparons les étudiants à avoir leur propre projet dans les 10 semaines suivant la formation. De plus, nous formons les compétences en matière de développement d’équipe. Ce sont exactement les soft skills dont parlait Zlata.
Alexeï Shtyrnyaev : Je peux vous dire par expérience que la recherche d'un premier emploi peut prendre beaucoup de temps. Quand on cherche un mois ou deux, c'est normal. Si vous soumettez votre CV à toutes les entreprises, passez des entretiens, au troisième mois vous trouverez certainement quelque chose.
Valentin Dombrovsky : Vous pouvez créer vos propres projets ou entreprendre de simples projets indépendants tout en envoyant votre CV.
Quelles perspectives un développeur Python a-t-il ?
Zlata Oboukhovskaïa : Un développeur Python peut aller n'importe où. Vous pouvez passer aux tests et continuer à évoluer jusqu'à devenir un architecte senior. Ou même dans le management. Il existe différents types de responsables techniques et vous pouvez accéder au poste de direction. Vous pouvez évoluer en science des données, DevOps, vous lancer dans les tests automatisés ou l'apprentissage automatique.
Valentin Dombrovsky : En général, il existe de nombreuses options et opportunités, y compris nos cours. Vous n’avez pas besoin de beaucoup de connaissances au début, mais il est conseillé de couvrir ensuite un éventail plus large, car plus vous en pouvez, mieux c’est pour vous.
***
Ceci n'est qu'une partie de la version . La version complète de l'épisode est disponible .
Ou même regardez :

Merci d'avoir lu, écouté ou regardé.
Source: habr.com
