Abbiamo fatto una breve trascrizione con i pensieri principali del Podcast Python Junior: in esso abbiamo discusso da dove iniziare e dove andare come sviluppatore Python principiante. Ultimamente abbiamo molti contenuti per ragazzi di livello medio e senior, ma questo episodio è sicuramente per ragazzi.

Argomenti principali:
- Di quali conoscenze ha bisogno un programmatore alle prime armi per esercitarsi
sviluppo web? - Cosa si aspettano i datori di lavoro dagli sviluppatori?
- Cosa fare per trovare lavoro senza esperienza?
- Come può sviluppare uno sviluppatore Python?
Python Junior Podcast è un podcast di programmazione per coloro che vogliono comprendere meglio Python. Le trasmissioni sono condotte da evangelisti della comunità e docenti dei corsi .
Partecipanti alla conversazione:
- Valentin Dombrovsky,co-fondatore di MoscaPython
- Zlata Obukhovskaja, Responsabile del team NVIDIA
- Grigorij Petrov, evangelista MoscaPython
- Alexey Shtyrnyaev, sviluppatore presso FinEx, docente dei corsi Learn
Python
Perché Python è utile per lo sviluppo web
Valentin Dombrovsky: Perché Python è adatto allo sviluppo web? Perché non PHP o JavaScript, ad esempio?
Grigorij Petrov: Quindi non c'è molta scelta. Nonostante il fatto che nel Web moderno sia effettivamente possibile creare un'applicazione a pagina singola o un'applicazione web progressiva senza backend - utilizzando esclusivamente tecnologie front-end, utilizzando JavaScript - è ancora troppo complicato, scarsamente indicizzato e richiede sviluppatori interessanti.
Se vogliamo creare un sito Web o un servizio, utilizziamo un approccio combinato: alcuni backend implementano la logica e creano pagine Web, mentre alcuni frontend disegnano queste pagine Web nel browser. E quando dobbiamo mettere insieme rapidamente tutto su qualcosa, non abbiamo davvero scelta.
Diamo un'occhiata alle possibili opzioni.
- C#. Microsoft è davvero eccezionale, ha creato .NET Core e lo sta promuovendo in ogni modo possibile. Ma, in primo luogo, questa è una nuova tecnologia multipiattaforma e non tutto è ancora liscio. In secondo luogo, è molto costoso, ci sono pochi sviluppatori C#, semplicemente perché è impopolare.
- Java. È complicato. Creare un normale sito web in Java non richiede 10 righe di codice, come in Python. Si tratta di molto codice, questi sono framework e devi conoscere le specifiche della configurazione dei server Java. In generale, dolore e sofferenza continui.
- PHP. Nelle ultime versioni è meraviglioso. Dirò anche questo: PHP 7.2 non è peggiore di Python. Ma non puoi semplicemente prendere e utilizzare PHP 7.2. Se uno sviluppatore normale, non eccezionale, realizza un sito Web in PHP, non scriverà solo in 7.2: dovrà comunque leggere alcuni libri di testo, tutorial, c'è molto codice legacy ovunque, e questo non è molto buono.
- JavaScript e Node.js. È meraviglioso e molto moderno quando esiste una lingua sia sul front-end che sul back-end. Semplicemente non molto stabile. Node.js è una buona cosa, ma è problematico distribuirlo in produzione in modo che non si blocchi e funzioni stabilmente. Inoltre, se vogliamo scrivere codice JavaScript di qualità, non abbiamo bisogno di JavaScript, ma di TypeScript. Ma TypeScript è inaspettatamente complesso e il cervello dello sviluppatore medio ribolle quando lo vede.
Tralasciamo Ruby, Haskell, Erlang e altre cose di nicchia e rimaniamo con... Python. Un linguaggio con una sintassi coerente, una libreria standard uniforme, la migliore documentazione, popolari framework leggeri e il popolarissimo Django si combinano.
Si scopre che, nonostante la scelta più ampia, se abbiamo sviluppatori ordinari, non di alto livello, siamo un'azienda ordinaria che vuole creare siti Web ordinari, non abbiamo un dipartimento di sviluppo per 50 persone, quindi prendiamo Python.
Quali conoscenze sono necessarie per accedere alla professione?
Zlata Obukhovskaja: Credo che sia necessario conoscere bene un framework e sapere quali ne esistono altri e quando vengono utilizzati. Dov'è Tornado, dov'è Django, dov'è Flask, dov'è aiohttp e così via.
Sarà utile sapere che esistono i protocolli. In particolare, la conoscenza del protocollo http è fondamentale per la realizzazione di applicazioni web.
È inoltre necessario comprendere almeno approssimativamente come funziona il front-end nei progetti web: cos'è HTML, CSS, JS.
Alexey Shtyrnyaev: E sapere dov'è la documentazione. È molto importante.
Grigorij Petrov: Qui stiamo camminando su un terreno molto instabile. Se siamo sfortunati e in qualche modo iniziamo a studiare seriamente il frontend moderno, sarà circa 10 volte più complicato del backend in Python. Uno sviluppatore alle prime armi deve limitare la sua attenzione in modo da poter iniziare a imparare l'HTML, ma non perdersi in tutti questi div, span, float, come tutto è allineato e allineato.
Alexey Shtyrnyaev: Hai bisogno di un corso Bootstrap base. E le basi dell'HTML.
Nel primo anno, non dovresti approfondire i framework JS (se ti concentri sul backend). Il corso base di Bootstrap ha già dei moduli già pronti: se vuoi uno slider, crea uno slider; se vuoi un menu mobile, crea un menu mobile.
Zlata Obukhovskaja: Penso che studiando il frontend, puoi immergerti, in particolare, nel modo in cui la statica viene generalmente data alle applicazioni web. Quindi lo sviluppatore procede senza intoppi per iniziare a imparare come funziona in linea di principio l'architettura delle applicazioni web e come vivono in produzione.
Grigorij Petrov: Sì, te lo consiglio subito nel caso in cui scegliessi Python come linguaggio di sviluppo backend e, ad esempio, Django come framework: Django ha la documentazione nel Django Book, è davvero bello, contiene tutto quello che ha detto Zlata, lei davvero buono per un principiante.
Alexey Shtyrnyaev: Alcune Django Girls sono adatte anche per un inizio rapido se il tuo obiettivo è imparare Django. Questo è un tutorial in cui in un giorno puoi andare oltre, comprendere le basi e di cosa è capace il framework.
Valentin Dombrovsky: In preparazione alla registrazione del podcast, abbiamo compilato un elenco di ciò di cui ha bisogno un programmatore Python per lo sviluppo web, che riassume ciò che abbiamo detto prima.
Cosa è incluso nelle nozioni di base per lo sviluppo web in Python
- Framework web Django, Flask, aiohttp, Tornado, ecc. (e conoscono l'esistenza di altri).
- Protocolli e API: principalmente http, JSON-RPC, Protocol Buffers, gRPC.
- ORM e migrazioni, database relazionali, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Nozioni di base su HTML, CSS, Bootstrap, nonché framework JS e JQuery.
- Principi di funzionamento dell'applicazione in produzione, testing, unit test, autotest, sistemi di controllo versione, git.
I ragazzi hanno bisogno di algoritmi?
Zlata Obukhovskaja: All’inizio non è necessario conoscere gli algoritmi; appariranno gradualmente nella tua testa se ti impegnerai nello sviluppo abbastanza a lungo. Conosco un sacco di bravi ingegneri che non hanno seguito un buon corso formale sugli algoritmi.
Grigorij Petrov: Voglio aggiungere benzina al fuoco. Da dove viene la nostra brama di algoritmi?
Al momento non abbiamo una formazione fondamentale sugli algoritmi, non sappiamo come formare i programmatori, non abbiamo una base tecnica.
Stanno cercando di farlo, ma qui abbiamo la storia di Hogwarts: non possiamo creare una scuola per maghi finché non abbiamo un solo mago. Pertanto, cosa dovrebbe fare un'università quando viene da loro e chiede: "Inizia a formare programmatori", ma non hanno programmatori, perché tutti lavorano su Mail.ru, Rambler e Yandex, sono felici lì?
L'università guarda e dice:
- Ok, programmazione. Troviamo qualche area di conoscenza correlata e invitiamo gli specialisti da lì. Invitiamo giornalisti che sappiano scrivere testi, ingegneri elettrici che sappiano realizzare circuiti elettrici e matematici che sappiano usare algoritmi.
Alla fine, si scopre che questo è pratico quanto insegnare la fisica delle particelle a un costruttore solo perché i mattoni e il cemento sono fatti di particelle elementari.
Allo stesso tempo, non parlano del cemento e dei mattoni, perché il fisico che sta cercando di formare un costruttore non sa come costruire case. Di conseguenza, otteniamo un costruttore che è in grado di descrivere perfettamente come "funziona il cemento", ma non l'ha mai visto e non sa come ricavarne nulla.
Gli algoritmi e le strutture dati sono molto buoni, ma si tratta di un'area di applicazione molto piccola. Sono urgentemente necessari, ad esempio, se stai scrivendo un motore di gioco, un compilatore o un protocollo di rete.
La maggior parte dei programmatori risolve problemi aziendali in cui non sono necessari algoritmi e strutture dati.
La matematica più difficile è sommare due volte e poi dividere. Richiede conoscenze completamente diverse. La risoluzione dei problemi aziendali richiede principalmente conoscenze applicate piuttosto che fondamentali.
È meglio che uno sviluppatore alle prime armi abbia una comprensione del business e come assemblare correttamente e rapidamente le strutture necessarie da blocchi già pronti, come eseguirne il debug, come assicurarsi che non vadano in pezzi, sappiano perché cadono a pezzi, cosa succede quando i requisiti cambiano e il programma inizia a "stabilirsi sulle fondamenta" come una casa dopo la pioggia.
Queste sono cose pratiche e la comprensione di come scrivere software. Ha bisogno di sapere che oltre al debugger, ha una serie di strumenti che mostreranno esattamente dove il programma sta rallentando.
Valentin Dombrovsky: Mi è venuto in mente questo paragone: questa è una traduzione dalla lingua degli affari a una lingua in cui si può comunicare con un computer. Cioè, un programmatore è una sorta di linguista specifico.
Grigorij Petrov: Le imprese hanno bisogno di uno scrittore, non di un linguista. Chi scrive non ha bisogno di sapere perché mille anni fa questa parola venne trasformata in questa. Deve essere in grado di applicare queste parole.
Cosa ti serve per trovare il tuo primo lavoro come sviluppatore
Alexey Shtyrnyaev: Probabilmente non esiste una ricetta universale su come cucinare junior.
Se vieni in qualche azienda, ti assumeranno non perché conosci Django, JSON e alcuni algoritmi. Molto probabilmente verrai assunto per le competenze di cui questa azienda ha bisogno qui e ora.
Le aziende sono tante e tutte hanno esigenze diverse. Non esiste una quantità di conoscenza così universale che è necessario ottenere per preparare ulteriormente un curriculum e cercare un lavoro.
Grigorij Petrov: Quando noi di VoxImplant cercavamo diversi ingegneri, il nostro direttore tecnico ha formulato il requisito di base come segue: una persona deve essere in grado di risolvere i problemi. È chiaro che un junior non sempre lo farà in modo efficace, non nel migliore dei modi e non sempre correttamente, ma idealmente dai un compito a una persona, lui lo sforza e lo risolve. Questa è l'abilità che i datori di lavoro cercano principalmente.
Zlata Obukhovskaja: Le persone che cercano lavoro in altri settori hanno qualche vantaggio dal punto di vista lavorativo perché hanno già fatto molta strada e sono in grado di risolvere rapidamente i problemi. Queste sono competenze trasversali, la definirei addirittura cultura del lavoro. Spesso i laureati non hanno ancora sviluppato questa cultura del lavoro.
Ma vorrei comunque provare a dare una sorta di ricetta ai principianti.
Primi passi per uno sviluppatore alle prime armi
Zlata Obukhovskaja: Il primo è che questo è ancora una sorta di progetto tuo, perché devi scrivere qualcosa nel tuo curriculum e mostrare un portfolio minimo. È più bello quando questi progetti non sono realizzati per te stesso, ma come progetto freelance, per qualcuno.
Dopo i primi progetti puoi già fare un curriculum e inviarlo a tutte le aziende dove ci sono posizioni di giugno. Le interviste forniranno informazioni su ciò di cui le aziende hanno bisogno. Prima o poi qualcuno ti assumerà, almeno in una piccola azienda. Successivamente, questa esperienza lavorativa ti darà l'opportunità di entrare in un'azienda più grande e interessante.
Valentin Dombrovsky: A proposito, nei nostri corsi prepariamo gli studenti ad avere il proprio progetto entro 10 settimane di formazione. Inoltre formiamo le capacità di sviluppo del team. Queste sono esattamente le soft skills di cui ha parlato Zlata.
Alexey Shtyrnyaev: Posso dirti per esperienza che può volerci molto tempo per cercare il tuo primo lavoro. Quando stai cercando per un mese o due, è normale. Se invii il tuo curriculum a tutte le aziende, vai ai colloqui, al terzo mese troverai sicuramente qualcosa.
Valentin Dombrovsky: Puoi ritagliare i tuoi progetti o intraprendere semplici progetti freelance e allo stesso tempo inviare il tuo curriculum.
Che prospettive ha uno sviluppatore Python?
Zlata Obukhovskaja: Uno sviluppatore Python può andare ovunque. Puoi iniziare i test e continuare a sviluppare fino a diventare un architetto senior. O anche nella gestione. Esistono diversi tipi di responsabili tecnici e puoi crescere fino al top management. Puoi svilupparti nella scienza dei dati, DevOps, dedicarti ai test automatizzati o all'apprendimento automatico.
Valentin Dombrovsky: In generale, ci sono molte opzioni e opportunità, compresi i nostri corsi. Non serve molta conoscenza all’ingresso, ma è consigliabile poi coprire un range più ampio, perché più puoi, meglio è per te.
***
Questa è solo una parte del rilascio . È disponibile la versione completa dell'episodio .
O anche guardare:

Grazie per aver letto, ascoltato o guardato.
Fonte: habr.com
