
Hier, nous avons publié le
premier numéro de la série "Par qui travailler en informatique". Pour lui, j'ai parlé avec deux anciens étudiants et le doyen
de la faculté Python de GeekBrains . Quand j'ai «monté» les histoires dans une seule histoire, il était dommage que beaucoup de choses soient restées dans les brouillons.
Par conséquent, aujourd'hui, je poste la transcription complète de l'interview avec Alexei Petrenko, doyen de GeekBrains - presque sans le modifier ni le sortir de son contexte. Il sera peut-être encore plus appliqué, utile et concentré que le problème principal.
Voici ce qui, par exemple, reste dans les coulisses: pourquoi Python n'est-il pas pire que les autres langages? Quels cadres dois-je regarder en plus de Django? Où vaut-il mieux apprendre à écrire - dans un IDE moderne ou dans un cahier? Quels sites et livres méritent d'être étudiés par vous-même et bien plus encore.
- Que font les développeurs Python maintenant?- Un développeur Python peut faire beaucoup de choses - des simples scripts à l'analyse des données et à la construction de réseaux de neurones.
En parlant de développement, c'est un backend pour les serveurs web. La partie cachée d'Internet, celle que les utilisateurs ordinaires ne voient pas. Serveur, sa logique, interaction avec les bases de données.
- Python n'est pas pire pour le développement de serveur que les autres langages?- En fait non, pas pire. Par exemple, en C, un développeur passe beaucoup de temps à écrire du code. C'est une langue de grand-père. Écrire en C # est plus facile et plus rapide - mais c'est une idée originale de Microsoft - ils ont promu le langage pour le système Windows. Mais Java est universel ... En fait, vous pouvez débattre du meilleur langage.
Python a un seuil d'entrée bas, il est très facile d'apprendre les bases de la programmation dessus. Python est un langage interprété. Par conséquent, si deux programmes identiques sont écrits en Python et C, alors sur Python le programme fonctionnera plus lentement. Il a un très large public, une bibliothèque étendue, ainsi que de nombreuses bibliothèques externes créées par les développeurs du monde entier. Et pour cette raison, il devient une langue qui convient à tout.
- Se pourrait-il que la connaissance de Python soit plus facile pour accéder à des professions spécifiques, telles que l'IA et l'analyse, et les gars avec Java seront plus susceptibles de prendre un backend régulier?- Si nous regardons les statistiques il y a quelques années, le langage PHP occupait 80% du backend de tous les serveurs. Mais PHP commence à perdre du terrain. Python a publié divers frameworks de développement Web sur cette vague, et le plus populaire d'entre eux est Django. Il gagne en popularité et de nombreux employeurs recherchent des développeurs qui connaissent ce cadre particulier.
Il y a toujours de la compétition. Mais un étudiant novice doit comprendre que peu importe ce à quoi il se consacre entièrement - Python ou Java - il trouvera en tout cas un emploi.
- Apprendre Python comme première langue est une bonne solution?"Je pense bien." Il y a 20 ans, ma première langue était le basique. Et puis il m'a semblé amusant et facile de programmer dessus. Quand j'ai vu la syntaxe Python pour la première fois, ma première pensée a été: "C'est la même chose que BASIC, seulement plus cool." Il donne les mêmes sensations - facile, amusant, tout est instantanément clair. Autrement dit, Python est le meilleur langage pour le premier.
"Précisément à cause de la simplicité?"- Oui, à cause de la syntaxe simple. Il pardonne les erreurs de développement mineures, contrairement aux langages compilés, où s'il est scellé, le programme ne compile plus.
Bien que j'espère que les développeurs n'espéreront pas que l'interprète corrigera toutes leurs erreurs.
Plus important encore, le développeur a compris qu'après une base facile, il devrait faire un effort pour maîtriser les aspects les plus sérieux. Bibliothèques et frameworks qui font de Python un langage encore plus cool et avancé.
- Dans quelle mesure la syntaxe est-elle complexe et volumineuse?- Dans la configuration de base de Python, il y a environ 70 fonctions (mais même un programmeur sympa ne les utilise pas nécessairement toutes) et plusieurs dizaines de mots réservés. Autrement dit, pour apprendre une centaine de mots et comprendre ce qu'ils font, vous pouvez passer une à trois semaines si vous le souhaitez et travailler dur.
- La frappe dynamique n'est pas un inconvénient?- La dactylographie dynamique a des adversaires à qui ils ont d'abord enseigné à l'université d'écrire en C, ils ont conduit, que c'est la base de toutes les langues et que tout le monde devrait y être égal. Par conséquent, ils sont extrêmement négatifs sur la frappe dynamique. En fait, la frappe dynamique est plus que moins. Cela accélère le développement.
Mais si vous êtes habitué à la frappe statique, le langage a la capacité de prescrire les types de variables que vous utilisez. La frappe restera dynamique, mais vous pourrez réaliser votre habitude.
- Mais maintenant, Go et TypeScript gagnent en popularité en raison de la frappe stricte.- Oui, ça l'est. Mais les langues vont et viennent toujours, et Python est vivant depuis 30 ans et continue de gagner en popularité. La langue de Go est jeune et bonne. Peut-être qu'il se développera, ou peut-être que nous l'oublierons dans quelques années.
Si nous comparons le langage de programmation avec un réservoir, alors, par exemple, le langage C est l'océan. Vous plongez d'une falaise à une grande profondeur, et vous nagez ou vous noyez. Le langage Python est une plage de sable propre où vous pouvez aller loin, nager calmement, et si vous comprenez que vous voulez avancer, il y a une énorme dépression en profondeur derrière la belle plage, comparable à C et Java.
"Connaître Python, est-il difficile de basculer entre les professions, où est-il utilisé?"Python possède une large bibliothèque. Si vous avez soudainement réalisé que vous ne voulez pas traiter avec les sites et les backends, mais que vous souhaitez passer à l'intelligence artificielle, puis connaître la base, vous devez passer plusieurs mois pour resserrer les mathématiques et apprendre plusieurs cadres supplémentaires.
Une situation similaire avec les mégadonnées - vous devez rappeler le cours des statistiques et des analyses et examiner deux ou trois nouvelles bibliothèques. Autrement dit, les coûts de main-d'œuvre seront considérablement réduits si vous connaissez déjà la langue.
- Quoi de plus difficile?L'analytique et le big data sont de la programmation et des mathématiques. S'il y a une prédisposition, alors pourquoi ne pas traiter des réseaux de neurones, des systèmes de reconnaissance. Si vous aimez simplement programmer, mais pas à un niveau élevé, alors il vaut mieux aller écrire des serveurs. Ils ont également besoin de mathématiques, mais au moins pas plus. Pas d'intégrales et factorielles. Addition et soustraction élémentaires.
- Que devez-vous savoir avant d'entrer dans les cours?- Ce serait bien de savoir à l'avance si vous aimez programmer ou non. Je vous conseillerais d'essayer d'écrire plusieurs programmes, d'essayer des cours gratuits. Il vaut mieux déjà comprendre ce qu'est une variable, comment ajouter deux variables.
- Si une personne n'a même pas commencé, où et comment peut-elle comprendre cela?- Nous avons des cours intensifs gratuits sur les bases de la programmation et des variables. Là, vous devez écrire en Javascript, car dans tout navigateur moderne il y a un interprète, vous n'avez rien à installer.
Avec Python, Java et d'autres langages, c'est un peu plus compliqué - vous devez installer un environnement de développement. Mais si vous comprenez que vous l'aimez, alors pourquoi pas. Vous pouvez passer dix minutes et devenir lentement programmeur.
- Comment apprendre pour que le cours ne devienne pas une croûte inutile?- Un mot est la pratique. Si vous regardez et écoutez, rien n'en sortira. Pour un novice, il est même pratique de réécrire le code que l'enseignant affiche à l'écran. Réécrivez et réfléchissez à son fonctionnement. Il est nécessaire d'effectuer des tâches pratiques - dans le cadre des cours, de vous rechercher sur Internet. Si la formation est pour l'emploi, la pratique est d'autant plus nécessaire. C'est difficile à apprendre, facile au combat.
La pratique minimale requise est de quatre heures par semaine. Deux jours sous deux heures de pratique. Mais je recommanderais de passer une heure par jour à écrire votre propre code.
- Quoi de mieux à apprendre - des choses fondamentales ou populaires et appliquées?- Il est préférable pour un débutant de comprendre la syntaxe. Et quand - pour quelqu'un après une semaine, pour quelqu'un après un mois - une personne dira "Je connais la syntaxe et je peux écrire des constructions et des algorithmes élémentaires", alors seulement cela vaut la peine de considérer où vous voulez aller plus loin. Plus vous étudiez, plus vous vous éloignez de la syntaxe pour les bibliothèques individuelles, les modèles de conception et les modèles individuels.
L'essentiel est de ne pas plonger dans la programmation avec sa tête pour qu'il n'y ait pas d'émeute magique. Lorsque vous apprenez tout pendant trois jours, et que vous obtenez de la bouillie dans votre tête.
- Quelles subtilités faut-il savoir pour ne pas se retourner immédiatement dans le mauvais sens?- Il existe un tel Pep8 standard - c'est l'accord des programmeurs qui écrivent sur Python. Il indique comment écrire correctement et comment mal: si vous voulez écrire une construction avec des conditions, écrivez-la de la même manière. Si quelque chose d'autre, par exemple, pour créer une fonction, alors appelez-la dans tel ou tel style.
Si vous souhaitez travailler en équipe et montrer le code à quelqu'un d'autre, si le code doit être pris en charge à l'avenir, vous devez connaître la norme généralement acceptée. Il serait bon pour un débutant de le lire avec l'étude de la syntaxe.
Les programmeurs débutants, ne connaissant pas Pep8, écrivent un programme qui fonctionne également. Mais lorsqu'après une autre fois une autre personne essaie de le lire, des difficultés surgissent. Ils écrivent le code une fois - ils le lisent dix fois.
- Autre chose? Versions, par exemple?- Il y a quelques années, une scission s'est produite en Python. Il y a eu Python 2.7, puis la version 3. est sortie. La deuxième version est toujours utilisée, mais uniquement dans les entreprises plus anciennes pour maintenir le code hérité. Si vous obtenez un emploi dans une telle entreprise, vous devrez apprendre Python 2, mais je recommanderais d'apprendre la troisième version. Tous les projets modernes et les bibliothèques tierces sont écrits en dessous.
Je vais donner un exemple élémentaire. Payton de la troisième version, une commande pour afficher un message à l'écran: nous écrivons print, ouvrons le crochet et passons le texte et les variables à l'intérieur des crochets.
Dans la deuxième version, nous écrivons print, pas de crochets, puis un espace et une variable. C'est, dans un cas, un espace, dans les autres accolades. Ce n'est pas important pour une personne de comprendre cela, mais l'interprète est important - un espace ou des crochets
- Quels sont les meilleurs moyens d'auto-éducation nommeriez-vous?- Parallèlement à la formation, vous pouvez essayer de mettre en œuvre vos idées et projets. Tout en apprenant les bases, vous résolvez des énigmes et écrivez des programmes simples. Par exemple, j'ai étudié les cycles et pourquoi ne pas écrire un programme qui affiche la table de multiplication.
Ensuite, vous découvrez le framework Django, qui vous permet de créer des sites. Pourquoi ne pas essayer immédiatement d'écrire votre propre site, que je souhaite depuis longtemps.
Il existe encore un tel site - le projet Euler. Il existe un ensemble de tâches pour créer des programmes.
Une personne qui sait programmer peut réaliser la tâche, mais s'il écrit du code de mauvaise qualité, même un ordinateur moderne le résoudra pendant plusieurs minutes, heures, voire jours. Autrement dit, le projet vous fait penser à l'optimisation. Parce que le bon code résout les problèmes du projet Euler en quelques secondes.
Extrait du livre: "Learning Python" de Mark Lutz et "Pure Python". Dan Bader.
- Avec quels outils et cadres dois-je commencer?Un programmeur novice peut prendre Flask par exemple. C'est simple, ne contient pas d'informations inutiles, c'est facile à apprendre. En fait, c'est une petite boîte dans laquelle il n'y a rien de superflu. Et elle écrira les sites les plus simples.
Si vous pensez à l'avenir - alors le monstre parmi les cadres est Django. Ce n'est plus une petite boîte, mais une énorme boîte dans laquelle il y a beaucoup de tout. En comprenant progressivement toutes ses capacités, vous pouvez écrire de bons sites évolutifs qui peuvent servir des milliers d'utilisateurs chaque minute.
- Packages, bibliothèques?- Pour les débutants, je vous conseille de vous familiariser avec la bibliothèque Python standard. Ce sont les mêmes modules qui sont installés sur l'ordinateur avec l'interpréteur. En fait, la bibliothèque standard est si grande. que même son étude prendra plus d'une semaine.
Certains modules de la bibliothèque standard ne seront jamais nécessaires, mais il faut en avoir une idée pour qu'un jour vous ne commenciez pas à réinventer la roue. Tous les vélos y sont assemblés.
En programmation, une structure de données telle que des «files d'attente» est souvent utilisée. Et si une personne vient d'apprendre la syntaxe, elle comprend qu'il n'y a pas de files d'attente en Python. Bien que dans d'autres langues, les files d'attente soient activement utilisées et permettent de résoudre de gros volumes de tâches.
Mais cela vaut la peine de creuser dans la bibliothèque standard, et nous y trouvons le module collections. A l'intérieur de ce module se trouve la «file d'attente» de la structure de données et il s'avère qu'elle a été implémentée depuis longtemps, juste un peu cachée. Il est optimisé au maximum et fonctionnera de toute façon mieux que si vous vous écrivez vous-même.
- Et des choses élémentaires? Quel IDE prendre?- A cette occasion, les avis divergent. Certaines personnes pensent qu'un programmeur novice devrait écrire dans le bloc-notes (pas dans le cours standard, mais au moins dans le bloc-notes ++).
L'idée est que lorsque vous démarrez la programmation, vous devez écrire tout le code manuellement. Cela vous permettra de vous souvenir de la description des structures, des fonctions de base. Mais le problème est que l'ordinateur portable ne vous dit pas où vous avez fait une erreur. Si un débutant ne voit pas où sont les erreurs, il peut désespérer que rien ne fonctionne et quitter cette entreprise.
Par conséquent, il y a une opinion qu'il est préférable de prendre des IDE modernes. Ici, vous devez donner du crédit aux jetbrains. Ils ont fait PyCharm IDE qui a une version communautaire absolument gratuite. Elle raconte toutes les erreurs élémentaires.
- Quelle approche adoptez-vous?Je suis pour la deuxième approche, afin de ne pas décourager le débutant d'écrire du code. Lorsque le code fonctionne, il y a un désir de se développer davantage. Mais si vous voyez une erreur, découvrez comment vous l'avez faite et comment la réparer.
Bien que, pour être honnête, j'ai moi-même commencé avec de vieux cahiers.
- Quel devrait être le niveau minimum pour obtenir un emploi?«Mon expérience chez Geekbrains montre que certains étudiants trouvent du travail avant de terminer leur cours d'un an.» Tout dépend de la façon dont l'étudiant a étudié, de sa motivation, de son investissement actif.
Si nous parlons des compétences que l'employeur souhaite voir avec le développeur de serveur, il s'agit d'un travail élémentaire avec syntaxe, connaissance du fonctionnement des sites, du backend, de Django. Le programmeur doit savoir écrire du code plus rapidement et plus correctement.
J'ajouterais également le travail d'équipe et la connaissance des bases de données, car tout backend de n'importe quel site est inextricablement lié au stockage d'informations.
- Sur quel argent peut-on compter au niveau initial?- Dépend de la région. Quelqu'un obtient un emploi pour 40 000 en tant que débutant, quelqu'un peut pour 100 000. Regarder comment cela se manifeste. Pour ce faire, vous devez prouver que vous pouvez non seulement écrire du code, mais aussi comprendre l'architecture, vous pouvez esquisser le schéma de projet complet, les modules, les services et leurs schémas d'interaction.
- C'est peut-être une rareté chez les débutants?- Nous passons par la conception au quatrième trimestre, presque en fin de formation.
- De combien avez-vous besoin pour vous balancer au travail pour passer au niveau supérieur?- Vous pouvez pomper vers le milieu pendant l'année d'études à Geekbrains. Il existe des cours obligatoires et supplémentaires. L'étudiant choisit lui-même le moment de les suivre, mais les cours principaux et supplémentaires doivent être complétés afin de se dire honnêtement intermédiaire. C'est-à-dire l'année du programme principal et six autres mois de programmes parallèles.
- Qui est donc le développeur signataire?- C'est une personne qui a une riche expérience. C'est quelqu'un qui comprend différents cadres, qui est capable de faire évoluer les tâches, de comprendre les ressources dont ils ont besoin. Un homme qui n'invente pas les vélos. Qui, d'après ma propre expérience, a compris tous les aspects et toutes les nuances du travail.
"Si vous rencontrez un homme qui ne savait rien il y a trois ans et qui se fait maintenant signataire, qu'en pensez-vous?""Pourquoi pas." Dépend de l'entreprise, des aspirations et des compétences. Si une personne est douée, je croirai. S'il dit qu'il connaît Python, pas Python, alors probablement il a quand même eu un coup de feu.
- Et si vous n'êtes pas si génial, combien coûte en moyenne l'expérience?- Si une personne n'a pas de but, alors elle peut travailler confortablement au niveau moyen, cinq et dix ans. Effectuez le volume de tâches qui donnent, profitez-en.
- Autrement dit, le milieu est juste quelqu'un qui ne prend pas la responsabilité?- Oui, Signor est prêt à prendre la responsabilité des décisions, à diriger des équipes. Soyons honnêtes - il y a des leaders, il y a des adeptes. Quelqu'un est prêt à tenter sa chance, à participer à une startup, et s'il tire dans un an, la personne s'appellera immédiatement réalisateur, signataire et tout le reste.
Et il y a des programmeurs qui aiment juste programmer, mais ils ne sont pas prêts à prendre des décisions globales.
- Il semble que la graduation junior middle middle ne consiste pas uniquement à connaître la langue.- Cette gradation est généralement arbitraire et diffère d'une entreprise à l'autre. Si absolument élémentaire - un junior est une personne qui connaît la syntaxe. Milieu - connaît toutes les bibliothèques, frameworks supplémentaires, sait utiliser tout cela. Signor - sait non seulement comment utiliser, mais possède une riche expérience dans le développement de différentes choses.
- Quel genre de travail chercher, pour ne pas être immédiatement déçu?- Nous devons immédiatement prendre une note dans ma tête: "Si rien ne fonctionne, je ne serai pas contrarié." Cela vaut la peine de pratiquer en indépendant ou de faire des projets communs pendant la formation.
- Comment ne pas faire face à la saleté lors d'un entretien?- Premièrement, ne te tais pas. S'ils donnent une tâche à laquelle on ne peut pas répondre immédiatement, alors raisonnez à haute voix, montrez comment vous pensez que vous êtes capable d'avancer vers une solution. Lors des entretiens, ils peuvent également poser des questions de base. Les élèves ont expliqué comment on leur avait confié les tâches que nous avions définies avec eux. Autrement dit, n'écoutez pas les cours devant vos oreilles
L'essentiel est de ne pas désespérer si la première entrevue a échoué. En passant à deux ou trois entretiens, vous remarquerez que les questions commencent à se répéter. Et puis vous choisirez vous-même où vous installer, car lors de trois entretiens réguliers un jour, vous irez partout.
- Sur quels sujets comprendriez-vous qu'il vaut mieux fuir cette entreprise?- Peut-être s'ils affichent le code, et vous comprenez qu'il est illisible. «-» , . , , . .
— ?— . — . — , - .
.