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

Wir haben eine kurze Zusammenfassung mit den wichtigsten Gedanken aus dem Python Junior Podcast erstellt: Darin haben wir diskutiert, wo ein angehender Python-Entwickler anfangen sollte und wohin er sich orientieren kann. In letzter Zeit haben wir viele Inhalte für Mid-Level und Senior Entwickler, aber diese Episode ist definitiv für Einsteiger gedacht.

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

Die 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 eine Stelle ohne Erfahrung zu finden?
  • Wie kann sich ein Python-Entwickler weiterentwickeln?

Der Python Junior Podcast ist ein Podcast über Programmierung für diejenigen, die Python besser verstehen möchten. Die Sendungen werden von den Evangelisten der Community MoscowPython und Dozenten der Kurse Learn Python.

moderiert.

  • In der Diskussion waren:Valentin Dombrowski,
  • Mitgründer von MoscowPython, Zlata Obuchowskaja,
  • Teamleiter bei NVIDIA, Grigori Petrow,
  • Evangelist bei MoscowPython, Alexej Shtyrnjaew,
    Python

Entwickler bei FinEx, Dozent für die Kurse Learn,

Warum ist Python gut für die Webentwicklung? Valentin Dombrowski: Warum ist gerade Python für die Webentwicklung geeignet? Warum nicht PHP oder JavaScript beispielsweise?

Grigori Petrow: Die Auswahl ist tatsächlich begrenzt. Obwohl man im modernen Web praktisch ohne Backend auskommt – nur mit Frontend-Technologien wie JavaScript – um eine Single Page Application oder eine Progressive Web Application zu erstellen, ist das dennoch alles zu kompliziert, schlecht indizierbar und erfordert hochqualifizierte Entwickler.

Wenn wir eine Website oder einen Service erstellen wollen, verwenden wir einen kombinierten Ansatz: Ein Backend übernimmt die Logik und erzeugt die Webseiten, während ein Frontend diese Webseiten im Browser darstellt. Wenn wir das alles schnell zusammenbasteln müssen, bleibt uns wenig Auswahl.

Schauen wir uns die möglichen Optionen an.

  • C#. Microsoft hat wirklich gute Arbeit geleistet, sie haben .NET Core entwickelt und fördern es aktiv. Aber erstens ist das eine neue plattformübergreifende Technologie, und es gibt noch einige Probleme. Zweitens ist es wirklich teuer, da es nicht viele C#-Entwickler gibt – einfach weil die Sprache wenig verbreitet ist.
  • Java. Das ist kompliziert. Eine normale Website in Java zu erstellen, erfordert nicht nur 10 Zeilen Code wie in Python. Es ist viel mehr Code, man benötigt Frameworks und muss die Besonderheiten der Konfiguration von Java-Servern kennen. Insgesamt ist das nur Schmerz und Leid.
  • PHP. In den neuesten Versionen ist es großartig. Ich würde sogar so weit gehen zu sagen: PHP 7.2 ist nicht schlechter als Python. Aber man kann PHP 7.2 nicht einfach so nutzen. Wenn ein durchschnittlicher, nicht ganz so erfahrener Entwickler eine Website in PHP erstellt, wird er nicht nur in 7.2 schreiben: man muss immer wieder irgendwelche Lehrbücher und Tutorials lesen, überall gibt es viel Legacy-Code, und das ist nicht besonders vorteilhaft.
  • JavaScript und Node.js. Es ist großartig und sehr modern, wenn eine Sprache sowohl im Frontend als auch im Backend verwendet wird. Allerdings ist es nicht besonders stabil. Node.js ist eine gute Lösung, aber es ist problematisch, sie produktiv so bereitzustellen, dass sie nicht abstürzt und zuverlässig funktioniert. Zudem, wenn wir qualitativ hochwertigen Code in JavaScript schreiben wollen, brauchen wir nicht JavaScript, sondern TypeScript. Und TypeScript ist überraschend komplex, beim Anblick wird so manchem Entwickler schwindelig.

Lassen wir Ruby, Haskell, Erlang und andere Nischenlösungen beiseite, und wir haben… Python. Eine Sprache mit einem konsistenten Syntax, einer einheitlichen Standardbibliothek, bester Dokumentation, populären leichten Frameworks und dem megabeliebten Django-Framework.

Es stellt sich heraus, dass wir, trotz der breiten Auswahl, wenn wir gewöhnliche, nicht erstklassige Entwickler haben, ein gewöhnliches Unternehmen sind, das gewöhnliche Webseiten erstellen möchte, und wir keine Entwicklungsabteilung mit 50 Personen haben, Python verwenden.

Welche Kenntnisse sind erforderlich, um in den Beruf einzusteigen?

Zlata Obuchovskaya: Ich denke, man sollte ein Framework gut kennen und wissen, welche es gibt und wann sie verwendet werden. Wo Tornado, wo Django, wo Flask, wo aiohttp und so weiter.
Es ist auch nützlich zu wissen, dass es solche Dinge wie Protokolle gibt. Insbesondere ist das Wissen über das HTTP-Protokoll zentral für den Aufbau von Webanwendungen.

Man sollte sich auch zumindest grob vorstellen können, wie das Frontend in Webprojekten strukturiert ist: was HTML, CSS, JS ist.

Alexey Shternyaev: Und man sollte wissen, wo die Dokumentation zu finden ist. Das ist das Wichtigste.

Grigori Petrow: Hier betreten wir sehr unsicheres Terrain. Wenn wir Pech haben und ernsthaft mit dem modernen Frontend-Studium beginnen, wird es ungefähr zehnmal komplizierter sein als das Backend mit Python. Einem Anfänger-Entwickler sollte der Fokus so begrenzt werden, dass er mit HTML anfängt, ohne in all diese divs, spans, floats und wie alles ausgerichtet und strukturiert wird, zu versinken.

Alexey Shternyaev: Ein grundlegender Kurs zu Bootstrap und den Grundlagen von HTML wird benötigt.

Im ersten Jahr sollte man sich nicht zu tief in JS-Frameworks vertiefen (wenn der Fokus auf dem Backend liegt). Im Basiskurs zu Bootstrap gibt es bereits fertige Module: möchtest du einen Slider — mach einen Slider, möchtest du ein schwebendes Menü — mach ein schwebendes Menü.

Zlata Obuchovskaya: Ich denke, dass man sich beim Lernen des Frontends auch mit der Frage auseinandersetzen sollte, wie statische Inhalte in Webanwendungen bereitgestellt werden. So kommt der Entwickler schrittweise dazu, die Architektur von Webanwendungen zu verstehen und wie sie im Production-Betrieb funktionieren.

Grigori Petrow: Ja, ich empfehle es sofort, falls du Python als Backend-Programmiersprache und Django als Framework gewählt hast: Django hat eine Dokumentation im Django Buch, die wirklich großartig ist. Sie behandelt alles, was Zlata erwähnt hat, und ist wirklich gut für Anfänger.

Alexey Shternyaev: Für einen schnellen Einstieg eignet sich auch der Django Girls-Kurs, wenn das Ziel darin besteht, genau Django zu lernen. Das ist ein Tutorial, bei dem man an einem Tag die Grundlagen verstehen kann und sieht, wozu das Framework fähig ist.

Warum ist Python gut für die Webentwicklung? Im Vorfeld der Podcast-Aufzeichnung haben wir eine Liste der notwendigen Tools für einen Python-Entwickler im Bereich Webentwicklung erstellt, mit der wir das zuvor Gesagte zusammenfassen.

Was gehört zur Grundlage der Webentwicklung mit Python?

  • Web-Frameworks wie Django, Flask, aiohttp, Tornado usw. (und Wissen über weitere Alternativen).
  • Protokolle und APIs: allen voran HTTP, JSON-RPC, Protocol Buffers, gRPC.
  • ORM und Migrationen, relationale Datenbanken, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Grundlagen von HTML, CSS, Bootstrap und außerdem JS-Frameworks und jQuery.
  • Die Prinzipien der Arbeit von Anwendungen in der Produktion, Testing, Unit-Tests, automatische Tests, Versionskontrollsysteme, git.

Braucht ein Junior-Entwickler Algorithmen?

Zlata Obuchovskaya: Zunächst ist es nicht notwendig, Algorithmen zu kennen; sie kommen im Laufe der Zeit ganz von alleine, wenn man sich lange genug mit der Entwicklung beschäftigt. Ich kenne viele gute Ingenieure, die keinen umfassenden Kurs in Algorithmen hatten.

Grigori Petrow: Ich möchte das Gespräch anheizen. Woher kommt eigentlich unsere Neigung zu Algorithmen?

Aktuell haben wir keine fundierte Ausbildung in Algorithmen, wir sind nicht in der Lage, Programmierer zu lehren, und es fehlt an technischer Basis.

Man versucht es, aber hier haben wir die Hogwarts-Geschichte: Wir können keine Zauberschule aufbauen, solange wir keinen einzigen Zauberer haben. Was soll also eine Universität tun, zu der Leute kommen und sagen: „Fangen Sie an, Programmierer auszubilden“, wenn es keine Programmierer gibt, weil alle bei Mail.ru, Rambler und Yandex arbeiten und es ihnen dort gut geht?

An der Universität schaut man und sagt:
— Okay, Programmierung. Lassen Sie uns ein verwandtes Wissensgebiet finden und Spezialisten von dort einladen. Lassen Sie uns Journalisten einladen, die Texte schreiben können, Elektrotechniker, die elektrische Schaltpläne erstellen können, und Mathematiker, die sich mit Algorithmen auskennen.

Letztendlich ist das genauso sinnvoll, wie einem Bauarbeiter Physik der Elementarteilchen beizubringen, nur weil Ziegel und Zement aus Elementarteilchen bestehen.

Dabei wird über den Zement und die Ziegel nicht gesprochen, weil der Physiker, der versucht, den Bauarbeiter zu unterrichten, nicht weiß, wie man Häuser baut. Am Ende haben wir einen Bauarbeiter, der hervorragend erklären kann, wie „Zement funktioniert“, ihn aber noch nie gesehen hat und nichts damit anfangen kann.

Algorithmen und Datenstrukturen sind wichtig, aber sie decken nur einen kleinen Anwendungsbereich ab. Sie sind besonders erforderlich, wenn Sie beispielsweise eine Spiel-Engine, einen Compiler oder ein Netzwerkprotokoll entwickeln.

Die meisten Programmierer beschäftigen sich mit geschäftlichen Herausforderungen, bei denen Algorithmen und Datenstrukturen nicht notwendig sind.

In diesen Fällen besteht die größte Mathematik darin, zweimal zu addieren und dann zu dividieren. Hier sind ganz andere Kenntnisse erforderlich. Für geschäftliche Aufgaben sind vor allem anwendungsorientierte und nicht fundamentale Kenntnisse gefragt.

Ein frischgebackener Entwickler sollte ein Grundverständnis für das Geschäft haben und wissen, wie man aus vordefinierten Bausteinen schnell die richtigen Konstruktionen zusammensetzt, wie man diese debuggt und sicherstellt, dass sie stabil sind. Er sollte verstehen, warum sie möglicherweise kaputtgehen, was passiert, wenn sich die Anforderungen ändern und die Software 'auf dem Fundament einsackt', ähnlich wie ein Haus nach dem Regen.
Diese praktischen Fähigkeiten und das Verständnis, wie Software geschrieben wird, sind entscheidend. Er sollte wissen, dass ihm neben dem Debugger auch ein Set von Tools zur Verfügung steht, das zeigt, wo genau das Programm langsamer wird.

Warum ist Python gut für die Webentwicklung? Ein Vergleich, der mir in den Sinn kommt: es ist wie eine Übersetzung von der Sprache der Wirtschaft in eine Sprache, die mit Computern kommuniziert. Ein Programmierer ist also eine Art spezieller Linguist.

Grigori Petrow: Ein Unternehmen braucht einen Schriftsteller, keinen Linguisten. Ein Schriftsteller muss nicht wissen, warum dieses Wort vor tausend Jahren so transformiert wurde. Er muss in der Lage sein, diese Wörter richtig anzuwenden.

Was benötigt man, um den ersten Job als Entwickler zu finden?

Alexey Shternyaev: Es gibt wahrscheinlich kein universelles Rezept, nach dem man einen Junior vorbereiten sollte.

Wenn Sie in ein Unternehmen kommen, werden Sie nicht für Ihr Wissen in Django, JSON und ein wenig Algorithmik eingestellt. Wahrscheinlicher ist, dass Sie aufgrund der Fähigkeiten eingestellt werden, die momentan in diesem Unternehmen benötigt werden.

Es gibt viele Unternehmen, und jedes hat unterschiedliche Anforderungen. Es gibt kein universelles Wissen, das man erwerben muss, um ein Lebenslauf vorzubereiten und sich um eine Stelle zu bewerben.

Grigori Petrow: Als wir bei VoxImplant nach mehreren Junior-Entwicklern suchten, formulierte unser technischer Leiter die grundlegende Anforderung so: Eine Person sollte in der Lage sein, Aufgaben zu lösen. Klar ist, dass ein Junior dies nicht immer effektiv, nicht immer auf die beste Weise und nicht immer richtig tun wird. Idealerweise gibst du der Person eine Aufgabe, sie strengt sich an und löst sie. Das ist eine Fähigkeit, nach der Arbeitgeber in erster Linie suchen.

Zlata Obuchovskaya: Menschen, die aus anderen Bereichen einen Job suchen, haben aus geschäftlicher Sicht einen gewissen Vorteil, weil sie bereits einen gewissen Weg zurückgelegt haben und Aufgaben schnell lösen können. Das sind Soft Skills, die ich sogar als Arbeitsethik bezeichnen würde. Oft haben Hochschulabsolventen diese Arbeitsethik noch nicht entwickelt.

Ich möchte jedoch versuchen, eine Art Rezept für Berufseinsteiger anzubieten.

Die ersten Schritte für einen angehenden Entwickler

Zlata Obuchovskaya: Das Erste ist ein eigenes Projekt, denn im Lebenslauf muss man etwas schreiben, um ein minimales Portfolio zu zeigen. Besser ist es, wenn diese Projekte nicht nur für sich selbst, sondern für jemanden im Freelance-Bereich gemacht wurden.

Nach den ersten Projekten kann man bereits ein Resume erstellen und es an alle Unternehmen senden, die Junior-Positionen anbieten. Vorstellungsgespräche geben Einblicke in die Anforderungen der Firmen. Früher oder später wird Sie jemand einstellen, auch wenn es nur ein kleines Unternehmen ist. Diese Berufserfahrung wird Ihnen später helfen, in ein größeres und interessanteres Unternehmen zu gelangen.

Warum ist Python gut für die Webentwicklung? Übrigens bereiten wir in unseren Kursen die Schüler darauf vor, in 10 Wochen einen eigenen Projekt zu entwickeln. Zudem trainieren wir die Fähigkeit zur Teamarbeit. Das sind genau die Soft Skills, über die Zlata gesprochen hat.

Alexey Shternyaev: Aus Erfahrung kann ich sagen, dass die erste Jobssuche sehr lange dauern kann. Wenn Sie ein oder zwei Monate suchen, ist das normal. Wenn Sie Ihre Bewerbung an alle Unternehmen senden und Vorstellungsgespräche führen, werden Sie im dritten Monat definitiv etwas finden.

Warum ist Python gut für die Webentwicklung? Sie können an Ihren eigenen Projekten arbeiten oder einfache Projekte im Freelancing annehmen und parallel dazu Bewerbungen versenden.

Welche Perspektiven hat ein Python-Entwickler?

Zlata Obuchovskaya: Ein Python-Entwickler kann in jede Richtung gehen. Man kann in die Tests gehen, sich bis zum Senior-Architekten weiterentwickeln oder sogar in das Management wechseln. Technische Manager sind vielfältig, und es ist möglich, bis zum Top-Management aufzusteigen. Man kann sich auch in Richtung Data Science, DevOps, Automatisierungstests oder Machine Learning entwickeln.

Warum ist Python gut für die Webentwicklung? Die Möglichkeiten sind zahllos, einschließlich unserer Kurse. Zu Beginn sind nicht viele Kenntnisse erforderlich, aber es ist ratsam, später ein breiteres Spektrum abzudecken. Denn je mehr Sie können, desto besser ist es für Sie.

***

Dies ist nur ein Ausschnitt der Episode, Python Junior. Die vollständige Episode können Sie anhören.

Oder sogar ansehen:

Video abspielen

RSS des Podcasts

Danke, dass Sie gelesen, gehört oder angesehen haben.

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster