Questa è una grande domanda. E penso che non siano solo i programmatori esperti a occuparsi di questo: affrontarlo in anticipo può essere un ottimo modo per uno studente di accelerare il proprio sviluppo delle competenze.
Ci sono due lati di questo problema - uno che è cattivo e uno in realtà buono .
Cattivo: scelta della soluzione sbagliata
Ecco un esempio: in qualità di sviluppatore inesperto, potresti aver già risolto due problemi prima, problemi A e B . A questo punto, sai che ci sono problemi che non conosci, ma dato l'obiettivo della tua esperienza, molte delle cose che vedi potrebbero essere A o B .
Arriva un nuovo problema. Per te, questo nuovo problema sembra un problema A , quindi lo risolvi nel modo in cui risolvi in genere A . Qualcosa non sembra giusto e richiede più tempo e, mentre lavori, ti rendi conto che questo è un nuovo problema, C . È una variante di A che non sapevi esistesse.
Quindi cosa fai per non commettere nuovamente questo errore? Due cose:
- Scopri cosa c'era di diverso in questo nuovo problema. Scopri quali approcci potrebbero aver funzionato in modo diverso e perché.
- Catalogare questo problema e passare alla risoluzione di ulteriori nuovi problemi.
Questo dovrebbe aiutarti naturalmente a risolvere questo problema. Quando hai 10 anni di esperienza, hai familiarità con i problemi A fino a Z e il tuo repertorio di soluzioni è ampio.
Buono - Efficienza
Nel mondo reale, con scadenze e risorse limitate, usare ciò che sai non è sempre negativo:
- All'inizio del processo di risoluzione dei problemi, confronti il nuovo problema con tutti i problemi che conosci.
- Tenterai di riconoscere i segni e decidi quale problema ha l'aspetto.
- Se non è possibile effettuare una corrispondenza del 100%, uno sviluppatore esperto sopporterà il rischio di dedicare più tempo alla scoperta contro i rischi di un'esecuzione potenzialmente errata. Se il rischio di perdere tempo è troppo alto, allora vai avanti con quello che sai.
Questa non è una cosa negativa: sta utilizzando l'analisi dei rischi per scegliere efficienza oltre il 100% di accuratezza. È fatto ogni giorno e saremmo tutti legati a cose che non ci porterebbero da nessuna parte se non lo facessimo.
Quindi, per rispondere alla tua domanda:
As a programmer with a decent amount of experience, how can one combat this tendency to always approach problem solving from "tried and true" paths from past experience?
- Continua a cercare e catalogare nuovi problemi
- Migliora selezionando la soluzione giusta per il problema; invece di sapere quale soluzione, sapere perché è giusto.
- Esercitati e affina le tue capacità decisionali. A volte l'efficienza è la scelta giusta e ottenere un riconoscimento migliore in quei momenti porterà a vantaggi misurabili nel mondo reale.