las preguntas que más me hacen es como empezar con un segundo lenguaje de programación. En este post vamos a ver como hago yo, para aprender otro lenguaje.
Índice
1 - Mi historia
Antes de empezar, quiero empezar con los lenguajes que yo he tocado y aprendido.
Si seguís el blog como bien sabéis estoy bastante experimentado en .NET
particularmente en C#
, pero, desde principios de 2022 trabajo en una empresa donde se trabaja en Go
, pero principalmente se programa en Ruby
.
Anteriormente he trabajado en mi vida profesional en PHP
y ExtJs
.
Y estudiando aprendí lo mismo que todo el mundo que estudia en españa, C/C++ y java
.
2 - Como aprender mas de un lenguaje de programación
Cuando digo más de un lenguaje de programación me refiero a lenguajes que cubran la misma parte de la aplicación, esto no aplica para aprender un lenguaje de back end y otro de front end ya que estos van a ser complementarios unos de otros.
Sino a cómo aprender más de un lenguaje, en este caso ambos de back end.
Como he dicho antes he trabajado la mayor parte de mi vida profesional con .NET, por lo tanto mi mindset o mi forma de programar está muy centrada en .NET. Migrar a otro lenguaje no va a ser fácil sin un poco de esfuerzo.
Por ello lo que yo recomiendo es hacer un CRUD básico, una API donde tienes las operaciones de crear actualizar borrar y leer de la base de datos.
Es importante utilizar una base de datos, la que sea.
Y es más importante aún programarlo a un nivel que nosotros consideramos listo para producción.
Te puedes saltar alguna validación si no quieres gastar mucho tiempo, pero yo recomiendo hacer los casos de uso completos. Y por supuesto añadir algún test, aunque sean solo los happy path.
Crearemos un CRUD básico pero no simple, con esto qué quiero decir? Quiero decir aplicando celan arquitecture para tener una separación de responsabilidad, lo que nos llevará a separar las diferentes capas. Los principios SOLID. Añadir swagger y devolver un Json si estamos haciendo API Rest, asi nos veremos forzados a investigar cómo incluir librerías de terceros, y dónde buscarlas
Así podremos identificar dónde están los puntos diferenciales entre cada lenguaje.
La idea es que todas las versiones realicen la misma acción y en todas obtengas el mismo resultado
Finalmente, solo me queda añadir que también recomiendo tener un documento con nosotros ya sea escribiendo a mano o en el propio proyecto donde vamos apuntando las cosas que encontramos diferenciativas con nuestro lenguaje principal.
Esto es lo que hice yo para dar mis primeros pasos en Go y Ruby y puedes ver a lo que me refiero en mi repositorio GoPlayground. La misma acción la he realizado para aprender tanto Ruby on Rails como Sinatra que es el framework con el que trabajo a día de hoy.
Por ejemplo en .Net una excepción se lanza con throw new exception(“mensaje”)
, mientras que en Go es panic(“mensaje”)
o en ruby raise “mensaje”
.
3 - Beneficios de saber más de un lenguaje.
Uno de los grandes beneficios que puedes encontrar es saber que le falta al lenguaje en el que estás que puedes traer de otros para mejorar el lenguaje en el que estás trabajando.
Por ejemplo mi librería de Railway Oriented Programming está basada en una charla de Scott Walchin sobre cómo funcionan los Monads de F#.
Otro gran beneficio es que saber más lenguajes te permite elegir el mejor para hacer ciertas implementaciones, al final del día los lenguajes de programación son herramientas y debemos tratarlas como tal.
Finalmente, el gran beneficio es que saber más lenguajes te abre puertas en trabajos para los que anteriormente no tendrías opciones. Si bien es cierto que a muchas empresas les da igual en qué lenguajes has trabajado en el futuro y entienden que los lenguajes son herramientas. Otros muchos no lo llegan a comprender y si no tienes experiencia en cierto lenguaje ni te contestan, o en el caso de los reclutadores, ni te llaman.
El tener más opciones nos va a dar una mejora tanto en el salario, como en los proyectos en los que vamos a participar.
No quiero hacer una sección diferente para las desventajas ya que solo tenemos desventajas si dejamos de lado los lenguajes y no nos mantenemos al día.