Saltar al contenido

Blog técnico | Consejos para el aprendizaje de idiomas

En mi último post, compartí varias razones para aprender un nuevo lenguaje de programación. Si necesitas un poco de inspiración ve allí primero. En este post, compartiré mi enfoque para aprender nuevos lenguajes de programación.

Una nota sobre los idiomas y el aprendizaje

El aprendizaje es algo muy personal. Cada persona aprende de manera diferente. Las lenguas en general están estrechamente ligadas al aprendizaje. Ya sean habladas, escritas, firmadas o de otra manera, las lenguas son un método por el cual interactuamos con el mundo que nos rodea. Nuestras lenguas dan forma a la manera en que aprendemos y a la forma en que comprendemos todo aquello con lo que interactuamos.

Blog técnico | Consejos para el aprendizaje de idiomas
Blog técnico | Consejos para el aprendizaje de idiomas

Los lenguajes de programación son la forma en que interactuamos con las computadoras. Como tales, los lenguajes de programación que conocemos moldean la forma en que entendemos las computadoras y el software. Esto, a su vez, moldea la forma en que abordamos el aprendizaje de nuevas cosas relacionadas con las computadoras y el software.

Teniendo en cuenta este contexto, reitero que este post trata sobre mi enfoque personal para el aprendizaje de nuevos lenguajes de programación.

Las Puntas

Empieza con los Fundamentos

Como con la mayoría de las cosas, cuando se aprende un nuevo lenguaje de programación, es mejor empezar con lo básico. Empezar por aprender cosas como:

  • ¿Cuáles son los tipos de datos primitivos?
  • ¿Qué otras estructuras de datos se utilizan comúnmente?
  • ¿Cómo se implementa la ramificación (si las declaraciones, las declaraciones de cambio, los operadores ternarios, la coincidencia de patrones)?
  • ¿Cómo creo una función?
  • ¿Se implementa el looping? En caso afirmativo, ¿cómo?
  • ¿Cómo se aplica la recursión?
  • ¿Cómo maneja el lenguaje las E/S?
  • ¿El lenguaje está orientado a los objetos? ¿Cuál es el ciclo de vida de un objeto? ¿Cómo defino e instancio los objetos? ¿Cómo se limpian/desconstruyen los objetos? ¿Cómo creo métodos?
  • ¿Cómo maneja el lenguaje el comportamiento asincrónico?
  • ¿Qué hace realmente bien el lenguaje que a sus desarrolladores les gusta compartir?

Esta lista no es exhaustiva pero es un buen punto de partida para ayudarte a determinar qué fundamentos de la sintaxis de la programación son importantes para ti. Ten cuidado al repasar listas de preguntas como ésta. Cualquiera de ellas puede llevarte a una madriguera de conejo, así que determina cuánto tiempo quieres dedicar a cada pregunta. Pregúntate: «¿Quiero dedicar tiempo a bucear en cada pregunta, o quiero obtener una breve visión general de cada una y bucear en profundidad más tarde por otros medios?».

Comparar y Contrastar

Mientras se aprende un nuevo idioma, puede ser útil compararlo y contrastarlo con los idiomas con los que ya se siente cómodo.

Empieza por buscar similitudes. Luego busca el contexto de por qué esas cosas podrían ser similares.Esto puede ayudarte a identificar patrones entre lenguajes que te ayuden a aprender más rápidamente.Asumiendo que conozco java, podría reconocer que el looping en Java y C# es casi idéntico en funcionalidad.Todo lo que tengo que hacer es recordar algunos cambios sintácticos, y entiendo ambos.

A continuación, busque las diferencias. Luego busque el contexto de por qué esas cosas pueden diferir. El bucle en Haskell se hace a través de la recursión. No hay una sintaxis «para el bucle» como la sintaxis en Java. ¿Qué tiene Haskell que no esté en la naturaleza de Java que hace que sólo use la recursión para el bucle?

Desafíos de la codificación

En muchos casos, la mejor manera de aprender es haciendo. En mi mente, los «desafíos de codificación» pueden ser una amplia gama de cosas.

Desafíos matemáticos

Pueden ser desafíos matemáticos como los que ofrece el Proyecto Euler.También disfruto de los desafíos de codificación estacionales como el Adviento anual del Código.Me gustan los desafíos matemáticos porque me ayudan a aprender los fundamentos matemáticos de un lenguaje.También ayudan a solidificar conceptos como el bucle, la recursividad y la ramificación.

Proyectos pequeños y enfocados

Me gusta hacer pequeños proyectos que se centran en el aprendizaje de una sola habilidad . Por ejemplo, implementar el proyecto Baklava que sólo imprime un rombo es una buena manera de enseñar el looping. Implementar Factorial es una buena manera de enseñar recursión.

Al realizar estos proyectos más pequeños, a veces puede ser bueno limitar el uso de las bibliotecas y las funciones de ayuda incorporadas al lenguaje. Por ejemplo, otro proyecto que suelo hacer es escribir un programa que convierte el texto a binario o hexadecimal. Muchos lenguajes y marcos tienen bibliotecas incorporadas que lo hacen automáticamente, pero evitar esas bibliotecas para el ámbito de ese proyecto me obliga a utilizar y desarrollar mi comprensión de partes más fundamentales del lenguaje o del marco.

Katas

Los desafíos de codificación también pueden incluir el código de las katas. Una kata es un problema de software que es lo suficientemente complicado como para ayudarte a practicar una buena artesanía de software, pero es lo suficientemente simple como para que pueda ser completada en un corto período de tiempo (generalmente menos de una hora). Un ejemplo de kata que he disfrutado es la kata Yahtzee.

Problemas cotidianos

Creo que los buenos retos de codificación también se pueden encontrar buscando problemas o preguntas del día a día. Por ejemplo, mi esposa y yo jugábamos a un simple juego en los autobuses públicos. Si uno de nosotros compra un billete en el que la suma de los tres primeros dígitos de la identificación es igual a la suma de los tres últimos dígitos, la otra persona tiene que comprarle al ganador una pequeña recompensa. Así, un billete con identificación 184229 sería un billete ganador, pero el 184334 no lo sería. Un día nos preguntamos: «Si hacemos cuatro viajes en un día, ¿qué posibilidades hay de que uno de nosotros gane ese día?» Esto hizo un buen desafío de codificación (y ayudó a distraernos en el largo viaje en autobús).

Cuando intente aprender un nuevo idioma, no tenga miedo de «sobre-resolver» un problema. Eso no significa que tu solución deba ser sobredimensionada. Es importante centrarse en las buenas prácticas de software, pero significa que no tienes que tener miedo si hay una forma más fácil de resolver algo que un programa de escritura. Un problema que «sobreresolví» es la noche de juegos en familia. A mis suegros les gusta mucho jugar a Uno y llevar la cuenta. Llevar la cuenta de un juego de Uno en papel es muy sencillo. Además, me imagino que también hay varias aplicaciones existentes que lo harían por mí. Sin embargo, estaba tratando de aprender tkinter en Python 3, así que elegí escribir mi propio programa de puntuación.

Descargo de responsabilidad : No abogo por «resolver en exceso» un problema en el código de producción. Escribir tu propia biblioteca de cifrado es un gran ejercicio para aprender, pero no recomendaría incluir tu propia biblioteca de cifrado en el código de producción cuando ya existe uno bueno.

Proyecto final

Una cosa que me gusta hacer después de que creo que tengo una buena sensación de un idioma es asignarme un «proyecto final». Este proyecto debe ser algo que no pueda completar en una sola sesión. Debe ser un proyecto que me sienta cómodo haciendo, pero que me haga pensar en cómo utilizar estratégicamente los matices del idioma que estoy aprendiendo. Personalmente, me gusta hacer el mismo proyecto final en todos los idiomas que estoy aprendiendo, lo que me permite hacer las comparaciones y contrastes que he descrito en la sección anterior. Recientemente este proyecto ha sido una aplicación web que nos permite a mi esposa y a mí jugar a un juego de Cluedo con sólo nosotros dos y un jugador de computadora que no hace más que sostener cartas y responder preguntas.

Abandonar un proyecto

Una parte divertida del autoaprendizaje es que el proyecto o reto que te asignes puede no encajar en el idioma que estás intentando aprender. No tengas miedo de abandonar un proyecto cuando descubras que es así. Sin embargo, antes de abandonar el proyecto haz una «evaluación postmortem».

  • Identificar qué es lo que hace que el lenguaje sea un mal candidato para el proyecto que intentabas completar.
  • Identificar qué idioma podría ser más adecuado.
  • ¿Qué hay de ese lenguaje que lo hace más adecuado?
  • ¿Hay alguna manera de que el lenguaje pueda ser modificado para que funcione para este proyecto?
  • ¿Existe una biblioteca o un marco de trabajo que proporcione esta funcionalidad? ¿Podría haberla? ¿Debería haberla?

Proyectos de código abierto

Una última cosa que puede hacer una vez que empiece a sentirse más cómodo con un nuevo lenguaje es contribuir al código abierto. La mayoría de los proyectos de código abierto tienen una lista de «problemas» que contienen ya sea errores que deben corregirse o características que deben añadirse. Estos problemas (si están bien diseñados) son por definición problemas de alcance que deben resolverse y le permitirán solidificar lo que ha aprendido en un proyecto del «mundo real». La mayoría de los proyectos de código abierto también siguen un modelo de solicitud de extracción. Esto significa que su código será revisado en cuanto a su calidad y mejores prácticas por un miembro del proyecto.es una buena oportunidad para obtener retroalimentación sobre lo que ha aprendido.

Si eres nuevo en el código abierto, First Timers Only tiene algunos buenos recursos para que empieces.

Pensamientos finales

Aprender puede ser divertido, emocionante y desordenado. Sea cual sea el idioma que esté aprendiendo, no tema cometer errores. No deje de hacer preguntas. Tómese el tiempo necesario para detenerse y evaluar lo que ha aprendido. Доверяй, но проверяй. Traducción: «Confía, pero verifica». O, en este caso, sigue las mejores prácticas del lenguaje, pero tómate tiempo para verificar por qué los creadores y la comunidad han decidido hacer las cosas de esta manera.

Espero que estos consejos te ayuden a empezar a aprender el idioma, pero recuerda que debes encontrar lo que funciona para ti.

¡Nunca dejes de aprender!

Categorías: prácticasTags: mejora continua, empezar