Questa non vuole essere una risposta completa — ce ne sono già molte ottime che menzionano cose importanti come l'uso del VCS e del software di gestione dei progetti — ma piuttosto un addendum che aggiunge alcuni punti che non ho visto in nessun altro, che io trovo molto utile e che spero che anche altre persone possano trovare utile.
1. Nessuna attività è troppo presto o troppo piccola per essere annotata
Le persone di solito fanno elenchi TODO per le cose che hanno intenzione di fare in futuro , ma poiché la programmazione richiede concentrazione, e poiché possiamo essere interrotti in qualsiasi momento , ho trovato utile scrivere anche quello che sto facendo in questo momento, o quello che sto per iniziare in pochi secondi . Si può sentire che stai in zona e non si poteva forse dimenticare la soluzione che appena ti ha colpito in quel aha momento, ma quando il tuo collega di lavoro scende di vostro cubo visualizzare la foto del suo dito del piede infetto , e si è riuscendo a liberartene solo iniziando a rosicchiarti il braccio , potresti desiderare di aver scritto una breve nota, anche se solo su una nota Post-It ™.
Ovviamente un altro mezzo più persistente potrebbe essere migliore (sono particolarmente affezionato a OmniFocus ), ma il punto è almeno averlo da qualche parte , anche se finirai in 20 minuti e poi butti via il Post-It ™. Anche se potresti scoprire che tali informazioni diventano utili, mettere su fogli presenze o fatture al cliente o quando il tuo capo / cliente ti chiede su cosa stai lavorando e che non ricordi. Se lasci cadere tutte queste note in una scatola, un cassetto o una cartella, quando si verifica una grande interruzione, un progetto che interrompe, puoi dare un'occhiata attraverso di esse e ricordare molte cose che hai fatto per ottenere il tuo codice al punto in cui trovalo quando ritorni al progetto.
2. Utilizzare una lavagna alla scrivania per catturare idee di grandi dimensioni
Ho una lavagna da 3 "x 4" vicino alla mia scrivania, quindi quando inizio un progetto posso fare il brainstorming delle soluzioni a tutti i problemi che percepisco in un progetto. Potrebbe essere diagrammi architettonici, casi d'uso, elenchi di rischi e ostacoli o qualsiasi cosa ti sembri rilevante.
Alcuni approcci più formalizzati richiedono di generare diagrammi e casi d'uso e così via come "risultati finali" in un formato cartaceo o elettronico, ma trovo che ciò possa creare molto lavoro extra e diventare una serie di sottoprogetti che terminano essere divorziato dallo scopo reale del progetto principale, e solo parte di un processo formalizzato che devi fare ma a cui nessuno presta molta attenzione. Una lavagna è la cosa più semplice che funziona davvero, almeno nella mia esperienza. È persistente quanto vuoi (con una macchina fotografica) e, soprattutto, ti permette di far decollare le tue idee immediatamente.
Penso meglio con una penna in mano, quindi scaricare i miei pensieri su una superficie bianca mi viene naturale, ma se non lo ritieni opportuno, ecco alcune domande che potrebbero aiutarti a decidere cosa è rilevante :
- Se fossi lo sviluppatore principale, in procinto di andare in luna di miele per 3 mesi mentre altri sviluppatori completavano il progetto, quale direzione generale avrei voluto dare loro? Quali idee dovrei assicurarmi di conoscere o quali approcci dovrei garantire? Di quali biblioteche o altre soluzioni utili vorrei essere sicuro di essere a conoscenza?
- Se questo progetto fosse la mia idea da un milione di dollari che sapevo avrebbe assicurato la mia futura indipendenza finanziaria, ma ero programmato per un intervento chirurgico critico che mi avrebbe reso inabile per 3 mesi, cosa avrei voluto che il mio futuro sé avesse, per garantire il completamento con successo di il progetto?
(Quando scarabocchio le idee per la prima volta, mi preoccupo solo che abbiano un senso per il mio sé presente. Una volta che sono giù posso guardarle in modo più critico e apportare modifiche per assicurarmi che abbiano un senso per il mio sé futuro o per gli altri. Preoccuparsi troppo di comunicare con gli altri mentre li scrivi inizialmente può portare al blocco degli scrittori: una mente intasata da obiettivi in competizione. Scendi prima, preoccupati per la chiarezza in seguito.)
Ti consiglio di spendere i soldi per acquistare una lavagna decente, almeno 3 "x 4", e appenderlo nello spazio in cui lavori normalmente. Ci sono molti vantaggi di una lavagna fisica rispetto a qualsiasi sistema virtuale.
- È grande. Occupando molto spazio fa sentire la sua presenza e i piani su di esso sembrano far parte del tuo spazio di lavoro, aiutandoti a indicarti sempre la giusta direzione.
- È persistentemente presente: non è necessario avviare una determinata app o un sito Web per accedervi e non si rischierà di dimenticarsi di come raggiungerlo o di dimenticare che è lì.
- È immediatamente accessibile quando hai un'idea su cui vuoi riflettere.
Si perdono molti dei vantaggi se si utilizza una lavagna in una sala riunioni e si scatta un'istantanea con il telefono. Se guadagni programmando, vale la pena il costo di una lavagna decente.
Se si dispone di un altro progetto interrompere quella che ha riempito la lavagna, potrebbe essere necessario ricorrere a l'istantanea sul vostro telefono, ma almeno avrete che in 3 mesi, quando il progetto "urgente" è finito e si deve ritorna all'altro. Se vuoi ricrearlo sulla tua lavagna, probabilmente ci vorranno solo 15 minuti e potresti scoprire che puoi migliorarlo molto nel processo, il che rende molto utile quel piccolo investimento di tempo.
3. Rendere le parti interessate consapevoli dei costi di interruzione di un progetto
Trovo utile la metafora di un aereo: iniziare e completare un progetto è come far volare un aereo. Se effettui il salvataggio a metà del volo, l'aereo non si limiterà a sedersi in aria in attesa che torni su di esso, e avrai bisogno di un modo per viaggiare dal progetto / volo corrente a quello successivo. Infatti se sei nel mezzo di un volo da Phoenix a Fargo e ti viene detto che devi interrompere quel volo per prendere un altro aereo da Denver a Detroit, dovrai atterrare il primo aereo a Denver (che fortunatamente non è lontano dalla tua traiettoria di volo, non sempre nel caso di interruzioni reali) e qualcuno deve capire cosa fare del carico e dei passeggeri. Non si limiteranno a sedersi e ad aspettare per sempre.
Il punto di ciò per i progetti è che il passaggio da un progetto a un altro comporta un notevole dispendio di tempo e lascia molti punti da perdere.
In un progetto ci sono ovviamente e inevitabilmente molte cose che succedono nella tua testa mentre lavori e non tutti i pensieri possono essere serializzati su un supporto scritto, e non tutti i frammenti di quei pensieri che sono serializzati rimarranno una volta deserializzati. Anche se possiamo parzialmente catturare i nostri pensieri per iscritto, è un formato molto smarrito.
Il problema (come lo vedo io) è che i project manager e altri uomini d'affari pensano ai progetti come una serie di passaggi che spesso possono essere riordinati a piacimento (a meno che non vi sia una dipendenza esplicita sul loro diagramma di Gantt) e possano essere facilmente distribuiti tra le persone o in ritardo fino a quando non è più conveniente per l'azienda.
Chiunque abbia svolto una certa quantità di programmazione sa che i progetti software non possono essere trattati come blocchi Lego da spostare in qualsiasi modo tu voglia. Trovo che la metafora del viaggio aereo dia almeno agli stakeholder qualcosa di concreto a cui possono pensare che chiaramente non può essere trattato come una serie di passaggi diversi da riordinare per capriccio. Almeno rende facile capire il tuo punto che c'è un costo per tali interruzioni. Naturalmente è ancora una loro decisione, ma tu vuoi renderli consapevoli di questo prima che interrompano un progetto per dartene un altro. Non essere combattivo, ma offri informazioni utili e la prospettiva utile dello sviluppatore, pronto a fare tutto ciò di cui ha bisogno da te, ma semplicemente offrendo informazioni di cui potrebbe non essere a conoscenza se non glielo dici.
In breve:
- Scrivete tutto quello che sei circa di fare, anche se non credo che si potrebbe eventualmente necessario mai scritto verso il basso. Anche una matita corta batte un lungo ricordo.
- Brainstorming sull'immagine grande su una lavagna fisica a cui hai accesso persistente.
- È possibile evitare interruzioni del progetto se si rendono consapevoli che i responsabili delle decisioni hanno un costo per tali interruzioni e almeno si saranno stabilite le aspettative in modo che sappiano che il progetto impiegherà un po 'più di tempo a riprenderlo.