Persone, prodotti e tecnologia: una guida per principianti alla gestione ingegneristica

Pubblicato: 2022-03-11

In qualità di ingegnere del software, le tue responsabilità sono generalmente definite in modo molto chiaro: i compiti ti vengono assegnati e il tuo compito è implementarli in tempo ed efficacemente.

Nel ruolo di responsabile tecnico, tuttavia, le responsabilità spesso non sono definite in modo così chiaro. La gestione non è binaria; non ci sono risposte dirette a determinate domande e problemi. Il tuo successo come manager dipenderà da quanto sarai in grado di guidare il tuo personale, gestire il tuo prodotto e amministrare le tue tecnologie.

Le persone sono la tua priorità

Nel ruolo di responsabile tecnico, la tua nuova priorità è il tuo team. Quindi, come ti assicuri di avere una grande squadra?

Costruire una squadra e stabilire la fiducia

Il primo passo è assicurarti di assumere le persone giuste per il tuo team se non hai già un team in atto.

Una cattiva assunzione non solo farà perdere tempo, ma farà sprecare anche il tempo degli altri membri del tuo team, che dovranno recuperare il gioco. Questo demoralizzerà il resto della tua squadra. Anche se una persona è un programmatore brillante, può comunque essere una pessima assunzione se non si adatta bene alla cultura del team.

Assicurati di porre non solo domande tecniche, ma anche domande aperte sul lavoro in un team o sull'assunzione di un ruolo di leadership. Ad esempio, chiedi a un candidato:

  • Per descrivere un problema recente che hanno dovuto risolvere
  • Come hanno implementato la soluzione
  • Quali approcci alternativi hanno considerato
  • Per parlare di un momento in cui hanno avuto un problema critico nella produzione, come hanno reagito e cosa hanno fatto per prevenire lo stesso tipo di problema in futuro

Una volta che hai una squadra, dedica del tempo per guadagnare il rispetto della tua squadra e stabilire la fiducia. Per guidare un team in modo efficace, è necessario sviluppare una relazione sana con i membri del team. Prenditi del tempo per capire i loro obiettivi di carriera e cosa è importante per loro.

L'incontro one-to-one è uno strumento essenziale per creare un legame con ciascuno dei membri del tuo team e conoscerli meglio. Qual è la frequenza ideale delle riunioni individuali? Dipenderà dalle esigenze specifiche dei membri del tuo team, ma è una buona idea incontrarli almeno un paio di volte al mese.

Tuttavia, se tu e il tuo team collaborate a stretto contatto o se disponete di un team numeroso, potete condurre riunioni una volta al mese.

In che modo i responsabili dell'ingegneria potenziano e migliorano i team

Gran parte del tuo lavoro si basa sull'identificazione dei punti di forza e di debolezza dei singoli membri. Aiutali ad affrontare i loro punti deboli accoppiandoli con un ingegnere senior ed eseguendo frequenti revisioni del codice e concentrandoti sui loro punti di forza. Dopotutto, sono i nostri punti di forza che ci motivano e danno forma a ciò che ci piace fare.

Assegna compiti in base alle capacità e ai tratti di ciascun ingegnere al fine di estrarre il meglio da ogni persona e creare una grande squadra. L'automazione può fare molto in questo senso. Configurare l'integrazione continua per identificare il codice non funzionante o non ottimale e la persona che esegue il commit di tale codice frequentemente.

I membri del tuo team cercheranno costantemente di imparare, migliorare e crescere nelle aree che contano per loro o per il team. I ruoli e le responsabilità che avevano senso per ogni membro del team l'anno scorso potrebbero non essere più adatti quest'anno. Per garantire che ogni membro del team continui a sentirsi sfidato e a migliorare:

  • Presta molta attenzione alla loro crescita personale, investi nel loro sviluppo e aiutali a realizzare le loro ambizioni.
  • Incontra individualmente i membri del team per creare piani di sviluppo personale e consentire loro di mappare le loro strategie di carriera.
  • Cerca di dedicare più tempo allo sviluppo personale, consenti ai membri del team di scambiarsi periodicamente i ruoli e organizza workshop interni o corsi di formazione.

Oltre a garantire la crescita professionale di tutti, la responsabilità di un manager di ingegneria è quella di proteggere il proprio team. Dovresti consentire al tuo team di prendere decisioni senza aver paura del fallimento. Se le cose falliscono, prenditi la responsabilità e impara dagli errori.

Ciò promuoverà l'audacia nel tuo team mentre prova nuovi approcci e sviluppa una mentalità di crescita. Detto questo, gli errori non dovrebbero verificarsi più di una volta se hai fornito un feedback adeguato e hai intrapreso azioni tempestive per guidare il tuo team nella giusta direzione.

Responsabili di prodotto e Responsabili di ingegneria

Il secondo aspetto importante del ruolo di un responsabile tecnico è il prodotto. Dovrai creare una stretta relazione con il product manager per allineare le aspettative e sfruttare la tecnologia e le capacità del tuo team per fornire un ottimo prodotto.

Ecco sei responsabilità di manager ingegneristico che dovresti perseguire:

Assicurati che il progetto abbia una buona priorità

Qual è l'obiettivo da sei a 12 mesi per la tua squadra? Chi è il tuo pubblico? Cosa si aspettano i tuoi clienti dal prodotto? Il tuo team probabilmente sa su cosa lavorerà nelle prossime settimane, ma è fondamentale capire l'intero prodotto e dove è diretto.

Essere coinvolti nelle decisioni di sviluppo del prodotto

In qualità di responsabile tecnico, lavorerai con diversi team e sarai più coinvolto nella direzione del prodotto e negli aggiornamenti del prodotto rispetto a come collaboratore individuale. Non devi necessariamente essere d'accordo con ogni decisione relativa al prodotto, ma devi credere nel prodotto e volerlo migliorare. Puoi sfidare il product manager se non sei d'accordo con la sua decisione, ma tieni presente che il product manager ha l'ultima parola. Rispettali e supporta le loro decisioni.

Definire e guidare la strategia tecnica e la metodologia di sviluppo

Mentre il compito del product manager è definire la strategia e i concetti del prodotto, il tuo ruolo è definire la visione architettonica e il design tecnico del prodotto. Sei anche responsabile della definizione della metodologia di sviluppo e della sua adozione da parte del team. Ricorda: il product manager può essere il proprietario del prodotto, ma tu e il tuo team siete i proprietari dell'implementazione del prodotto.

In alcuni casi, potrebbe essere possibile implementare funzionalità utili con un piccolo sforzo di progettazione. Ad esempio, verifica se l'aggiornamento alla versione più recente del framework utilizzato dal prodotto può aiutarti a implementare alcune funzionalità specifiche in modo più rapido o più efficiente. Avere una buona panoramica del prodotto può aiutare te e il tuo team a identificare tali casi e suggerirli al product manager.

Bilancia la creazione e il rimborso del debito tecnico e lo sviluppo di nuove funzionalità

Quando costruisci il tuo prodotto minimo vitale, il time to market è la priorità assoluta, quindi potresti accumulare debiti tecnici. Con l'evoluzione del prodotto, l'attenzione si sposta sull'aggiunta di nuove funzionalità e sul miglioramento del prodotto, rimborsando al contempo il debito tecnico. Senza affrontare i compromessi che hai fatto inizialmente, l'aggiunta di nuove funzionalità richiederà più tempo e sarà più costosa. Prenditi del tempo per capire e tenere traccia dei compromessi che hai fatto e trovare un equilibrio tra la risoluzione del debito e l'aggiunta di nuove funzionalità.

Usa la tecnologia e l'automazione per aiutare a gestire il debito tecnico**

Utilizza le analisi statiche del codice sorgente per identificare il codice con il maggior numero di indici di manutenibilità e dare priorità al refactoring del codice. In questo modo, diventa più facile lavorare su nuove funzionalità e le prestazioni del prodotto saranno migliorate.

Assicurati che l'esecuzione del prodotto sia sulla buona strada

Dovresti avere una comprensione dello stato attuale del lavoro del tuo team. Se la tua squadra è in ritardo, identifica i blocchi apparenti e rimuovili. Ad esempio, se il team si blocca regolarmente su problemi tecnici, organizza sessioni frequenti di programmazione in coppia per migliorare la condivisione delle conoscenze tra i membri del team. Se il team dedica molto tempo alla distribuzione del codice sui server, automatizza il processo per risparmiare tempo e renderlo meno soggetto a errori. Riduci al minimo le interruzioni e crea processi chiari su come affrontare il nuovo lavoro e affrontare le segnalazioni di bug.

Tecnologia e delega

Anche se sei ancora un ingegnere, come manager, lo sviluppo di soluzioni software non è più la tua funzione principale. Hai ingegneri senior nel tuo team e sono responsabili della maggior parte delle soluzioni tecniche. I generali non combattono guerre con i fucili; i manager non dovrebbero dover microgestire ogni riga di codice.

Tuttavia, è necessario utilizzare la propria conoscenza ed esperienza per garantire che le decisioni prese dagli ingegneri senior si adattino alla tabella di marcia e alla direzione tecnica del prodotto. Delega le decisioni tecniche ai tuoi ingegneri senior, ma poni le domande giuste per garantire che il prodotto sia scalabile, sicuro e affidabile.

Ad esempio, sfida le loro scelte con "E se avessimo 20 volte più utenti? Sarebbe sostenibile?” o "Questa tecnologia sarà ancora supportata tra due o tre anni?"

Puoi e dovresti proporre soluzioni e framework alternativi basati sulle tue conoscenze e aree di competenza, ma non forzare o esercitare pressioni sul tuo team per accettarli. Oltre ai suggerimenti tecnologici, puoi anche formulare raccomandazioni relative al processo di sviluppo e alla metodologia.

Inoltre, assicurati di monitorare le metriche chiave del prodotto. Le metriche aziendali e tecniche sono ugualmente importanti. Collabora con il team DevOps per creare allarmi per il monitoraggio del sistema e mantieni il tuo team informato sui problemi operativi. Infine, sviluppare una metodologia per affrontare gli incidenti quando si verificano per garantire che non si ripetano.

Ultimo ma non meno importante, rimani aggiornato con le ultime tecnologie e tendenze. Più scelte hai e più conosci, più soluzioni e framework avrai a tua disposizione. Dedica un po' di tempo per leggere articoli, revisionare il codice e partecipare a discussioni tecniche con il tuo team.

Più conosci le questioni tecniche, più il tuo team ti rispetterà. Avere familiarità con le tecnologie nuove ed emergenti e incoraggiare il tuo team a fare lo stesso ti aiuterà a creare un'atmosfera di curiosità e sfiderà il tuo team a cercare modi nuovi e innovativi per risolvere problemi tecnici complessi.