Python pour le Web : ce qu'un junior doit savoir pour travailler et évoluer

Nous avons réalisé un résumé des idées principales de Python Junior Podcast : nous avons discuté de par où commencer et de ce que doit faire un développeur Python débutant. Récemment, nous avons beaucoup de contenu pour les intermédiaires et les seniors, mais cet épisode est spécialement pour les juniors.

Python pour le Web : ce qu'un junior doit savoir pour travailler et évoluer

Principaux sujets :

  • Quelles connaissances un programmeur débutant doit-il avoir pour faire
    du développement web ?
  • Que recherchent les employeurs chez les développeurs ?
  • Que faire pour trouver un emploi sans expérience ?
  • Comment un développeur Python peut-il évoluer ?

Python Junior Podcast — un podcast sur la programmation pour ceux qui veulent mieux comprendre Python. Les émissions sont animées par des évangélistes de la communauté MoscowPython et des enseignants de cours Learn Python.

Ont participé à la conversation :

  • Valentin Dombrovski,co-fondateur de MoscowPython
  • Zlata Obukhovskaya, lead chez NVIDIA
  • Grigory Petrov, évangéliste de MoscowPython
  • Alexey Shternyayev, développeur chez FinEx, enseignant de cours Learn
    Python

Pourquoi Python est-il bon pour le développement web ?

Valentin Dombrovski : Pourquoi Python est-il le choix pour le développement web ? Pourquoi pas PHP ou JavaScript, par exemple ?

Grigory Petrov : Il n'y a pas vraiment de choix. Bien qu'aujourd'hui, il soit possible de créer une application monopage ou une progressive web application uniquement avec des technologies front-end et JavaScript, c'est tout de même trop compliqué, mal indexé et nécessite des développeurs talentueux.

Si nous voulons créer un site ou un service, nous utilisons une approche combinée : nous avons un backend qui gère la logique et crée des pages web, et un frontend qui affiche ces pages dans le navigateur. Et quand nous devons assembler rapidement tout cela, il n'y a pas vraiment de choix.

Examinons les options possibles.

  • C#. Microsoft fait un excellent travail, ils ont conçu .NET Core et le promeuvent activement. Mais, d'une part, c'est une nouvelle technologie multiplateforme, et tout n'est pas encore au point. D'autre part, c'est vraiment coûteux, il y a peu de développeurs C# — simplement parce que cela n'est pas populaire.
  • Java. C'est compliqué. Créer un bon site en Java n'est pas de dix lignes de code comme avec Python. Cela nécessite beaucoup de code, des frameworks, et il faut connaître les spécificités de la configuration des serveurs Java. En gros, ce sont que des douleurs et des souffrances.
  • PHP. Dans les dernières versions, c'est remarquable. Je dirais même que PHP 7.2 n'est pas inférieur à Python. Mais on ne peut pas simplement prendre et utiliser PHP 7.2. Si un développeur moyen, pas au sommet, crée un site en PHP, il ne va pas seulement coder en 7.2 : il devra tout de même lire des manuels, des tutoriels, il y a toujours plein de code hérité, et ce n'est pas très bon.
  • JavaScript et Node.js. C'est formidable et très moderne d'utiliser un seul langage à la fois pour le frontend et le backend. Cependant, ce n'est pas très stable. Node.js est une bonne chose, mais il est problématique de le déployer en production de manière à ce qu'il ne tombe pas et fonctionne de manière stable. De plus, si nous voulons écrire un code de qualité en JavaScript, nous avons besoin de TypeScript, pas de JavaScript. Or, TypeScript est étonnamment complexe, un développeur moyen perd rapidement le fil en le voyant.

Passons rapidement sur Ruby, Haskell, Erlang et d'autres technologies 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, le fameux combo Django.

Il se trouve que, malgré un large éventail de choix, si nous avons des développeurs moyens, pas au sommet, et que nous sommes une entreprise ordinaire voulant créer des sites ordinaires, sans département de développement de 50 personnes, nous optons pour Python.

Quelles connaissances sont nécessaires pour entrer dans la profession

Zlata Obukhovskaïa : Je pense qu'il est important de bien connaître un framework — et de savoir quels autres existent et quand les utiliser. Où se trouve Tornado, Django, Flask, aiohttp, etc.
Il est utile de savoir qu'il existe des protocoles. En particulier, la connaissance du protocole HTTP est essentielle pour construire des applications web.

Il faut aussi avoir une idée générale de la façon dont le frontend fonctionne dans les projets web : ce qu'est HTML, CSS, JS.

Alexeï Shtyrniaïev : Et savoir où se trouve la documentation. C'est le plus important.

Grigory Petrov : Ici, nous touchons à un sujet très délicat. Si nous n'avons pas eu de chance et avons commencé à étudier sérieusement le frontend moderne, il sera environ dix fois plus complexe que le backend en Python. Un développeur débutant doit restreindre son focus afin de commencer par étudier HTML, mais sans se perdre dans tous ces div, span, float, comment tout cela est aligné et structuré.

Alexeï Shtyrniaïev : Un cours basique sur Bootstrap est nécessaire. Et les bases d'HTML.

La première année, il n'est pas recommandé de plonger dans les frameworks JS (si vous vous concentrez sur le backend). Dans un cours de base sur Bootstrap, il y a déjà des modules prêts : si vous voulez un slider, faites un slider, si vous voulez un menu flottant, faites un menu flottant.

Zlata Obukhovskaïa : Je pense qu'en étudiant le frontend, on peut aussi se plonger, en particulier, dans la manière dont la statique est finalement rendue par les applications web. Ainsi, le développeur passe progressivement à la découverte de l'architecture des applications web et de leur fonctionnement en production.

Grigory Petrov : Oui, je le recommande immédiatement dans le cas où vous avez choisi Python comme langage de développement backend et, par exemple, Django comme framework : Django dispose d'une documentation dans le Django Book, elle est vraiment géniale, elle contient tout ce dont Zlata a parlé, elle est vraiment excellente pour les débutants.

Alexeï Shtyrniaïev : Un tutoriel comme Django Girls est aussi adapté pour un démarrage rapide, si l'objectif est d'apprendre précisément Django. C'est un tutoriel où en un jour, vous pouvez survoler les bases et comprendre ce que le framework est capable de faire.

Valentin Dombrovski : En préparation pour l'enregistrement du podcast, nous avons dressé une liste de ce dont un développeur Python a besoin pour le développement web, ce qui résume ce qui a été dit précédemment.

Ce qui est inclus dans les bases du développement web en Python

  • Les frameworks web Django, Flask, aiohttp, Tornado, etc. (et savoir qu'ils existent).
  • Protocoles et API : principalement http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM et migrations, bases de données relationnelles, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Les bases du HTML, CSS, Bootstrap, ainsi que des frameworks JS et jQuery.
  • Les principes de fonctionnement des applications en production, tests, tests unitaires, tests automatisés, systèmes de contrôle de version, git.

Les juniors ont-ils besoin d'algorithmes

Zlata Obukhovskaïa : Au début, il n'est pas nécessaire de connaître les algorithmes, ils apparaîtront progressivement dans votre tête si vous vous consacrez au développement suffisamment longtemps. Je connais de nombreux bons ingénieurs qui n'ont pas suivi de bon cours formel sur les algorithmes.

Grigory Petrov : Je veux ajouter de l'huile au feu. D'où vient notre attrait pour les algorithmes ?

Nous n'avons actuellement pas d'éducation fondamentale sur les algorithmes, nous ne savons pas comment enseigner aux programmeurs, il n'y a pas de base technique.

Cela est en cours, mais ici nous avons l'histoire de Poudlard : nous ne pouvons pas créer une école de magie tant que nous n'avons pas un seul sorcier. Que faire donc pour une université qui reçoit des demandes comme : « Commencez à former des programmeurs », alors qu'ils n'ont pas de programmeurs, car tous travaillent chez Mail.ru, Rambler et Yandex, où tout le monde se sent bien ?

À l'université, ils observent et disent :
— D'accord, la programmation. Trouvons un domaine de connaissances connexe et invitons des spécialistes de là-bas. Invitons des journalistes qui savent écrire des textes, des ingénieurs électriciens qui savent créer des schémas électriques, et des mathématiciens qui maîtrisent les algorithmes.

Au final, c'est aussi raisonnable que d'enseigner la physique des particules à un maçon simplement parce que les briques et le ciment sont constitués de particules élémentaires.

Cependant, on ne parle pas du ciment et des briques, car un physicien qui tente d'enseigner à un maçon ne sait pas construire des maisons. Au final, nous avons un maçon qui peut très bien expliquer comment « fonctionne le ciment », mais qui ne l'a jamais vu et ne sait pas en faire quelque chose.

Les algorithmes et les structures de données, c'est très bien, mais c'est une领域 assez restreint. Ils sont nécessaires, par exemple, lorsque vous écrivez un moteur de jeu, un compilateur ou un protocole réseau.

La plupart des programmeurs résolvent des problèmes commerciaux où les algorithmes et les structures de données ne sont pas nécessaires.

Là, la mathématique la plus complexe consiste à additionner deux fois, puis à diviser. Il faut des connaissances complètement différentes. Pour résoudre des problèmes d'affaires, des connaissances principalement appliquées sont requises, et non des connaissances fondamentales.

Un développeur débutant ferait mieux de comprendre le monde des affaires et comment assembler correctement et rapidement des structures à partir de blocs prêts à l'emploi, comment les déboguer et comment faire en sorte qu'elles ne s'effondrent pas, savoir pourquoi elles s'effondrent, ce qui se passe lorsque les exigences changent et que le programme commence à « s'affaisser sur ses fondations », comme une maison après la pluie.
Ces aspects pratiques et la compréhension de la manière d'écrire un logiciel. Il doit savoir qu'en plus du débogueur, il dispose d'un ensemble d'outils qui montreront exactement où le programme ralentit.

Valentin Dombrovski : Une comparaison m'est venue à l'esprit : c'est comme traduire du langage des affaires au langage que les ordinateurs comprennent. Autrement dit, un programmeur est une sorte de linguiste spécifique.

Grigory Petrov : Une entreprise a besoin d'un écrivain, pas d'un linguiste. L'écrivain n'a pas besoin de savoir pourquoi un mot a évolué de cette manière il y a mille ans. Il doit savoir comment utiliser ces mots.

Que faut-il pour trouver son premier emploi en tant que développeur ?

Alexeï Shtyrniaïev : Il n'y a probablement pas de recette universelle pour former un junior.

Si vous entrez dans une entreprise, vous ne serez pas choisi en raison de vos connaissances en Django, JSON et un peu d'algorithmes. Vous serez probablement choisi pour les compétences nécessaires à l'entreprise ici et maintenant.

Il y a beaucoup d'entreprises avec des exigences différentes. Il n'existe pas un volume de connaissances universel qu'il faut acquérir pour ensuite préparer un CV et chercher un emploi.

Grigory Petrov : Lorsque chez VoxImplant nous recherchions quelques juniors, notre directeur technique a formulé le besoin de manière simple : la personne doit savoir résoudre des problèmes. Évidemment, le junior ne le fera pas toujours efficacement, pas de la meilleure manière et pas toujours correctement, mais idéalement, vous donnez une tâche à la personne, elle s'y consacre et la résout. C'est la compétence que les employeurs recherchent en premier.

Zlata Obukhovskaïa : Les personnes qui cherchent un emploi en venant d'autres domaines ont un certain avantage du point de vue des affaires, car elles ont déjà parcouru un certain chemin et savent résoudre des problèmes rapidement. Ce sont des compétences interpersonnelles, ce que j'appellerais même une culture du travail. Souvent, les diplômés des universités n'ont pas encore cette culture du travail.

Mais j'aimerais tout de même essayer de donner une recette pour les débutants.

Les premiers pas pour un développeur débutant

Zlata Obukhovskaïa : Tout d'abord, il faut avoir son propre projet, car il faut pouvoir écrire quelque chose dans le CV et montrer un minimum de portfolio. C'est encore mieux quand ces projets sont réalisés non pas pour soi, mais en freelance - pour quelqu'un d'autre.

Après les premiers projets, vous pouvez déjà créer un CV et l'envoyer à toutes les entreprises ayant des postes juniors. Les entretiens vous donneront une compréhension des besoins des entreprises. Tôt ou tard, quelqu'un vous recruterait, même dans une petite entreprise. Par la suite, cette expérience vous permettra de rejoindre une entreprise plus grande et plus intéressante.

Valentin Dombrovski : En fait, nous préparons les élèves dans les cours à avoir leur propre projet en 10 semaines d'apprentissage. De plus, nous entraînons la compétence de développement en équipe. Ce sont précisément ces compétences non techniques dont parlait Zlata.

Alexeï Shtyrniaïev : D'après mon expérience, il est normal de chercher son premier emploi pendant longtemps. Chercher pendant un ou deux mois, c'est normal. Si vous envoyez votre CV à toutes les entreprises et que vous participez à des entretiens, vous trouverez certainement quelque chose au bout de trois mois.

Valentin Dombrovski : Vous pouvez travailler sur vos propres projets ou prendre des projets simples en freelance tout en envoyant des CV en parallèle.

Quelles perspectives y a-t-il pour un développeur Python ?

Zlata Obukhovskaïa : Un développeur Python peut aller n'importe où. Il peut entrer dans le test, continuer à se développer jusqu'à architecte senior, ou même dans le management. Les managers techniques sont divers, et vous pouvez atteindre des postes de top management. Vous pouvez aussi évoluer vers le data science, le DevOps, aller vers les tests automatisés ou le machine learning.

Valentin Dombrovski : Il existe donc de nombreuses options, ainsi que des possibilités, y compris nos cours. Les connaissances initiales requises ne sont pas très nombreuses, mais il est recommandé d'élargir votre champ de compétences par la suite, car plus vous pourrez faire, mieux ce sera pour vous.

***

C'est juste une partie de l'épisode. Python Junior. La version complète de l'épisode peut être écoutée..

Ou même visionnée :

Lire la vidéo

RSS du podcast

Merci d'avoir lu, écouté ou regardé.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster