Cuatro habilidades de la formación en programación
Etapa 1: Inconsciente, incompetente
John es un joven desarrollador de sitios web. Solía ser estudiante de derecho, pero pensó que allí no era donde ganaría dinero, así que cambió de opinión y decidió cambiar de carrera. Había ayudado a su amigo a reparar computadoras y tuvo mucho éxito, por lo que pensó que esto debería ser fácil.
Rápidamente encontró algunos lugares donde aprender estos oficios (por supuesto, todos estaban cerca de su casa). Seis meses después, afirmaba ser un experto en sitios web y enumeraba lenguajes de programación, aplicaciones y plataformas de desarrollo en su currículum.
John, de hecho, es una persona despiadada de copiar y pegar. Pensó que poder mostrar correctamente un cuadro de diálogo de Windows significaba que dominaba Javascript. ?
PHP? Simple: instaló WordPress con éxito. ¿Linux? Arrancó el sistema Ubuntu desde el LiveCD y pudo configurar un servidor de clúster de carga equilibrada Apache. Su conciencia le dijo que ya lo sabía todo.
El problema fue que John no se dio cuenta de que podía aprender más, así que simplemente dejó de aprender. Siempre había estado en una burbuja, y muchas personas en los foros en línea y en las listas de correo que frecuentaba le dijeron muy educadamente que su problema residía en su conocimiento superficial, pero que nadie podía reventar su burbuja. Y lo que es aún más triste es que el valor de su habilidad en el foro es mayor que el de tú y yo juntos. John es inconscientemente incompetente.
Etapa 2: Incompetencia consciente
Mark es profesor de matemáticas. Trabajaba en la universidad de una pequeña ciudad y quería tener al menos cinco veces más bases de datos que su universidad. Sabía que su universidad estaba muy por detrás de otras instituciones de investigación en el campo de la ciencia y la tecnología, por lo que decidió hacer el trabajo él mismo. Quería construir una plataforma en línea para compartir sus cursos entre la comunidad.
Mark es un pensador lógico por naturaleza. Sabía que para lograr esto, necesitaba investigar y recopilar información. Su búsqueda comenzó en Wikipedia, pero finalmente, después de navegar y leer mucho, se dio cuenta de que en realidad había muchos equipos en el mundo que habían proporcionado soluciones de código abierto a su problema.
Seleccionó entre aquellos proyectos el que mejor se adaptaba a sus necesidades. Comenzó a leer la documentación y los manuales que encontró en su sitio web y finalmente descargó el código fuente. Su entusiasmo disminuyó gradualmente porque vio un "error de conexión a la base de datos". Lo intentó una y otra vez, comprobando cada uno de sus pasos menos de tres veces, pero aún así falló. Mark no estaba molesto porque sabía que no era un experto en esta área.
Recurrió a la lista de correo de TI, donde describió su problema en el lenguaje más preciso que conocía (que era muy poco). Les recordó a todos que no sabía lo que estaba haciendo, por lo que esperaba obtener más documentación para leer o personas que le dieran pistas sobre esto. No tuvo que esperar mucho para encontrar una solución porque adoptó el enfoque correcto. Mark es conscientemente incompetente.
Etapa 3: Competencia consciente
Han pasado dos años desde que Ade tomó su primer libro HTML. Obviamente este es un camino sin retorno. Para Ade, la pregunta en la que piensa todos los días es cómo mejorar su especialidad favorita.
Unos meses después de leer su primer libro, consiguió su primer trabajo como autónomo desarrollando un sitio web, y se dedicó a ello con gran entusiasmo, independientemente de la naturaleza del trabajo. es y qué tan básico es el trabajo (incluso para su nivel).
Cree firmemente que la mejor manera de aprender es perseverar, luchar y fracasar una y otra vez. A menudo investiga cómo realizar mejor una función porque sabe que el mejor código no se obtiene la primera vez. Tuvo que optimizar el código, que revisó una y otra vez. Lo corrigió una y otra vez.
Después de eso, escribió él mismo un programa de unas 30 a 40 líneas. Unos días después, no pudo evitar sentirse decepcionado cuando, mientras navegaba por Internet, descubrió un programa cada vez más simple y con la mitad de líneas de código. ?
Está ansioso por saber cuándo podrá escribir fácilmente código de tan alta calidad. Sin embargo, después de reflexionar un poco, comenzó a analizar su propio código. Sabía que tenía que reescribir el código; de lo contrario, no podría dormir bien. No quería copiarlos y pegarlos.
Ade está en camino de convertirse en un excelente experto, pero no se dará este título. Está dispuesto a esperar. Ade es consciente y capaz.
Etapa 4: Competencia Inconsciente
Esta es la etapa final del nivel de programación. No es sólo el resultado de la acumulación de conocimientos, sino también el resultado de una serie de reglas lógicas grabadas lentamente en la mente de una persona a lo largo de varios años.
Cuando nos enfrentamos a una persona así, tenemos que admirar sinceramente su capacidad para afrontar problemas tan complejos con tanta facilidad. Este tipo de programador parece capaz de detectar soluciones a los problemas en lugar de pensarlas.
La redacción optimizada, los programas seguros y fáciles de mantener, la aplicación de varios patrones de diseño y el uso de la combinación correcta de herramientas de desarrollo se reflejarán automáticamente en su trabajo. Esta persona puede utilizar fácilmente varios idiomas y trabajar en múltiples plataformas de sistemas operativos.