¿Cómo convertirse un experto en cualquier materia?
Convertirse en un experto en ingeniería de software o en cualquier otro campo no se trata solo de combinar años de experiencia o aprender los últimos frameworks. Se trata de recorrer un camino estructurado de adquisición de habilidades y profundizar su comprensión en todos los niveles.
En este artículo se analizan dos marcos esenciales para acelerar el camino hacia la experiencia: las 4 etapas de la competencia y la taxonomía de Bloom. El modelo de las 4 etapas de la competencia arroja luz sobre los estados psicológicos por los que progresamos al adquirir una nueva habilidad, desde la ignorancia hasta el dominio. La taxonomía de Bloom, por otro lado, proporciona una estructura jerárquica para los objetivos de aprendizaje, guiándonos desde el recuerdo básico hasta la evaluación y creación complejas.
Al comprender estos modelos, obtendrá conocimientos sobre su proceso de aprendizaje y descubrirá estrategias para mejorar su recorrido de principiante a experto en cualquier área de ingeniería de software.
Entonces, vamos a sumergirnos en ello.
4 Etapas de Competencia
En el complejo mundo de la ingeniería de software, el camino desde el principiante hasta el experto es todo un desafío. El modelo de las "4 etapas de la competencia", creado por Noel Burch en la década de 1970, es un excelente marco para comprender este camino. Este modelo describe el progreso desde la incompetencia hasta la competencia en cualquier habilidad que las personas atraviesan al aprender y dominar una nueva materia.
Estas son las cuatro etapas principales:
Etapa 1: Incompetencia inconsciente
En esta etapa, no se sabe lo que no se sabe (incógnitas desconocidas). Este fenómeno se produce cuando las personas que son malas en una materia tienen una confianza irrazonable en sus habilidades porque están tan desinformadas sobre ella que no son conscientes de su pobre desempeño. Todo lo que necesitan es el contexto adecuado para evaluar sus habilidades. En este nivel, las personas tienden a tener mucha confianza en sí mismas, ya que el efecto Dunning-Kruger está en su punto máximo, y creen que su conocimiento de las cosas es lo suficientemente bueno. Sin embargo, no son conscientes de que existen algunas materias cruciales (y, por lo general, son difíciles de comprender).
👉Por ejemplo , un programador principiante podría no saber la importancia de los sistemas de control de versiones como Git o creer que codificar se trata solo de escribir líneas de código.
➡️ Cómo avanzar: Deberíamos preguntarnos: “ ¿Qué necesito aprender exactamente?” La clave para superar esta etapa es la exposición. Empieza aprendiendo los conceptos básicos de programación, lee sobre prácticas de desarrollo de software e intenta crear proyectos simples. A medida que lo hagas, te darás cuenta de la profundidad y amplitud de los conocimientos necesarios en ingeniería de software. ¡Así que empieza con el tema!
Etapa 2: Incompetencia consciente
Aquí es donde comienza el verdadero aprendizaje. En esta etapa, sabes que no sabes (incógnitas conocidas). Reconoces tu incompetencia y puedes comenzar el proceso de aprendizaje. En este paso, puedes perder la confianza al ver que hay mucho que aprender, por lo que el síndrome del impostor comienza a hacer efecto. Pero, la confianza que tengas está mayormente sesgada (la confianza no es lo mismo que el conocimiento). Lo más importante aquí es continuar en la dirección correcta y no rendirse.
👉 Por ejemplo, después de perder algunos cambios esenciales en el código o enfrentar dificultades para colaborar con un equipo, el programador principiante se da cuenta de la importancia de un sistema de control de versiones, pero aún no ha aprendido a usarlo de manera efectiva.
➡️ Cómo progresar: Aquí podemos preguntarnos: ¿Cómo puedo hacer esto de manera consistente? Establezca metas de aprendizaje específicas, tome cursos en línea, contribuya a proyectos de código abierto y busque la tutoría de desarrolladores con más experiencia. Recuerde, todo experto alguna vez fue un principiante.
Etapa 3: Competencia consciente
El individuo ha adquirido la habilidad pero necesita practicarla conscientemente y pensar en ella para realizarla bien (saber lo que se sabe). Este es el punto en el que debe reflexionar cuidadosamente sobre su conocimiento y cómo debe aplicarse en diversos contextos. Necesitará mucha energía mental y el viaje se sentirá lento. Sin embargo, indica que está lo suficientemente familiarizado con el tema como para trabajar con él.
👉 Por ejemplo, el programador ya ha aprendido los conceptos básicos de Git. Puede confirmar cambios, crear ramas y fusionarlas, pero debe pensar en cada paso y es posible que deba consultar documentación o listas de verificación con frecuencia.
➡️ Cómo progresar: Aquí podemos desafiarnos a nosotros mismos con la pregunta, ¿Cómo puedo hacer este esfuerzo al hacerlo? Este es el lugar donde pasamos la mayor parte de nuestro tiempo en la vida. Puedes asumir proyectos desafiantes que pongan a prueba tus límites y practicar más a diario. Si trabajas de manera constante en algo durante 1 o 2 horas diarias, te volverás muy bueno en eso en unos pocos meses.
Etapa 4: Competencia inconsciente
La habilidad se ha vuelto natural para ti ( nivel experto ). Puedes realizarla sin pensar en ella, como andar en bicicleta.
👉 Por ejemplo, el programador ahora es experto en el uso de Git. Puede gestionar estrategias de ramificación complejas, resolver conflictos de fusión e incluso guiar a otros sin tener en cuenta los pasos involucrados ni consultar listas de verificación. Esto sucede a un nivel casi inconsciente, ya que ha trabajado lo suficiente con Git como para que su cerebro encuentre la solución de manera inconsciente.
➡️ Cómo progresar: El aprendizaje continuo es crucial incluso en esta etapa. La única forma de llegar hasta aquí es practicar, practicar y practicar tus habilidades hasta que se vuelvan naturales para ti.
Para avanzar más rápido entre etapas, puedes utilizar diferentes técnicas de aprendizaje:
A medida que avanza por las etapas de competencia, se encuentra con la paradoja del experto, en la que la creciente experiencia revela la inmensidad de lo que no sabe. Esta conciencia a menudo desencadena el síndrome del impostor, en particular en la etapa de competencia consciente, donde prevalecen las dudas sobre uno mismo y el miedo a la incompetencia a pesar de una habilidad significativa.
Para afrontar esto, reconozca que los sentimientos de incompetencia son normales y forman parte del crecimiento. Reflexione periódicamente sobre su progreso, busque comentarios para validar su competencia y enseñe a otros para reforzar su experiencia.
Referencias
Burch, N. (1970). Las cuatro etapas del aprendizaje de cualquier nueva habilidad. Gordon Training International. Este trabajo fundacional describe las cuatro etapas de la competencia: incompetencia inconsciente, incompetencia consciente, competencia consciente y competencia inconsciente.
Broadwell, MM (1969). Gestión de programas de formación. Universidad de Nueva York. Presenta las cuatro etapas del modelo de competencias, denominadas inicialmente "los cuatro niveles de la enseñanza".
¿Cómo puede la taxonomía de Bloom ayudarle a aprender sobre desarrollo de software?
El desarrollo de software es un campo complejo que requiere una amplia gama de habilidades cognitivas. Al aplicar la Taxonomía de Bloom, un marco para ajustar el progreso de uno en el aprendizaje de un nuevo tema, podemos crear un camino de aprendizaje más estructurado y efectivo sin depender únicamente de nuestros niveles de confianza (generalmente incorrectos). Le permite ascender a los líderes de este modelo jerárquico y ver perspectivas pasadas con claridad, lo que puede ayudarlo a ayudar a otros que están estancados en esos niveles.
Fue desarrollada por un grupo de educadores liderados por Benjamin Bloom, un psicólogo educativo estadounidense, e introducida en 1956 en el libro "Taxonomía de los objetivos educativos: la clasificación de las metas educativas". Bloom y sus colegas dividieron los objetivos de aprendizaje en tres dominios: cognitivo (basado en el conocimiento), afectivo (basado en la emoción) y psicomotor (basado en la acción). El dominio cognitivo, que incluye los seis niveles, es el más utilizado y a menudo se denomina "Taxonomía de Bloom".
Los seis niveles de la Taxonomía de Bloom, en orden de complejidad cognitiva creciente, son:
1. Recordando
En este nivel, los estudiantes se centran en recordar hechos, términos y conceptos básicos. Como ingeniero de software, puedes aprender los conceptos básicos de lenguajes de programación, herramientas, frameworks, bibliotecas y metodologías de desarrollo de software. También puedes memorizar conceptos críticos, terminología, sintaxis y mejores prácticas.
👉 Por ejemplo, si queremos mejorar el código limpio, puedes recordar los principios básicos del código limpio en este nivel. Es posible que puedas enumerar algunos conceptos clave como nombres de variables significativos, funciones pequeñas o el principio DRY (Don't Repeat Yourself). Sin embargo, tu comprensión se limita a la memorización sin un conocimiento más profundo de todos los aspectos del código limpio.
📌 Consejo : Utiliza flashcards o herramientas de repetición espaciada para reforzar tu memoria de conceptos clave.
2. Comprensión
En este nivel, los estudiantes deben demostrar que comprenden el material explicando ideas o conceptos con sus propias palabras, resumiendo o interpretando la información. Desarrollar una comprensión más profunda de los conceptos de ingeniería de software, como algoritmos, estructuras de datos, patrones de diseño y estilos arquitectónicos. Si se le presenta un problema, debe saber cómo abordarlo y qué dirección tomar.
👉 Por ejemplo, ahora comprendes las razones detrás de las prácticas de código limpio. Puedes explicar por qué los nombres descriptivos de las variables son importantes para la legibilidad, cómo las funciones pequeñas mejoran la capacidad de mantenimiento o cómo el principio DRY reduce los errores potenciales. Puedes interpretar las pautas de código limpio y resumir sus beneficios, pero aún así es posible que tengas dificultades para implementarlas de manera consistente.
📌 Consejo : Enséñale a otra persona los conceptos que has aprendido o escribe artículos en tu blog explicándolos. Si puedes explicarlos, los entiendes bien. La técnica de Feymann puede ayudarte en este caso.
3. Aplicación
Este nivel implica utilizar el conocimiento y la comprensión para resolver problemas o aplicar conceptos en situaciones nuevas. Utilice su conocimiento y experiencia en los principios de ingeniería de software para desarrollar aplicaciones de software, resolver problemas e implementar nuevas funciones. Cuando analiza el problema, debe saber qué solución utilizar, lo que significa que ya se encuentra en este nivel.
👉 Por ejemplo, puedes implementar principios de código limpio en esta etapa, como usar activamente nombres de variables significativos, dividir funciones complejas en otras más pequeñas y manejables y evitar la duplicación de código. Si bien es posible que no siempre elijas la solución óptima, puedes aplicar estos conceptos a nuevos problemas de codificación y mejorar el código existente.
📌 Consejo: Comienza con pequeños proyectos paralelos que te permitan aplicar nuevos conceptos en una situación real. Esto ayuda a reforzar tu aprendizaje a través de la práctica.
4. Análisis
El análisis implica dividir problemas complejos en partes más pequeñas y manejables. En el desarrollo de software, esto significa comprender la arquitectura de una aplicación, depurar código o comparar diferentes algoritmos. Por lo tanto, incluso si conocemos el problema y la solución, aún necesitamos saber por qué. ¿Por qué esta solución es mejor que la otra? ¿Es la mejor solución posible? ¿Cuáles son las limitaciones?
👉 Por ejemplo, puedes analizar el código para identificar áreas que violan los principios del código limpio. Puedes distinguir entre código bien elaborado y mal escrito, examinando cómo interactúan las diferentes partes y cómo impactan en la calidad general. Puedes analizar una función grande y determinar cómo dividirla de manera efectiva o identificar formas de duplicación de código poco claras.
📌 Consejo: Realice revisiones de código periódicamente y refactorice el código para mejorar la legibilidad, la eficiencia y el cumplimiento de las mejores prácticas.
5. Evaluación
En este nivel, se evalúan y se emiten juicios sobre diferentes enfoques. Se evalúa la calidad, la eficacia y la idoneidad de las soluciones de software, las metodologías, los lenguajes y las herramientas. También se comprueban las compensaciones entre las decisiones de diseño, se realiza un análisis de riesgos y se determina la mejor acción para un proyecto.
👉 Por ejemplo, puedes evaluar críticamente la calidad del código y tomar buenas decisiones de compensación en este nivel. Puedes sopesar los beneficios de aplicar un principio de código limpio frente a los inconvenientes, como una mayor complejidad o impactos en el rendimiento. Teniendo en cuenta las limitaciones de tiempo, la experiencia del equipo y la capacidad de mantenimiento a largo plazo, puedes evaluar diferentes estrategias de refactorización para un código heredado.
📌 Consejo: Participa en revisiones de código a través de contribuciones de código abierto o dentro de tu equipo. Evalúa de forma crítica tanto tu código como el de los demás para mejorar tus habilidades de toma de decisiones.
6. Creación
Este es el nivel más alto de habilidades cognitivas en la Taxonomía de Bloom, donde se espera que los estudiantes generen nuevas ideas, productos o formas de ver las cosas mediante la combinación o reorganización de elementos existentes (proceso de creación). Diseñe e implemente soluciones de software innovadoras, utilizando sus conocimientos y habilidades en ingeniería de software para crear nuevos productos que aporten valor a las personas.
👉 Por ejemplo, ahora puedes innovar y desarrollar nuevas estrategias o patrones de código limpio en este nivel. Puedes crear reglas de linting personalizadas para aplicar estándares de código limpio específicos del equipo, diseñar nuevas técnicas de refactorización para sistemas heredados complejos o desarrollar materiales didácticos para ayudar a los desarrolladores menos experimentados a dominar los principios del código limpio.
📌 Consejo: En este nivel, puedes diseñar tu propio marco o herramienta que aborde un problema específico que hayas encontrado en tus proyectos. Esto te impulsará a integrar tu comprensión de varios dominios e innovar nuevas soluciones. Luego, comparte tus creaciones a través de blogs, charlas o GitHub, invitando a recibir comentarios que puedan refinar aún más tu trabajo y ayudarte a crecer como desarrollador.
Aquí hay algunos consejos sobre cómo puedes usar la taxonomía de Bloom para aprender cualquier tema:
✅ Establezca objetivos de aprendizaje claros para usted o su equipo que apunten a diferentes niveles cognitivos.
✅ Una buena estrategia es avanzar desde los niveles más bajos. Intenta evitar alcanzar los niveles más altos antes de dominar los niveles más bajos.
✅ Fomentar la colaboración, la autorreflexión y la tutoría para apoyar el aprendizaje y el desarrollo en todos los niveles cognitivos.
✅ A medida que avances, ponte a prueba y sube de nivel. Asegúrate de incluir algo más que recordar o comprender lo estudiado.
Referencias
El contenido original de este artículo es propiedad de:
“La mejor manera de aprender a programar es practicando todos los días“.
Subscribe to my newsletter
Read articles from Frontend Club directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Frontend Club
Frontend Club
La mejor manera de aprender a programar es practicando todos los días.