Python for the Web: mitä juniorin on tiedettävä työskennelläkseen ja kehittyäkseen

Teimme lyhyen transkription Python Junior Podcastin tärkeimmistä ajatuksista: siinä keskustelimme mistä aloittaa ja minne mennä aloittelijana Python-kehittäjänä. Viime aikoina meillä on paljon sisältöä keski- ja senioreille, mutta tämä jakso on ehdottomasti junioreille.

Python for the Web: mitä juniorin on tiedettävä työskennelläkseen ja kehittyäkseen

Pääaiheet:

  • Mitä tietoja aloittelevan ohjelmoijan tarvitsee harjoitella
    web-kehitys?
  • Mitä työnantajat odottavat kehittäjiltä?
  • Mitä tehdä löytääksesi työpaikan ilman kokemusta?
  • Miten Python-kehittäjä voi kehittyä?

Python Junior Podcast on ohjelmointipodcast niille, jotka haluavat ymmärtää Pythonia paremmin. Lähetyksiä johtavat paikkakunnan evankelistat Moskova Python ja kurssin opettajat Oppia Python.

Keskustelun osallistujat:

  • Valentin Dombrovsky,yksi MoscowPythonin perustajista
  • Zlata Obukhovskaja, NVIDIA-tiimin johtaja
  • Grigori Petrov, evankelista Moskova Python
  • Aleksei Shtyrnyaev, kehittäjä FinExissä, Learn-kurssien opettaja
    Python

Miksi Python on hyvä verkkokehitykseen

Valentin Dombrovsky: Miksi Python sopii verkkokehitykseen? Miksei esimerkiksi PHP tai JavaScript?

Grigori Petrov: Valinnanvaraa ei siis ole paljoa. Huolimatta siitä, että nykyaikaisessa Webissä voit itse asiassa rakentaa yksisivuisen sovelluksen tai progressiivisen verkkosovelluksen ilman taustajärjestelmää - puhtaasti etupääteknologioilla, JavaScriptillä - se on silti liian monimutkainen, huonosti indeksoitu ja vaatii hienoja kehittäjiä.

Jos haluamme tehdä verkkosivuston tai palvelun, käytämme yhdistettyä lähestymistapaa: jotkut taustajärjestelmät toteuttavat logiikkaa ja luovat verkkosivuja, ja jotkut käyttöliittymät piirtävät nämä verkkosivut selaimeen. Ja kun meidän on nopeasti koottava kaikki yhteen johonkin, meillä ei oikeastaan ​​ole vaihtoehtoa.

Katsotaanpa mahdollisia vaihtoehtoja.

  • C#. Microsoft on todella hieno, he tekivät .NET Coren ja mainostavat sitä kaikin mahdollisin tavoin. Mutta ensinnäkin, tämä on uusi cross-platform-tekniikka, eikä kaikki ole vielä sujuvaa. Toiseksi se on todella kallista, C#-kehittäjiä on vähän - yksinkertaisesti siksi, että se on epäsuosittu.
  • Java. Se on monimutkaista. Normaalin verkkosivuston tekeminen Javalla ei vie 10 riviä koodia, kuten Pythonissa. Tämä on paljon koodia, nämä ovat kehyksiä, ja sinun on tiedettävä Java-palvelimien määrittämisen yksityiskohdat. Yleensä jatkuvaa kipua ja kärsimystä.
  • PHP. Uusimmissa versioissa se on upea. Sanon jopa tämän: PHP 7.2 ei ole huonompi kuin Python. Mutta et voi vain poimia ja käyttää PHP 7.2:ta. Jos tavallinen, ei huippukehittäjä tekee verkkosivuston PHP:llä, hän ei kirjoita vain 7.2:ssa: hänen on silti luettava joitain oppikirjoja, opetusohjelmia, kaikkialla on paljon vanhaa koodia, ja tämä ei ole kovin hyvä.
  • JavaScript ja Node.js. Se on upeaa ja erittäin modernia, kun sekä etu- että taustapäässä on yksi kieli. Ei vain kovin vakaa. Node.js on hyvä asia, mutta sen käyttöönotto tuotannossa on ongelmallista, jotta se ei kaatuisi ja toimii vakaasti. Lisäksi, jos haluamme kirjoittaa laadukasta JavaScript-koodia, emme tarvitse JavaScriptiä, vaan TypeScriptiä. Mutta TypeScript on odottamattoman monimutkainen, ja keskimääräisen kehittäjän aivot kiehuvat sen nähdessään.

Jätetään Ruby, Haskell, Erlang ja muut niche-jutut pois, ja sitten jää... Python. Kieli, jolla on johdonmukainen syntaksi, yhtenäinen standardikirjasto, paras dokumentaatio, suositut kevyet puitteet ja megasuosittu Django-yhdistelmä.

Osoittautuu, että laajimmasta valikoimasta huolimatta, jos meillä on tavallisia, ei huippukehittäjiä, olemme tavallinen yritys, joka haluaa tehdä tavallisia verkkosivustoja, meillä ei ole 50 hengen kehitysosastoa, niin otamme Pythonin.

Mitä tietoja tarvitaan ammattiin pääsemiseksi?

Zlata Obukhovskaja: Uskon, että sinun on tunnettava yksi kehys hyvin - ja tiedettävä, mitä muita on olemassa ja milloin niitä käytetään. Missä on Tornado, missä on Django, missä on Flask, missä on aiohttp ja niin edelleen.
On hyödyllistä tietää, että on olemassa sellainen asia kuin protokollat. Erityisesti http-protokollan tuntemus on keskeistä verkkosovellusten rakentamisessa.

Sinun on myös ainakin karkeasti ymmärrettävä, miten käyttöliittymä toimii verkkoprojekteissa: mikä on HTML, CSS, JS.

Aleksei Shtyrnyaev: Ja tiedä missä asiakirjat ovat. Tämä on tärkein asia.

Grigori Petrov: Täällä astumme erittäin horjuvalle maalle. Jos olemme epäonnisia ja alamme jotenkin vakavasti opiskella modernia käyttöliittymää, se on noin 10 kertaa monimutkaisempi kuin Pythonin taustaohjelma. Aloittelevan kehittäjän on rajoitettava keskittymiskykyään, jotta hän voi aloittaa HTML:n oppimisen, mutta ei eksyä kaikkiin näihin diveihin, jänteisiin, kelluihin, miten kaikki on kohdistettu ja rivitetty.

Aleksei Shtyrnyaev: Tarvitset Bootstrapin peruskurssin. Ja HTML:n perusteet.

Ensimmäisenä vuonna sinun ei pitäisi sukeltaa JS-kehyksiin (jos keskityt taustajärjestelmään). Bootstrap-peruskurssilla on valmiit moduulit: jos haluat liukusäätimen, tee liukusäädin, jos haluat kelluvan valikon, tee kelluva valikko.

Zlata Obukhovskaja: Mielestäni käyttöliittymää opiskellessa voi uppoutua erityisesti siihen, miten verkkosovelluksille yleensä annetaan statiikkaa. Näin kehittäjä siirtyy sujuvasti eteenpäin opettelemaan, miten verkkosovellusten arkkitehtuuri periaatteessa toimii ja miten ne elävät tuotannossa.

Grigori Petrov: Kyllä, suosittelen sitä heti, jos valitsit Pythonin taustakehityskieleksi ja esimerkiksi Djangon kehykseksi: Djangolla on dokumentaatio Django-kirjassa, se on todella siistiä, se sisältää kaiken, mitä Zlata sanoi, hän todella hyvä aloittelijalle.

Aleksei Shtyrnyaev: Jotkut Django-tytöt sopivat myös nopeaan alkuun, jos tavoitteenasi on oppia Django. Tämä on opetusohjelma, jossa voit yhdessä päivässä käydä läpi alkuun, ymmärtää perusasiat ja mitä kehys pystyy.

Valentin Dombrovsky: Podcastin nauhoittamista varten laadimme listan siitä, mitä Python-ohjelmoija tarvitsee verkkokehitykseen, mikä tiivistää aiemmin sanomamme.

Mitä sisältyy Pythonin verkkokehityksen perusteisiin

  • Verkkokehykset Django, Flask, aiohttp, Tornado jne. (ja tietävät muiden olemassaolosta).
  • Protokollat ​​ja API:t: ensisijaisesti http, JSON-RPC, protokollapuskurit, gRPC.
  • ORM ja migraatiot, relaatiotietokannat, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • HTML:n, CSS:n, Bootstrapin sekä JS-kehysten ja JQueryn perusteet.
  • Sovelluksen toimintaperiaatteet tuotannossa, testaus, yksikkötestit, autotestit, versionhallintajärjestelmät, git.

Tarvitsevatko juniorit algoritmeja?

Zlata Obukhovskaja: Aluksi sinun ei tarvitse tietää algoritmeja, ne ilmestyvät vähitellen päähän, jos harjoitat kehitystä tarpeeksi pitkään. Tiedän joukon hyviä insinöörejä, joilla ei ole ollut hyvää muodollista algoritmikurssia.

Grigori Petrov: Haluan lisätä öljyä tuleen. Mistä algoritmien halumme tulee?

Meillä ei tällä hetkellä ole algoritmien peruskoulutusta, emme osaa kouluttaa ohjelmoijia, meillä ei ole teknistä perustaa.

He yrittävät tehdä tämän, mutta tässä meillä on Tylypahkan tarina: emme voi luoda koulua velhoille, kun meillä ei ole yhtä velhoa. Siksi mitä yliopiston pitäisi tehdä, kun he tulevat heidän luokseen ja kysyvät: "Aloita ohjelmoijien kouluttaminen", mutta heillä ei ole ohjelmoijia, koska kaikki työskentelevät Mail.ru:lla, Ramblerilla ja Yandexillä, he voivat siellä hyvin?

Yliopisto katsoo ja sanoo:
- Okei, ohjelmointi. Etsitään jokin asiaan liittyvä tietoalue ja kutsutaan sieltä asiantuntijoita. Kutsutaan toimittajat, jotka osaavat kirjoittaa kopioita, sähköinsinöörejä, jotka osaavat tehdä sähköpiirejä, ja matemaatikot, jotka osaavat käyttää algoritmeja.

Lopulta käy ilmi, että tämä on yhtä käytännöllistä kuin rakentajan hiukkasfysiikan opettaminen vain siksi, että tiili ja sementti on tehty alkuainehiukkasista.

Samaan aikaan he eivät puhu itse sementistä ja tiilistä, koska fyysikko, joka yrittää kouluttaa rakentajaa, ei osaa rakentaa taloja. Tuloksena saamme rakentajan, joka pystyy kuvailemaan täydellisesti kuinka "sementti toimii", mutta ei ole koskaan nähnyt sitä eikä osaa tehdä siitä mitään.

Algoritmit ja tietorakenteet ovat erittäin hyviä, mutta tämä on hyvin pieni sovellusalue. Niitä tarvitaan kipeästi esimerkiksi, jos kirjoitat pelimoottoria, kääntäjää tai verkkoprotokollaa.

Useimmat ohjelmoijat ratkaisevat liiketoimintaongelmia, joissa algoritmeja ja tietorakenteita ei tarvita.

Vaikein matematiikka on kahdesti yhteenlasku ja sitten jakaminen. Se vaatii täysin erilaista tietämystä. Liiketoiminnan ongelmien ratkaiseminen vaatii lähinnä sovellettua tietoa eikä perustavanlaatuista tietoa.

Aloittelevan kehittäjän on parempi ymmärtää liiketoimintaa ja kuinka koota tarvittavat rakenteet oikein ja nopeasti valmiista lohkoista, kuinka korjata ne, miten varmistaa, etteivät ne hajoa, tietää miksi ne hajoavat, mitä tapahtuu, kun vaatimukset muuttuvat ja ohjelma alkaa "astua perustukselle" kuin talo sateen jälkeen.
Nämä ovat käytännön asioita ja ymmärrystä ohjelmiston kirjoittamisesta. Hänen on tiedettävä, että debuggerin lisäksi hänellä on joukko työkaluja, jotka näyttävät tarkalleen, missä ohjelma hidastuu.

Valentin Dombrovsky: Tuli mieleeni tämä vertailu: tämä on käännös liiketoiminnan kielestä kielelle, jolla voi kommunikoida tietokoneen kanssa. Eli ohjelmoija on eräänlainen erityinen kielitieteilijä.

Grigori Petrov: Liiketoiminta tarvitsee kirjailijaa, ei kielitieteilijää. Kirjoittajan ei tarvitse tietää, miksi tuhat vuotta sitten tämä sana muuttui sellaiseksi. Hänen on osattava soveltaa näitä sanoja.

Mitä tarvitset löytääksesi ensimmäisen työsi kehittäjänä

Aleksei Shtyrnyaev: Ei luultavasti ole yleispätevää reseptiä junioreiden ruoanlaittoon.

Jos tulet johonkin yritykseen, he palkkaavat sinut, ei siksi, että tunnet Djangon, JSONin ja muutaman algoritmin. Sinut todennäköisesti palkataan taitoja varten, joita tämä yritys tarvitsee tässä ja nyt.

Yrityksiä on monia, ja niillä kaikilla on erilaiset vaatimukset. Ei ole olemassa sellaista yleistä tiedon määrää, joka on hankittava, jotta ansioluetteloa voidaan edelleen valmistella ja mennä etsimään työtä.

Grigori Petrov: Kun me VoxImplantilla etsimme useita insinöörejä, tekninen johtajamme muotoili perusvaatimuksen seuraavasti: ihmisen on kyettävä ratkaisemaan ongelmia. On selvää, että juniori ei aina tee tätä tehokkaasti, ei parhaalla tavalla eikä aina oikein, mutta ihannetapauksessa annat ihmiselle tehtävän, hän rasittaa ja ratkaisee sen. Tämä on taito, jota työnantajat ensisijaisesti etsivät.

Zlata Obukhovskaja: Muilta aloilta työtä hakevilla ihmisillä on bisnesnäkökulmasta jonkin verran etua, koska he ovat jo päässeet jonkin verran ja pystyvät ratkaisemaan ongelmia nopeasti. Nämä ovat pehmeitä taitoja, kutsuisin sitä jopa työkulttuuriksi. Usein yliopistosta valmistuneet eivät ole vielä kehittäneet tätä työkulttuuria.

Mutta haluaisin silti yrittää antaa jonkinlaisen reseptin aloittelijoille.

Ensimmäiset askeleet aloittelevalle kehittäjälle

Zlata Obukhovskaja: Ensimmäinen on, että tämä on silti jonkinlainen oma projektisi, koska sinun on kirjoitettava jotain ansioluetteloosi ja esitettävä minimaalinen portfolio. On siistimpää, kun näitä projekteja ei tehdä itsellesi, vaan freelance-projektiksi - jollekin.

Ensimmäisten projektien jälkeen voit jo tehdä ansioluettelon ja lähettää sen kaikkiin yrityksiin, joissa on kesäkuun paikkoja. Haastattelut antavat käsityksen siitä, mitä yritykset tarvitsevat. Ennemmin tai myöhemmin joku palkkaa sinut, ainakin pienessä yrityksessä. Myöhemmin tämä työkokemus antaa sinulle mahdollisuuden päästä suurempaan ja mielenkiintoisempaan yritykseen.

Valentin Dombrovsky: Muuten, kursseillamme valmistamme opiskelijat omaan projektiin 10 viikon sisällä koulutuksesta. Lisäksi koulutamme tiimin kehittämistaitoja. Juuri näistä pehmeistä taidoista Zlata puhui.

Aleksei Shtyrnyaev: Kokemuksesta voin kertoa, että ensimmäisen työpaikan etsiminen voi kestää hyvin kauan. Kun etsit kuukauden tai kaksi, se on normaalia. Jos lähetät ansioluettelosi kaikille yrityksille, mene haastatteluihin, kolmannessa kuukaudessa löydät varmasti jotain.

Valentin Dombrovsky: Voit leikata omia projektejasi tai ottaa yksinkertaisia ​​freelanceprojekteja ja lähettää samalla ansioluettelosi.

Mitä näkymiä Python-kehittäjällä on?

Zlata Obukhovskaja: Python-kehittäjä voi mennä minne tahansa. Voit mennä testaamaan ja jatkaa kehittymistä vanhemmiksi arkkitehdikiksi. Tai jopa johtamiseen. Teknisiä johtajia on erilaisia, ja voit kasvaa ylimmäksi johdoksi. Voit kehittyä datatieteessä, DevOpsissa, mennä automatisoituun testaukseen tai koneoppimiseen.

Valentin Dombrovsky: Yleensä vaihtoehtoja ja mahdollisuuksia on paljon, mukaan lukien kurssimme. Sisäänkäynnissä ei tarvitse paljoa tietoa, mutta silloin kannattaa kattaa laajempi valikoima, sillä mitä enemmän pystyt, sen parempi sinulle.

***

Tämä on vain osa julkaisua Python Junior. Jakson täysi versio on saatavilla kuunnella.

Tai edes katsoa:

Toista video

Podcast RSS

Kiitos kun luit, kuuntelet tai katsoit.

Lähde: will.com

Lisää kommentti