Tutti gli interrogatori che hanno fatto se sei veramente lento o no sono sciocchi. Diventare un programmatore più veloce senza sacrificare la qualità è sempre un buon obiettivo, non importa quanto tu sia già lento o veloce. Questo è il mio obiettivo numero 1 come programmatore e non lo farò mai. Cerco sempre di andare più veloce senza sacrificare la qualità, ne sono ossessionato. Ecco cosa ha funzionato per me finora in ordine di disponibilità, insieme ad alcune idee sperimentali alla fine:
1) Non smettere mai di imparare: impara tutto ciò che puoi sulla programmazione e sull'uso dei computer in generale. Trova le aree in cui sei debole e imparale. Anche se sembra completamente estraneo al tuo lavoro e al C #, ti garantisco che se lo stai cercando, troverai spesso modi per applicarlo a quello che fai. L'apprendimento riguarda anche l'esperienza, quindi non limitarti a leggere cose ma provale ed espandi le tue abilità. Se sei abituato a usare Windows, prova Unix o viceversa. Se normalmente ti piace usare gli IDE, prova gli strumenti da riga di comando e gli editor di testo o viceversa. Se hai sentito parlare di uno strumento o di una tecnologia di cui non hai mai sentito parlare o di cui non sai molto, non lasciarti andare alla tentazione di andare avanti. Cerca! Non abbiate paura di pensare fuori dagli schemi e apprendere nuove tecnologie sperimentali che altri dicono essere poco pratiche;
2) Suddividi progetti: prova a suddividere i tuoi progetti in mini progetti. Prova a fare una nuova versione ogni giorno o al massimo una volta ogni pochi giorni. Chiediti "Qual è la quantità minima di funzionalità che posso rilasciare e rilascia ancora qualcosa che è utile per l'utente." Questa è un'abilità che imparerai facendola. Potrebbe essere necessario convincere i tuoi manager a lasciarti fare questo, ma di solito saranno contenti dei risultati abbastanza rapidamente. In questo modo inizierai a notare che le cose che pensavi fossero essenziali per la tua funzionalità sono in realtà funzionalità aggiuntive che possono essere sviluppate in seguito. Ciò consente a te e ai tuoi manager di dare la priorità solo alle funzionalità più importanti anziché a tutte le funzionalità correlate a quella su cui state lavorando. Ciò ti consente di pensare più velocemente mantenendo la mente chiara e focalizzata. A sua volta, programmerai legittimamente più velocemente. È probabile che anche i tuoi manager o almeno i manager del tuo manager percepiscano che stai programmando ancora più velocemente di quanto tu sia realmente perché stai ottenendo più rilasci. Un altro enorme vantaggio di questo è che sarai molto più bravo a stimare il tempo necessario per il completamento delle pubblicazioni e che i tuoi manager ti adoreranno per questo. Dato che stai già facendo molti test automatici, non dovresti avere problemi a fare rilasci frequenti stabili. Tuttavia, potrebbe essere necessario potenziare il sistema di build automatizzato. Consiglio vivamente di leggere il libro La consegna continua della serie Martin Fowler. È una lettura difficile e perché è estremamente ripetitiva, ma comunque molto utile. È probabile che anche i manager percepiscano che stai programmando ancora più velocemente di quanto tu sia perché stai ottenendo più rilasci. Un altro enorme vantaggio di questo è che sarai molto più bravo a stimare il tempo necessario per il completamento delle pubblicazioni e che i tuoi manager ti adoreranno per questo. Dato che stai già facendo molti test automatici, non dovresti avere problemi a fare rilasci frequenti stabili. Tuttavia, potrebbe essere necessario potenziare il sistema di build automatizzato. Consiglio vivamente di leggere il libro La consegna continua della serie Martin Fowler. È una lettura difficile e perché è estremamente ripetitiva, ma comunque molto utile. È probabile che anche i manager percepiscano che stai programmando ancora più velocemente di quanto tu sia perché stai ottenendo più rilasci. Un altro enorme vantaggio di questo è che sarai molto più bravo a stimare il tempo necessario per il completamento delle pubblicazioni e che i tuoi manager ti adoreranno per questo. Dato che stai già facendo molti test automatici, non dovresti avere problemi a fare rilasci frequenti stabili. Tuttavia, potrebbe essere necessario potenziare il sistema di build automatizzato. Consiglio vivamente di leggere il libro La consegna continua della serie Martin Fowler. È una lettura difficile e perché è estremamente ripetitiva, ma comunque molto utile. e i tuoi manager ti adoreranno per questo. Dato che stai già facendo molti test automatici, non dovresti avere problemi a fare rilasci frequenti stabili. Tuttavia, potresti dover rinforzare il tuo sistema di compilazione automatizzato. Consiglio vivamente di leggere il libro La consegna continua della serie Martin Fowler. È una lettura difficile e perché è estremamente ripetitiva, ma comunque molto utile. e i tuoi manager ti adoreranno per questo. Dato che stai già facendo molti test automatici, non dovresti avere problemi a fare rilasci frequenti stabili. Tuttavia, potrebbe essere necessario potenziare il sistema di build automatizzato. Consiglio vivamente di leggere il libro La consegna continua della serie Martin Fowler. È una lettura difficile e perché è estremamente ripetitiva, ma comunque molto utile.
3) Usa la tecnica pomodoro e adatta / modifica ciò che non funziona per te. Se lo combini con il numero 2 in questo elenco, otterrai un ENORME aumento della produttività.
4) Impara Vim. Anche se finisci per usare questi comandi all'interno di Visual Studio tramite ViEmu o all'interno di Eclipse tramite un plug-in o all'interno di Emacs, otterrai produttività. Il modo migliore per imparare Vim è iniziare a usarlo e non forzarti mai (disabilitarlo / tornare ai tuoi vecchi strumenti) fino a quando non lo avrai imparato. All'inizio è doloroso, ma non vorrai mai tornare indietro e persino rabbrividire quando devi lavorare senza di essa. Alcuni direbbero che questo non aumenterà di molto la tua velocità. Ma più veloce è più veloce, specialmente quando leggere e modificare il codice è COSA FACCIAMO, e in alcune occasioni mi sono ritrovato a risparmiare molto tempo con questo.
5) Quest'ultimo non è necessariamente raccomandato in quanto non sono sicuro che sia una buona idea e potrebbe effettivamente ridurre la produttività, ma lo farò comunque. Potresti provare a fare più test di collaudo e meno test unitari, o almeno assicurarti di fare dei test di collaudo. Ho avuto successo con SpecFlow, ma sospetto che ci sia qualcosa di meglio là fuori. Anche scrivere le specifiche può essere piuttosto tecnico, quindi potresti volere solo che il tuo manager / cliente scriva prima una versione approssimativa della bozza che cambi in modo significativo, oppure potresti scrivere tutto da solo e farlo leggere e OK. Questo ti aiuterà con il numero 2 da questo elenco. Inoltre, i test di accettazione possono essere più pratici e richiedono meno codice rispetto ai test unitari. Questo non vuol dire che li sostituiscono, strumenti diversi per cose diverse.
6) Questo è ancora più sperimentale e controverso. In realtà non l'ho fatto da solo, quindi non posso esattamente consigliarlo. Impara e usa il Meta Programming System da JetBrains. Usalo per creare strumenti che il tuo manager / cliente utilizza per creare da soli il software desiderato. Potresti anche essere in grado di smettere di fare test di unità e accettazione se puoi usarlo per creare strumenti che il tuo manager / cliente utilizza per specificare il comportamento in modo molto semplice e non contorto. L'idea è di non sbarazzarsi del programmatore. I programmatori dovrebbero comunque aggiungere nuove funzionalità a questi strumenti utilizzati dal cliente / gestore ogni volta che (le persone, non gli strumenti) non possono facilmente creare alcune funzionalità desiderate. Credo che l'MPS o altri strumenti simili ad esso siano la via del futuro.