Wir haben eine verkürzte Entschlüsselung mit den Hauptgedanken von Python Junior Podcast durchgeführt: Darin haben wir besprochen, wo wir anfangen sollen und wohin wir zu einem neuen Python-Entwickler gehen sollen. In letzter Zeit haben wir viele Inhalte für Mittelstufe und Senioren, aber diese Ausgabe ist definitiv für die Jones.
Hauptthemen:- Welche Kenntnisse muss ein Programmieranfänger haben?
Webentwicklung? - Was erwarten Arbeitgeber von Entwicklern?
- Was tun, um Arbeit ohne Erfahrung zu finden?
- Wie kann sich ein Python-Entwickler entwickeln?
Python Junior Podcast ist ein Programmier-Podcast für diejenigen, die Python besser verstehen möchten. Die Sendungen werden von Evangelisten der MoscowPython- Community und Lehrern des Learn Python- Kurses geleitet.Das Gespräch beinhaltete:
- Valentin Dombrovsky, Mitbegründer von MoscowPython
- Zlata Obukhovskaya, Teamleiterin NVIDIA
- Grigory Petrov, Evangelist von MoscowPython
- Alexey Shtyrnyaev, Entwickler bei FinEx, Lehrer für Lernkurse
Python
Warum Python gut für die Webentwicklung ist
Valentin Dombrowski: Warum ist Python für die Webentwicklung geeignet? Warum nicht zum Beispiel PHP oder JavaScript?
Grigory Petrov: Es gibt also wirklich keine Wahl. Trotz der Tatsache, dass es im modernen Web praktisch ohne Backend - nur mit Front-End-Technologien in JavaScript - möglich ist, eine einzelne Seitenanwendung oder eine progressive Webanwendung zusammenzustellen, ist sie 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: Wir haben eine Art Backend, das die Logik implementiert und Webseiten erstellt, und einige Frontends zeichnen diese Webseiten in einem Browser. Und wenn wir das alles schnell auf etwas sammeln müssen, dann gibt es nicht viel Auswahl.
Schauen wir uns die möglichen Optionen an.
- C # Microsoft ist wirklich großartig, sie haben .NET Core erstellt und fördern es in jeder Hinsicht. Aber erstens ist dies eine neue plattformübergreifende Technologie, und dort läuft nicht alles reibungslos. Zweitens ist es sehr teuer, es gibt nur wenige C # -Entwickler - einfach weil es unbeliebt ist.
- Java Das ist schwer. Das Erstellen einer normalen Site in Java besteht nicht aus 10 Codezeilen, wie in Python. Dies ist viel Code, dies sind Frameworks, und Sie müssen die Besonderheiten der Einrichtung von Java-Servern kennen. Im Allgemeinen anhaltende Schmerzen und Leiden.
- PHP In neueren Versionen ist es wunderbar. Ich werde sogar folgendes sagen: PHP 7.2 ist nicht schlechter als Python. Sie können jedoch nicht nur PHP 7.2 verwenden. Wenn ein normaler Nicht-Top-Entwickler eine Site in PHP erstellt, schreibt er nicht nur in 7.2: Sie müssen noch einige Lehrbücher, Tutorials und überall eine Menge Legacy-Code lesen, und das ist nicht sehr gut.
- JavaScript und Node.js. Dies ist wunderbar und sehr modern, wenn sich eine Sprache sowohl im Frontend als auch im Backend befindet. Nur nicht sehr stabil. Node.js ist eine gute Sache, aber es ist problematisch, es in der Produktion bereitzustellen, damit es nicht herunterfällt und stabil funktioniert. Wenn wir hochwertigen JavaScript-Code schreiben möchten, benötigen wir kein JavaScript, sondern TypeScript. Aber TypeScript ist unerwartet komplex, wenn man es sieht, kocht ein gewöhnlicher Entwickler.
Lassen wir Ruby, Haskell, Erlang und andere Nischenprodukte weg, und wir haben ... Python. Eine Sprache mit konsistenter Syntax, einer einheitlichen Standardbibliothek, der besten Dokumentation, beliebten Lightweight-Frameworks und dem beliebten Django-Kombinat.
Es stellt sich heraus, dass wir trotz der größten Auswahl, wenn wir gewöhnliche, nicht Top-Entwickler haben, ein reguläres Unternehmen sind, das gewöhnliche Websites erstellen möchte, keine Entwicklungsabteilung für 50 Mitarbeiter haben, dann nehmen wir Python.
Welche Kenntnisse sind erforderlich, um in den Beruf einzusteigen?
Zlata Obukhovskaya: Ich denke, Sie müssen ein Framework gut kennen - und wissen, was sonst noch passiert und wann sie verwendet werden. Wo ist Tornado, wo ist Django, wo ist Flask, wo ist Aiohttp und so weiter.
Es ist nützlich zu wissen, dass es Protokolle gibt. Insbesondere die Kenntnis des http-Protokolls ist für die Erstellung von Webanwendungen von zentraler Bedeutung.
Dennoch müssen Sie sich zumindest ungefähr vorstellen, wie das Frontend in Webprojekten angeordnet ist: Was ist HTML, CSS, JS?
Alexey Shtyrnyaev: Und wissen, wo die Dokumentation liegt. Das ist das Wichtigste.
Grigory Petrov: Hier treten wir auf sehr instabilen Boden. Wenn wir kein Glück haben und irgendwie angefangen haben, das moderne Frontend ernsthaft zu studieren, wird es ungefähr zehnmal schwieriger sein als das Python-Backend. Ein unerfahrener Entwickler muss seinen Fokus einschränken, damit er anfängt, HTML zu lernen, aber nicht in all diese Divs, Span, Float, wie alles dort ausgerichtet und ausgerichtet ist.
Alexey Shtyrnyaev: Wir brauchen 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 Bootstrap-Grundkurs enthält bereits vorgefertigte Module: Wenn Sie einen Schieberegler möchten, erstellen Sie einen Schieberegler. Wenn Sie ein schwebendes Menü möchten, erstellen Sie ein schwebendes Menü.
Zlata Obukhovskaya: Ich denke, dass das Studium des Frontends insbesondere darauf
abzielen kann, wie statisch Webanwendungen im Allgemeinen sind. Der Entwickler lernt also reibungslos, wie die Architektur von Webanwendungen im Prinzip angeordnet ist und wie sie von der Produktion leben.
Grigory Petrov: Ja, ich werde es sofort empfehlen, falls Sie Python als Entwicklungs-Backend-Sprache und zum Beispiel Django als Framework wählen: Django hat Dokumentation im Django-Buch, es ist wirklich cool, es ist alles, was Zlata gesagt hat Sie ist wirklich gut für Anfänger.
Alexey Shtyrnyaev: Ein weiteres Django-Mädchen eignet sich für einen schnellen Start, wenn das Ziel darin besteht, Django zu lernen. Dies ist ein solches Tutorial, in dem Sie an einem Tag nach oben gehen, die Grundlagen verstehen und wissen können, wozu das Framework in der Lage ist.
Valentin Dombrovsky: Als wir uns auf die Aufnahme eines Podcasts vorbereiteten, haben wir eine Liste der Bedürfnisse eines Python-Programmierers für die Webentwicklung erstellt, die zusammenfasst, was zuvor gesagt wurde.
Was ist in der Basis für die Python-Webentwicklung enthalten?
- Web-Frameworks Django, Flask, aiohttp, Tornado usw. (und über die Existenz des Restes Bescheid wissen).
- Protokolle und APIs: hauptsächlich HTTP, JSON-RPC, Protokollpuffer, gRPC.
- ORM und Migrationen, relationale Datenbanken, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Die Grundlagen von HTML, CSS, Bootstrap sowie JS-Frameworks und JQuery.
- Die Prinzipien von Anwendungen in Produktion, Test, Unit-Tests, Autotests, Versionskontrollsystemen, Git.
Benötigt der Junior Algorithmen?
Zlata Obukhovskaya: Zuerst müssen Sie die Algorithmen nicht kennen, sie selbst erscheinen allmählich in Ihrem Kopf, wenn Sie sich lange Zeit mit der Entwicklung beschäftigen. Ich kenne eine Menge guter Ingenieure, die keinen guten formalen Kurs in Algorithmen hatten.
Grigory Petrov: Ich möchte dem Feuer Öl hinzufügen. Woher kommt also unser Verlangen nach Algorithmen?
Jetzt haben wir keine grundlegende Ausbildung in Algorithmen, wir wissen nicht, wie man Programmierer ausbildet, es gibt keine technische Basis.
Sie versuchen es, aber hier haben wir die Geschichte von Hogwarts: Wir können keine Zaubererschule machen, bis wir einen einzigen Zauberer haben. Zu was sollte die Universität kommen und fragen: "Fangen Sie an, Programmierer auszubilden", aber sie haben keine Programmierer, weil alle bei Mail.ru, Rambler und Yandex arbeiten. Sind sie dort gut?
An der Universität schauen sie und sagen:
- Ok Programmierung. Lassen Sie uns ein verwandtes Wissensgebiet finden und Spezialisten von dort einladen. Laden wir Journalisten ein, die Text schreiben können, Elektrotechniker, die wissen, wie man elektrische Schaltkreise herstellt, und Mathematiker, die wissen, wie man Algorithmen schreibt.
Infolgedessen stellt sich heraus, dass es genauso zweckmäßig ist, einem Bauunternehmer die Physik von Elementarteilchen beizubringen, nur weil Ziegel und Zement aus Elementarteilchen bestehen.
Gleichzeitig sprechen sie nicht über Zement und Ziegel selbst, weil ein Physiker, der versucht, einen Bauunternehmer auszubilden, nicht weiß, wie man ein Haus baut. Als Ergebnis erhalten wir einen Bauunternehmer, der perfekt malen kann, wie "Zement funktioniert", ihn aber nie gesehen hat und weiß, wie man etwas daraus macht.
Algorithmen und Datenstrukturen sind sehr gut, aber dies ist ein sehr kleiner Anwendungsbereich. Sie werden dringend benötigt, wenn Sie beispielsweise eine Spiel-Engine, einen Compiler oder ein Netzwerkprotokoll schreiben.
Die meisten Programmierer lösen geschäftliche Probleme, bei denen Algorithmen und Datenstrukturen nicht benötigt werden.
Die schwierigste Mathematik besteht darin, zweimal zu falten und dann zu teilen. Sie brauchen ganz andere Kenntnisse. Die Lösung von Geschäftsproblemen erfordert in erster Linie angewandtes und kein grundlegendes Wissen.
Für einen unerfahrenen Entwickler ist es besser, eine Vorstellung vom Geschäft zu haben und wie man die erforderlichen Strukturen aus vorgefertigten Blöcken korrekt und schnell zusammensetzt, wie man sie debuggt, wie man sicherstellt, dass sie nicht auseinanderfallen, weiß, warum sie auseinanderfallen, was passiert, wenn sich Anforderungen ändern und das Programm startet "Lass dich auf dem Fundament nieder", wie ein Haus nach dem Regen.
Dies sind die angewandten Dinge und das Verständnis, wie man Software schreibt. Er muss wissen, dass er zusätzlich zum Debugger eine Reihe von Tools hat, die genau zeigen, wo das Programm langsamer wird.
Valentin Dombrovsky: Dieser Vergleich ist mir eingefallen: Dies ist eine Übersetzung aus der Geschäftssprache in eine Sprache, in der Sie mit einem Computer kommunizieren können. Das heißt, der Programmierer ist eine Art spezifischer Linguist.
Grigory Petrov: Unternehmen brauchen einen Schriftsteller, keinen Linguisten. Der Schriftsteller 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 einen ersten Job als Entwickler zu finden
Alexey Shtyrnyaev: Wahrscheinlich gibt es kein universelles Rezept, für das Sie einen Junior vorbereiten müssen.
Wenn Sie zu einem Unternehmen kommen, werden Sie nicht davon überzeugt sein, dass Sie Django, JSON und einige Algorithmen kennen. Sie werden höchstwahrscheinlich für die Fähigkeiten gehalten, die dieses Unternehmen hier und jetzt benötigt.
Es gibt viele Unternehmen, und jeder hat unterschiedliche Anforderungen. Es gibt keine so universelle Menge an Wissen, die erworben werden muss, um einen Lebenslauf weiter vorzubereiten und einen Job zu finden.
Grigory Petrov: Als wir bei VoxImplant nach mehreren Jones suchten, formulierte unser technischer Direktor die Grundvoraussetzung wie folgt: Eine Person muss in der Lage sein, Probleme zu lösen. Es ist klar, dass June dies nicht immer effizient tun wird, nicht auf die beste Weise und nicht immer richtig, aber im Idealfall stellen Sie eine Aufgabe für eine Person, er spannt sie an und löst sie. Dies ist die Fähigkeit, nach der Arbeitgeber in erster Linie suchen.
Zlata Obukhovskaya: Menschen, die Arbeit suchen und aus anderen Bereichen ziehen, haben aus geschäftlicher Sicht einen gewissen Vorteil, weil sie bereits einen Weg gegangen sind und wissen, wie man Probleme schnell löst. Das sind Soft Skills, ich würde es sogar eine Arbeitskultur nennen. Oft sind Doktoranden dieser Arbeitskultur noch nicht entwickelt worden.
Aber ich würde immer noch gerne versuchen, ein Rezept für Anfänger zu geben.
Erste Schritte für einen unerfahrenen Entwickler
Zlata Obukhovskaya: Das erste ist immer noch eine Art eigenes Projekt, weil Sie etwas in den Lebenslauf schreiben und das Mindestportfolio anzeigen müssen. Es ist cooler, wenn diese Projekte nicht für sich selbst gemacht werden, sondern freiberuflich - für jemanden.
Nach den ersten Projekten ist es bereits möglich, einen Lebenslauf zu erstellen und an alle Unternehmen zu senden, bei denen es Stellen im Juni gibt. Interviews vermitteln ein Verständnis dafür, was Unternehmen brauchen. Früher oder später wird Sie jemand bringen, zumindest zu einer kleinen Firma. Anschließend bietet Ihnen diese Berufserfahrung die Möglichkeit, immer interessanter in das Unternehmen einzusteigen.
Valentin Dombrovsky: Übrigens bereiten wir die Studenten in den Kursen so vor, dass sie ihr eigenes Projekt für 10 Wochen Training haben. Außerdem trainieren wir die Fähigkeiten der Teamentwicklung. Dies sind nur die Soft Skills, über die Zlata gesprochen hat.
Alexey Shtyrnyaev: Aus Erfahrung kann ich sagen, dass Sie sehr lange nach einem ersten Job suchen können. Wenn Sie nach ein oder zwei Monaten suchen, ist das in Ordnung. Wenn Sie allen Unternehmen einen Lebenslauf vorlegen, gehen Sie zu Interviews, im dritten Monat werden Sie definitiv etwas finden.
Valentin Dombrovsky: Sie können Ihre Projekte schneiden oder einfache Projekte freiberuflich durchführen und gleichzeitig Lebensläufe versenden.
Was sind die Aussichten für einen Python-Entwickler?
Zlata Obukhovskaya: Ein Python-Entwickler kann überall hingehen. Sie können zum Testen gehen und sich zu einem leitenden Architekten weiterentwickeln. Oder sogar im Management. Technische Manager sind unterschiedlich, und Sie können zum Top-Management heranwachsen. Sie können sich in Data Science, DevOps, Autotests oder maschinellem Lernen weiterentwickeln.
Valentin Dombrovsky: Im Allgemeinen gibt es viele Möglichkeiten, auch Möglichkeiten, einschließlich unserer Kurse. Sie brauchen am Eingang nicht so viel Wissen, aber es ist ratsam, ein breiteres Spektrum abzudecken, denn je mehr Sie können, desto besser für Sie.
***.
Dies ist nur ein Teil der
Python Junior- Version. Sie können
die Vollversion der Episode
anhören .
Oder sogar sehen:
Podcast RSSDanke fürs Lesen, Zuhören oder Anschauen.