Esta es una gran pregunta. Y creo que no son solo los programadores senior los que se enfrentan a esto: abordarlo temprano puede ser una excelente manera para que un alumno acelere el desarrollo de sus habilidades.
Hay dos lados de este problema: uno que es malo y otro que es realmente bueno .
Malo: elegir la solución incorrecta
He aquí un ejemplo - como un desarrollador inexperto, es posible que sólo es realmente resuelto dos problemas antes, problemas Un y B . En este punto, usted sabe que hay problemas que no conoces, pero dada la lente de su propia experiencia, una gran cantidad de lo que se ve parece que podría ser una o B .
A lo largo viene un nuevo problema. Para usted, esta nueva apariencia problemáticas como problema A , por lo que resuelven de la manera que por lo general resolver una . Algo no se siente bien, y se tarda más tiempo, y mientras trabaja se termina dando cuenta de que esto es un problema nuevo, C . Es una variación de A que no sabías que existía.
Entonces, ¿qué haces para no volver a cometer este error? Dos cosas:
- Descubre qué era diferente acerca de este nuevo problema. Averigüe qué enfoques pueden haber funcionado de manera diferente y por qué.
- Catalogue este problema y avance para resolver más problemas nuevos.
Esto debería ayudarte a resolver este problema de forma natural . Para cuando tenga 10 años de experiencia, ya está familiarizado con los problemas de la A a la Z y su repertorio de soluciones es extenso.
Bueno - Eficiencia
En el mundo real, con plazos y recursos limitados, usar lo que sabes no siempre es malo:
- Al comienzo del proceso de resolución de problemas, compara el nuevo problema con todos los problemas que conoce.
- Intentará reconocer los signos y decidir a qué conjunto de problemas se parece.
- Si no se puede hacer una coincidencia del 100%, un desarrollador experimentado sopesará el riesgo de pasar más tiempo en el descubrimiento frente a los riesgos de una ejecución posiblemente defectuosa. Si el riesgo de pérdida de tiempo es demasiado alto, simplemente continúe con lo que sabe.
Eso no es malo: está utilizando el análisis de riesgos para elegir la eficiencia por encima del 100% de precisión. Se hace todos los días y todos estaríamos atados a cosas que no nos llevarían a ninguna parte si no lo hiciéramos.
Entonces, para responder a su pregunta:
Como programador con una cantidad decente de experiencia, ¿cómo se puede combatir esta tendencia a abordar siempre la resolución de problemas desde caminos "probados y verdaderos" de la experiencia pasada?
- Sigue buscando y catalogando nuevos problemas
- Mejore al seleccionar la solución correcta para el problema; en lugar de simplemente saber qué solución, saber por qué es correcta.
- Practica y perfecciona tus habilidades para tomar decisiones. A veces, la eficiencia es la elección correcta, y mejorar en el reconocimiento de esos tiempos dará lugar a ventajas medibles en el mundo real.