Python foar it web: wat in junior moat witte om te wurkjen en te ûntwikkeljen

Wy makken in koarte transkripsje mei de wichtichste gedachten út de Python Junior Podcast: dêryn hawwe wy besprutsen wêr't te begjinnen en wêr't te gean as begjinner Python-ûntwikkelder. De lêste tiid hawwe wy in soad ynhâld foar midden- en senioaren, mar dizze ôflevering is perfoarst foar junioaren.

Python foar it web: wat in junior moat witte om te wurkjen en te ûntwikkeljen

Haadûnderwerpen:

  • Hokker kennis moat in begjinnende programmeur oefenje
    webûntwikkeling?
  • Wat ferwachtsje wurkjouwers fan ûntwikkelders?
  • Wat te dwaan om in baan te finen sûnder ûnderfining?
  • Hoe kin in Python-ûntwikkelder ûntwikkelje?

Python Junior Podcast is in programmearpodcast foar dyjingen dy't Python better wolle begripe. Útstjoerings wurde útfierd troch mienskip evangelisten Moskou Python en kursusdosinten Learje Python.

Dielnimmers oan it petear:

  • Valentin Dombrovsky,mei-oprjochter fan MoscowPython
  • Zlata Obukhovskaya, NVIDIA team lead
  • Grigory Petrov, evangelist Moskou Python
  • Alexey Shtyrnyaev, ûntwikkelder by FinEx, learaar fan Learn-kursussen
    Python

Wêrom Python is goed foar webûntwikkeling

Valentin Dombrovsky: Wêrom is Python geskikt foar webûntwikkeling? Wêrom net PHP of JavaScript, bygelyks?

Grigory Petrov: Der is dus net folle kar. Nettsjinsteande it feit dat jo yn it moderne web eins in inkele side-applikaasje of progressive webapplikaasje kinne bouwe sûnder in backend - suver mei front-end-technologyen, mei JavaScript - is it noch te yngewikkeld, min yndeksearre en fereasket koele ûntwikkelders.

As wy in webside of tsjinst meitsje wolle, brûke wy in kombineare oanpak: guon backend ymplementearret de logika en meitsje websiden, en guon frontend tekent dizze websiden yn 'e browser. En as wy it allegear gau wat byinoar sette moatte, hawwe wy eins net in kar.

Litte wy nei de mooglike opsjes sjen.

  • C#. Microsoft is echt geweldich, se makken .NET Core en befoarderje it op alle mooglike manieren. Mar, as earste, dit is in nije cross-platform technology, en noch net alles is glêd. Twadder is it echt djoer, d'r binne in pear C #-ûntwikkelders - gewoan om't it net populêr is.
  • Java. It is yngewikkeld. It meitsjen fan in normale webside yn Java nimt gjin 10 rigels koade, lykas yn Python. Dit is in protte koade, dit binne kaders, en jo moatte de spesifikaasjes witte fan it ynstellen fan Java-tsjinners. Yn it algemien, trochgeande pine en lijen.
  • PHP. Yn de lêste ferzjes is it prachtich. Ik sil dit sels sizze: PHP 7.2 is net slimmer dan Python. Mar jo kinne net gewoan PHP 7.2 ophelje en brûke. As in gewoane, net topûntwikkelder in webside yn PHP makket, sil hy net allinich yn 7.2 skriuwe: hy sil noch wat learboeken, tutorials moatte lêze, d'r is oeral in protte legacy-koade, en dit is net heul goed.
  • JavaSkript en Node.js. It is prachtich en hiel modern as der ien taal is op sawol de front-end as de efterkant. Krekt net hiel stabyl. Node.js is in goede saak, mar it is problematysk in ynsette it yn produksje sadat it net crasht en wurket stabyl. Plus, as wy kwaliteit JavaScript-koade wolle skriuwe, hawwe wy gjin JavaScript nedich, mar TypeScript. Mar TypeScript is ûnferwachts kompleks, en de harsens fan 'e gemiddelde ûntwikkelder siede as se it sjogge.

Lit ús Ruby, Haskell, Erlang en oare niche guod ferlitte, en wy bliuwe mei ... Python. In taal mei konsekwinte syntaksis, in unifoarme standertbibleteek, de bêste dokumintaasje, populêre lichtgewicht kaders, en de mega-populêre Django kombinearje.

It docht bliken dat, nettsjinsteande de breedste kar, as wy gewoane, net topûntwikkelders hawwe, wy in gewoan bedriuw binne dat gewoane websiden meitsje wol, wy hawwe gjin ûntwikkelingsôfdieling foar 50 minsken, dan nimme wy Python.

Hokker kennis is nedich om it berop yn te gean?

Zlata Obukhovskaya: Ik leau dat jo ien ramt goed moatte kennen - en witte wat oaren besteane en wannear't se wurde brûkt. Wêr is Tornado, wêr is Django, wêr is Flask, wêr is aiohttp ensafuorthinne.
It sil nuttich wêze om te witten dat d'r sa'n ding is as protokollen. Benammen kennis fan it http-protokol is sintraal foar it bouwen fan webapplikaasjes.

Jo moatte ek op syn minst rûchwei begripe hoe't de foarkant wurket yn webprojekten: wat is HTML, CSS, JS.

Alexey Shtyrnyaev: En wit wêr't de dokumintaasje is. It is it wichtichste.

Grigory Petrov: Hjir stappe wy op tige wankele grûn. As wy pech hawwe en wy op ien of oare manier de moderne frontend serieus begjinne te bestudearjen, dan sil it sawat 10 kear yngewikkelder wêze as de backend yn Python. In begjinnende ûntwikkelder moat syn fokus beheine, sadat hy kin begjinne mei it learen fan HTML, mar net ferlern gean yn al dizze divs, spans, floaten, hoe't alles is ôfstimd en opsteld.

Alexey Shtyrnyaev: Need in basis Bootstrap kursus. En de basis fan HTML.

Yn it earste jier moatte jo net ferdjipje yn JS-kaders (as jo jo rjochtsje op 'e efterkant). De basis Bootstrap kursus hat al klearmakke modules: as jo wolle in slider, meitsje in slider as jo wolle in driuwend menu, meitsje in driuwend menu.

Zlata Obukhovskaya: Ik tink dat jo by it bestudearjen fan 'e frontend jo kinne ferdjipje, benammen yn hoe't statyk oer it algemien wurdt jûn oan webapplikaasjes. Op dizze manier giet de ûntwikkelder soepel troch om te begjinnen te learen hoe't de arsjitektuer fan webapplikaasjes yn prinsipe wurket en hoe't se yn produksje libje.

Grigory Petrov: Ja, ik sil it daliks oanrikkemandearje foar it gefal dat jo Python hawwe keazen as in backend-ûntwikkelingstaal en bygelyks Django as ramt: Django hat dokumintaasje yn it Django-boek, it is echt cool, it befettet alles wat Zlata sei, se echt goed foar in begjinner.

Alexey Shtyrnyaev: Guon Django Girls binne ek geskikt foar in flugge start as jo doel is om Django te learen. Dit is in tutorial wêr't jo op ien dei oer de top kinne gean, de basis kinne begripe en wat it ramt ta kin.

Valentin Dombrovsky: As tarieding op it opnimmen fan 'e podcast hawwe wy in list gearstald fan wat in Python-programmeur nedich is foar webûntwikkeling, dy't gearfettet wat wy earder sein hawwe.

Wat is opnommen yn 'e basis foar webûntwikkeling yn Python

  • Web kaders Django, Flask, aiohttp, Tornado, ensfh (en witte oer it bestean fan oaren).
  • Protokollen en API's: benammen http, JSON-RPC, Protokolbuffers, gRPC.
  • ORM en migraasjes, relaasje databases, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Basis fan HTML, CSS, Bootstrap, lykas JS-frames en JQuery.
  • Prinsipes fan tapassingsoperaasje yn produksje, testen, ienheidstests, autotests, ferzjekontrôlesystemen, git.

Binne junioaren algoritmen nedich?

Zlata Obukhovskaya: Yn it earstoan hoege jo de algoritmen net te kennen, se sille stadichoan yn jo holle ferskine as jo lang genôch dwaande binne mei ûntwikkeling. Ik ken in ton goede yngenieurs dy't gjin goede formele algoritmekursus hawwe hân.

Grigory Petrov: Ik wol brânstof oan it fjoer. Wêr komt ús begearte foar algoritmen wei?

Wy hawwe op it stuit gjin fûnemintele oplieding yn algoritmen, wy witte net hoe't wy programmeurs opliede, wy hawwe gjin technyske basis.

Se besykje dit te dwaan, mar hjir hawwe wy it ferhaal fan Hogwarts: wy kinne gjin skoalle meitsje foar wizards wylst wy net ien wizard hawwe. Dêrom, wat moat in universiteit dwaan as se komme ta har en freegje: "Begjin oplieding programmeurs," mar se hawwe gjin programmeurs, omdat elkenien wurket by Mail.ru, Rambler en Yandex, se fiele goed dêr?

De universiteit sjocht en seit:
- Okee, programmearje. Litte wy wat besibbe gebiet fan kennis fine en spesjalisten útnoegje. Litte wy sjoernalisten útnoegje dy't kopy kinne skriuwe, elektryske yngenieurs dy't elektryske circuits kinne meitsje, en wiskundigen dy't algoritmen kinne brûke.

Uteinlik docht bliken dat dit like praktysk is as it learen fan in bouwer dieltsjefysika krekt om't bakstien en semint binne makke fan elemintêre dieltsjes.

Tagelyk prate se sels net oer semint en bakstiennen, om't de natuerkundige dy't besiket om in bouwer op te learen, net wit hoe't se huzen bouwe moatte. As gefolch krije wy in bouwer dy't perfekt omskriuwe kin hoe't "sement wurket", mar it noait sjoen hat en net wit hoe't se der wat fan meitsje moatte.

Algoritmen en gegevensstruktueren binne heul goed, mar dit is in heul lyts applikaasjegebiet. Se binne driuwend nedich, bygelyks as jo in spielmotor, kompilator of netwurkprotokol skriuwe.

De measte programmeurs losse saaklike problemen op wêr't algoritmen en gegevensstruktueren net nedich binne.

De dreechste wiskunde dêr is twa kear optelle en dan dielen. It freget folslein oare kennis. It oplossen fan saaklike problemen fereasket benammen tapast ynstee fan fûnemintele kennis.

It is better foar in begjinnende ûntwikkelder om in begryp te hawwen fan bedriuw en hoe't jo de nedige struktueren korrekt en fluch kinne gearstalle fan klearmakke blokken, hoe't se se kinne debuggen, hoe't jo derfoar soargje dat se net útinoar falle, witte wêrom't se útinoar falle, wat bart der as easken feroarje en it programma begjint "op 'e stifting te setten" as in hûs nei rein.
Dit binne praktyske dingen en in begryp fan hoe't jo software skriuwe. Hy moat witte dat hy neist de debugger in set ark hat dy't krekt sjen litte wêr't it programma fertraget.

Valentin Dombrovsky: Dizze ferliking kaam my yn 't sin: dit is in oersetting fan 'e saaklike taal yn in taal wêryn't jo mei in kompjûter kommunisearje kinne. Dat is, in programmeur is in soarte fan spesifike taalkundige.

Grigory Petrov: Bedriuw hat in skriuwer nedich, gjin taalkundige. De skriuwer hoecht net te witten wêrom't tûzen jier lyn dit wurd hjir yn feroare is. Hy moat dizze wurden tapasse kinne.

Wat jo nedich hawwe om jo earste baan te finen as ûntwikkelder

Alexey Shtyrnyaev: Der is nei alle gedachten gjin universele resept foar hoe te koken junior.

As jo ​​by guon bedriuw komme, sille se jo net ynhiere om't jo Django, JSON en in pear algoritmen kenne. Jo sille nei alle gedachten wurde ynhierd foar de feardichheden dy't dit bedriuw nedich hjir en no.

Der binne in protte bedriuwen, en se hawwe allegear ferskillende easken. D'r is gjin sa'n universele hoemannichte kennis dy't moat wurde krigen om in cv fierder te meitsjen en in baan te finen.

Grigory Petrov: Doe't wy by VoxImplant ferskate yngenieurs sochten, formulearre ús technysk direkteur de basiseask as folget: in persoan moat problemen oplosse kinne. It is dúdlik dat in junior dit net altyd effektyf sil dwaan, net op 'e bêste manier en net altyd korrekt, mar ideaal jouwe jo in persoan in taak, hy spant en lost it op. Dit is de feardigens wêr't wurkjouwers foaral nei sykje.

Zlata Obukhovskaya: Minsken dy't wurk sykje út oare fjilden hawwe wat foardiel út saaklik eachpunt om't se al in paad gien binne en problemen fluch oplosse kinne. Dat binne sêfte feardichheden, ik soe it sels wurkkultuer neame. Faak hawwe universitêre ôfstudearden dizze wurkkultuer noch net ûntwikkele.

Mar ik soe noch graach besykje te jaan in soarte fan resept oan begjinners.

Earste stappen foar in begjinnende ûntwikkelder

Zlata Obukhovskaya: De earste is dat dit noch in soarte fan jo eigen projekt is, om't jo wat moatte skriuwe yn jo cv en in minimale portfolio sjen litte. It is cooler as dizze projekten net foar josels binne makke, mar as freelance projekt - foar immen.

Nei de earste projekten kinne jo al in resume meitsje en stjoere nei alle bedriuwen wêr't juniposysjes binne. Ynterviews jouwe ynsjoch yn wat bedriuwen nedich binne. Ier of let sil immen jo hiere, teminsten yn in lyts bedriuw. Dêrnei sil dizze wurkûnderfining jo de kâns jaan om yn in grutter en ynteressanter bedriuw te kommen.

Valentin Dombrovsky: Trouwens, yn ús kursussen meitsje wy studinten tariede op har eigen projekt binnen 10 wiken fan training. Plus wy traine teamûntwikkelingsfeardigens. Dit binne krekt de sêfte feardichheden dêr't Zlata oer praat.

Alexey Shtyrnyaev: Ik kin jo út ûnderfining fertelle dat it hiel lang duorje kin om nei jo earste baan te sykjen. As jo ​​nei in moanne as twa sykje, is dat normaal. As jo ​​​​jo cv yntsjinje by alle bedriuwen, gean dan nei ynterviews, yn 'e tredde moanne sille jo grif wat fine.

Valentin Dombrovsky: Jo kinne jo eigen projekten besunigje of ienfâldige freelanceprojekten oannimme en tagelyk jo cv stjoere.

Hokker perspektyf hat in Python-ûntwikkelder?

Zlata Obukhovskaya: In Python-ûntwikkelder kin oeral gean. Jo kinne yn testen gean en trochgean mei ûntwikkeljen ta in senior arsjitekt. Of sels yn behear. D'r binne ferskate soarten technyske managers, en jo kinne groeie ta topbehear. Jo kinne ûntwikkelje yn gegevenswittenskip, DevOps, gean yn automatisearre testen of masine learen.

Valentin Dombrovsky: Yn 't algemien binne d'r in protte opsjes en kânsen, ynklusyf ús kursussen. Jo hawwe net folle kennis nedich by de yngong, mar it is oan te rieden om dan in breder berik te dekken, want hoe mear jo kinne, hoe better foar jo.

***

Dit is gewoan in diel fan 'e release Python Junior. De folsleine ferzje fan 'e ôflevering is beskikber Harkje.

Of sels sjen:

Spielje fideo

Podcast RSS

Betanke foar it lêzen, harkjen of sjen.

Boarne: www.habr.com

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners 🔥 Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster