We hebben een beknopt transcript samengesteld van de belangrijkste punten uit de Python Junior Podcast, waarin we hebben besproken waar je als beginnende Python-ontwikkelaar moet beginnen en waar je naartoe moet. We hebben de laatste tijd veel content voor de midden- en senioren gehad, maar deze release is absoluut voor de junioren.

Hoofdonderwerpen:
- Welke kennis heeft een beginnende programmeur nodig om te beginnen?
webontwikkeling? - Wat verwachten werkgevers van ontwikkelaars?
- Wat moet je doen om een baan te vinden zonder ervaring?
- Hoe kan een Python-ontwikkelaar groeien?
Python Junior Podcast is een programmeerpodcast voor iedereen die Python beter wil leren begrijpen. De uitzendingen worden gepresenteerd door evangelisten uit de gemeenschap. en cursusdocenten .
Het gesprek ging over:
- Valentin Dombrovsky,medeoprichter van MoscowPython
- Zlata Obukhovskaja, NVIDIA-teamleider
- Grigori Petrov, MoskouPython Evangelist
- Aleksej Sjtyrnjajev, ontwikkelaar bij FinEx, docent van Learn-cursussen
Python
Waarom Python goed is voor webontwikkeling
Valentin Dombrovsky: Waarom is Python geschikt voor webontwikkeling? Waarom bijvoorbeeld niet PHP of JavaScript?
Grigori Petrov: Nou ja, er is eigenlijk niet zoveel keus. Ondanks het feit dat het op het moderne web mogelijk is om een single page application of progressieve webapplicatie te bouwen praktisch zonder backend (alleen met frontend-technologieën, in JavaScript), is het nog steeds te ingewikkeld, slecht geïndexeerd en vereist het coole ontwikkelaars.
Als we een website of een dienst willen maken, gebruiken we een gecombineerde aanpak: we hebben een backend die de logica implementeert en webpagina's creëert, en een frontend die deze webpagina's in de browser tekent. En als we dat allemaal snel op één plek moeten verzamelen, dan is er niet veel keus.
Laten we eens kijken naar de mogelijke opties.
- C#. Microsoft is echt geweldig. Zij hebben .NET Core ontwikkeld en promoten het op alle mogelijke manieren. Maar allereerst is dit een nieuwe cross-platform technologie, en nog niet alles verloopt soepel. Ten tweede is het erg duur en zijn er weinig C#-ontwikkelaars, simpelweg omdat het niet populair is.
- Java. Het is ingewikkeld. Het maken van een normale website in Java bestaat niet uit 10 regels code, zoals in Python. Het is een hoop code en frameworks en je moet de details van het opzetten van Java-servers kennen. Over het algemeen was het niets anders dan pijn en lijden.
- PHP. In de nieuwste versies is het geweldig. Ik durf zelfs te zeggen: PHP 7.2 is niet slechter dan Python. Maar je kunt niet zomaar PHP 7.2 gebruiken. Als een doorsnee, niet-topontwikkelaar een website in PHP maakt, zal hij niet alleen in 7.2 schrijven: hij zal nog steeds wat leerboeken en tutorials moeten lezen, er is overal veel legacy-code en dat is niet erg goed.
- JavaScript en Node.js. Het is geweldig en heel modern om één taal te hebben aan zowel de frontend als de backend. Gewoon niet erg stabiel. Node.js is geweldig, maar het is lastig om het in productie te implementeren zonder dat het crasht en betrouwbaar werkt. En als we hoogwaardige JavaScript-code willen schrijven, hebben we geen JavaScript nodig, maar TypeScript. Maar TypeScript is onverwacht complex en de hersenen van de gemiddelde ontwikkelaar koken ervan.
Laten we Ruby, Haskell, Erlang en andere niche-dingen overslaan en we houden over... Python. Een taal met een consistente syntaxis, een uniforme standaardbibliotheek, de beste documentatie, populaire lichtgewicht frameworks en de enorm populaire Django-harvester.
Het blijkt dat, ondanks de ruimere keuze, als we gewone ontwikkelaars hebben (geen topontwikkelaars), als we een gewoon bedrijf zijn dat gewone websites wil maken, als we geen ontwikkelingsafdeling hebben voor 50 mensen, dan kiezen we voor Python.
Welke kennis is nodig om het beroep te kunnen uitoefenen?
Zlata Obukhovskaja: Ik geloof dat je één framework goed moet kennen, en moet weten welke andere frameworks er zijn en wanneer ze worden gebruikt. Waar is Tornado, waar is Django, waar is Flask, waar is aiohttp, enzovoort.
Het is nuttig om te weten dat er zoiets bestaat als protocollen. Vooral kennis van het http-protocol is essentieel bij het bouwen van webapplicaties.
Je moet ook op zijn minst een globaal idee hebben van hoe de frontend is gestructureerd in webprojecten: wat HTML, CSS en JS zijn.
Aleksej Sjtyrnjajev: En weet waar de documentatie is. Dit is het allerbelangrijkste.
Grigori Petrov: Hier begeven we ons op zeer wankele grond. Als we pech hebben en we de moderne frontend serieus gaan bestuderen, zal dit ongeveer 10 keer moeilijker zijn dan de backend in Python. Een beginnende ontwikkelaar moet zijn focus beperken, zodat hij HTML kan leren zonder verstrikt te raken in al die divs, spans, floats en hoe alles is uitgelijnd en gebouwd.
Aleksej Sjtyrnjajev: Ik heb een basiscursus Bootstrap nodig. En de basisprincipes van HTML.
In het eerste jaar moet je je nog niet verdiepen in JS-frameworks (als je je richt op de backend). De basiscursus Bootstrap bevat al kant-en-klare modules: als je een slider wilt, maak dan een slider; Als je een zwevend menu wilt, maak dan een zwevend menu.
Zlata Obukhovskaja: Ik denk dat je door de frontend te bestuderen, je vooral kunt verdiepen in de manier waarop statische gegevens over het algemeen aan webapplicaties worden toegekend. Op deze manier kan de ontwikkelaar soepel overgaan tot het leren hoe webapplicatiearchitectuur in principe werkt en hoe deze in productie wordt genomen.
Grigori Petrov: Ja, ik zou het meteen aanraden als je Python als je backend-ontwikkeltaal kiest en bijvoorbeeld Django als je framework: Django heeft documentatie in het Django-boek, dat is echt cool, het heeft alles wat Zlata zei, het is echt goed voor een beginner.
Aleksej Sjtyrnjajev: Een andere goede plek om snel te beginnen is Django Girls, als je Django wilt leren. Dit is een tutorial waarin je in één dag de basisprincipes doorneemt en leert wat het framework allemaal kan.
Valentin Dombrovsky: Ter voorbereiding op de opname van de podcast hebben we een lijst samengesteld met de benodigdheden van een Python-programmeur voor webontwikkeling. Deze lijst vat samen wat we eerder hebben besproken.
Wat is inbegrepen in de basisprincipes voor webontwikkeling in Python
- Webframeworks: Django, Flask, aiohttp, Tornado, etc. (en weet dat er nog andere bestaan).
- Protocollen en API's: voornamelijk http, JSON-RPC, protocolbuffers, gRPC.
- ORM en migraties, relationele databases, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Basisbeginselen van HTML, CSS, Bootstrap, JS-frameworks en JQuery.
- Principes van de werking van applicaties in productie, testen, unit tests, autotests, versiebeheersystemen en Git.
Heeft een junior algoritmes nodig?
Zlata Obukhovskaja: In eerste instantie hoeft u de algoritmen niet te kennen; Als je er maar lang genoeg mee doorgaat, zullen ze geleidelijk in je hoofd verschijnen. Ik ken veel goede ingenieurs die geen goede formele opleiding in algoritmen hebben gevolgd.
Grigori Petrov: Ik wil olie op het vuur gooien. Waar komt onze aantrekkingskracht tot algoritmes vandaan?
Momenteel hebben we geen fundamentele opleiding in algoritmen, we weten niet hoe we programmeurs moeten opleiden en we hebben geen technische basis.
Ze proberen dat wel, maar kijk eens naar de geschiedenis van Zweinstein: we kunnen geen school voor tovenaars oprichten totdat we ook maar één tovenaar hebben. Dus wat moet een universiteit doen als mensen erheen komen en vragen: "Begin met het opleiden van programmeurs", maar ze hebben geen programmeurs omdat iedereen bij Mail.ru, Rambler en Yandex werkt en het daar goed gaat?
Op de universiteit kijken ze en zeggen:
- Oké, programmeren. Laten we een gerelateerd kennisgebied zoeken en daar specialisten uit uitnodigen. Laten we journalisten uitnodigen die teksten kunnen schrijven, elektrotechnici die elektrische circuits kunnen maken en wiskundigen die met algoritmes kunnen werken.
Uiteindelijk blijkt dit ongeveer net zo effectief te zijn als een bouwvakker deeltjesfysica te leren, alleen al omdat bakstenen en cement uit elementaire deeltjes bestaan.
Tegelijkertijd praten ze niet over het cement en de stenen zelf, omdat de natuurkundige die de bouwer probeert op te leiden, niet weet hoe hij huizen moet bouwen. Het resultaat is een bouwer die perfect kan uitleggen hoe ‘cement werkt’, maar die het zelf nog nooit heeft gezien en niet weet hoe hij er iets van moet maken.
Algoritmes en datastructuren zijn erg goed, maar het toepassingsgebied is erg klein. Ze zijn bijvoorbeeld dringend nodig als je een game-engine, een compiler of een netwerkprotocol schrijft.
De meeste programmeurs lossen bedrijfsproblemen op waarvoor geen algoritmes en datastructuren nodig zijn.
De moeilijkste wiskunde is twee keer optellen en dan delen. Daar is een heel andere kennis voor nodig. Om bedrijfsproblemen op te lossen, is vooral toegepaste kennis nodig, en geen fundamentele.
Het is beter voor een beginnende ontwikkelaar om een idee te hebben van de bedrijfsvoering en hoe hij de benodigde structuren correct en snel kan samenstellen uit kant-en-klare blokken, hoe hij ze kan debuggen, hoe hij ervoor kan zorgen dat ze niet uit elkaar vallen, om te weten waarom ze uit elkaar vallen, wat er gebeurt als de eisen veranderen en het programma begint "te settelen op de fundering", zoals een huis na regen.
Dit zijn praktische zaken en een begrip van hoe je software schrijft. Hij moet weten dat hij naast de debugger ook over een aantal hulpmiddelen beschikt waarmee hij kan zien waar het programma precies trager wordt.
Valentin Dombrovsky: De volgende vergelijking schoot me te binnen: het is een vertaling van de taal van het zakenleven naar de taal waarin je met een computer kunt communiceren. Dat wil zeggen dat een programmeur een soort specifieke taalkundige is.
Grigori Petrov: Bedrijven hebben een schrijver nodig, geen taalkundige. Een schrijver hoeft niet te weten waarom duizend jaar geleden dit woord in dat woord werd veranderd. Hij moet deze woorden kunnen gebruiken.
Wat je nodig hebt om je eerste baan als ontwikkelaar te vinden
Aleksej Sjtyrnjajev: Er bestaat waarschijnlijk geen universeel recept voor het voorbereiden van een junior.
Als je bij een bedrijf komt, nemen ze je niet aan omdat je Django, JSON en een paar algoritmes kent. De kans is groot dat u wordt aangenomen op basis van de vaardigheden die dit bedrijf op dit moment nodig heeft.
Er zijn veel bedrijven en ze hebben allemaal verschillende behoeften. Er is geen universele hoeveelheid kennis die je moet vergaren om een cv op te stellen en op zoek te gaan naar een baan.
Grigori Petrov: Toen wij bij VoxImplant op zoek waren naar een aantal junior medewerkers, formuleerde onze technisch directeur de basisvereiste als volgt: iemand moet problemen kunnen oplossen. Het is duidelijk dat een junior dit niet altijd effectief, niet op de beste manier en niet altijd correct zal doen, maar in het ideale geval geef je de persoon een taak, spant hij zich in en lost het op. Dit is de vaardigheid waar werkgevers vooral naar op zoek zijn.
Zlata Obukhovskaja: Mensen die op zoek zijn naar werk in andere vakgebieden hebben vanuit zakelijk oogpunt een voordeel, omdat ze al een bepaalde weg hebben afgelegd en problemen snel kunnen oplossen. Dat zijn zachte vaardigheden, ik zou het zelfs een werkkultuur noemen. Vaak is deze werkcultuur nog niet aanwezig bij universitair afgestudeerden.
Maar ik wil toch graag een recept geven aan beginners.
Eerste stappen voor een beginnende ontwikkelaar
Zlata Obukhovskaja: Ten eerste is het nog steeds een soort van eigen project, want je moet iets op je cv schrijven en een minimale portfolio laten zien. Het is leuker als je deze projecten niet voor jezelf doet, maar op freelance basis – voor iemand anders.
Na de eerste projecten kun je alvast een cv maken en deze naar alle bedrijven sturen die juniorposities beschikbaar hebben. Door middel van interviews krijgt u inzicht in wat bedrijven nodig hebben. Vroeg of laat zal iemand je aannemen, tenminste in een klein bedrijf. Deze werkervaring geeft je vervolgens de kans om bij een groter en interessanter bedrijf aan de slag te gaan.
Valentin Dombrovsky: Overigens bereiden wij onze studenten in de tien trainingsweken voor om binnen een eigen project te beschikken. Bovendien trainen wij teamontwikkelingsvaardigheden. Dit zijn precies de soft skills waar Zlata het over had.
Aleksej Sjtyrnjajev: Uit ervaring kan ik zeggen dat het heel lang kan duren voordat je je eerste baan vindt. Als je een maand of twee op zoek bent, is dat normaal. Als je je cv naar alle bedrijven stuurt en op sollicitatiegesprekken gaat, zul je in de derde maand zeker iets vinden.
Valentin Dombrovsky: U kunt uw eigen projecten maken of eenvoudige freelance opdrachten uitvoeren en tegelijkertijd uw cv versturen.
Wat zijn de vooruitzichten voor een Python-ontwikkelaar?
Zlata Obukhovskaja: Een Python-ontwikkelaar kan overal komen. Je kunt aan de slag gaan met testen en je verder ontwikkelen tot senior architect. Of zelfs in het management. Technische managers zijn er in verschillende soorten en maten, en het is mogelijk om door te groeien tot topmanagement. Je kunt je ontwikkelen in data science, DevOps, geautomatiseerd testen of machine learning.
Valentin Dombrovsky: Kortom, er zijn veel mogelijkheden en kansen, waaronder ook onze cursussen. In het begin hoef je niet veel kennis te hebben, maar het is een goed idee om later een breder scala aan kennis te bestrijken. Want hoe meer je kunt, hoe beter.
***
Dit is slechts een deel van de release. . De volledige versie van de aflevering is te vinden .
Of kijk eens:

Bedankt voor het lezen, luisteren en kijken.
Bron: www.habr.com
