Evita la codifica elaborata. Più è complicato il codice, più è probabile che ci siano dei bug. Di solito sui sistemi moderni, il codice chiaramente scritto sarà veloce e abbastanza piccolo.
Usa le librerie disponibili. Il modo più semplice per non avere bug che scrivono una routine di utilità è non scriverlo.
Impara alcune tecniche formali per le cose più complicate. Se ci sono condizioni complicate, inchiodale con carta e penna. Idealmente, conosci alcune tecniche di prova. Se riesco a dimostrare che il codice è corretto, è quasi sempre buono tranne che per bug grandi, stupidi, ovvi che sono facili da correggere. Ovviamente, questo va solo così lontano, ma a volte puoi formalmente ragionare su cose piccole ma complicate.
Per il codice esistente, scopri come eseguire il refactoring: come apportare piccole modifiche al codice, spesso utilizzando uno strumento automatizzato, che rendono il codice più leggibile senza modificare il comportamento.
Non fare nulla troppo in fretta. Prendersi un po 'di tempo in anticipo per fare le cose nel modo giusto, controllare ciò che hai fatto e pensare a quello che stai facendo può ripagare alla grande in un secondo momento.
Dopo aver scritto il codice, utilizza ciò che hai per renderlo valido. I test unitari sono fantastici. Spesso puoi scrivere test in anticipo, il che può essere un ottimo feedback (se fatto in modo coerente, si tratta di uno sviluppo guidato dai test). Compilare con le opzioni di avviso e prestare attenzione agli avvisi.
Chiedi a qualcun altro di guardare il codice. Le revisioni formali del codice sono buone, ma potrebbero non essere utili. Estrai richieste o simili se il tuo scm non le supporta consente revisioni asincrone. Il controllo degli amici può essere una revisione meno formale. La programmazione delle coppie garantisce che due paia di occhi guardino tutto.