CodeGym /Corsi /JAVA 25 SELF /Il percorso del programmatore

Il percorso del programmatore

JAVA 25 SELF
Livello 7 , Lezione 6
Disponibile

1. Scala di carriera

Anche tra i programmatori esistono livelli a seconda della qualificazione. Un tempo si usavano termini come «coder», «programmatore» e «hacker», ma oggi tutti sono passati alle denominazioni in inglese dall’IT statunitense.

Per uno sviluppatore ci sono 6 livelli principali:

  • Intern Software Engineer
  • Junior Software Engineer
  • Middle Software Engineer
  • Senior Software Engineer
  • TechLead
  • Principal Software Engineer

Da paese a paese e perfino da azienda ad azienda alcuni parametri possono variare, ma l’idea è più o meno questa:

  • 🌱 Intern Software Engineer — sono tirocinanti. Sono nel pieno del processo di apprendimento della programmazione, non hanno alcuna esperienza commerciale né esperienza in grandi progetti. Di solito lavorano sotto la supervisione di colleghi più esperti. Il loro compito principale al lavoro è studiare la codebase e le basi dello sviluppo software, svolgendo semplici task di coding e partecipando ai test.
  • 🐣 Junior Software Engineer — sono già programmatori, ma senza una seria esperienza commerciale o con meno di un anno di esperienza. Lavorano sotto la guida di sviluppatori più esperti, implementando parti dei progetti e partecipando ai cicli di code review. Questa fase della carriera è focalizzata sull’approfondimento delle competenze tecniche e sulla comprensione dei requisiti di progetto.
  • 🦾 Middle Software Engineer (o semplicemente Software Engineer): hanno maggiore autonomia nelle decisioni tecniche, sono responsabili di parti significative del progetto, iniziano a fare mentoring dei colleghi meno esperti e partecipano più attivamente alle discussioni architetturali. Di solito hanno 2–5 anni di esperienza pratica.
  • 🧑‍🔬 Senior Software Engineer: sono responsabili della progettazione e dell’implementazione di sistemi complessi, garantiscono mentoring e leadership all’interno del team, partecipano alla pianificazione strategica dei progetti e spesso rappresentano il team nelle interazioni con clienti e altre parti interessate. Di solito hanno 5–10 anni di esperienza.
  • 🧠 TechLead: è responsabile del risultato tecnico finale del progetto, guida lo sviluppo, risolve i problemi più complessi, assicura il rispetto degli standard tecnici e coordina l’attività degli sviluppatori.
  • 🏆 Principal Software Engineer: opera al livello tecnico più elevato, spesso contribuisce alla definizione della strategia tecnologica dell’azienda, allo sviluppo di soluzioni innovative e alla definizione degli standard tecnici, funge da principale mentor per i leader tecnici ed è un esperto chiave nelle questioni tecniche complesse.

Curiosità. Le grandi aziende possono avere ruoli e sottoruoli aggiuntivi. Ad esempio, in Google esistono questi ruoli:

  • Staff Software Engineer (L6): ha un’influenza significativa sulla politica tecnica del proprio reparto.
  • Senior Staff Software Engineer (L7): lavora su progetti su larga scala e complessi, definisce l’orientamento strategico dello sviluppo tecnologico in azienda.

2. Prodotti Lego

Molto tempo fa (nel 1975) Niklaus Wirth, creatore del linguaggio Pascal, scrisse il libro «Algoritmi + Strutture dati = Programmi». Da allora è cambiato molto. Il prodotto software moderno non è ciò che era 10 anni fa, e tantomeno ciò che era 20 anni fa. Del 1975 non parliamone — da allora sono passati 50 anni ⏳

Il programmatore moderno non scrive più i programmi a mano. Piuttosto li assembla da componenti già pronti (librerie) e scrive codice che aiuta queste parti a interagire tra loro 🧩. I prodotti software moderni possono essere composti da decine o centinaia di programmi. Alcuni vengono eseguiti sul computer dell’utente, sui suoi dispositivi mobili, ma la maggior parte — sui server nei data center.

Molti di questi programmi, come un web server o un database, sono già stati scritti. Bisogna solo configurarli correttamente affinché funzionino come desiderato. Anche se con il tempo il processo di configurazione può diventare così complesso da trasformarsi di fatto in sviluppo. 🤦‍♂️

I programmatori lottano costantemente con se stessi. Invece di riscrivere più volte codice simile in programmi diversi, creano librerie che si possono configurare per le proprie esigenze e poi le collegano ovunque serva.

Negli ultimi 20 anni i programmatori hanno scritto un’enorme quantità di librerie, framework e repository open source. Ce ne sono letteralmente milioni. E ora scrivere tutto il codice da zero è considerato di cattivo gusto. Al contrario, bisogna assemblare il programma a partire da soluzioni di qualità e collaudate — librerie, framework, package e moduli 🧱

Ma anche questo approccio sta già invecchiando. La tendenza degli ultimi 10 anni è la migrazione al cloud, grandi data center che forniscono alle vostre applicazioni tutto ciò di cui hanno bisogno. Volete un database? Ne abbiamo centinaia tra cui scegliere. Volete un web server raro e unico? C’è anche quello! Ogni capriccio, purché paghiate.

3. «Io sono un ingegnere» © Elon Musk

img

Non è più necessario scrivere da soli cose complesse e noiose. Se ti serve una certa funzionalità, esistono già librerie e framework pronti. Il tuo compito: a) conoscerne l’esistenza, b) trovare l’opzione più adatta (spesso esistono analoghi multipli, con qualità e sfumature diverse), c) capire come integrarla nel tuo progetto 🎓

Il lavoro è diventato solo più interessante. Ora puoi aggiungere una nuova funzionalità al prodotto 10 volte più rapidamente. Trent’anni fa, se ti serviva un web server, lo scrivevi da zero. Vent’anni fa — lo compravi, lo installavi e lo configuravi. Oggi — entri semplicemente nel portale cloud di Azure o AWS e attivi il servizio necessario 🌐

Questa, tra l’altro, è una delle ragioni della popolarità del linguaggio Java. È eccellente non solo per lo sviluppo di grandi soluzioni enterprise, ma anche per «incollare» componenti diversi — grazie al ricco ecosistema della JVM esistono integrazioni praticamente con qualsiasi cosa: database, microservizi, REST API, sistemi di messaggistica, servizi cloud, piattaforme analitiche.

Di conseguenza, la professione di Java Software Engineer si è da tempo trasformata in Fullstack Java Developer. Per lo sviluppatore moderno è importante capire come funziona un database (PostgreSQL, MySQL/MariaDB, MongoDB ecc.) per impostare un’interazione corretta. Bisogna comprendere come è fatto il frontend (HTML, CSS, JavaScript/TypeScript, React, Angular) per configurare lo scambio con la parte backend in Java (Spring Boot, Micronaut, Quarkus). E, naturalmente, oggi senza Docker non si va da nessuna parte — è ormai uno standard del settore 🐳.

Lo sviluppo moderno è molto diverso da quello di 20 anni fa. Il programmatore scrive codice non più del 50% del tempo — il resto va in lettura della documentazione, studio di nuove tecnologie, progettazione e lavoro di team in riunioni. I programmatori solitari sono ormai piuttosto un’eccezione rara.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION