È normale lavorare su grandi progetti software senza praticamente nessun senior engineer/architect?
Lavoro da circa un anno come software engineer in un’azienda che sviluppa software per il settore difesa.
Per semplificare: una grande azienda della difesa chiede alla mia azienda un software per una certa funzionalità/display/aereo, e noi lo sviluppiamo. Siamo probabilmente una via di mezzo tra consulenza e prodotto.
C’è una cosa che però non riesco a spiegarmi, e onestamente sta iniziando a farmi odiare questo lavoro.
Da un anno lavoro sempre sullo stesso progetto. In pratica stiamo sviluppando da zero due componenti software importanti per un nuovo velivolo. Il team è composto da:
- persone che parlano con i clienti/utilizzatori finali (piloti ecc.)
- persone che scrivono i requisiti
- persone che si occupano della grafica/UI
- e poi il mio team, che sviluppa il software vero e proprio
Il problema è che non ci sono praticamente senior engineer.
A parte un manager che coordina il progetto, siamo tutti junior. La maggior parte delle persone ha tra i 6 mesi e 1 anno e mezzo di esperienza, massimo 2. E onestamente ho la sensazione di non stare imparando come funziona davvero lo sviluppo software “serio”.
Quello che sento mancare è qualcuno che definisca l’architettura del progetto e che spacchetti i problemi in modo corretto.
I task sono tecnicamente divisi, ma più nel senso:
“Tu occupati di questa feature enorme.”
Solo che quella “feature” magari contiene 10+ sottofunzionalità e una complessità interna notevole.
Quindi sì, alla fine produco codice che compila e funziona, ma ho continuamente la sensazione di stare mettendo pezze su pezze senza una direzione chiara o una visione di lungo periodo.
Quello che mi sembra mancare è qualcuno che dica:
- “Per questo problema usiamo questa architettura.”
- “Questi componenti comunicano in questo modo.”
- “Questo è il flusso dei dati.”
- “Qui ha senso usare questo algoritmo/questa struttura dati.”
- “Queste saranno le interfacce/API.”
- “Organizziamo il software in questo modo.”
Un’altra cosa che mi pesa è che mancano proprio figure tecniche senior a cui fare domande.
Se mi blocco su un bug complicato, un problema di design o di implementazione, non c’è davvero un engineer esperto con cui confrontarsi. Certo, posso debuggare da solo, usare Claude/Codex, leggere documentazione e alla fine trovare una soluzione, ma mi urta comunque il fatto che non esista una vera guida tecnica interna al team.
Le uniche figure senior sono i manager, ma fanno più da collegamento tra noi developer e i clienti/executive. Facciamo circa una call a settimana sugli avanzamenti del progetto, ma le discussioni sono più del tipo:
“Quella funzionalità sta andando?”
“Bene, continua così.”
Non vere discussioni tecniche o di engineering.
Forse avevo aspettative sbagliate, ma mi ero sempre immaginato che in uno sviluppo software “serio” ci fossero:
- un software architect/system architect che definisce la struttura generale (c'è una figura simile, ma più lato sistema, cioè definisce "cosa vogliono", ma non come farlo)
- senior engineer che prendono in carico macro-funzionalità e le suddividono in task più piccoli
- junior che implementano componenti più isolati imparando dai senior
Invece qui sembra più un gruppo di junior che cerca collettivamente di capire cosa fare man mano che il progetto procede.
E sinceramente, dato che vorrei davvero costruirmi una carriera in questo mondo e arrivare un giorno a ruoli come staff engineer, lead engineer o architect, inizio a sentirmi perso. Non capisco se questo ambiente mi stia davvero facendo crescere oppure se mi stia mancando quel tipo di mentorship e struttura tecnica che normalmente si dovrebbe avere all’inizio della carriera.
È una situazione normale nell’industria?
È un problema della mia azienda/team?
Oppure sono io ad avere aspettative sbagliate su come funziona davvero lo sviluppo software professionale?