Sto per raccontarti una storia.
Fino al 30 maggio 1999, John Carmack non sapeva che il test delle forbici non era abilitato di default in OpenGL .
The next thing is sort of funny. I had been suspecting that a lot of the OpenGL drivers were clearing the entire depth buffer for each of the 3D icons on the status bar, instead of limiting it to the scissor region. I added code to the g200 driver to explicitly crop the clear region in the driver, but it never got executed. A little more investigation showed that I had been making an improper assumption for years -- scissor is not enabled by default. Doh.
L'averlo scoperto per errore, nel contesto di fare qualcos'altro, e ha dato al suo codice un incremento di prestazioni abbastanza buono (dato che lavora in un'area in cui la performance è estremamente importante, vale la pena notare):
Now I know that I was just being an idiot about that for the last three years... With scissor enabled, most of the cards got a few percent faster.
Vale anche la pena di notare la sua auto-consapevolezza qui: "Ero solo un idiota per quello negli ultimi tre anni".
Ora, se avesse letto la documentazione ("Il test è inizialmente disabilitato "), lui sarebbe stato consapevole del fatto che il test delle forbici era disabilitato di default e non avrebbe commesso quell'errore.
Questo è un caso in cui la documentazione di lettura avrebbe reso John Carmack un programmatore malvagio? E 'un caso in cui non leggere la documentazione ha reso John Carmack un programmatore migliore? Non credo di dover rispondere a queste domande.
Per quanto riguarda l'intellisense, è importante rendersi conto che l'intellisense è uno strumento di produttività, progettato per risparmiare tempo. Tu digiti "." o "- >" e su pop un elenco di membri, si digita i primi caratteri di quello che si desidera, e hey-presto! Questo è il tuo tempo prezioso che è stato salvato, potrebbe anche averti salvato una build a causa di quel supino errore che hai fatto perché non avevi ancora il tuo caffè, e ora hai più tempo per andare avanti con facendo produttivi roba invece di estrarre semplicemente il codice.
Intellisense è non progettato come stampella per i programmatori cattivi, è un esempio di ciò che Fred Brooks chiama uno "Strumento Sharp".
Seguendo la stessa logica con cui si può licenziare l'intellisense, si giunge alla ovvia conclusione finale che qualsiasi strumento progettato per aumentare la produttività del programmatore è anche qualcosa che può rendere un programmatore cattivo. Questa è una linea di pensiero pericolosa perché la prossima cosa che rifiuterà i compilatori e i debugger.
Quando ero al college del secolo scorso, uno dei miei docenti ci disse che "i migliori programmatori sono pigri". Questo è molto ironico, e ciò che intendeva era che i migliori programmatori trovavano il modo di massimizzare il tempo produttivo e minimizzare il tempo speso a fare il lavoro degli asini. Penso ancora che sia un buon consiglio oggi.