Abbiamo realizzato una sintesi con i concetti principali del Python Junior Podcast: in esso abbiamo discusso da dove iniziare e quali percorsi seguire per un sviluppatore Python alle prime armi. Negli ultimi tempi abbiamo molto contenuto per mid-level e senior, ma questo episodio è certamente per i junior.

Temi principali:
- Quali conoscenze servono a un programmatore alle prime armi per occuparsi di
sviluppo web? - Cosa si aspettano i datori di lavoro dagli sviluppatori?
- Cosa fare per trovare lavoro senza esperienza?
- Come può evolversi uno sviluppatore Python?
Python Junior Podcast è un podcast sulla programmazione per chi desidera approfondire meglio Python. Le dirette sono condotte dagli evangelisti della comunità e dai docenti dei corsi .
Hanno partecipato alla conversazione:
- Valentin Dombrovski,cofondatore di MoscowPython
- Zlata Obukhivska, team leader di NVIDIA
- Grigory Petrov, evangelista di MoscowPython
- Aleksey Shternyayev, sviluppatore in FinEx, docente dei corsi Learn
Python
Perché Python è buono per lo sviluppo web
Valentin Dombrovski: Perché proprio Python è adatto per lo sviluppo web? Perché non PHP o JavaScript, per esempio?
Grigory Petrov: In realtà non ci sono molte opzioni. Nonostante nel Web moderno sia possibile costruire praticamente una single page application o progressive web application utilizzando solo tecnologie frontend, come JavaScript, alla fine è comunque tutto troppo complicato, si indicizza male e richiede sviluppatori esperti.
Se vogliamo creare un sito o un servizio, utilizziamo un approccio combinato: abbiamo un backend che gestisce la logica e crea le pagine web, e un frontend che disegna queste pagine nel browser. E quando dobbiamo fare tutto ciò in fretta, non ci sono molte scelte.
Esaminiamo alcune opzioni.
- C#. Microsoft ha fatto un ottimo lavoro, ha creato .NET Core e la promuove in vari modi. Ma, in primo luogo, è una tecnologia cross-platform nuova e ci sono ancora delle difficoltà. In secondo luogo, è davvero costosa, gli sviluppatori C# sono pochi — semplicemente perché non è popolare.
- Java. È complesso. Creare un sito decente in Java non è come scrivere 10 righe di codice come in Python. Ci vuole molto codice, ci sono framework, e bisogna conoscere le specifiche della configurazione dei server Java. Insomma, solo dolore e sofferenza.
- PHP. Nelle ultime versioni è straordinario. Posso dire che PHP 7.2 non è peggio di Python. Ma non si può semplicemente prendere e usare PHP 7.2. Se un normale sviluppatore, non di alto livello, crea un sito in PHP, non scriverà solo in 7.2: dovrà comunque leggere dei libri, tutorial, ci sono ovunque tonnellate di codice legacy, e questo non è molto buono.
- JavaScript e Node.js. È fantastico e molto moderno avere un solo linguaggio sia per il frontend che per il backend. Solo che non è molto stabile. Node.js è una buona cosa, ma è problematico implementarla in produzione in modo che non cada e funzioni in modo stabile. Inoltre, se vogliamo scrivere codice di qualità in JavaScript, non ci serve JavaScript, ma TypeScript. E TypeScript è sorprendentemente complesso, quando un normale sviluppatore lo vede, gli si ribellano i neuroni.
Lasciamo perdere Ruby, Haskell, Erlang e altre cose di nicchia, e ci rimane... Python. Un linguaggio con una sintassi coerente, una libreria standard uniforme, la migliore documentazione, popolari framework leggeri, e un megafamoso strumento come Django.
Quindi, nonostante la vasta scelta, se abbiamo normali sviluppatori, non di alto livello, e siamo un business ordinario che vuole realizzare siti normali, e non abbiamo un dipartimento di sviluppo con 50 persone, allora scegliamo Python.
Quali conoscenze servono per entrare nella professione
Zlata Obukhivska: Ritengo che un framework debba essere conosciuto bene — e sapere quali altri esistono e quando si utilizzano. Dove si usa Tornado, dove Django, dove Flask, dove aiohttp e così via.
È utile sapere che esistono cose come i protocolli. In particolare, la conoscenza del protocollo http è centrale per costruire applicazioni web.
Inoltre, è necessario avere almeno una vaga idea di come sia organizzato il frontend nei progetti web: cos'è HTML, CSS, JS.
Aleksey Shternyaev: E sapere dove si trova la documentazione. Questa è la cosa più importante.
Grigory Petrov: Qui stiamo entrando in un terreno molto instabile. Se ci è andata male e abbiamo iniziato a studiare seriamente il moderno frontend, sarà circa dieci volte più complicato rispetto al backend in Python. Uno sviluppatore alle prime armi dovrebbe limitare il proprio focus in modo da iniziare a studiare HTML, ma senza perdersi in tutti questi div, span, float, su come si allineano e si dispongono.
Aleksey Shternyaev: Ci vuole un corso base su Bootstrap. E le basi di HTML.
Nel primo anno non è consigliabile approfondire i framework JS (se ti concentri sul backend). Nel corso base su Bootstrap ci sono già moduli pronti: vuoi uno slider — crea uno slider, vuoi un menu flottante — fai un menu flottante.
Zlata Obukhivska: Penso che, per imparare il frontend, si possa approfondire, in particolare, come viene fornita la staticità alle applicazioni web. Così il programmatore passa dolcemente a iniziare a scoprire come è strutturata l'architettura delle applicazioni web e come vivono in produzione.
Grigory Petrov: Sì, lo consiglio subito nel caso in cui tu abbia scelto Python come linguaggio di sviluppo backend e, per esempio, Django come framework: Django ha una documentazione nel Django Book, è davvero ottima, contiene tutto ciò di cui ha parlato Zlata, è veramente buona per un principiante.
Aleksey Shternyaev: Inoltre, per un avvio veloce, è utile qualche tutorial di Django Girls, se l'obiettivo è imparare proprio Django. È un tutorial dove in un giorno puoi coprire i fondamenti, comprendere le basi e scoprire di cosa è capace il framework.
Valentin Dombrovski: Preparandoci per la registrazione del podcast, abbiamo stilato un elenco di ciò che serve a un programmatore Python per lo sviluppo web, riassumendo quanto detto in precedenza.
Cosa rientra nelle basi per lo sviluppo web con Python
- Framework web Django, Flask, aiohttp, Tornado, ecc. (e conoscere l'esistenza degli altri).
- Protocolli e API: in primo luogo http, JSON-RPC, Protocol Buffers, gRPC.
- ORM e migrazioni, database relazionali, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Fondamenti di HTML, CSS, Bootstrap, nonché framework JS e JQuery.
- Principi di funzionamento delle applicazioni in produzione, testing, test unitari, test automatici, sistemi di controllo versione, git.
Servono algoritmi a un junior?
Zlata Obukhivska: Inizialmente non è necessario conoscere gli algoritmi, si presenteranno gradualmente in testa, se si lavora a lungo nello sviluppo. Conosco molti buoni ingegneri che non hanno avuto un buon corso formale sugli algoritmi.
Grigory Petrov: Voglio gettare un po' di benzina sul fuoco. Da dove nasce il nostro desiderio di algoritmi?
Attualmente non abbiamo un'educazione fondamentale sugli algoritmi, non sappiamo come insegnare ai programmatori, non c'è una base tecnica.
Si cerca di fare questo, ma qui abbiamo la storia di Hogwarts: non possiamo creare una scuola di maghi se non abbiamo un solo mago. Quindi cosa deve fare l'università, che riceve richieste: «Cominciate a formare programmatori», se non hanno programmatori, perché tutti lavorano in Mail.ru, Rambler e Yandex, dove stanno bene?
All'università guardano e dicono:
— Ok, programmazione. Cerchiamo un'area di conoscenza correlata e invitiamo specialisti da lì. Invitiamo giornalisti che sanno scrivere testi, ingegneri elettrici che sanno fare schemi elettrici e matematici che hanno familiarità con gli algoritmi.
Alla fine risulta che è altrettanto sensato quanto insegnare a un muratore la fisica delle particelle elementari solo perché i mattoni e il cemento sono costituiti da particelle elementari.
Tuttavia, non si parla del cemento e dei mattoni stessi, perché il fisico che prova a insegnare al muratore non sa come costruire case. Alla fine otteniamo un muratore che è in grado di descrivere perfettamente come "funziona il cemento", ma non lo ha mai visto e non sa come utilizzarlo.
Algoritmi e strutture dati sono molto utili, ma rappresentano un'area pratica molto piccola. Sono estremamente 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 servono algoritmi e strutture dati.
La matematica più complessa lì è semplicemente sommare due volte e poi dividere. Servono conoscenze completamente diverse. Per risolvere problemi aziendali, sono principalmente necessarie conoscenze applicative, non fondamentali.
A un nuovo sviluppatore è meglio avere una comprensione del business e di come assemblare rapidamente e correttamente le strutture desiderate da blocchi pronti, come eseguire il debug, come fare in modo che non si sgretolino, sapere perché si sgretolano, cosa succede quando i requisiti cambiano e il programma inizia a "sedersi sulle fondamenta", come una casa dopo la pioggia.
Queste sono le competenze pratiche e la comprensione di come scrivere software. Deve sapere che oltre al debugger ha a disposizione un insieme di strumenti che mostrerà esattamente dove il programma rallenta.
Valentin Dombrovski: Mi è venuto in mente questo confronto: è una traduzione da un linguaggio commerciale a un linguaggio comprensibile ai computer. In altre parole, il programmatore è una sorta di linguista specifico.
Grigory Petrov: Il business ha bisogno di uno scrittore, non di un linguista. Lo scrittore non deve sapere perché mille anni fa questa parola si è trasformata in quella. Deve saper applicare queste parole.
Cosa serve per trovare il primo lavoro come sviluppatore
Aleksey Shternyaev: Probabilmente non esiste una ricetta universale per preparare un junior.
Se arrivi in un'azienda, verrai assunto non per ciò che sai su Django, JSON e un po' di algoritmi. Verrai assunto per le competenze di cui l'azienda ha bisogno qui e ora.
Ci sono molte aziende e ognuna ha requisiti diversi. Non esiste un volume universale di conoscenze che devi acquisire per poi preparare il tuo curriculum e cercare lavoro.
Grigory Petrov: Quando in VoxImplant stavamo cercando alcuni junior, il nostro direttore tecnico ha formulato il requisito base in questo modo: la persona deve essere in grado di risolvere i problemi. È chiaro che un junior non lo farà sempre in modo efficiente, nel miglior modo possibile e non sempre correttamente, ma in ideale si assegna a una persona un compito, si impegna e lo risolve. Questa è la competenza che i datori di lavoro cercano principalmente.
Zlata Obukhivska: Le persone che cercano lavoro provenendo da altri settori hanno, dal punto di vista commerciale, un certo vantaggio, perché hanno già percorso un cammino e sono in grado di risolvere i problemi rapidamente. Queste sono soft skills, io lo chiamerei addirittura cultura del lavoro. Spesso i laureati non hanno ancora sviluppato questa cultura lavorativa.
Ma mi piacerebbe comunque provare a dare qualche ricetta ai principianti.
I primi passi per un giovane sviluppatore
Zlata Obukhivska: Il primo passo è avere un proprio progetto, perché nel curriculum devi scrivere qualcosa, mostrare un minimo di portfolio. È meglio se questi progetti sono stati realizzati non per te stesso, ma per qualcuno, magari come freelance.
Dopo i primi progetti, puoi già fare un curriculum e inviarlo a tutte le aziende che hanno posizioni per junior. I colloqui ti daranno una comprensione di ciò che le aziende richiedono. Prima o poi qualcuno ti assumerà, anche solo in una piccola azienda. Questo esperienza lavorativa ti darà la possibilità di entrare in un'azienda più grande e interessante.
Valentin Dombrovski: A proposito, nei corsi prepariamo gli studenti a creare il proprio progetto in 10 settimane di formazione. Inoltre, alleniamo le abilità di lavoro di squadra. Queste sono proprio le soft skills di cui parlava Zlata.
Aleksey Shternyaev: Per esperienza dico che cercare il primo lavoro può richiedere molto tempo. Quando cercate per un mese o due, è normale. Se inviate curriculum a tutte le aziende e partecipate a colloqui, al terzo mese sicuramente troverete qualcosa.
Valentin Dombrovski: Potete lavorare ai vostri progetti o prendere progetti semplici come freelancer e nel frattempo inviare curriculum.
Quali prospettive ha un sviluppatore Python
Zlata Obukhivska: Un sviluppatore Python può andare ovunque. Può passare al testing, continuare a svilupparsi fino a diventare senior architect. O addirittura nel management. I manager tecnici sono diversi, e si può arrivare alla top management. Si può anche sviluppare in data science, DevOps, passare ai test automatici o machine learning.
Valentin Dombrovski: In generale ci sono moltissime opzioni e possibilità, incluse le nostre corsi. Non serve avere moltissime conoscenze all'inizio, ma è consigliabile ampliarle successivamente, perché più riuscite a fare, meglio è per voi.
***
Questa è solo una parte dell'episodio . La versione completa dell'episodio può essere .
O anche guardata:

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