Back home

Los pilares principales del aprendizaje de la programación — y por qué los principiantes deberían dominarlos.

Los pilares principales del aprendizaje de la programación y por qué los principiantes deberían dominarlos

Los pilares principales del aprendizaje de la programación y por qué los principiantes deberían dominarlos.

Llevo más de 20 años programando. Durante ese tiempo he tenido el placer de trabajar con muchas personas, de las cuales aprendí mucho. También he trabajado con muchos estudiantes recién salidos de la universidad, con los que tuve que asumir el papel de profesor o mentor. Llevo más de 20 años programando. Tuve el placer de trabajar con mucha gente durante este tiempo y aprendí mucho de ellos. También trabajo con muchos estudiantes que acaban de salir de la universidad y tengo que asumir el papel de profesor o mentor.

Últimamente he participado como formador en un programa que enseña codificación a principiantes absolutos. Recientemente, trabajé como formador en un proyecto que enseñaba programación a principiantes absolutos.

Aprender a programar es difícil. A menudo encuentro que los cursos universitarios y los bootcamps pasan por alto aspectos importantes de la programación y adoptan enfoques deficientes para enseñar a los novatos. Aprender a programar es difícil. A menudo encuentro que los cursos universitarios y los bootcamps ignoran aspectos importantes de la programación y adoptan un enfoque deficiente para enseñar a los principiantes.

Quiero compartir los cinco pilares básicos sobre los que creo que debe basarse un curso de programación exitoso. Como siempre, me refiero al contexto de las principales aplicaciones web. Quiero compartir los cinco pilares fundamentales sobre los que creo que se debe construir un curso de programación exitoso. Como de costumbre, estoy trabajando en el contexto de una aplicación web convencional.

El objetivo de un novato es dominar los fundamentos de la programación y comprender la importancia de las bibliotecas y los marcos. El objetivo de los principiantes es dominar los conceptos básicos de la programación y comprender la importancia de las bibliotecas y los marcos.

Temas avanzados como la nube, operaciones en general o herramientas de construcción no deben formar parte del plan de estudios. También soy escéptico cuando se trata de patrones de diseño. Suponen una experiencia que los principiantes nunca tienen. Temas avanzados como computación en la nube, operaciones generales o herramientas de construcción no deben formar parte del plan de estudios. También soy escéptico cuando se trata de patrones de diseño. Asumen que los principiantes nunca han tenido experiencia.

Así que veamos por dónde deberían empezar los nuevos programadores. Veamos dónde deberían comenzar los nuevos programadores.

Desarrollo basado en pruebas (TDD) Desarrollo basado en pruebas (TDD)

TDD trae muchos beneficios. Desafortunadamente, es un tema avanzado para el que los principiantes no están del todo preparados. TDD trae muchos beneficios. Desafortunadamente, este es un tema avanzado para el que los principiantes no están preparados.

Los principiantes no deberían escribir exámenes. Esto sería demasiado para sus niveles básicos de habilidad. En cambio, deberían aprender a utilizar y trabajar con pruebas. Los principiantes no deberían escribir exámenes. Esto es demasiado alto para su nivel de habilidad básico. En cambio, deberían aprender a utilizar y utilizar las pruebas.

Cada curso de programación debe centrarse en ejercicios. Extiendo mis ejercicios con pruebas unitarias y proporciono a los estudiantes un entorno que ya está configurado para ejecutar esas pruebas. Cada curso de programación debe centrarse en ejercicios. Extendí mi ejercicio con pruebas unitarias y proporcioné a los estudiantes un entorno para ejecutar estas pruebas.

Todo lo que los estudiantes tienen que hacer es escribir su código y luego observar cómo las luces del testrunner cambian de rojo a verde. La gamificación resultante es un efecto secundario agradable. Todo lo que los estudiantes tienen que hacer es escribir su código y observar cómo la luz del testrunner cambia de rojo a verde. La gamificación resultante es un efecto secundario agradable.

Por ejemplo: Si la tecnología seleccionada es Spring, proporciono los ejercicios y pruebas dentro de un proyecto Spring. Los estudiantes no necesitan saber nada sobre Spring. Todo lo que necesitan saber es la ubicación de los ejercicios y el botón para activar las pruebas. Por ejemplo: si la tecnología elegida es Spring, proporcionaré ejercicios y pruebas en el proyecto Spring. Los estudiantes no necesitan saber nada sobre la primavera. Sólo necesitan saber dónde están los ejercicios y el botón que activa la prueba.

Además, los estudiantes deben saber cómo utilizar un depurador y tener a mano un bucle de lectura, evaluación e impresión (REPL). La capacidad de analizar código durante el tiempo de ejecución y tener un campo de juego para pequeños experimentos es esencial en TDD. Además, los estudiantes deben saber cómo usar un depurador y tener a mano un bucle de lectura, evaluación e impresión (REPL). En TDD, la capacidad de analizar código en tiempo de ejecución y proporcionar un lugar para pequeños experimentos es esencial.

El punto principal es garantizar que los estudiantes no tengan que aprender comportamientos básicos de TDD después de haber adquirido habilidades básicas de programación. Cambiar hábitos más adelante en la carrera de los estudiantes será mucho más difícil que aprenderlos ahora. Es por eso que deberían vivir y respirar las pruebas unitarias desde el principio. El objetivo es garantizar que los estudiantes no necesiten aprender comportamientos básicos de TDD después de haber dominado las habilidades básicas de programación. Cambiar hábitos más adelante en la carrera de un estudiante es mucho más difícil que aprenderlos ahora. Por eso es necesario probarlos en unidades de supervivencia y respiración desde el principio.

Más adelante en su vida profesional, deberían sentir antipatía por los proyectos sin pruebas unitarias. Deberían ver intuitivamente la ausencia de pruebas unitarias como un antipatrón. Más adelante en sus carreras, deberían resentirse por los proyectos sin pruebas unitarias. Deberían ver intuitivamente la falta de pruebas unitarias como un antipatrón.

Primero los fundamentos Primero los fundamentos

Escucho muy a menudo que los novatos deberían comenzar inmediatamente con un marco. Esto es como enseñar a las personas a conducir colocándolas en un coche de rally y pidiéndoles que eviten sobrevirar. Esto simplemente ignora el hecho de que todavía confunden el freno con el acelerador. A menudo escucho que los principiantes deberían comenzar de inmediato con un marco. Es como enseñar a la gente a conducir, subirlos a un coche de rally y pedirles que eviten sobrevirar. Esto ignora por completo el hecho de que todavía confunden el freno con el acelerador.Lo mismo se aplica cuando iniciamos a los estudiantes con un marco como Angular. Los principiantes primero deben comprender los fundamentos de la programación. Deben estar familiarizados con los elementos básicos y lo que significa escribir código antes de poder utilizar el de otra persona. Lo mismo ocurre con marcos como Angular. Los principiantes primero deben comprender los conceptos básicos de la programación. Antes de utilizar el código de otras personas, deben estar familiarizados con los elementos básicos y lo que significa escribir código.

Los conceptos de función, variable, condición y bucle son completamente ajenos a los principiantes. Estos cuatro elementos construyen las bases de la programación. Todo lo que constituye un programa depende de ellos. Los conceptos de funciones, variables, condicionales y bucles son completamente ajenos a los principiantes. Estos cuatro elementos forman la base de la programación. Todos los componentes del programa dependen de ellos.

Los estudiantes escuchan estos conceptos por primera vez, pero es de suma importancia que los dominen. Si los estudiantes no dominan los fundamentos, todo lo que sigue parecerá mágico y generará confusión y frustración. Los estudiantes escuchan estos conceptos por primera vez, pero es más importante que los dominen. Si los estudiantes no dominan los conceptos básicos, todo lo que sigue puede parecer mágico y generar confusión y frustración.

Los profesores deberían dedicar más tiempo a estos fundamentos. Pero, lamentablemente, muchos avanzan demasiado rápido. El problema es que algunos profesores luchan por asumir el papel de estudiantes. Han estado programando durante años y han olvidado con qué tipos de problemas tiene que lidiar un principiante. Es bastante similar a un piloto de rally profesional. No puede imaginar que alguien necesite pensar antes de frenar. Simplemente lo hace automáticamente. Los profesores deberían dedicar más tiempo a construir sobre estos cimientos. Pero, lamentablemente, muchas personas progresan demasiado rápido. El problema es que a algunos profesores les resulta difícil ponerse en el papel de sus alumnos. Han estado programando durante tanto tiempo que han olvidado los tipos de problemas con los que deben lidiar los principiantes. Es muy similar a un piloto de rally profesional. No podía imaginar a nadie necesitando pensar antes de frenar. Simplemente lo hace mecánicamente.

Diseño mis ejercicios para que sean desafiantes pero se puedan resolver en un tiempo razonable utilizando una combinación de los cuatro elementos principales. Diseño mis ejercicios para que sean desafiantes pero se puedan resolver en un tiempo razonable utilizando una combinación de los cuatro elementos principales.

Un buen ejemplo es un conversor de números romanos y arábigos. Este desafío requiere paciencia por parte de los estudiantes. Una vez que aplican con éxito los cuatro elementos para resolver el desafío, también obtienen un gran impulso en su motivación. Un buen ejemplo es el convertidor de números romanos a arábigos. Este desafío requiere paciencia por parte de los estudiantes. Una vez que apliquen con éxito estos cuatro elementos para resolver un desafío, su motivación también aumentará significativamente.

Los fundamentos son importantes. No sigas adelante hasta que se resuelvan. Los conceptos básicos son muy importantes. No te vayas hasta que lo solucionen.

Bibliotecas y marcos Bibliotecas y marcos

Después de que los estudiantes dediquen mucho tiempo a codificar, deben aprender que la mayor parte del código ya existe en forma de biblioteca o marco. Esto es más una mentalidad que un patrón. Después de que los estudiantes dediquen mucho tiempo a codificar, deben comprender que la mayor parte del código ya existe en forma de bibliotecas o marcos. No es tanto un patrón sino una forma de pensar.

Como he escrito antes: los desarrolladores modernos conocen y eligen la biblioteca adecuada. No pasan horas escribiendo una versión con errores por su cuenta. Como escribí antes: los desarrolladores modernos conocen y eligen las bibliotecas adecuadas. Ellos mismos no pasan horas escribiendo versiones con errores.

Para que esa transición de mentalidad sea un éxito, los ejemplos de la “fase fundamental” deben poder resolverse utilizando bibliotecas conocidas como Moment.js, Jackson, Lodash o Apache Commons. Para que este cambio de mentalidad sea exitoso, los ejemplos de la “Fase básica” deben poder resolverse utilizando bibliotecas conocidas como Moment. js, Jackson, Lodash o Apache Commons.

De esta manera, los estudiantes comprenderán inmediatamente el valor de las bibliotecas. Se dieron vueltas en la cabeza ante esos complicados problemas. Ahora descubren que una biblioteca resuelve el ejercicio en poco tiempo. De esta manera, los estudiantes comprenderán inmediatamente el valor de la biblioteca. Se enfrentan a cuestiones complejas. Ahora han encontrado una biblioteca que puede solucionar este problema en poco tiempo.

Al igual que en TDD, los estudiantes deberían sospechar cuando sus colegas se jactan de su biblioteca de gestión estatal hecha por ellos mismos, lo que hace que Redux sea innecesario. Al igual que en TDD, los estudiantes deberían sospechar cuando sus colegas se jactan de crear una biblioteca de gestión estatal que hace que Redux sea innecesario.

Cuando se trata de marcos, los estudiantes no tendrán problemas para comprender la importancia una vez que comprendan la utilidad de las bibliotecas. Cuando se trata de marcos, una vez que los estudiantes comprendan la utilidad de las bibliotecas, no tendrán problemas para comprender su importancia.

Dependiendo del cronograma del curso, puede resultar difícil dedicar tiempo a los marcos. Pero como ya señalé, el aspecto más importante es cambiar la mentalidad del estudiante de programar todo desde cero a explorar y usar bibliotecas. Dependiendo del marco temporal del curso, puede resultar difícil dedicar tiempo al marco. Pero como ya he señalado, el aspecto más importante es cambiar la mentalidad del estudiante de programar desde cero a explorar y utilizar bibliotecas.

No agregué herramientas a este pilar, ya que solo son útiles para desarrolladores experimentados. En esta etapa inicial, los estudiantes no necesitan aprender a integrar y configurar herramientas. No he agregado herramientas a este pilar porque solo son útiles para desarrolladores experimentados. En esta etapa inicial, los estudiantes no necesitan aprender a integrar y configurar herramientas.

Maestro y Aprendiz Maestro y Aprendiz

Cuando tenía poco más de 20 años quería aprender a tocar el piano. No quería un maestro y pensé que podía aprenderlo por mi cuenta. Cinco años después, consulté a un tutor profesional. Bueno, ¿qué puedo decir? He aprendido más en 1 mes que durante los cinco años anteriores. Cuando tenía poco más de 20 años, quería aprender a tocar el piano. No quiero un maestro, creo que puedo enseñarme solo. Cinco años después, consulté a un mentor profesional. ¿Qué puedo decir? Aprendo más en un mes que hace cinco años.

Mi profesor de piano me señaló errores en mi forma de tocar que no podía oír y me hizo consciente de cosas interpretativas que nunca hubiera imaginado. Después de todo, ella me inculcó la mentalidad para la música y el arte, los cuales estaban fuera de mi alcance como técnico. Mi profesor de piano me señaló errores que no podía escuchar cuando tocaba y me hizo darme cuenta de algo interpretativo que nunca había pensado. Después de todo, ella me inculcó una forma de pensar musical y artística, las cuales estaban fuera de mi alcance como técnico.

Lo mismo ocurre en la programación. Si alguien no tiene experiencia en programación, el autoestudio puede ser una mala idea. Aunque hay muchas historias de éxito, cuestiono la eficacia de hacerlo solo. Lo mismo ocurre con la programación. Si alguien no tiene experiencia en programación, probablemente sea una mala idea que aprenda usted mismo. Si bien hay muchas historias de éxito, dudo de la eficacia de hacerlo solo.

En cambio, debería haber una relación de “maestro y aprendiz”. Al principio, el maestro da reglas que el aprendiz debe seguir… ¡a ciegas! El maestro puede explicar las reglas, pero normalmente el razonamiento escapa a la comprensión del aprendiz. En cambio, debería haber una “relación mentor-discípulo”. Al principio, el maestro le da al aprendiz las reglas que deben seguir: ¡sígalas ciegamente! El maestro puede explicar las reglas, pero normalmente el razonamiento resulta incomprensible para el aprendiz.

Estas reglas internalizadas forman una especie de red de seguridad. Si uno se pierde, siempre tendrá un lugar seguro al que regresar. Estas normas internas forman una especie de red de seguridad. Si una persona se pierde, siempre podrá encontrar un lugar seguro.

La enseñanza no debe ser un monólogo. El maestro tiene que tratar con cada alumno individualmente. Debe comprobar cómo trabajan los alumnos, dar consejos y adaptar el ritmo del curso a su progreso. La enseñanza no debe ser un monólogo. El director debe tratar con cada estudiante individualmente. Debe comprobar cómo trabajan los estudiantes, dar consejos y ajustar el ritmo del curso en función de su progreso.

Una vez que los aprendices alcanzan un cierto nivel de dominio, se les debe animar a explorar nuevos territorios. El maestro se convierte en un mentor que comparte “sabiduría” y está abierto al debate. Una vez que los aprendices alcanzan un cierto nivel de dominio, se les debe animar a explorar nuevas áreas. El gurú se convierte en un mentor que comparte “sabiduría” y está abierto al debate.

Reto y Motivación Reto y Motivación

“¡Creemos un clon de Facebook!” Esto no proviene de un CEO respaldado por una horda de desarrolladores de software de alto nivel y un presupuesto multimillonario. Es un ejercicio de un curso de introducción a programadores. Una empresa así es prácticamente imposible. Peor aún, los estudiantes son llevados al país de las maravillas y engañados haciéndoles creer que tienen habilidades que realmente están fuera de su alcance. “¡Creemos un clon de Facebook!” Eso no es lo que dice un CEO respaldado por un equipo de desarrolladores de software de alto nivel y un presupuesto multimillonario. Es un ejercicio de un curso de introducción al programador. Un trabajo así es prácticamente imposible. Peor aún, los estudiantes son transportados a un país de las maravillas y engañados haciéndoles creer que tienen habilidades que realmente están más allá de sus capacidades.

Sin duda el profesor es consciente de ello, pero crea este tipo de ejercicios por motivos de motivación. No hay duda de que el profesor lo sabe, pero existe una razón motivacional para crear tal ejercicio.

El objetivo principal de un ejercicio no es entretener. Debe crearse en torno a una técnica particular y debe ayudar a los estudiantes a comprender esa técnica. El objetivo principal de la práctica no es el entretenimiento. Debe crearse en torno a una tecnología específica y debe ayudar a los estudiantes a comprender esa tecnología.

La motivación es buena, pero no a costa del contenido. Programar no es fácil. Si los estudiantes no tienen una motivación intrínseca, es posible que la codificación no sea el camino a seguir. La motivación es buena, pero no a expensas del contenido. Programar no es fácil. Si los estudiantes no están intrínsecamente motivados, entonces escribir código puede no ser la opción correcta.

Los principiantes deberían experimentar lo que significa ser un desarrollador profesional. Deben saber lo que les espera antes de invertir muchas horas. Los principiantes deberían experimentar lo que significa ser un desarrollador profesional. Deben saber qué les espera antes de invertir mucho tiempo.

Por ejemplo, muchas aplicaciones empresariales se centran en formularios y cuadrículas complejos. Crearlos es una habilidad importante que los ejercicios pueden impartir. Es posible que crear una aplicación similar a Facebook no sea la mejor lección para que los estudiantes aprendan de inmediato. Por ejemplo, muchas aplicaciones empresariales se centran en formas y cuadrículas complejas. Crearlos es una habilidad importante que la práctica puede enseñar. Crear una aplicación similar a Facebook puede no ser el mejor curso que los estudiantes puedan tomar de inmediato.

De manera similar, alguien que no sea programador podría sorprenderse de las pocas líneas de código que escribe un desarrollador por día. Incluso hay ocasiones en las que eliminamos código o no logramos nada. De manera similar, los no programadores podrían sorprenderse de las pocas líneas de código que los desarrolladores escriben cada día. Incluso hay ocasiones en las que borramos código o no hacemos nada.

¿Por qué? Porque las cosas van mal todo el tiempo. Pasamos horas interminables arreglando algunos errores extremadamente extraños que resultan ser un simple error tipográfico. Es posible que alguna herramienta no funcione simplemente porque una biblioteca obtuvo una actualización de versión menor. O el sistema falla porque alguien olvidó agregar un archivo a git. La lista puede seguir y seguir. ¿Por qué? Porque las cosas siempre salen mal. Pasamos incontables horas arreglando algunos errores realmente extraños, solo para tener un simple error de impresión. Es posible que algunas herramientas no funcionen correctamente simplemente porque una biblioteca se ha sometido a una actualización de versión menor. O el sistema falla porque alguien olvidó agregar un archivo a git. La lista sigue y sigue.Los estudiantes deben disfrutar de estas experiencias. Un ejercicio dirigido a una biblioteca desconocida bajo presión de tiempo podría ser exactamente lo correcto. ;) Los estudiantes deben disfrutar de estas experiencias. Podría ser necesario realizar un ejercicio dirigido a bibliotecas desconocidas que se encuentren bajo presión de tiempo. ,)

El sol no siempre brilla en la vida real. Los principiantes deben estar bien preparados para la realidad de la programación. El sol no siempre brilla en la vida real. Los principiantes deben estar bien preparados para las realidades de la programación.

Consejo finalConsejo final

Por último, pero no menos importante: uno no puede convertirse en programador profesional en dos semanas, dos meses o incluso un año. Se necesita tiempo y paciencia. Por último, pero no menos importante: uno no puede convertirse en programador profesional en dos semanas, dos meses o incluso un año. Esto requiere tiempo y paciencia.

Los formadores no deben apresurarse ni hacer falsas promesas. Deben centrarse en si los estudiantes comprenden los conceptos y no avanzar demasiado rápido. Los formadores no deben apresurar las cosas ni hacer falsas promesas. Deben centrarse en si los estudiantes comprenden los conceptos en lugar de progresar demasiado rápido.

Texto original: https://medium.freecodecamp.org/the-main-pillars-of-learning-programming-and-why-beginners-should-master-them-e04245c17c56