Luca Morelli
Software engineer e analista
Team lead

Full-stack, in team o 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 sviluppo applicazioni su misura e 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 di scelta sugli strumenti. 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.NETSQL ServerRedisAzure
CasiC-06 · C-07 · C-09 · C-10 · C-11

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
  • 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: lavoro fianco a fianco con chi usa il sistema ogni giorno, così la conoscenza resta al cliente

Restano esclusi grafica e contenuti, di cui si occupano 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.

.NETAzure 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

Soft skill, oltre alle hard skill

Le hard skill, tecnologie e architettura, sono descritte nelle altre pagine. Preferisco progetti in cui vengano valutate anche le soft skill: in ogni modalità di lavoro contano quanto lo stack.

Collaborazione nel team

Coordinamento diretto con chi lavora sullo stesso task e verifiche frequenti sull'avanzamento insieme ai colleghi.

Collaborazione con altri team

Nelle strutture multi-team coordino lo sviluppo con gli altri team e servizi e segnalo al management gli impedimenti esterni.

Valutazione delle necessità

Raccolgo esigenze e vincoli con il cliente e gli stakeholder e faccio domande finché non ho capito abbastanza.

Capacità di analisi

Analizzo i task e le conseguenze delle modifiche sul sistema prima di sviluppare, dalle esigenze alla base dati.

Formazione dei junior

Seguo e formo i profili junior, nell'analisi e nello sviluppo, perché il team resti autonomo dopo il mio incarico.

Troubleshooting

Individuo la causa dei problemi su sistemi complessi, partendo dai sintomi.

Formati, sede e lingue

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

Come iniziare una collaborazione

Quale di queste modalità serve al vostro progetto?

Curriculum dettagliato e referenze su richiesta.