Wir haben eine verkürzte Zusammenfassung mit den wichtigsten Gedanken aus dem Python Junior Podcast erstellt: Darin haben wir besprochen, wo ein angehender Python-Entwickler anfangen und hinwenden sollte. In letzter Zeit haben wir viele Inhalte für Mid-Level- und Senior-Entwickler, aber diese Episode ist definitiv für die Juniors.

Hauptthemen:
- Welche Kenntnisse benötigt ein angehender Programmierer, um sich mit
Webentwicklung zu beschäftigen? - Was erwarten Arbeitgeber von Entwicklern?
- Was kann man tun, um ohne Erfahrung einen Job zu finden?
- Wie kann sich ein Python-Entwickler weiterentwickeln?
Python Junior Podcast – ein Podcast über Programmierung für diejenigen, die sich besser in Python auskennen wollen. Die Sendungen werden von den Evangelisten der Community und Lehrern von Kursen moderiert. .
An dem Gespräch nahmen teil:
- Walentijn Dombrowski,Mitbegründer von MoscowPython
- Zlata Obuchowskaja, Teamleiterin bei NVIDIA
- Grigori Petrow, Evangelist bei MoscowPython
- Alexei Shtyrnjaev, Entwickler bei FinEx, Lehrer bei den Kursen Learn
Python
Warum ist Python gut für die Webentwicklung?
Walentijn Dombrowski: Warum ist gerade Python für die Webentwicklung geeignet? Warum nicht PHP oder JavaScript, zum Beispiel?
Grigori Petrow: Es gibt ja nicht wirklich eine Wahl. Obwohl man im modernen Web praktisch ohne Backend – rein mit Frontend-Technologien – eine Single Page Application oder eine Progressive Web Application zusammenbauen kann, ist das trotzdem zu kompliziert, lässt sich schlecht indizieren und erfordert großartige Entwickler.
Wenn wir eine Webseite oder einen Dienst erstellen möchten, nutzen wir einen kombinierten Ansatz: Wir haben ein Backend, das die Logik umsetzt und die Webseiten erstellt, und ein Frontend, das diese Webseiten im Browser darstellt. Und wenn wir das alles schnell zusammenstellen müssen, bleiben uns nicht viele Optionen.
Lassen Sie uns mögliche Optionen betrachten.
- C#. Microsoft ist wirklich sehr gut, sie haben .NET Core entwickelt und fördern es auf vielfältige Weise. Aber erstens ist das eine neue plattformübergreifende Technologie, bei der noch nicht alles glatt läuft. Zweitens ist es wirklich teuer, C#-Entwickler sind rar – einfach, weil es nicht populär ist.
- Java. Das ist kompliziert. Eine normale Webseite in Java zu erstellen, sind nicht 10 Zeilen Code wie in Python. Das ist viel Code, es gibt Frameworks, und man muss die Spezifika der Einrichtung von Java-Servern kennen. Im Großen und Ganzen ist es nur Schmerz und Leid.
- PHP. In den letzten Versionen ist er großartig. Ich sage sogar: PHP 7.2 ist nicht schlechter als Python. Aber man kann PHP 7.2 nicht einfach so verwenden. Wenn ein gewöhnlicher, nicht ganz so erfahrener Entwickler eine Website mit PHP macht, wird er nicht nur in 7.2 programmieren: Man muss trotzdem irgendwelche Lehrbücher, Tutorials lesen, überall gibt es eine Menge Legacy-Code, und das ist nicht sehr gut.
- JavaScript und Node.js. Es ist großartig und sehr modern, wenn eine Sprache sowohl im Frontend als auch im Backend benutzt wird. Nur ist es nicht sehr stabil. Node.js ist eine gute Sache, aber es ist problematisch, diese in der Produktion so einzusetzen, dass sie nicht abstürzt und stabil läuft. Außerdem, wenn wir qualitativ hochwertigen Code in JavaScript schreiben wollen, brauchen wir nicht JavaScript, sondern TypeScript. Und TypeScript ist unerwartet komplex, bei dessen Anblick bekommt ein normaler Entwickler Kopfschmerzen.
Lassen Sie Ruby, Haskell, Erlang und andere Nischensachen beiseite, und wir haben… Python. Eine Sprache mit konsistentem Syntax, einheitlicher Standardbibliothek, bester Dokumentation, populären und leichten Frameworks, dem extrem populären Kombi Django.
Es stellt sich heraus, dass, trotz der riesigen Auswahl, wenn wir gewöhnliche, nicht ganz so erfahrene Entwickler haben, wir ein gewöhnliches Unternehmen sind, das gewöhnliche Websites erstellen möchte, wir keine Entwicklungsabteilung mit 50 Personen haben, dann nehmen wir Python.
Welche Kenntnisse sind notwendig, um in den Beruf einzusteigen
Zlata Obuchowskaja: Ich denke, dass man ein Framework gut beherrschen sollte – und wissen sollte, welche anderen es gibt und wann sie verwendet werden. Wo Tornado, wo Django, wo Flask, wo aiohttp und so weiter.
Es ist nützlich zu wissen, dass es so etwas wie Protokolle gibt. Insbesondere das Wissen über das Protokoll http ist zentral für den Aufbau von Webanwendungen.
Außerdem sollte man sich zumindest ungefähr vorstellen, wie das Frontend in Webprojekten funktioniert: was HTML, CSS, JS ist.
Alexej Štyrnajev: Und wissen, wo die Dokumentation zu finden ist. Das ist das Wichtigste.
Grigori Petrow: Hier betreten wir sehr unsicheren Boden. Wenn wir Pech haben und wir anfangen, das moderne Frontend ernsthaft zu lernen, wird es ungefähr zehnmal komplizierter sein als das Backend in Python. Einem Anfänger sollte geraten werden, seinen Fokus zu begrenzen, so dass er beginnt, HTML zu lernen, aber nicht in all diese divs, spans, floats, wie alles ausgerichtet und strukturiert wird, abtaucht.
Alexej Štyrnajev: Ein Grundkurs in Bootstrap ist notwendig. Und Grundlagen in HTML.
Im ersten Jahr sollte man sich nicht in JS-Frameworks vertiefen (wenn man sich auf das Backend konzentriert). Im Grundlagenkurs zu Bootstrap gibt es bereits fertige Module: Willst du einen Slider — mach einen Slider, willst du ein fließendes Menü — mach ein fließendes Menü.
Zlata Obuchowskaja: Ich denke, dass man sich in das Frontend vertiefen kann, insbesondere in die Frage, wie statische Inhalte überhaupt in Webanwendungen übergeben werden. So kann der Entwickler allmählich dazu übergehen, die Grundarchitektur von Webanwendungen zu verstehen und wie sie in der Produktion funktionieren.
Grigori Petrow: Ja, ich empfehle es sofort für den Fall, dass du Python als Backend-Entwicklungssprache und beispielsweise Django als Framework gewählt hast: Django hat eine Dokumentation im Django Buch, die wirklich großartig ist. Darin steht alles, was Zlata gesagt hat, und es ist wirklich gut für Anfänger.
Alexej Štyrnajev: Für einen schnellen Start eignet sich auch ein Tutorial wie Django Girls, falls das Ziel ist, wirklich Django zu lernen. Das ist ein Tutorial, wo du an einem Tag die Grundlagen durchgehen kannst und verstehst, was das Framework alles kann.
Walentijn Dombrowski: In Vorbereitung auf die Aufnahme des Podcasts haben wir eine Liste zusammengestellt, was ein Python-Programmierer für die Webentwicklung benötigt, was die vorherigen Aussagen zusammenfasst.
Was zu den Grundlagen der Webentwicklung mit Python gehört
- Web-Frameworks wie Django, Flask, aiohttp, Tornado etc. (und über die Existenz anderer Bescheid wissen).
- Protokolle und APIs: in erster Linie http, JSON-RPC, Protocol Buffers, gRPC.
- ORM und Migrationen, relationale Datenbanken, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Grundlagen von HTML, CSS, Bootstrap sowie JS-Frameworks und JQuery.
- Prinzipien der Funktionsweise von Anwendungen in der Produktion, Tests, Unit-Tests, automatisierte Tests, Versionskontrollsysteme, git.
Sind Algorithmen für einen Junior notwendig?
Zlata Obuchowskaja: Anfangs ist es nicht nötig, Algorithmen zu kennen, sie werden allmählich im Kopf entstehen, wenn man lange genug in der Entwicklung tätig ist. Ich kenne viele gute Ingenieure, die keinen formalen Kurs in Algorithmen hatten.
Grigori Petrow: Ich möchte Öl ins Feuer gießen. Woher kommt eigentlich unsere Neigung zu Algorithmen?
Wir haben derzeit keine fundierte Ausbildung in Algorithmen, wir wissen nicht, wie man Programmierer ausbildet, es fehlt an technischer Basis.
Das versuchen sie, aber hier haben wir die Geschichte von Hogwarts: Wir können keine Magierschule einrichten, solange wir keinen einzigen Magier haben. Also, was soll eine Universität tun, zu der Leute kommen und sagen: „Beginnt mit der Ausbildung von Programmierern“, während sie keine Programmierer haben, weil alle bei Mail.ru, Rambler und Yandex arbeiten, wo es ihnen gut geht?
An der Universität schauen sie und sagen:
— Okay, Programmierung. Lassen Sie uns ein verwandtes Wissensgebiet finden und Fachleute von dort einladen. Lassen Sie uns Journalisten einladen, die Texte schreiben können, Elektroingenieure, die elektrische Schaltpläne erstellen können, und Mathematiker, die mit Algorithmen umgehen können.
Am Ende ist es genauso sinnvoll, wie einen Bauarbeiter in der Quantenphysik auszubilden, nur weil Ziegel und Zement aus elementaren Teilchen bestehen.
Gleichzeitig wird nichts über den Zement und die Ziegel erzählt, weil der Physiker, der versucht, den Bauarbeiter auszubilden, nicht weiß, wie man Häuser baut. Am Ende haben wir einen Bauarbeiter, der perfekt erklären kann, wie „Zement funktioniert“, aber noch nie einen gesehen hat und nicht weiß, wie man damit arbeitet.
Algorithmen und Datenstrukturen sind sehr wichtig, aber es ist ein sehr kleiner Anwendungsbereich. Sie sind dringend erforderlich, wenn man beispielsweise eine Spiel-Engine, einen Compiler oder ein Netzwerkprotokoll schreibt.
Die meisten Programmierer lösen Geschäftsprobleme, bei denen Algorithmen und Datenstrukturen nicht benötigt werden.
Dort ist die komplizierteste Mathematik — zweimal addieren und dann teilen. Dafür braucht man ganz andere Kenntnisse. Zur Lösung von Geschäftsproblemen sind hauptsächlich praktische, keine fundamentalen Kenntnisse erforderlich.
Einem angehenden Entwickler ist es besser, ein Verständnis für das Geschäft zu haben und zu wissen, wie man aus fertigen Blöcken die benötigten Konstruktionen schnell und richtig zusammensetzt, wie man sie debuggt und wie man sicherstellt, dass sie nicht auseinanderfallen, zu wissen, warum sie auseinanderbrechen und was passiert, wenn sich die Anforderungen ändern und das Programm anfängt, sich „auf dem Fundament zu setzen“, wie ein Haus nach dem Regen.
Diese praktischen Dinge und das Verständnis, wie man Software schreibt. Er muss wissen, dass er neben dem Debugger auch ein Toolkit hat, das zeigt, wo genau das Programm ruckelt.
Walentijn Dombrowski: Mir kam ein Vergleich in den Sinn: Es ist wie eine Übersetzung von der Sprache der Wirtschaft in eine Sprache, in der man mit dem Computer kommunizieren kann. Das heißt, ein Programmierer ist eine Art spezifischer Linguist.
Grigori Petrow: Der Wirtschaft braucht einen Schriftsteller, keinen Linguisten. Einem Schriftsteller muss nicht bewusst sein, warum dieses Wort vor tausend Jahren genau so transformiert wurde. Er muss in der Lage sein, diese Wörter anzuwenden.
Was benötigt man, um den ersten Job als Entwickler zu finden
Alexej Štyrnajev: Wahrscheinlich gibt es kein universelles Rezept, nach dem man einen Junior-Entwickler ausbilden sollte.
Wenn Sie in ein Unternehmen kommen, werden Sie nicht deshalb eingestellt, weil Sie Django, JSON und ein wenig Algorithmen kennen. Wahrscheinlich werden Sie aufgrund der Fähigkeiten eingestellt, die zu diesem Zeitpunkt in diesem Unternehmen benötigt werden.
Es gibt viele Unternehmen, und alle haben unterschiedliche Anforderungen. Es gibt nicht das eine universelle Wissen, das man erlangen muss, um sein Lebenslauf vorzubereiten und sich zu bewerben.
Grigori Petrow: Als wir bei VoxImplant nach mehreren Juniors suchten, formulierte unser technischer Direktor das grundlegende Anforderungsprofil so: Eine Person muss in der Lage sein, Aufgaben zu lösen. Es ist klar, dass ein Junior das nicht immer effizient und nicht immer richtig tun wird, aber idealerweise gibst du der Person eine Aufgabe, sie strengt sich an und löst sie. Das ist die Fähigkeit, nach der Arbeitgeber in erster Linie suchen.
Zlata Obuchowskaja: Menschen, die aus anderen Bereichen auf Jobsuche sind, haben aus wirtschaftlicher Sicht einen gewissen Vorteil, weil sie bereits einen Weg gegangen sind und in der Lage sind, Aufgaben schnell zu lösen. Das sind Soft Skills, ich würde das sogar als Arbeitskultur bezeichnen. Oftmals ist diese Arbeitskultur bei Hochschulabsolventen noch nicht ausgeprägt.
Aber ich würde trotzdem gerne versuchen, ein gewisses Rezept für Anfänger zu geben.
Die ersten Schritte für einen angehenden Entwickler
Zlata Obuchowskaja: Als Erstes ist es wichtig, ein eigenes Projekt zu haben, denn im Lebenslauf muss man etwas schreiben können, um ein minimales Portfolio zu zeigen. Es ist besser, wenn diese Projekte nicht nur für einen selbst, sondern auch für jemanden als Freelancer gemacht wurden.
Nach den ersten Projekten kann man bereits einen Lebenslauf erstellen und ihn an alle Unternehmen senden, in denen Junior-Positionen verfügbar sind. Vorstellungsgespräche geben Einblicke, was die Unternehmen brauchen. Früher oder später wird dich jemand einstellen, zumindest in einem kleinen Unternehmen. Diese Berufserfahrung wird dir später helfen, in ein größeres und interessanteres Unternehmen zu wechseln.
Walentijn Dombrowski: Übrigens bereiten wir in den Kursen die Schüler darauf vor, innerhalb von 10 Wochen Lernerfahrung ihr eigenes Projekt zu erstellen. Außerdem trainieren wir die Fähigkeit zur Teamarbeit. Das sind genau die Soft Skills, über die Zlata gesprochen hat.
Alexej Štyrnajev: Aus Erfahrung kann ich sagen, dass man lange nach dem ersten Job suchen kann. Wenn Sie einen Monat oder zwei suchen, ist das normal. Wenn Sie Ihre Bewerbungen an alle Unternehmen senden und Vorstellungsgespräche führen, werden Sie im dritten Monat sicherlich etwas finden.
Walentijn Dombrowski: Man kann an eigenen Projekten arbeiten oder einfache Projekte im Freelancing übernehmen und parallel Bewerbungen versenden.
Welche Perspektiven hat ein Python-Entwickler?
Zlata Obuchowskaja: Ein Python-Entwickler kann überall hingehen. Man kann in das Testen gehen, bis zum Senior-Architekten weiterentwickeln oder sogar ins Management wechseln. Technische Manager sind vielfältig, und man kann bis zur oberen Führungsebene aufsteigen. Man kann sich in Data Science, DevOps entwickeln, in die Automatisierung von Tests oder ins maschinelle Lernen gehen.
Walentijn Dombrowski: Es gibt also viele Optionen und Möglichkeiten, einschließlich unserer Kurse. Am Anfang sind nicht viele Kenntnisse erforderlich, aber es wäre wünschenswert, danach ein breiteres Spektrum zu nutzen, denn je mehr Sie können, desto besser ist das für Sie.
***
Das ist nur ein Teil der Episode . Die vollständige Version der Episode kann man .
Oder sogar ansehen:

Danke, dass Sie gelesen, zugehört oder angeschaut haben.
Quelle: habr.com
