Python für das Web: Was ein Junior wissen muss, um zu arbeiten und sich weiterzuentwickeln

Wir haben ein kurzes Transkript mit den Hauptgedanken des Python Junior Podcasts erstellt: Darin haben wir besprochen, wo man als Python-Entwickler für Anfänger anfangen und wohin man gehen soll. In letzter Zeit haben wir viele Inhalte für Mittel- und Senioren, aber diese Folge ist definitiv für Junioren.

Python für das Web: Was ein Junior wissen muss, um zu arbeiten und sich weiterzuentwickeln

Hauptthemen:

  • Welche Kenntnisse benötigt ein unerfahrener Programmierer zum Üben?
    Webentwicklung?
  • Was erwarten Arbeitgeber von Entwicklern?
  • Was tun, um ohne Erfahrung einen Job zu finden?
  • Wie kann sich ein Python-Entwickler weiterentwickeln?

Python Junior Podcast ist ein Programmier-Podcast für diejenigen, die Python besser verstehen möchten. Die Übertragungen werden von Community-Evangelisten durchgeführt MoskauPython und Kursleiter Lernen Sie Python.

Teilnehmer des Gesprächs:

  • Valentin Dombrovsky,Mitbegründer von MoscowPython
  • Zlata Obukhovskaya, NVIDIA-Teamleiter
  • Grigory Petrov, Evangelist MoskauPython
  • Alexey Shtyrnyaev, Entwickler bei FinEx, Dozent für Learn-Kurse
    Python

Warum Python gut für die Webentwicklung ist

Valentin Dombrovsky: Warum eignet sich Python für die Webentwicklung? Warum nicht zum Beispiel PHP oder JavaScript?

Grigory Petrov: Es gibt also nicht viel Auswahl. Trotz der Tatsache, dass man im modernen Web tatsächlich eine Single-Page-Anwendung oder eine progressive Webanwendung ohne Backend erstellen kann – ausschließlich unter Verwendung von Front-End-Technologien und unter Verwendung von JavaScript – ist dies immer noch zu kompliziert, schlecht indiziert und erfordert coole Entwickler.

Wenn wir eine Website oder einen Dienst erstellen möchten, verwenden wir einen kombinierten Ansatz: Einige Backends implementieren die Logik und erstellen Webseiten, und einige Frontends zeichnen diese Webseiten im Browser. Und wenn wir schnell alles zu etwas zusammenfügen müssen, haben wir eigentlich keine andere Wahl.

Schauen wir uns die möglichen Optionen an.

  • C#. Microsoft ist wirklich großartig, sie haben .NET Core entwickelt und fördern es auf jede erdenkliche Weise. Aber erstens handelt es sich um eine neue plattformübergreifende Technologie, und dort läuft noch nicht alles reibungslos. Zweitens ist es wirklich teuer, es gibt nur wenige C#-Entwickler – einfach weil es unbeliebt ist.
  • Java. Es ist kompliziert. Für die Erstellung einer normalen Website in Java sind nicht wie in Python 10 Codezeilen erforderlich. Das ist eine Menge Code, das sind Frameworks, und Sie müssen die Besonderheiten der Einrichtung von Java-Servern kennen. Im Allgemeinen anhaltende Schmerzen und Leiden.
  • PHP. In den neuesten Versionen ist es wunderbar. Ich sage sogar Folgendes: PHP 7.2 ist nicht schlechter als Python. Aber Sie können nicht einfach PHP 7.2 erlernen und verwenden. Wenn ein gewöhnlicher, nicht erstklassiger Entwickler eine Website in PHP erstellt, wird er nicht nur in 7.2 schreiben: Er muss noch einige Lehrbücher und Tutorials lesen, es gibt überall viel Legacy-Code, und das ist nicht sehr gut.
  • JavaScript und Node.js. Es ist wunderbar und sehr modern, wenn es sowohl im Frontend als auch im Backend eine einzige Sprache gibt. Nur nicht sehr stabil. Node.js ist eine gute Sache, aber es ist problematisch, es in der Produktion bereitzustellen, damit es nicht abstürzt und stabil funktioniert. Wenn wir außerdem hochwertigen JavaScript-Code schreiben möchten, benötigen wir kein JavaScript, sondern TypeScript. Aber TypeScript ist unerwartet komplex und das Gehirn eines durchschnittlichen Entwicklers kocht, wenn er es sieht.

Lassen wir Ruby, Haskell, Erlang und andere Nischenkrams weg, und uns bleibt … Python. Eine Sprache mit konsistenter Syntax, einer einheitlichen Standardbibliothek, der besten Dokumentation, beliebten, leichtgewichtigen Frameworks und der äußerst beliebten Django-Kombination.

Es stellt sich heraus, dass wir trotz der größten Auswahl normale und keine Top-Entwickler haben, wir ein gewöhnliches Unternehmen sind, das gewöhnliche Websites erstellen möchte, wir keine Entwicklungsabteilung für 50 Leute haben, dann nehmen wir Python.

Welche Kenntnisse sind für den Berufseinstieg erforderlich?

Zlata Obukhovskaya: Ich glaube, dass man ein Framework gut kennen muss – und wissen muss, welche anderen existieren und wann sie verwendet werden. Wo ist Tornado, wo ist Django, wo ist Flask, wo ist aiohttp und so weiter.
Es wird nützlich sein zu wissen, dass es so etwas wie Protokolle gibt. Insbesondere die Kenntnis des http-Protokolls ist für die Erstellung von Webanwendungen von zentraler Bedeutung.

Außerdem müssen Sie zumindest grob verstehen, wie das Frontend in Webprojekten funktioniert: Was ist HTML, CSS, JS?

Alexey Shtyrnyaev: Und wissen Sie, wo sich die Dokumentation befindet. Das ist das Wichtigste.

Grigory Petrov: Hier betreten wir sehr wackeligen Boden. Wenn wir Pech hätten und anfangen würden, das moderne Frontend irgendwie ernsthaft zu studieren, wäre es etwa zehnmal schwieriger als das Backend in Python. Ein unerfahrener Entwickler muss seinen Fokus einschränken, damit er mit dem Erlernen von HTML beginnen kann, sich aber nicht in all diesen Divs, Spans, Floats und der Art und Weise verlieren, wie alles ausgerichtet und ausgerichtet ist.

Alexey Shtyrnyaev: Benötigen Sie einen grundlegenden Bootstrap-Kurs. Und die Grundlagen von HTML.

Im ersten Jahr sollten Sie sich nicht mit JS-Frameworks befassen (wenn Sie sich auf das Backend konzentrieren). Der grundlegende Bootstrap-Kurs verfügt bereits über vorgefertigte Module: Wenn Sie einen Schieberegler möchten, erstellen Sie einen Schieberegler. Wenn Sie ein schwebendes Menü wünschen, erstellen Sie ein schwebendes Menü.

Zlata Obukhovskaya: Ich denke, dass Sie sich beim Studium des Frontends insbesondere damit befassen können, wie Webanwendungen im Allgemeinen Statik erhalten. So kann der Entwickler problemlos damit beginnen, zu lernen, wie die Architektur von Webanwendungen im Prinzip funktioniert und wie sie in der Produktion funktionieren.

Grigory Petrov: Ja, ich werde es sofort empfehlen, falls Sie Python als Backend-Entwicklungssprache und beispielsweise Django als Framework gewählt haben: Django hat eine Dokumentation im Django-Buch, es ist wirklich cool, es enthält alles, was Zlata gesagt hat, sie wirklich gut für einen Anfänger.

Alexey Shtyrnyaev: Einige Django Girls eignen sich auch für einen schnellen Einstieg, wenn Ihr Ziel darin besteht, Django zu lernen. Dies ist ein Tutorial, in dem Sie an einem Tag alles durchgehen, die Grundlagen verstehen und erfahren, wozu das Framework in der Lage ist.

Valentin Dombrovsky: Zur Vorbereitung der Aufnahme des Podcasts haben wir eine Liste mit den Anforderungen eines Python-Programmierers für die Webentwicklung zusammengestellt, die zusammenfasst, was wir zuvor gesagt haben.

Was in den Grundlagen zur Webentwicklung in Python enthalten ist

  • Web-Frameworks Django, Flask, aiohttp, Tornado usw. (und wissen über die Existenz anderer Bescheid).
  • Protokolle und APIs: hauptsächlich 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 des Anwendungsbetriebs in Produktion, Tests, Unit-Tests, Autotests, Versionskontrollsystemen, Git.

Brauchen Junioren Algorithmen?

Zlata Obukhovskaya: Zunächst müssen Sie die Algorithmen nicht kennen; sie werden Ihnen nach und nach in den Sinn kommen, wenn Sie sich lange genug mit der Entwicklung befassen. Ich kenne eine Menge guter Ingenieure, die keinen guten Kurs für formale Algorithmen hatten.

Grigory Petrov: Ich möchte Öl ins Feuer gießen. Woher kommt unser Verlangen nach Algorithmen?

Wir haben derzeit keine grundlegende Ausbildung in Algorithmen, wir wissen nicht, wie man Programmierer ausbildet, wir haben keine technische Basis.

Sie versuchen dies zu tun, aber hier haben wir die Geschichte von Hogwarts: Wir können keine Schule für Zauberer gründen, solange wir keinen einzigen Zauberer haben. Was sollte also eine Universität tun, wenn sie zu ihnen kommt und fragt: „Fangen Sie an, Programmierer auszubilden“, aber sie haben keine Programmierer, weil alle bei Mail.ru, Rambler und Yandex arbeiten und sie sich dort wohl fühlen?

Die Universität schaut und sagt:
- Okay, Programmierung. Lassen Sie uns ein verwandtes Wissensgebiet finden und Spezialisten von dort einladen. Laden wir Journalisten ein, die Texte schreiben können, Elektroingenieure, die elektrische Schaltkreise bauen können, und Mathematiker, die Algorithmen verwenden können.

Am Ende stellt sich heraus, dass dies genauso praktisch ist wie das Unterrichten eines Baumeisters in Teilchenphysik, nur weil Ziegel und Zement aus Elementarteilchen bestehen.

Gleichzeitig reden sie nicht über Zement und Ziegel selbst, weil der Physiker, der einen Baumeister ausbilden will, nicht weiß, wie man Häuser baut. Als Ergebnis erhalten wir einen Bauunternehmer, der die Funktionsweise von „Zement“ perfekt beschreiben kann, ihn aber noch nie gesehen hat und nicht weiß, wie man daraus etwas macht.

Algorithmen und Datenstrukturen sind sehr gut, aber das ist ein sehr kleiner Anwendungsbereich. Sie werden beispielsweise dringend benötigt, wenn Sie eine Spiel-Engine, einen Compiler oder ein Netzwerkprotokoll schreiben.

Die meisten Programmierer lösen Geschäftsprobleme, bei denen Algorithmen und Datenstrukturen nicht benötigt werden.

Die schwierigste Mathematik dort besteht darin, zweimal zu addieren und dann zu dividieren. Es erfordert völlig andere Kenntnisse. Die Lösung geschäftlicher Probleme erfordert hauptsächlich angewandtes und nicht grundlegendes Wissen.

Für einen unerfahrenen Entwickler ist es besser, ein Geschäftsverständnis zu haben und zu wissen, wie man die erforderlichen Strukturen aus vorgefertigten Blöcken richtig und schnell zusammensetzt, wie man sie debuggt, wie man sicherstellt, dass sie nicht auseinanderfallen, und weiß, warum sie auseinanderfallen. Was passiert, wenn sich die Anforderungen ändern und das Programm beginnt, sich auf dem Fundament niederzulassen wie ein Haus nach dem Regen?
Dabei handelt es sich um praktische Dinge und ein Verständnis dafür, wie man Software schreibt. Er muss wissen, dass er zusätzlich zum Debugger über eine Reihe von Tools verfügt, die genau anzeigen, wo das Programm langsamer wird.

Valentin Dombrovsky: Mir kam dieser Vergleich in den Sinn: Das ist eine Übersetzung aus der Geschäftssprache in eine Sprache, in der man mit einem Computer kommunizieren kann. Das heißt, ein Programmierer ist eine Art spezifischer Linguist.

Grigory Petrov: Die Wirtschaft braucht einen Autor, keinen Linguisten. Der Autor muss nicht wissen, warum dieses Wort vor tausend Jahren in dieses umgewandelt wurde. Er muss in der Lage sein, diese Worte anzuwenden.

Was Sie brauchen, um Ihren ersten Job als Entwickler zu finden

Alexey Shtyrnyaev: Es gibt wahrscheinlich kein universelles Rezept, wie man Junior kocht.

Wenn Sie zu einer Firma kommen, werden Sie nicht eingestellt, weil Sie Django, JSON und ein paar Algorithmen kennen. Sie werden höchstwahrscheinlich aufgrund der Fähigkeiten eingestellt, die dieses Unternehmen hier und jetzt benötigt.

Es gibt viele Unternehmen und alle haben unterschiedliche Anforderungen. Es gibt kein so universelles Maß an Wissen, das man sich aneignen muss, um einen Lebenslauf weiter vorzubereiten und einen Job zu finden.

Grigory Petrov: Als wir bei VoxImplant mehrere Ingenieure suchten, formulierte unser technischer Leiter die Grundanforderung wie folgt: Ein Mensch muss in der Lage sein, Probleme zu lösen. Es ist klar, dass ein Junior dies nicht immer effektiv, nicht optimal und nicht immer richtig machen wird, aber im Idealfall gibt man einem Menschen eine Aufgabe, er strengt sich an und löst sie. Dies ist die Fähigkeit, nach der Arbeitgeber in erster Linie suchen.

Zlata Obukhovskaya: Menschen, die Arbeit aus anderen Bereichen suchen, haben aus betriebswirtschaftlicher Sicht einen gewissen Vorteil, weil sie bereits einen Weg zurückgelegt haben und in der Lage sind, Probleme schnell zu lösen. Das sind Soft Skills, ich würde es sogar Arbeitskultur nennen. Oftmals haben Hochschulabsolventen diese Arbeitskultur noch nicht entwickelt.

Aber ich würde trotzdem gerne versuchen, Anfängern eine Art Rezept zu geben.

Erste Schritte für einen unerfahrenen Entwickler

Zlata Obukhovskaya: Erstens handelt es sich immer noch um eine Art eigenes Projekt, da Sie etwas in Ihren Lebenslauf schreiben und ein minimales Portfolio vorlegen müssen. Es ist cooler, wenn diese Projekte nicht für Sie selbst gemacht werden, sondern als freiberufliches Projekt – für jemanden.

Nach den ersten Projekten können Sie bereits einen Lebenslauf erstellen und diesen an alle Unternehmen senden, in denen es Juni-Stellen gibt. Interviews geben Aufschluss darüber, was Unternehmen brauchen. Früher oder später wird Sie jemand einstellen, zumindest in einem kleinen Unternehmen. Anschließend bietet Ihnen dieses Praktikum die Möglichkeit, in ein größeres und interessanteres Unternehmen einzusteigen.

Valentin Dombrovsky: Übrigens bereiten wir in unseren Kursen die Studierenden darauf vor, innerhalb von 10 Wochen nach der Ausbildung ein eigenes Projekt zu realisieren. Darüber hinaus schulen wir Teamentwicklungskompetenzen. Das sind genau die Soft Skills, über die Zlata gesprochen hat.

Alexey Shtyrnyaev: Aus Erfahrung kann ich sagen, dass die Suche nach dem ersten Job sehr lange dauern kann. Wenn Sie nach einem oder zwei Monaten suchen, ist das normal. Wenn Sie Ihren Lebenslauf bei allen Unternehmen einreichen, zu Vorstellungsgesprächen gehen, werden Sie im dritten Monat bestimmt etwas finden.

Valentin Dombrovsky: Sie können eigene Projekte erstellen oder einfache freiberufliche Projekte übernehmen und gleichzeitig Ihren Lebenslauf versenden.

Welche Perspektiven hat ein Python-Entwickler?

Zlata Obukhovskaya: Ein Python-Entwickler kann überall hingehen. Sie können in den Test einsteigen und sich zum Senior Architect weiterentwickeln. Oder sogar ins Management. Es gibt verschiedene Arten von technischen Managern, und Sie können bis zum Top-Management aufsteigen. Sie können sich in den Bereichen Data Science und DevOps weiterentwickeln, in automatisierte Tests oder maschinelles Lernen einsteigen.

Valentin Dombrovsky: Generell gibt es viele Optionen und Möglichkeiten, auch in unseren Kursen. Für den Einstieg sind keine großen Kenntnisse erforderlich, es empfiehlt sich jedoch, anschließend ein größeres Spektrum abzudecken, denn je mehr man kann, desto besser für einen.

***

Dies ist nur ein Teil der Veröffentlichung Python Junior. Die Vollversion der Folge ist verfügbar zu hören.

Oder schauen Sie sogar:

Video ansehen

Podcast-RSS

Vielen Dank fürs Lesen, Zuhören oder Zuschauen.

Source: habr.com

Kommentar hinzufügen