Consiglio vivamente di lavorare con altri programmatori se stai colpendo un roadblock. Spesso la conversazione va in questo modo:
[you] I'm stuck on this bug, I can't seem to figure out what's happening
[other] What's the issue?
[you] yada yada yada
[other] what have you tried and what have you figured out so far?
[you] blah blah blah, this that and the other...
[you] oh...
[you] thanks!
[other] any time
Se non è così, spesso una persona più anziana può aiutarti a restringere il tuo approccio oa volte menzionare alcuni fatti poco conosciuti o non intuitivi sul contesto pertinente.
Un altro pezzo cruciale è quello di dividere e conquistare. Hai bisogno di eliminare le possibilità o finirai per andare in circolo. Questo va di pari passo con il test delle tue ipotesi. Quando ti trovi in una situazione in cui non riesci a capire perché qualcosa stia accadendo, è probabile che qualcosa in cui credi sia vero non è vero. Inizia a testare tutte le cose che ritieni siano ovviamente vere.
Fai attenzione ai debugger. Possono essere utili per gli sviluppatori alle prime armi ma possono finire per consumare molto del tuo tempo. Inoltre, sono per lo più inutili per problemi di temporizzazione come problemi di multi-threading. Una volta ho avuto un collega (molto intelligente) che era completamente in disaccordo con me e ha insistito sull'uso dei debugger. Una volta ha avuto un problema che non riusciva a capire. Gli ho chiesto di eseguirlo senza il debugger. Lo ha fatto e il problema è scomparso.