Come si gestisce il tempo in una software house? La nostra esperienza
Time management
La fine dell’anno è “tempo di bilanci”. È un periodo in cui si guarda al passato per verificare ciò che si è fatto negli ultimi dodici mesi e poi si rivolge lo sguardo al futuro per prepararsi a ciò che verrà. E nel frattempo si rifiata, in attesa dell’arrivo del nuovo anno: oggi di un 2024 che per il mondo dell’informatica – basti pensare alla consacrazione dell’AI – si preannuncia scoppiettante. E, dobbiamo dire, anche per noi.
Questo è il motivo che ci ha spinti a dedicare quest’ultimo articolo del 2023 proprio al tempo, in particolare alla sua gestione in una realtà lavorativa come la nostra: una software house.
Condividendo la nostra esperienza proveremo a rispondere alla domanda...
Quali sono le “time best practice” che un programmatore o un team di programmatori può attuare per lavorare in modo più efficace ed efficiente?
Tra l’altro, la gestione efficace del tempo è spesso trascurata ma cruciale per il successo di qualsiasi azienda. E lo è in particolare in un settore in costante evoluzione come lo sviluppo del software, dove i progetti sono spesso molto complessi e i tempi sono stretti.
Gestire accuratamente il tempo attraverso una sua pianificazione intelligente è fondamentale.
Ecco quindi i nostri “6 step” che ti consigliamo di seguire per gestire meglio il tuo tempo programmando.
Passi che noi stessi, qui a ESSE I, proviamo a rispettare giornalmente – anche se dobbiamo migliorare ancora molto – sperando, dopo un ottimo 2023, che ci diano modo di continuare a fare bene anche nel 2024.
1) L’analisi prima di tutto!
Quando in ESSE I prendiamo in carico un nuovo progetto, smaltiti l’onore e la gioia di trasformare un’idea in “realtà digitale”, ci rendiamo sempre conto dell’onere e della responsabilità di mantenere la promessa fatta al cliente.
Pensiamo che la chiave per riuscirci risieda innanzitutto nella pianificazione strategica del progetto che mettiamo in pratica:
-
conducendo un’analisi approfondita dei requisiti;
-
stabilendo obiettivi S.M.A.R.T. (cioè specifici, misurabili, raggiungibili, rilevanti e basati sul tempo);
-
“schedulando” scadenze realistiche, ossia date entro le quali ci impegniamo a terminare le fasi di sviluppo coordinando il nostro team.
Come riportiamo nella nostra homepage, siamo una compagnia “agile”, ciò significa che utilizziamo metodologie (come Scrum) che facilitano una pianificazione più flessibile e adattabile alle mutevoli esigenze di ciascun progetto.
2) L’importanza di “priorizzare”
Una software house può affrontare molteplici attività quotidiane tra cui sviluppo del codice, test, risoluzione di bug e comunicazione con i clienti.
Per questo motivo, prima ancora di eseguirle, riteniamo che comprendere la loro priorità sia fondamentale. L’identificazione delle attività più critiche e il loro completamento iniziale possono contribuire a garantire che i progetti procedano senza intoppi, riducendo al minimo gli ostacoli.
But the question is: come si dà priorità a un’attività rispetto a un’altra?
Dipende senza dubbio dall’importanza che le attribuiamo. Stabilire obiettivi (come detto prima di tipo S.M.A.R.T.) è il primo passo che costringe a “visualizzarne” i risultati. Se anche tu lo farai, sappi che sarai poi in grado di vedere più chiaramente cosa aggiungere alla to do list, quali ostacoli incontrerai lungo il cammino e come allocare il tempo necessario.
Una tecnica famosa che aiuta a tale scopo è la matrice di Eisenhower, uno strumento per il processo decisionale che prevede la classificazione di tutte le attività in quattro aree.
La puoi mettere in pratica da subito semplicemente tracciando una grande croce su un foglio a dividere lo spazio in quattro aree nelle quali riportare le attività in questo modo:
- attività importanti e urgenti: compiti fondamentali a cui prestare la massima attenzione;
- attività importanti ma non urgenti: compiti importanti a cui allocare del tempo facendo in modo che non diventino importanti e urgenti (ossia che non debbano essere spostati nell’area 1);
- attività non importanti ma urgenti: compiti che ostacolano il raggiungimento dei tuoi obiettivi. In pratica, se richiedono troppo tempo delegali a terzi o impara a dire di no (quindi eliminali) senza farti troppi scrupoli;
- attività non importanti e non urgenti: compiti che puoi non svolgere, cancellandoli, o che puoi spostare in area 2 successivamente.
Altri metodi e tecniche utilizzabili per l’organizzazione del tempo sono il principio di Pareto (o regola 80/20) e la tecnica del pomodoro.
La tecnica del pomodoro
Quest’ultima è particolarmente interessante anche perché nemica dello stress (che vedremo alla fine). Suggerisce di dividere la giornata lavorativa in sessioni di mezz’ora secondo i seguenti compiti da svolgere in modo ciclico:
- definisci un task (ad esempio il coding di una bella funzione algoritmica);
- imposta un timer di 25 minuti usando qualcosa che “suoni”, va bene anche l’orologio del cellulare;
- inizia il task: dacci dentro con la tastiera cercando di rispettare il tempo a disposizione;
- al “cicalino” fai una pausa di 5 minuti;
- ricomincia ma cambiando attività di coding, e ogni 4 cicli fai una pausa di almeno 15 minuti.
3) Usa strumenti adatti
L’utilizzo di strumenti dedicati alla gestione del tempo e dei progetti è altrettanto cruciale. Non parliamo certamente di carta e penna ma dell’uso di tool digitali atti a questo scopo come Trello e Asana (anche se l’elenco è vastissimo, basta gugolare “time management tools” per trovarne a decine).
In ESSE I utilizziamo Jira che ci consente di tenere traccia dei lavori e della loro pianificazione. Ma in molti casi sono sufficienti strumenti gratuiti come il popolarissimo Google Calendar e Google Task. Con questi è già possibilissimo monitorare le attività, assegnare compiti ai membri del team, verificare lo stato dei progetti e gestire le scadenze.
Insomma, per noi ciò che conta è iniziare a usarne uno se ancora non lo si sta facendo. Una volta acquisita l’abitudine (mai sottovalutare la forza delle abitudini) a questo genere di strumenti, ti verrà naturale “switchare” a un altro tool più avanzato e più adatto alle tue esigenze.
4) Sfrutta i “blocchi di tempo dedicati”
Un approccio efficace alla gestione del tempo è l’utilizzo di “blocchi di tempo dedicati” a specifiche attività.
Anziché concentrare più attività nello stesso periodo, perché non realizzarne una specifica in un arco temporale così da ottimizzare il lavoro, evitando il rischio di distrazioni dovute al “passaggio” da un’attività a un’altra?
Ad esempio, qui in ESSE I spesso riserviamo determinati momenti della giornata per lo sviluppo del codice, altri per le riunioni del team e altri ancora per la risoluzione di problemi, evitando di accavallare simili attività nell’arco delle stesse ore. Tutto ciò contribuisce a mantenere una routine lavorativa organizzata e senza troppe distrazioni.
5) Impara a delegare
Ti raccontiamo questa: fino a qualche tempo fa ci occupavamo noi stessi della comunicazione aziendale. Oltre a essere un’attività molto diversa dal coding che il personale interno, per ovvi motivi, non era idoneo a svolgere in modo efficace, ci toglieva un mucchio di tempo prezioso distraendoci dal nostro lavoro quotidiano fatto di riunioni tecniche, sessioni consulenziali e, soprattutto, “coding puro”.
Così abbiamo deciso di delegare questo compito a un collaboratore esterno che, implementando strategie chiare e strumenti idonei, non solo ha migliorato la comunicazione esterna, ma ha anche contribuito a quella interna, e questo senza mai interrompere il nostro flusso di lavoro.
Trattandosi di un investimento, non tutte le software house hanno la possibilità di delegare – come abbiamo fatto noi – questa attività fondamentale in grado di costruire o cementare la reputazione, ossia la base della fiducia tra l’azienda e i suoi stakeholder, che si traduce in fidelizzazione e nuove commesse.
Se si deve fare tutto da soli, l’unica via è impostare orari specifici per la creazione e la pubblicazione di post. Anche se probabilmente non risolve il problema dovuto al differente ambito in cui attività come marketing e comunicazione operano rispetto al coding. Tradotto: un programmatore di solito non è skillato per comunicare in modo efficace. Ma le eccezioni – nello specifico i coder con un’indole comunicativa – anche se rare esistono. Buona ricerca!
Comunque attenzione: la delega non riguarda solo la comunicazione.
Il punto è saper delegare identificando le competenze uniche di ciascun membro del team e assegnargli compiti in linea con le sue capacità.
Il punto è saper superare l’indole tipica del nerd che tende a occuparsi di tante, troppe cose.
Il nostro approccio è quindi ormai molto orientato alla delega, non è un caso se abbiamo una pagina del sito in cui al momento mostriamo tre “ruoli vacanti” che speriamo di poter colmare presto.
E crediamo che saper delegare, cosa non affatto facile, sia utile perché aumenta l’efficienza complessiva del team, ergo il valore dell’azienda e del brand.
Per cui anche se sei un programmatore freelance, non scartare l’idea di delegare parte del tuo lavoro a un altro coder: potresti pensare di guadagnare meno, ma in realtà accrescerai il valore reale e percepito del tuo software e, di conseguenza, della tua azienda, mettendoti nelle condizioni di aumentare i tuoi prezzi e, quindi, crescere anche economicamente.
6) Gestisci lo stress
Vogliamo infine ricordare che la gestione del tempo non riguarda solo la produttività, il “macinare lavoro e soldi”, ma anche un aspetto spesso trascurato dagli imprenditori, ossia il benessere dei lavoratori, cosa che tra l’altro può ripercuotersi sulla produttività stessa.
Quindi evita il “burnout”, evita di sovraccaricare te stesso e il tuo team di eccessivo lavoro.
Questo aspetto è cruciale per mantenere un alto livello di prestazioni nel lungo periodo e anche il morale. In ESSE I, ad esempio, con il team interno spesso promuoviamo un ambiente di lavoro sano e incoraggiamo a fare pause regolari.
Inoltre, come saprai già se ci segui, abbiamo scelto di veicolare il valore dell’armonia non solo all’esterno ma anche all’interno, per contribuire a mantenere un team ancora più motivato, efficiente e allo stesso tempo rilassato.
Questo era l’ultimo step, il che potrebbe far pensare sia meno importante degli altri, mentre lo è anch’esso perché crediamo che non esista “software armonico” senza un team armonioso. E ciò per noi significa anche darci da fare per avere in azienda livelli di stress sempre sotto controllo.
Concludendo (articolo e... anno!)
Siamo fiduciosi che i nostri consigli possano esserti utili per ottimizzare l’utilizzo del tempo destinato allo sviluppo dei tuoi progetti software.
Ma, come dicevamo all’inizio, è anche il momento di riposarsi per festeggiare la fine dell’anno e l’arrivo di quello nuovo.
Quindi auguri a te e al tuo tempo!
Incluso quello che, speriamo, vorrai continuare a dedicare al nostro blog (magari registrandoti alla nostra newsletter) e alle nostre pagine social (qui Linkedin e qui Facebook, ma siamo anche su Instagram) anche nel 2024.
(foto: Midjourney)