Python por la Reto: kion junulo bezonas scii por labori kaj disvolvi

Ni faris mallongan transskribon kun la ĉefaj pensoj de la Python Junior Podkasto: en ĝi ni diskutis kie komenci kaj kien iri kiel komencanta Python-programisto. Lastatempe ni havas multe da enhavo por mezaj kaj maljunuloj, sed ĉi tiu epizodo certe estas por junuloj.

Python por la Reto: kion junulo bezonas scii por labori kaj disvolvi

Ĉefaj temoj:

  • Kian scion bezonas praktiki komencanta programisto
    TTT-disvolviĝo?
  • Kion dungantoj atendas de programistoj?
  • Kion fari por trovi laboron sen sperto?
  • Kiel povas disvolvi Python-programisto?

Python Junior Podcast estas programa podkasto por tiuj, kiuj volas pli bone kompreni Python. Elsendoj estas faritaj fare de komunumaj evangeliistoj MoskvaPython kaj kursaj instruistoj Lernu Python.

Partoprenantoj en la konversacio:

  • Valentin Dombrovsky,kunfondinto de MoscowPython
  • Zlata Obukhovskaya, NVIDIA teamgvidanto
  • Grigorij Petrov, evangeliisto MoscowPython
  • Alexey Shtyrnyaev, programisto ĉe FinEx, instruisto pri Learn-kursoj
    python

Kial Python estas bona por TTT-disvolviĝo

Valentin Dombrovsky: Kial Python taŭgas por TTT-disvolviĝo? Kial ne PHP aŭ JavaScript, ekzemple?

Grigorij Petrov: Do ne estas multe da elekto. Malgraŭ tio, ke en la moderna TTT oni efektive povas konstrui unupaĝan aplikaĵon aŭ progreseman TTT-aplikaĵon sen backend - pure uzante antaŭajn teknologiojn, uzante JavaScript - ĝi estas ankoraŭ tro komplika, malbone indeksita kaj postulas bonegajn programistojn.

Se ni volas fari retejon aŭ servon, ni uzas kombinitan aliron: ni havas iun backend kiu efektivigas la logikon kaj kreas retpaĝojn, kaj iu fasado kiu desegnas ĉi tiujn retpaĝojn en la retumilo. Kaj kiam ni devas rapide kunmeti ĉion pri io, ni vere ne havas elekton.

Ni rigardu la eblajn eblojn.

  • C#. Mikrosofto estas vere bonega, ili faris .NET Core kaj reklamas ĝin en ĉiuj eblaj manieroj. Sed unue, ĉi tio estas nova transplatforma teknologio, kaj ankoraŭ ne ĉio estas glata tie. Due, ĝi estas vere multekosta, estas malmultaj C#-programistoj - simple ĉar ĝi estas nepopulara.
  • Ĝavo. Estas komplike. Fari normalan retejon en Java ne bezonas 10 liniojn de kodo, kiel en Python. Ĉi tio estas multe da kodo, ĉi tiuj estas kadroj, kaj vi devas scii la specifaĵojn pri agordo de Java-serviloj. Ĝenerale, kontinua doloro kaj sufero.
  • PHP. En la lastaj versioj ĝi estas mirinda. Mi eĉ diros ĉi tion: PHP 7.2 ne estas pli malbona ol Python. Sed vi ne povas simple preni kaj uzi PHP 7.2. Se ordinara, ne pinta programisto faras retejon en PHP, li ne skribos nur en 7.2: li ankoraŭ devos legi kelkajn lernolibrojn, lernilojn, estas multe da hereda kodo ĉie, kaj ĉi tio ne estas tre bona.
  • JavaScript kaj Node.js. Ĝi estas mirinda kaj tre moderna kiam estas unu lingvo kaj ĉe la antaŭa finaĵo kaj en la malantaŭa fino. Nur ne tre stabila. Node.js estas bona afero, sed estas probleme deploji ĝin en produktado por ke ĝi ne kraŝas kaj funkcias stabile. Krome, se ni volas skribi kvalitan JavaScript-kodon, ni ne bezonas JavaScript, sed TypeScript. Sed TypeScript estas neatendite kompleksa, kaj la cerboj de averaĝa programisto bolas kiam ili vidas ĝin.

Ni forlasu Ruby, Haskell, Erlang kaj aliajn niĉajn aferojn, kaj ni restas kun... Python. Lingvo kun konsekvenca sintakso, unuforma norma biblioteko, la plej bona dokumentaro, popularaj malpezaj kadroj kaj la mega-populara Django kombinas.

Rezultas, ke malgraŭ la plej vasta elekto, se ni havas ordinarajn, ne plej bonajn programistojn, ni estas ordinara komerco, kiu volas fari ordinarajn retejojn, ni ne havas evoluan fakon por 50 homoj, tiam ni prenas Python.

Kiaj scioj necesas por eniri la profesion?

Zlata Obukhovskaya: Mi kredas, ke vi bezonas bone koni unu kadron - kaj scii kio aliaj ekzistas kaj kiam ili estas uzataj. Kie estas Tornado, kie estas Django, kie estas Flasko, kie estas aiohttp kaj tiel plu.
Estos utile scii, ke ekzistas tia afero kiel protokoloj. Aparte, scio pri la http-protokolo estas centra por konstrui TTT-aplikaĵojn.

Vi ankaŭ devas almenaŭ proksimume kompreni kiel la frontfino funkcias en retprojektoj: kio estas HTML, CSS, JS.

Alexey Shtyrnyaev: Kaj sciu kie estas la dokumentado. Ĝi estas plej grava.

Grigorij Petrov: Ĉi tie ni paŝas sur tre malfirma grundo. Se ni estas malbonŝancaj kaj ni iel komencas serioze studi la modernan fasadon, tiam ĝi estos ĉirkaŭ 10 fojojn pli komplika ol la backend en Python. Novula programisto devas limigi sian fokuson por ke li povu lerni HTML-on, sed ne fali en ĉiujn ĉi tiujn divs, spans, flosojn, kiel ĉio estas vicigita kaj vicigita.

Alexey Shtyrnyaev: Bezonas bazan kurson de Bootstrap. Kaj la bazoj de HTML.

En la unua jaro, vi ne devus enprofundiĝi en JS-kadrojn (se vi fokusiĝas al la backend). La baza Bootstrap-kurso jam havas pretajn modulojn: se vi volas glitilon, faru glitilon; se vi volas ŝveban menuon, faru ŝveban menuon.

Zlata Obukhovskaya: Mi pensas, ke dum vi studas la fasadon, vi povas mergi vin, precipe, en kiel statiko estas ĝenerale donita al TTT-aplikoj. Do la programisto glate pluiras por komenci lerni kiel la arkitekturo de TTT-aplikoj funkcias principe kaj kiel ili vivas en produktado.

Grigorij Petrov: Jes, mi tuj rekomendos ĝin, se vi elektos Python kiel backend evolulingvon kaj, ekzemple, Django kiel kadro: Django havas dokumentadon en la Django Book, ĝi estas vere bonega, ĝi enhavas ĉion, kion Zlata diris, ŝi vere. bona por komencanto.

Alexey Shtyrnyaev: Iuj Django-Knabinoj ankaŭ taŭgas por rapida komenco se via celo estas lerni Django. Ĉi tio estas lernilo, kie en unu tago vi povas trapasi la supron, kompreni la bazaĵojn kaj kion la kadro kapablas.

Valentin Dombrovsky: Prepare por registri la podkaston, ni kompilis liston de tio, kion bezonas Python-programisto por reto-disvolviĝo, kiu resumas tion, kion ni diris antaŭe.

Kio estas inkluzivita en la bazaĵoj por TTT-disvolviĝo en Python

  • Retaj kadroj Django, Flask, aiohttp, Tornado, ktp (kaj scias pri la ekzisto de aliaj).
  • Protokoloj kaj APIoj: ĉefe http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM kaj migradoj, interrilataj datumbazoj, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Bazoj de HTML, CSS, Bootstrap, same kiel JS-kadroj kaj JQuery.
  • Principoj de aplika operacio en produktado, testado, unutestoj, aŭtotestoj, versio-kontrolsistemoj, git.

Ĉu junuloj bezonas algoritmojn?

Zlata Obukhovskaya: Komence, vi ne bezonas koni la algoritmojn; ili iom post iom aperos en via kapo se vi okupiĝas pri disvolviĝo sufiĉe longe. Mi konas multajn bonajn inĝenierojn, kiuj ne havis bonan formalan kurson pri algoritmoj.

Grigorij Petrov: Mi volas aldoni brulaĵon al la fajro. De kie venas nia avido al algoritmoj?

Ni nuntempe ne havas fundamentan edukadon pri algoritmoj, ni ne scias kiel trejni programistojn, ni ne havas teknikan bazon.

Ili provas fari tion, sed ĉi tie ni havas la historion de Hogwarts: ni ne povas krei lernejon por sorĉistoj dum ni ne havas ununuran sorĉiston. Sekve, kion universitato devas fari, kiam ili venas al ili kaj demandas: "Komencu trejni programistojn", sed ili ne havas programistojn, ĉar ĉiuj laboras ĉe Mail.ru, Rambler kaj Yandex, ĉu ili estas feliĉaj tie?

La universitato rigardas kaj diras:
- Bone, programado. Ni trovu iun rilatan areon de scio kaj invitu specialistojn de tie. Ni invitu ĵurnalistojn, kiuj kapablas verki kopiojn, elektrajn inĝenierojn, kiuj povas fari elektrajn cirkvitojn, kaj matematikistojn, kiuj povas uzi algoritmojn.

En la fino, rezultas, ke tio estas same praktika kiel instruado de konstruanto partikla fiziko nur ĉar briko kaj cemento estas faritaj el elementaj partikloj.

Samtempe ili mem ne parolas pri cemento kaj brikoj, ĉar la fizikisto, kiu provas trejni konstruiston, ne scias kiel konstrui domojn. Kiel rezulto, ni ricevas konstruiston, kiu kapablas perfekte priskribi kiel "cemento funkcias", sed neniam vidis ĝin kaj ne scias kiel fari ion el ĝi.

Algoritmoj kaj datumstrukturoj estas tre bonaj, sed ĉi tio estas tre malgranda aplika areo. Ili estas urĝe bezonataj, ekzemple, se vi verkas ludmaŝinon, kompililon aŭ retan protokolon.

Plej multaj programistoj solvas komercajn problemojn kie algoritmoj kaj datumstrukturoj ne estas bezonataj.

La plej malfacila matematiko tie estas aldoni dufoje kaj poste dividi. Ĝi postulas tute alian scion. Solvi komercajn problemojn postulas ĉefe aplikatan prefere ol fundamentan scion.

Pli bone estas por komencanto ellaboranto kompreni komercon kaj kiel ĝuste kaj rapide kunmeti la necesajn strukturojn el pretaj blokoj, kiel sencimigi ilin, kiel certigi, ke ili ne disiĝas, sciu kial ili disiĝas, kio okazas kiam postuloj ŝanĝiĝas kaj la programo komenciĝas "eksiliĝi sur la fundamento" kiel domo post pluvo.
Ĉi tiuj estas praktikaj aferoj kaj kompreno pri kiel verki programaron. Li devas scii, ke krom la erarserĉilo, li havas aron da iloj, kiuj montros ĝuste kie la programo malrapidiĝas.

Valentin Dombrovsky: Ĉi tiu komparo venis al mia menso: jen traduko el la lingvo de komerco al lingvo en kiu oni povas komuniki per komputilo. Tio estas, programisto estas speco de specifa lingvisto.

Grigorij Petrov: Komerco bezonas verkiston, ne lingviston. La verkisto ne bezonas scii, kial antaŭ mil jaroj tiu ĉi vorto estis transformita en ĉi tion. Li devas povi apliki ĉi tiujn vortojn.

Kion vi bezonas por trovi vian unuan laboron kiel programisto

Alexey Shtyrnyaev: Verŝajne ne ekzistas universala recepto pri kiel kuiri juna.

Se vi venos al iu kompanio, ili dungos vin ne ĉar vi konas Django, JSON kaj kelkajn algoritmojn. Vi plej verŝajne estos dungita por la kapabloj, kiujn ĉi tiu kompanio bezonas ĉi tie kaj nun.

Estas multaj kompanioj, kaj ĉiuj havas malsamajn postulojn. Ne ekzistas tia universala kvanto da scio, kiu devas esti akirita por plu prepari vivresumon kaj iri trovi laboron.

Grigorij Petrov: Kiam ni ĉe VoxImplant serĉis plurajn inĝenierojn, nia teknika direktoro formulis la bazan postulon jene: homo devas povi solvi problemojn. Estas klare, ke junulo ne ĉiam faros tion efike, ne en la plej bona maniero kaj ne ĉiam ĝuste, sed ideale vi donas al homo taskon, li streĉas kaj solvas ĝin. Ĉi tiu estas la kapablo, kiun dungantoj ĉefe serĉas.

Zlata Obukhovskaya: Homoj, kiuj serĉas laboron el aliaj kampoj, havas ian avantaĝon el komerca vidpunkto, ĉar ili jam iris iun vojon kaj kapablas rapide solvi problemojn. Ĉi tiuj estas mildaj kapabloj, mi eĉ nomus ĝin laborkulturo. Ofte, universitataj diplomiĝintoj ankoraŭ ne evoluigis ĉi tiun laborkulturon.

Sed mi ankoraŭ ŝatus provi doni ian recepton al komencantoj.

Unuaj paŝoj por komencanta programisto

Zlata Obukhovskaya: La unua estas, ke ĉi tio ankoraŭ estas ia propra projekto, ĉar vi devas skribi ion en via vivresumo kaj montri minimuman biletujon. Estas pli malvarme kiam ĉi tiuj projektoj ne estas faritaj por vi mem, sed kiel sendependa projekto - por iu.

Post la unuaj projektoj, vi jam povas fari vivresumon kaj sendi ĝin al ĉiuj kompanioj, kie estas juniaj postenoj. Intervjuoj donos sciojn pri tio, kion kompanioj bezonas. Pli aŭ malpli frue iu dungos vin, almenaŭ en malgranda kompanio. Poste, ĉi tiu labora sperto donos al vi la ŝancon eniri pli grandan kaj pli interesan kompanion.

Valentin Dombrovsky: Cetere, en niaj kursoj ni preparas studentojn por havi sian propran projekton ene de 10 semajnoj da trejnado. Krome ni trejnas teamajn evoluajn kapablojn. Ĉi tiuj estas ĝuste la molaj kapabloj, pri kiuj Zlata parolis.

Alexey Shtyrnyaev: Mi povas diri al vi pro sperto, ke povas preni tre longan tempon por serĉi vian unuan laboron. Kiam vi serĉas unu aŭ du monatojn, tio estas normala. Se vi sendas vian vivresumon al ĉiuj kompanioj, iru al intervjuoj, en la tria monato vi certe trovos ion.

Valentin Dombrovsky: Vi povas tranĉi viajn proprajn projektojn aŭ akcepti simplajn sendependajn projektojn kaj samtempe sendi vian vivresumon.

Kiajn perspektivojn havas Python-programisto?

Zlata Obukhovskaya: Python-programisto povas iri ie ajn. Vi povas ekzameni kaj daŭrigi evolui al altranga arkitekto. Aŭ eĉ en administradon. Estas malsamaj specoj de teknikaj administrantoj, kaj vi povas kreski al supera administrado. Vi povas disvolviĝi en datuma scienco, DevOps, iri en aŭtomatan testadon aŭ maŝinlernadon.

Valentin Dombrovsky: Ĝenerale, ekzistas multaj ebloj kaj ŝancoj, inkluzive de niaj kursoj. Vi ne bezonas multe da scio ĉe la enirejo, sed estas konsilinde tiam kovri pli larĝan gamon, ĉar ju pli vi povas, des pli bone por vi.

***

Ĉi tio estas nur parto de la eldono Python Junior. La plena versio de la epizodo estas havebla aŭskultu.

Aŭ eĉ rigardu:

Ludi filmeton

Podkasto RSS

Dankon pro legado, aŭskultado aŭ spektado.

fonto: www.habr.com

Aldoni komenton