Semplici trucchi per migliorare l'efficienza della codifica

C'è uno strano fenomeno che è sorto tra gli editori di software. Sembra che ci sia una tendenza per le persone a invertire la loro comprensione di ciò che rende migliore un prodotto di qualità, o almeno questo è vero quando si tratta di coloro che fanno il marketing. Si tratta di qualcosa del tipo: "Il loro prodotto ha un milione di linee di codice, ma le nostre ne hanno due milioni, quindi il nostro prodotto deve essere migliore".

Nessuno sa da dove viene questo tipo di pensiero "più è più", quando in passato tutti lavoravano così duramente per creare una filosofia "less is more". Probabilmente è iniziato con il giornalismo di livello consumer, perché molti scrittori cercano di impressionare il pubblico citando grandi numeri. Per la maggior parte delle cose, questo funziona: questa minuscola unità flash contiene 200 terabyte di dati, che la CPU può elaborare 48 miliardi di istruzioni al secondo, e gli scrittori non sono sempre abbastanza tecnologicamente esperti da capire che lo stesso non si applica al codice sorgente.

Ma l'efficienza nella codifica non riguarda solo la creazione di algoritmi rigorosi. Si tratta anche di essere in grado di ridurre gli sprechi. Ciò significa spreco in termini di tempo trascorso a risolvere problemi, sprechi in termini di consumo di troppe risorse informatiche e persino sprechi in termini di numero di scatole per pizza che la tua squadra ha accumulato in ufficio per la fine della settimana. Idealmente, vuoi ridurre tutte queste cose.

Quindi quello che daremo un'occhiata in questo articolo saranno le cose che potresti fare per migliorare l'efficienza e aumentare la produttività.

1. Costruisci un ambiente di lavoro favorevole

Ogni coder lavora in circostanze uniche e i nostri lettori sono un gruppo molto vario, quindi per alcuni di voi sarà più semplice implementare questi suggerimenti rispetto ad altri.

Se sei un freelance, congratulazioni, perché sei già padrone del tuo ambiente di lavoro. Ovviamente questo cambierà quando andrete a visitare un cliente e dovrete lavorare sul posto, ma è comunque una posizione gradevole essere presenti se riuscite a farcela.

Se sei il manager di un team di sviluppo, questi suggerimenti possono anche aiutare a rendere la tua squadra al massimo dell'efficienza. Oppure, se sei un lavoratore di un team di sviluppo, puoi suggerire alcune di queste idee al tuo manager o almeno inviarlo un link a questa pagina e sperare per il meglio.

Considera di consentire ai membri del team di telelavorare

La programmazione è in parte un esercizio di logica, ma è ancora più una sfida creativa. I migliori programmatori possono utilizzare entrambi i lati del cervello in egual misura per qualsiasi compito. La scienza ha riconosciuto da tempo che le persone creative fanno il loro miglior lavoro di notte, ed è qualcosa che tutti abbiamo vissuto. Quindi perché la maggior parte dei manager insiste su una routine 9 tradizionale con 5?

In realtà, sappiamo già la risposta a questo. Si tratta in parte di controllo e in parte si tratta di rendere le cose più convenienti da un punto di vista del business (o almeno da un punto di vista gestionale). Ma questa insistenza sulla routine e sulla posizione sta danneggiando l'efficienza e la produttività della squadra.

Quello che devi capire è che i tuoi programmatori sono rimasti svegli tutta la notte a provare l'ultimo gioco, o forse hanno fatto festa o semplicemente hanno dovuto socializzare con la famiglia. Significa che quando si presentano al lavoro lunedì mattina, non solo non riesci a portarli al massimo livello di produttività, ma sono già prosciugati di energia e stanchi di cane.

Dare ai lavoratori la possibilità di scegliere quando lavorare - e idealmente anche dove - è un modo eccellente per migliorare la produttività e il morale. Finché ottengono il lavoro e si ottengono risultati eccellenti, non ci si deve preoccupare di quando, dove o come lo realizzano.

L'eccezione è quando hai bisogno di una stretta collaborazione, ma in verità la maggior parte dei programmatori fa meglio quando ha lasciato fare le cose a modo suo, e la necessità di una stretta collaborazione è rara. L'opzione di entrare in ufficio dovrebbe essere ancora lì, ma non c'è alcun motivo realistico per cui dovrebbe essere richiesto a meno che tu non stia lavorando a progetti militari top secret.

Come libero professionista puoi anche vedere che il punto chiave qui è che se fai la maggior parte del tuo lavoro di codifica reale di notte, è probabile che tu possa fare di più. Ci sono meno distrazioni a tarda notte, è più tranquillo e ti sentirai più creativo.

Evita la musica

Abbiamo visto tutti quegli stereotipi di film pazzi in cui alcuni super-grungy überhacker si mettono le cuffie e le marmellate sul death-metal mentre sfornano senza sforzo schermi di codice senza nemmeno fermarsi a respirare. E tutti quelli che realmente codificano nel mondo reale sanno quanto sia ridicola quell'immagine.

Ma se ascolti musica mentre lavori, fai attenzione. È abbastanza facile trovarti a pensare alla musica invece che al tuo lavoro, e alcuni tipi di musica possono avere un effetto soporifero. Quando fai un allenamento in palestra, il giusto tipo di musica potrebbe ispirarti a spingere quel numero extra di ripetizioni. Ma nessuno è mai riuscito a creare musica che ti ispiri a trovare la linea con il punto e virgola mancante, o a fare la scelta giusta tra l'uso di un ciclo for o un ciclo while. Il più vicino a cui siamo mai arrivati ​​è Electric Dreams.

Cerca di essere in ordine

Il disordine può essere stranamente confortante, ma può anche rallentarti. Puoi facilmente perdere 20 minuti alla ricerca di qualcosa che è stato perso nel caos, e poi dimenticare perché lo volevi in ​​primo luogo.

Quindi, per tutto il disagio che provoca, perché siamo noi, alcuni di noi almeno così assuefatti al disordine? Julie Morgenstern, esperta organizzativa e autrice, afferma che è perché questa roba ci mette in relazione con il nostro passato e gioca un ruolo nel definire la nostra identità. Marcus Geduld, insegnante e regista teatrale con sede a New York City, suggerisce che è perché il disordine è preferibile ad un ambiente "sterile", e paragona il caos del disordine ad un'affermazione di libertà e creatività.

Tuttavia, non vi è dubbio che ridurre il disordine ti aiuterà a evitare distrazioni e disorganizzazione. In quanto tale, è un obiettivo degno da raggiungere. Con ogni mezzo, tieni alcuni oggetti sacri in giro che ti fanno sentire meglio e meno stressato, ma non esagerare. Il decluttering è una delle cose più difficili da fare per la maggior parte delle persone, e non sono solo i nostri desktop fisici che hanno bisogno di decluttering, ma spesso anche i nostri computer desktop. Se davvero ti affatica, potresti provare a utilizzare un DTE minimalista come Fluxbox, che non ti consente di avere alcun disordine.

Ma nel bel mezzo di tutto questo riordino, non esagerare. C'è un sacco di buone scienze che suggeriscono che un po 'di caos nell'ambiente può effettivamente essere favorevole alla creatività. Uno dei più frequentemente citati elementi di ricerca in questo è una voce di giornale in Psychological Science di Vohs, Redden & Rahinel per l'Università del Minnesota, dal titolo L'ordine fisico produce sane scelte, generosità e convenzionalità, mentre il disordine produce creatività. Probabilmente il motivo per cui questo è il modo in cui i giornalisti della carta si aggrappano è che conclude chiaramente che: "... i partecipanti in una stanza disordinata erano più creativi dei partecipanti in una stanza ordinata".

Molto meno popolari sono le opinioni dissenzienti, come ad esempio Il disordine ambientale conduce al fallimento autoregolatorio (Chaye & Zhu, 2014), pubblicato sul Journal of Consumer Research. Questo studio ha rilevato che le persone che lavorano in ambienti disordinati sono compromesse nella loro capacità di svolgere compiti.

Allora, dove ti lascia? Dovresti lavorare nel caos o nella sterilità? La risposta sembra essere quella di trovare un equilibrio in cui è solo abbastanza caotico per farti ispirare, ma non così tanto da essere distratto o avere difficoltà a trovare le cose.

Lascia un po 'di spazio dietro di te per stimolare i tuoi pensieri

È una buona idea avere un sacco di spazio per vagabondare quando si sta deliberando. Molti dei migliori ammiragli e generali della storia erano famosi per il lungo periodo trascorso a passeggiare sul ponte mentre progettavano strategie di battaglia.

Non solo i combattenti seguono questa pratica. Molti monaci buddisti sostengono anche la "meditazione ambulante" e credono che aiuti a promuovere la chiarezza della mente. Ogni volta che hai un problema di programmazione particolarmente spinoso da risolvere, potresti trovare che aiuta a sgranchirti un po 'le gambe con una camminata meditativa intorno al mazzo. Ovviamente anche qui una mancanza di confusione vi aiuterà a farlo senza finire in ospedale.

Come capo, segui un approccio prudente alla critica degli sforzi creativi

Non c'è nulla di sbagliato nelle critiche costruttive, ma devi scegliere il momento giusto e affrontarlo nel modo giusto, oppure può ritorcersi contro rendendo il tuo personale meno produttivo in futuro. Piuttosto che ispirarli e fornire intuizioni, potresti addirittura renderli timorosi di rischiare, il che è un buon modo per eliminare la creatività. Marieke Roskes, in Vincoli che aiutano o ostacolano le prestazioni creative: un approccio motivazionale, fornisce un quadro su come gestire la motivazione dei lavoratori creativi e, in particolare, su come evitare di demotivarli involontariamente (Gestione della creatività e dell'innovazione, Vol 24, Iss 2, 2015).

2. Stabilire un buon SOP

Ci sono molte tendenze allettanti nella gestione aziendale e nelle procedure di programmazione che in teoria sembrano molto più sensate di quanto non risultino nella pratica. Se un particolare approccio funziona per te o no dipende dal tuo obiettivo e da ciò che consideri personalmente un risultato positivo.

Un esempio di una metodologia che una società per cui ho lavorato ha provato - e altrettanto rapidamente ha lasciato cadere - è la programmazione di coppie (da non confondere con la programmazione PEAR). Mentre alcune persone ammirano davvero questa metodologia di lavoro e lodano il suo posto nel paradigma di sviluppo agile, abbiamo scoperto che era terribilmente inefficiente. Per cominciare, richiedeva due programmatori per ogni workstation, quindi pagavi il doppio per un lavoro di sviluppo meno efficace. Abbiamo anche scoperto che è molto più lento lavorare in questo modo a causa del frequente arresto / avvio del flusso e della tendenza a dialoghi non necessari.

I vantaggi della programmazione di coppia erano che ciò comportava una documentazione più naturale e una documentazione più severa. Permetteva anche di individuare i bug più facilmente e di suggerire suggerimenti su come stringere un algoritmo. Allo stesso tempo, tuttavia, gli stessi vantaggi hanno creato problemi perché a volte le modifiche e gli aggiustamenti non erano realmente necessari.

Un altro rischio con questo approccio è che è possibile ottenere l'effetto identificato da Roskes, in cui i programmatori potrebbero essere riluttanti a provare le cose perché non vogliono essere corretti. Potresti trovare scontri di personalità che si accendono quando uno sviluppatore è molto pedante e tradizionale, ma l'altro è più creativo e spontaneo.

I programmatori affermano spesso che preferiscono la programmazione della coppia. È possibile che questo sia dovuto al fatto che godono dell'interazione sociale che offre, ma questo non contribuisce all'efficienza della produzione, se non forse come stimolo morale.

Quindi ciò che è necessario stabilire è ciò che effettivamente funziona per i tuoi sviluppatori e cosa no. Per le cose che non funzionano, è meglio scartarle, anche se sono una pratica di tendenza. Qualunque cosa aiuti la squadra a fare progressi velocemente è una buona cosa. Ma se sono appesantiti da una metodologia che non si adatta al loro stile, alla fine porterà a problemi.

3. Incoraggiare la documentazione dettagliata

Sebbene possa sembrare che la verbosità aumenti l'inefficienza, la piccola quantità di tempo necessaria per dare più dettagli e precisione nei commenti può far risparmiare molti problemi mentre il progetto va avanti o subisce delle revisioni.

4. Scoraggiare la documentazione non necessaria

Il codice ben scritto è spesso auto-documentante. Se è perfettamente ovvio ciò che una funzione fa dal nome che gli dai (che dovrebbe quasi sempre essere il caso), aggiungere ulteriori descrizioni è superfluo. Lo stesso vale per i nomi delle variabili e i valori di ritorno. Dovrebbe essere chiaro dal nome cosa fanno, e in quei casi in cui non è possibile farlo, dovresti includere una descrizione di essi nei commenti.

5. Lo spazio bianco è tuo amico

L'utilizzo appropriato dello spazio bianco nel codice è utile per semplificare la lettura, la revisione e la comprensione del codice. Va di pari passo con una buona documentazione e scrittura di codice auto-documentante. Dovrebbe essere possibile per qualsiasi programmatore esperto, o forse anche un non programmatore, prendere una copia del codice sorgente e capire immediatamente qual è lo scopo di ciascuna funzione e come funziona. Idealmente, qualcuno dovrebbe essere in grado di imparare a programmare da nient'altro che studiare il tuo codice ben scritto.

6. Preferisci la semplicità alla complessità

Più complesso fai il tuo codice, più difficile sarà districarlo. Ironia della sorte, questo si applica alle scorciatoie di programmazione, come l'uso di condizionali di stenografia invece di scriverle per intero. Si risparmia tempo nella scrittura, ma un programmatore meno esperto che viene a rivedere il tuo codice in un secondo momento potrebbe non capire le tue intenzioni.

7. Test esaustivo

Il codice dovrebbe essere testato in modo incrementale e spesso. Prima di distribuire qualsiasi cosa, dovresti condurre quanti più test interni possibile, anche se il tuo primo rilascio sarà designato Alpha.

8. Usa il controllo della versione

Dovresti essere pazzo a non usare il controllo di versione su un grande progetto. Senza di esso, non sei protetto dai tuoi stessi errori minori, ed è anche facile per un altro membro del team sabotare il tuo codice accidentalmente (o intenzionalmente) sovrascrivendolo con qualcosa che non ti soddisfa.

Tenendo conto di questi otto suggerimenti chiave, sarete in grado di sviluppare la vostra strategia per estrarre la massima efficienza per voi e tutti i membri del team con cui lavorate. Non devi necessariamente applicarli tutti, e certamente alcuni potrebbero non essere nemmeno pratici per te, ma qualsiasi combinazione di essi rischia di farti finire il lavoro con meno problemi. Un flusso di lavoro più produttivo si ripagherà nel tempo, anche se è solo in termini di riduzione dello stress e ti dà più tempo per te stesso. Questo è un obiettivo per cui vale la pena lavorare.

Bogdan Rancea

Bogdan è membro fondatore di Inspired Mag, avendo accumulato quasi 6 anni di esperienza in questo periodo. Nel tempo libero ama studiare musica classica ed esplorare le arti visive. È piuttosto ossessionato dai fissaggi. Possiede già 5.