Luca Morelli
Analista programmatore
Team lead

Tre ruoli, a seconda del progetto e di come è organizzato il cliente.

Il mestiere è lo stesso, analisi e sviluppo su stack Microsoft .NET e web, ma il contesto cambia molto: quanto è ampio il mio perimetro, con chi mi confronto, chi decide cosa sviluppare. Queste sono le tre situazioni in cui lavoro più spesso.

Le tre modalità

01

Sviluppatore full-stack

Con i clienti diretti seguo la richiesta dall'esigenza iniziale fino alla messa in produzione.

A volte si parte da zero, con client, server, base dati e architettura da costruire. Altre volte prendo in carico un'applicazione esistente, con alcune scelte già fatte e margine sui mezzi. Prima di partire c'è sempre una fase di analisi approfondita; durante il progetto il confronto con gli stakeholder resta costante, perché le specifiche evolvono. Negli anni ho usato molte tecnologie; oggi mi appoggio soprattutto allo stack Microsoft.

Cosa ottenete. Un solo interlocutore, senza informazioni che si perdono tra analisi e sviluppo. Faccio domande finché non sono convinto di aver capito abbastanza; da lì i risultati arrivano in modo graduale e visibile.

AngularReact.NET CoreSQL ServerRedisAzure
CasiC-06 · C-07

Di cosa mi occupo

  • Raccolta di esigenze e vincoli con il cliente e gli stakeholder
  • Analisi delle modifiche e della base dati
  • Frontend in Angular o React, backend in .NET Core
  • Infrastruttura: definizione degli ambienti e dei componenti aggiuntivi, come Redis; in alcuni progetti anche la parte DevOps
  • Avvio del progetto e messa in produzione

Dopo il rilascio

  • Il codice è sempre di proprietà del cliente
  • Formo il personale che seguirà il sistema
  • Con alcuni clienti continuo a curare le implementazioni più importanti, mentre manutenzione ed evolutive passano al loro personale
  • Documentazione su richiesta: lavorando fianco a fianco con chi usa il sistema ogni giorno, la conoscenza resta già al cliente

Restano esclusi grafica e contenuti, che seguono il cliente o professionisti dedicati.

02

Sviluppatore in team

Nei progetti più grandi entro in un team esistente che mantiene ed evolve un sistema di notevoli dimensioni.

Il contatto può essere diretto con il cliente o passare da un intermediario. Il perimetro è più stretto, ma dei task che mi vengono assegnati mi faccio carico per intero: analisi, sviluppo e verifica, coordinandomi con le persone coinvolte. Il lavoro del team si organizza e si monitora con gli strumenti del cliente.

Cosa ottenete. Una persona esperta che diventa autonoma senza dover essere seguita passo passo, e che intanto aiuta i profili junior.

.NET CoreAzure DevOpsJiraAgile
CasiC-02 · C-03 · C-04 · C-05 · C-08

Di cosa mi occupo

  • Sviluppo, prevalentemente backend; frontend o full-stack quando il progetto lo richiede
  • Analisi del task e contributo alla sua definizione, grazie all'esperienza maturata
  • Coordinamento diretto con chi lavora sullo stesso task
  • Supporto ai colleghi junior
  • Rispetto di processi, convenzioni e strumenti già in uso nel team. Ho lavorato anche con requisiti di copertura del codice al 100% e test espliciti del bug o della feature come condizione per approvare la pull request

Tempi di inserimento

Su sistemi complessi servono in genere 3–4 mesi per diventare pienamente autonomo. I clienti di solito lo sanno già: per questo gli incarichi in team durano di norma almeno 6 mesi.

03

Team lead tecnico

Su progetti di una certa dimensione guido un gruppo di sviluppo, dal work item approvato al risultato consegnato nei tempi.

Il mio lavoro comincia quando un work item entra in sviluppo. Quanto serve approfondire dipende da com'è organizzato il cliente e dall'analisi già fatta prima dell'approvazione. Di solito conosco il sistema più a fondo del resto del gruppo, ed è questa conoscenza che metto a disposizione del team. Quando il team fa parte di una struttura multi-team, curo anche il coordinamento verso l'esterno.

Cosa ottenete. Chi gestisce il programma ha in me un solo riferimento, come il cliente diretto nel full-stack: chiede che un item sia realizzato, riceve da me richieste di chiarimento e segnalazioni, e trova il lavoro pronto e conforme nei tempi. E un team che resta autonomo anche dopo il mio incarico.

Coordinamento tecnicoCode reviewFormazione juniorMulti-team
CasiC-01

Di cosa mi occupo

  • Analizzo in anticipo il lavoro da fare sulla base delle specifiche di ogni task e lo ripartisco nel gruppo
  • Valuto con il team le conseguenze delle modifiche sul sistema
  • Verifico spesso insieme ai colleghi l'avanzamento dei lavori
  • In revisione controllo che i casi d'uso siano rispettati e che la modifica non introduca regressioni; la qualità del codice è in genere già presidiata da strumenti come SonarQube
  • Seguo e formo i profili junior, sia nell'analisi sia nello sviluppo
  • Nelle strutture multi-team coordino lo sviluppo con gli altri team e servizi, e segnalo al management gli impedimenti esterni

Tempo e dimensioni del team

Il coordinamento richiede tempo: già con un team di 5 persone dedico allo sviluppo circa metà del mio tempo. Ho guidato team fino a 8–10 persone.

In sintesi

Full-stackIn teamTeam lead
Contesto tipicoCliente diretto, progetto nuovo o esistenteSistema di grandi dimensioni, cliente diretto o intermediarioProgetti di una certa dimensione, anche multi-team
PerimetroL'intero progetto, dall'esigenza al rilascioI task assegnati, seguiti per interoIl gruppo e i suoi work item
InterlocutoriCliente e stakeholderColleghi coinvolti nel taskTeam, altri team e servizi, management
AnalisiCompleta, dalle esigenze alla base datiAnalisi del task e contributo alla sua definizioneDettaglio dei work item con il gruppo

Formati, sede e lingue

Formati
A progettoA tempo, per periodiDiretto o tramite software house
Sede
Da remotoIn sede su accordoBase a Perugia
Lingue
ItalianoInglese

Quale di queste modalità serve al vostro progetto?

Curriculum dettagliato e referenze su richiesta.