Python per il web: cosa deve sapere un junior per lavorare e crescere

Abbiamo creato una sintesi con i principali concetti tratti dal Python Junior Podcast: abbiamo discusso su come cominciare e quali direzioni prendere come sviluppatore Python. Ultimamente abbiamo pubblicato molto contenuto per i livelli mid e senior, ma questo episodio è perfettamente adatto per i junior.

Python per il web: cosa deve sapere un junior per lavorare e crescere

Temi principali:

  • Quali competenze sono necessarie a un programmatore alle prime armi per dedicarsi
    allo sviluppo web?
  • Cosa si aspettano i datori di lavoro dagli sviluppatori?
  • Cosa fare per trovare lavoro senza esperienza?
  • Come può crescere uno sviluppatore Python?

Python Junior Podcast — un podcast di programmazione per chi desidera conoscere meglio Python. Le dirette sono condotte da evangelisti della community MoscowPython e insegnanti dei corsi Learn Python.

Hanno partecipato alla conversazione:

  • Valentin Dombrovski,cofondatore di MoscowPython
  • Zlata Obukhovskaia, team lead NVIDIA
  • Grigory Petrov, evangelista di MoscowPython
  • Alexey Shternyaev, sviluppatore in FinEx, insegnante dei corsi Learn
    Python

Perché Python è buono per lo sviluppo web

Valentin Dombrovski: Perché proprio Python è adatto allo sviluppo web? Perché non PHP o JavaScript, ad esempio?

Grigory Petrov: Le scelte non sono tante. Nonostante nel web moderno sia possibile costruire un'applicazione single page o un'applicazione web progressiva quasi esclusivamente con tecnologie frontend come JavaScript, è comunque troppo complesso, si indicizza male e richiede sviluppatori esperti.

Se vogliamo creare un sito o un servizio, utilizziamo un approccio combinato: un backend gestisce la logica e genera le pagine web, mentre un frontend le visualizza nel browser. Quando dobbiamo assemblare tutto rapidamente, le opzioni sono limitate.

Esaminiamo le possibili opzioni.

  • C#. Microsoft ha fatto davvero un ottimo lavoro con .NET Core e lo promuove attivamente. Tuttavia, da un lato è una nuova tecnologia cross-platform e ci sono ancora alcune difficoltà. Dall'altro, è piuttosto costosa e ci sono pochi sviluppatori C#, semplicemente perché non è molto popolare.
  • Java. È complicato. Creare un sito web decente in Java non è come scrivere 10 righe di codice in Python. Ci vuole molto codice, ci sono framework da gestire e bisogna conoscere le specifiche della configurazione dei server Java. In sintesi, è solo dolore e sofferenza.
  • PHP. Nelle ultime versioni è fantastico. Potrei dire: PHP 7.2 non è inferiore a Python. Tuttavia, 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 libri e tutorial, e ci sarà una marea di codice legacy, il che non è il massimo.
  • JavaScript e Node.js. Questo è fantastico e molto moderno, avere un linguaggio sia per il frontend che per il backend. Solo che non è molto stabile. Node.js è una cosa buona, ma è problematico implementarlo in produzione in modo che non cada e funzioni in modo affidabile. Inoltre, se vogliamo scrivere codice di qualità in JavaScript, non ci serve JavaScript, ma TypeScript. E TypeScript è sorprendentemente complesso, al punto che il cervello di uno sviluppatore medio va in crisi alla sola vista.

Tralasciamo 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, framework leggeri molto popolari e il super popolare Django.

Dunque, nonostante l'ampia scelta, se abbiamo sviluppatori comuni, non di punta, e siamo un'azienda che desidera realizzare siti web standard, senza un reparto di sviluppo da 50 persone, ci orientiamo verso Python.

Quali conoscenze sono necessarie per entrare nella professione

Zlata Obukhivska: Credo che sia fondamentale conoscere bene un framework e avere coscienza degli altri, sapendo quando utilizzarli: dove usare Tornado, Django, Flask, aiohttp e così via.
È importante sapere che esistono anche dei protocolli. In particolare, la conoscenza del protocollo HTTP è centrale per la costruzione di applicazioni web.

Inoltre, è necessario avere almeno un'idea di come sia strutturato il frontend nei progetti web: cosa sono HTML, CSS, JS.

Aleksey Shternyaev: E sapere dove si trova la documentazione. Questo è il più importante.

Grigory Petrov: Qui entriamo in un terreno molto instabile. Se non siamo stati fortunati e abbiamo iniziato a studiare seriamente il frontend moderno, esso risulterà circa dieci volte più complesso rispetto al backend in Python. Un sviluppatore alle prime armi dovrebbe limitare il proprio focus all'inizio per imparare HTML, senza perdersi nei div, span, float e in come tutto ciò viene allineato e strutturato.

Aleksey Shternyaev: È necessario un corso base su Bootstrap. E sulle basi di HTML.

Nel primo anno non vale la pena approfondire i framework JS (se ti concentri sul backend). Nel corso base di Bootstrap ci sono già moduli pronti: vuoi uno slider? Fai lo slider, vuoi un menu flottante? Fai il menu flottante.

Zlata Obukhivska: Penso che per imparare il frontend si possa anche approfondire come viene restituita la statica alle web application. Così il programmatori passerà gradualmente a scoprire come in linea di principio è strutturata l'architettura delle web application 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, ad esempio, Django come framework: Django ha documentazione nel Django Book, che è davvero fantastica, tratta tutto ciò di cui ha parlato Zlata ed è davvero utile per un principiante.

Aleksey Shternyaev: Per un avvio rapido va bene anche qualche Django Girls, se l'obiettivo è studiare proprio Django. È un tutorial dove in un giorno si può passare sopra le basi, comprendere le fondamenta e vedere di cosa è capace il framework.

Valentin Dombrovski: Preparandoci per la registrazione del podcast, abbiamo redatto un elenco di ciò che è necessario per un programmatore Python per lo sviluppo web, riassumendo quanto già detto.

Qual è la base per lo sviluppo web con Python

  • Framework web come Django, Flask, aiohttp, Tornado, ecc. (e conoscere anche gli altri esistenti).
  • Protocolli e API: prima di tutto http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM e migrazioni, database relazionali, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Elementi fondamentali di HTML, CSS, Bootstrap, oltre a framework JS e JQuery.
  • Principi di funzionamento delle applicazioni in produzione, testing, unit test, test automatici, sistemi di controllo versione, git.

Servono algoritmi per un junior?

Zlata Obukhivska: All'inizio non è necessario conoscere gli algoritmi, questi si presenteranno da soli nel tempo se si lavora a lungo nello sviluppo. Conosco molti ingegneri bravi che non hanno mai seguito un buon corso formale sugli algoritmi.

Grigory Petrov: Voglio aggiungere un pò di combustibile al fuoco. Da dove deriva la nostra inclinazione per gli algoritmi?

Attualmente non abbiamo un'istruzione di base sugli algoritmi, non sappiamo come formare i programmatori, manca la base tecnica.

Ci stanno provando, ma qui abbiamo la storia di Hogwarts: non possiamo creare una scuola di maghi se non abbiamo nemmeno un mago. Quindi, cosa deve fare l'università, quando arrivano e chiedono: «Iniziamo a formare programmatori», ma non hanno programmatori, perché tutti lavorano in Mail.ru, Rambler e Yandex, e lì si trovano bene?

All'università guardano e dicono:
— Ok, programmazione. Troviamo qualche area di conoscenza affini e invitiamo esperti da lì. Invitiamo giornalisti che sanno scrivere testi, ingegneri elettrici che sanno fare schemi elettrici e matematici che sanno lavorare con gli algoritmi.

Alla fine, risulta che è altrettanto sensato quanto formare un muratore alla fisica delle particelle elementari solo perché i mattoni e il cemento sono composti di particelle elementari.

Inoltre, non si parla nemmeno del cemento e dei mattoni, perché il fisico che cerca di insegnare al muratore non sa costruire case. Alla fine abbiamo un muratore che è capace di spiegare perfettamente come «funziona il cemento», ma non lo ha mai visto e non sa fare niente con esso.

Algoritmi e strutture dati sono importanti, ma rappresentano solo una piccola area applicativa. Sono essenziali, ad esempio, quando si scrive un motore di gioco, un compilatore o un protocollo di rete.

La maggior parte dei programmatori affronta problematiche aziendali dove algoritmi e strutture dati non sono necessari.

Nelle aziende la matematica più complessa consiste nel sommare due volte e poi dividere. Qui servono competenze completamente diverse. Per risolvere le sfide aziendali sono richieste soprattutto conoscenze pratiche, piuttosto che teoriche.

Un sviluppatore alle prime armi farebbe bene a comprendere il business e come assemblare rapidamente le giuste strutture utilizzando componenti predefiniti, debuggare e garantire che non si disintegrino, sapere perché si verificano questi problemi e cosa accade quando i requisiti cambiano e il software inizia a "assestarsi sul fondamento", 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 una serie di strumenti che mostrano esattamente dove il programma rallenta.

Valentin Dombrovski: Mi è venuto in mente un confronto: è una traduzione dal linguaggio degli affari a quello comprensibile dai computer. Cioè, un programmatore è una sorta di linguista specifico.

Grigory Petrov: Un'azienda ha bisogno di uno scrittore, non di un linguista. Lo scrittore non deve sapere perché mille anni fa quella parola si è trasformata in quest'altra. Deve sapere come utilizzare queste parole.

Cosa serve per trovare il primo lavoro come sviluppatore?

Aleksey Shternyaev: Probabilmente non esiste una ricetta universale per preparare un junior.

Se entri in un'azienda, non sei assunto per sapere Django, JSON e un po' di algoritmi. Probabilmente sarai assunto per le competenze di cui ha bisogno quell'azienda in quel momento.

Ci sono molte aziende e ognuna ha requisiti diversi. Non esiste un insieme universale di conoscenze che devi acquisire per preparare il curriculum e cercare lavoro.

Grigory Petrov: Quando in VoxImplant cercavamo alcuni junior, il nostro direttore tecnico ha formulato il requisito di base così: una persona deve essere in grado di risolvere problemi. È chiaro che un junior non lo farà sempre in modo efficace, non nel modo migliore e non sempre correttamente, ma idealmente, dai un compito alla persona, si impegna e lo risolve. Questa è l'abilità che i datori di lavoro cercano principalmente.

Zlata Obukhivska: Le persone che cercano lavoro passando da altri settori hanno, dal punto di vista aziendale, un certo vantaggio, perché hanno già percorso un certo cammino e sanno risolvere problemi rapidamente. Queste sono soft skills, e io lo chiamerei addirittura cultura del lavoro. Spesso i laureati non hanno ancora sviluppato questa cultura del lavoro.

Ma vorrei comunque provare a fornire una sorta di ricetta per i principianti.

Primi passi per un sviluppatore alle prime armi

Zlata Obukhivska: Il primo passo è comunque avere un proprio progetto, perché è necessario scrivere qualcosa nel curriculum e mostrare un minimo portfolio. È meglio se questi progetti sono realizzati non solo per sé stessi, ma per qualcun altro, ad esempio come freelance.

Dopo i primi progetti, è possibile iniziare a scrivere un curriculum e inviarlo a tutte le aziende che hanno posizioni per junior. I colloqui offrono una comprensione delle esigenze delle aziende. Prima o poi, qualcuno vi assumerà, anche in una piccola azienda. Successivamente, questa esperienza lavorativa vi darà l'opportunità di entrare in un'azienda più grande e interessante.

Valentin Dombrovski: A proposito, nei nostri corsi prepariamo gli studenti a realizzare il proprio progetto entro 10 settimane di formazione. Inoltre, alleniamo le competenze di lavoro di squadra. Questi sono proprio quei soft skills di cui parlava Zlata.

Aleksey Shternyaev: Dalla mia esperienza, posso dire che trovare il primo lavoro può richiedere molto tempo. Quando cercate per un mese o due, è normale. Se inviate il curriculum a tutte le aziende e partecipate ai colloqui, entro il terzo mese troverete sicuramente qualcosa.

Valentin Dombrovski: È possibile lavorare sui propri progetti o prendere progetti semplici da freelance e nel frattempo continuare a inviare curriculum.

Quali prospettive ha uno sviluppatore Python?

Zlata Obukhivska: Un sviluppatore Python può intraprendere diverse strade. Può passare al testing, continuare a crescere fino a diventare un architetto senior, o persino dedicarsi alla gestione. I manager tecnici sono di vario tipo, e si può arrivare fino ai vertici della direzione. È possibile anche specializzarsi in data science, DevOps, automazione dei test o machine learning.

Valentin Dombrovski: In generale, ci sono molte opzioni e opportunità, compresi i nostri corsi. Non è necessario avere molte conoscenze di partenza, ma è consigliabile espandere il proprio raggio d'azione, perché più competenze si acquisiscono, meglio è per il proprio futuro.

***

Questa è solo una parte dell'episodio. Python Junior. La versione completa dell'episodio può essere ascoltata.

O anche vista:

Riproduci video

RSS del podcast

Grazie per aver letto, ascoltato o guardato.

Fonte: habr.com

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster