Ingegnere senior: come condurre un progetto

Alcuni progetti di ingegneria richiedono settimane per essere completati e più senior ottieni, maggiore è la possibilità che finirai per essere responsabile prima o poi. Questo articolo ti darà alcuni consigli su come organizzarti e orientarti per consegnarlo con successo.

Sapere prima di andare

Immagina di dover trasformare una grande app da un codice spaghetti simile a un prototipo in qualcosa di flessibile e testabile. Immagina che non ci siano più persone del team originale e sei la migliore scommessa della compagnia nel vederlo. Hai chiaramente bisogno di un piano su come suddividere questo compito in pezzi più piccoli.

Nel caso in cui stavi pensando di avere un piano in testa, considera quanto segue: scrivere le cose libera la tua capacità mentale, struttura il tuo pensiero e migliora la tua comunicazione. Ti consente anche di informare molte persone contemporaneamente condividendo semplicemente un link, risparmiando tempo a parlare con ognuna di esse. I documenti in questi giorni possono anche essere commentati, rendendoli uno strumento prezioso per ottenere feedback. E le cose nella tua testa? Scommetto che hai già dimenticato qual è il titolo di questo articolo e ci saranno molti dettagli molto più piccoli che dovrai prendere in considerazione nel tuo progetto.

Ma come scriviamo esattamente un piano? Partiamo dalla fase iniziale, Panoramica.

Praticamente ogni piano mai concepito.

Fase panoramica

Crea un documento e annota le condizioni di partenza, l'obiettivo del progetto e un elenco di rischi che vedi. Aggiungi un sommario in modo che il documento sia facile da navigare.

Pensa al tuo stato attuale e annota, forse dopo aver scaricato tutte le tue preoccupazioni e frustrazioni sulla carta, il vero obiettivo del progetto si rivelerà da solo.

Dovresti avere ancora una vaga idea di ciò che l'obiettivo è: considerare chi ha un problema che stai cercando di risolvere? Quali sono le esigenze soddisfatte da esso? Perché è necessario agire ora? Non aver paura di ripetere più volte o di andare troppo in questa fase, puoi iniziare da qualcosa come "Rifattorizza l'app" e finire con "Adatta l'architettura dell'app per rilasci frequenti e massima stabilità".

Dopo aver ottenuto una comprensione generale della situazione, diventeranno visibili i primi rischi dello sforzo. Non hai un designer dell'interfaccia utente? Non hai familiarità con la tecnologia? Scrivi tutto. Dopo aver tenuto conto di tutti i rischi, avremo bisogno di azioni molto particolari che ci aiuteranno a mitigarli. Ad esempio, "Ripristino da backup" potrebbe essere un'azione valida per un rischio di "Migrazione del database corrotta". Ciò che finiremo per fare sarà una versione molto leggera di qualcosa chiamata gestione del rischio.

Ora che abbiamo impostato il nostro stato attuale, obiettivo e rischi, siamo pronti per iniziare a rispondere alla domanda "Come ci arriviamo?" Nella fase di analisi.

Un esempio di un tipico piano di refactoring in fase di analisi intermedia. Sentiti libero di prenderlo in prestito.

Fase di analisi

Suddividere l'obiettivo in un elenco di obiettivi, raggiungendo tutti questi obiettivi significherebbe il successo del progetto. Definire i passaggi per raggiungere ciascuno di essi, assegnare le stime del ballpark e l'ordine di esecuzione.

Gli obiettivi sono in definitiva una risposta alla domanda: cosa significa raggiungere il tuo obiettivo? Personalmente penso che i grandi obiettivi debbano soddisfare i criteri SMART. Un obiettivo come "Modernizza l'app" può tradursi nei seguenti obiettivi:

  • L'architettura supporta più team che ci lavorano contemporaneamente
  • Il tasso di crash è inferiore allo 0,5%
  • Ci vuole meno di un'ora per rilasciare una nuova versione
  • Il time to market di una nuova funzionalità è di 2 settimane

Quando stabilisci bene i tuoi obiettivi, i passi che devi compiere per raggiungerli dovrebbero sembrare ovvi. Delinearli e metterli su carta idealmente ti farà sentire come raggiungere l'obiettivo è solo una questione di tempo. Ma quanto tempo? Ora stiamo parlando di stime.

Le stime non devono essere precise, non devono nemmeno riguardare il tempo che dedichi a un'attività (anche se personalmente preferisco le stime del tempo). Alcuni dicono che sono lì per esercitare pressione su di te, tuttavia non è la ragione principale della loro esistenza. Sono lì per fornire all'azienda un'idea approssimativa su cosa dire a clienti, clienti, partner per motivi di pianificazione del budget.

Per citare Joker: "Nessuno va nel panico quando le cose vanno secondo i piani", quindi è sempre una buona idea costruire una ridondanza nelle tue stime. Se in futuro desideri ottenere più risorse o avere più libertà di azione, dovrebbe essere la tua priorità fare solo promesse che puoi mantenere ed essere onesto quando non hai idea di quanto tempo impiegherà qualcosa.

Se il tuo progetto impiega comunque settimane per realizzarsi, non c'è da vergognarsi nel arrotondare un preventivo. Pensa innanzitutto alla tua sanità mentale e al tuo benessere: la società rischia di perdere molto di più se ti esaurisci e parti, piuttosto che se sarai in ritardo di un paio di giorni.

Bilanciare le esigenze di tutti è in definitiva un problema del commesso viaggiatore. Ha solo soluzioni

Fase di definizione delle priorità

Collaborare con altri membri del team e parti interessate per assegnare priorità a vari obiettivi. Bilancia le esigenze dell'azienda, del team e del cliente.

Ogni progetto ha le parti interessate - le persone interessate al suo successo. Ogni giorno che passa i loro interessi potrebbero cambiare e così cambieranno le priorità di determinati obiettivi che stai cercando di raggiungere. Nessuna persona in azienda ha in mente un quadro completo, quindi dovresti colmare le tue lacune di conoscenza chiedendo aiuto in modo proattivo e accettandolo ogni volta che viene offerto.

Uno dei modelli più popolari di prioritizzazione si chiama RISO, puoi leggerlo qui. Dopo aver effettuato la valutazione iniziale, vale la pena dare un'altra occhiata al tuo piano. Il progetto dovrebbe essere realizzato in più fasi? Forse ha bisogno di una riduzione del campo di applicazione? Forse un aumento? È necessario condividere i risultati preliminari con le parti interessate e mantenere aperto questo canale di comunicazione da entrambe le parti. Fai solo attenzione a non esagerare. Traccia delle linee decise tra il tuo lavoro e la tua vita, altrimenti risponderai ai messaggi il venerdì sera e non lo vorrai. Io spero.

Una volta finalizzato il tuo piano, puoi considerare finita la parte iniziale del tuo progetto. Sì, era solo la parte iniziale. Benvenuti nelle fasi di iterazione.

Questa è Tom Cruise in Edge of Tomorrow. Esaminerà centinaia di volte prima di riuscire. Farai meglio.

Fasi di iterazione

Lavora sul progetto per un determinato periodo di tempo e disponi di un checkpoint. Rivedi il piano con le conoscenze che hai ottenuto. Comunicare le modifiche. Ripeti fino al termine.

Nei progetti di grande sforzo e alta incertezza, le cose di solito non vanno esattamente come inizialmente previsto. Fortunatamente per te - anche i progetti non falliscono mai completamente finché impari qualcosa nel processo e ne fai uso.

Ad esempio: nella metodologia SCRUM il team organizza regolarmente stand-up per emergere nuove problematiche, dimostrazioni per celebrare i progressi e retrospettive per adeguare i processi del team in base alla situazione. Ci sono molti libri scritti su come affrontare la complessità intrinseca e l'imprevedibilità dei prodotti software e ti consiglierei di leggere di più su Lean Startup e Metodologia Agile quando hai tempo.

Questa è una tabella di marcia finita: un diagramma temporale di un piano con 4 obiettivi, suddiviso in fasi con stime temporali.

poscritto

Raccogli feedback dal tuo team e dalle parti interessate, condividi gli insegnamenti chiave con tutti i soggetti coinvolti e festeggia.

I grandi progetti sono difficili e lo sanno tutti. A volte non hanno un fine definitivo, ma solo un cambio di portata. A volte colpiscono la pausa e poi vengono ripresi quando cambiano le priorità. Tuttavia è molto importante mettere un coperchio su un progetto particolarmente lungo e non essere timido per festeggiarlo come intendi.

Organizza una demo finale o una festa di rilascio, pensa a tutto ciò che hai imparato, a tutto ciò che è andato bene e andrà ancora meglio la prossima volta. Spiega agli stakeholder e ai membri del tuo team quanto sei grato per l'opportunità di lavorare con loro e andare, diffondere la parola del tuo successo e dei tuoi apprendimenti in giro per aiutare gli altri a raggiungere con successo i loro obiettivi e imparare dai tuoi errori.

Gli approcci che vedi descritti in questo articolo possono essere applicati a qualsiasi cosa, incluso lo sviluppo personale, i viaggi di famiglia, le imprese e spero che li troverai utili in più di un modo.

Ho perso qualcosa? Hai una visione importante da condividere? Lascia un commento qui sotto. Scriverò di più sulla leadership e sullo sviluppo di app mobili, quindi se ti piace l'articolo, seguimi su Medium o aggiungimi su LinkedIn. Puoi anche fare domanda per Quandoo e aiutare il nostro team a rivoluzionare l'esperienza culinaria.