¿Cómo aprender un nuevo lenguaje de programación?

Adentrarnos en un nuevo lenguaje de programación es un proceso que más de una vez va a pasarnos en nuestra carrera como programadores.

En mi historia he trabajado con más de 10 lenguajes de programación a lo largo de 20 años programando, y puedo decir que es ya un proceso común para mi aprender (o re-aprender) nuevos lenguajes de programación.

En mi experiencia puedo darte algunos consejos de cómo es que yo aprendo un nuevo lenguaje (no framework) de programación y es lo siguiente.

Fundamentos del lenguaje

Siempre, lo primero que hago es ir a ver los fundamentos del lenguaje, es decir, las cosas básicas del mismo, sin importar que tenga experiencia en otros lenguajes, es bueno no suponer, la suposición de creer que es igual una palabra reservada en un lenguaje que en otro es un error al cual no debemos caer (por ejemplo la palabra reservada var de javascript que es muy distinta a la misma palabra var en c# por ejemplo).

Los fundamentos van desde como declarar una variable, que paradigmas soporta el lenguaje (orientado a objetos, funcional, estructurado), como declarar una clase, si el lenguaje soporta interfaces o no, las cualidades únicas del lenguaje, las debilidades y ventajas del lenguaje son importantes también, pero sobre todo ir a este lenguaje nuevo como una persona que se adentrara sin suposiciones traídas de otros lenguajes de programación.

Documentación oficial

Para leer sobre los fundamentos, cuando aprendo un lenguaje de programación que tiene gran cantidad de apoyo, la documentación oficial siempre nos dará un camino sobre las cualidades de este.

La documentación oficial, sobre todo en inglés, ayuda dándonos lo correcto, lo oficial, y de primera mano la información correcta de cómo utilizar el lenguaje.

Antes de tomar un curso, te recomiendo ir a la documentación oficial.

Cursos

Una vez que se han leído los fundamentos, que se ha ido a la documentación oficial, ya podemos tener una base sólida para tomar un curso, ¿Por qué no antes? Pues porque necesitamos la base para poder tener un criterio del curso que tomaremos, hay cursos buenos y malos, pero para saber si estamos perdiendo el tiempo o no, necesitamos este criterio.

Los cursos son un complemento en el aprendizaje, pero es importante tener conocimiento por lo menos base antes de tomarlo, ya que algunos cursos podrían mal educarnos, o no darnos las bases que la documentación oficial ya a este punto nos habrá brindado.

Al tomar un curso ya sea de paga o gratuito hay que leer lo que comenta la gente, la ventaja de youtube es que podemos ir a los comentarios y leer sobre que va el curso, la ventaja en algunas plataformas de paga es que podemos ver lo que la gente dice del curso, es bueno antes de pagar saber si por lo que se va a pagar vale la pena.

Programar

Suena como algo obvio, pero lo he puesto ya que no se gana nada con solo leer, hay que darle al código, no hay buen corredor que sea buen corredor solo leyendo, hay que correr, hay que errar, hay que aprender de los errores, y un consejo es ir más allá del típico “Get Started” de la documentación, y puedes hacerlo vislumbrando algo que puedas hacer que sea utilizado por alguien, una aplicación básica que tenga la solución a algo básico.

Por ejemplo, si es un lenguaje para aplicaciones móviles, pues crear una app que resuelva alguna tarea de la vida diaria ya sea personal o de algún conocido, esto nos ira dando pautas de que ir investigando para ir solucionando las distintas partes de la aplicación. Esto ira forjando un camino orgánico de investigación, ya que tendrás un fin y objetivo por el cual puedes ir investigando, aprendiendo y sobre todo programando.

Comunidades

Las comunidades son parte esencial en el aprendizaje, ya que brindan un apoyo de compañerismo, apoyándonos en momento cuando caigamos en bugs endemoniados, o dudas sobre el lenguaje que estamos adentrándonos.

Por suerte, hoy en día las comunidades las podemos encontrar desde foro, hasta en slack, telegram o discord.

Es bueno involucrarnos con comunidades, ya que podemos tener varios puntos de vista extras, que nos podrán dar más objetividad a nuestro conocimiento.

Conclusión

Espero estos consejos te sirvan, y sobre todo, entender que para aprender un nuevo lenguaje de programación, se debe tener un propósito por el cual deseamos aprenderlo, ya sea laboral, ya sea por gusto, pero nunca que sea porque lo escuchamos como el lenguaje de moda, no caigamos en fanatismos.

¿Cuál es el mejor lenguaje de programación?

Este artículo lo hago para romper muchos dogmas que existen en el área de desarrollo de software. Primero hablare de conceptos básicos y al final daré la conclusión y mi punto de vista. También hablare de lenguaje de programación encasillando: lenguaje de programación, framework, librería, Software-Stack etc.
Siempre los desarrolladores de software creen que los lenguajes que utilizan son los mejores ya que son los que utilizan. También existe el dogma de creer que el lenguaje de programación de moda (véase Ruby en el 2012, véase Mean últimamente) es el lenguaje más potente de todos.
Siempre defenderemos el lenguaje que sabemos utilizar ya que es el que nos da de comer, pero no por ello quiere decir que es el mejor. Los lenguajes de programación son como los colores, un gusto por el verde no lo hace mejor que el azul. O algo más acercado es, los idiomas con los que nos comunicamos, no por estar escrito el Quijote en inglés es mejor que el japonés. Para entender un poco el fin de este artículo, centrémonos en esto último.
Un libro nos cuenta una historia la cual pasa de generación en generación. Esta historia puede ser traducida y no por eso pierde su simbolismo. En los lenguajes de programación se cuentan al igual historias las cuales pueden ser traducidas de un lenguaje a otro (de programación); algo hecho en java del lado del servidor puede ser traducido a node.js o a php, y el lector de la historia (front-end por ejemplo) recibirá el mismo resultado. Aquí vemos un punto clave: la solución del problema es lo que le importa al cliente. Pero también le importa el tiempo en que es escrita la historia.
El tiempo en que se escribe una historia (programa) es parte de por qué nuestra elección sobre un lenguaje de programación nos hace pensar que es el mejor, pues es el que conocemos. Obviamente lo defenderemos a capa y espada. Aquí ya tenemos dos puntos clave: la historia y el tiempo en que esta es escrita, o a su vez, la solución del problema (historia plasmada en libro) y el tiempo de desarrollo (escritura de la historia).
Ahora ya que hablamos de la similitud de libros y programas, hablemos de otros puntos clave. Existen libros que son malos pero cuentan una historia que es entretenida más o menos, y existen libros que son buenos y cuentan una historia que entretiene, divierte, motiva, bueno es una obra de arte. Esto relacionado a los lenguajes de programación es lo siguiente: existen programas que son lentos, mal hechos pero resuelven el problema más o menos, y existen programas que resuelven el problema pero a su vez hace verlo como una obra de arte por su rapidez, y sobre todo la manera que parece que hace magia con el modelo de negocio del cliente. Es aquí el punto más importante: no importa en qué lenguaje de programación hagas las cosas, lo que importa es que hagas bien las cosas.
Otro punto clave es la antigüedad, la mayoría de las veces un lenguaje viejo es un lenguaje obsoleto (yo no veo a nadie escribiendo libros en griego o en hebreo). Pero no siempre es el caso, es mejor decir que un lenguaje es obsoleto cuando no evoluciona (nunca se implementó lambda, no tiene orms, no tiene plugins que hacen el desarrollo más rápido, etc).

Para concluir yo aconsejo que se debe conocer un lenguaje de programación con el cual estés cómodo, y después te hagas experto, más tarde en 1 o 2 años, ve conociendo más lenguajes, esto te ayuda a comparar la forma en que otros lenguajes resuelven lo que tú ya has resuelto, esto lograra que tu abstracción crezca y te ayudara a pensar de manera más ágil. Lo que más importa no es el lenguaje de programación sino la abstracción y creatividad que tengas para resolver las cosas.

Ningún lenguaje de programación es el mejor, sino el cómo tú piensas y resuelves el problema, eso es lo que en realidad importa.