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.
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.
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.
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-stack
In team
Team lead
Contesto tipico
Cliente diretto, progetto nuovo o esistente
Sistema di grandi dimensioni, cliente diretto o intermediario
Progetti di una certa dimensione, anche multi-team
Perimetro
L'intero progetto, dall'esigenza al rilascio
I task assegnati, seguiti per intero
Il gruppo e i suoi work item
Interlocutori
Cliente e stakeholder
Colleghi coinvolti nel task
Team, altri team e servizi, management
Analisi
Completa, dalle esigenze alla base dati
Analisi del task e contributo alla sua definizione
Dettaglio 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?