Por necesidades del oficio, en el equipo estamos trabajando en un proyecto muy integrado con Kubernetes, en los próximos meses voy a necesitar tener unos conocimientos mínimos en Go.
Modus operandi
A lo largo de los años he ido perfeccionando una técnica que me funciona bastante bien a la hora de enfrentarme a un nuevo lenguaje.
La idea es aprender de forma activa, es decir, aprender haciendo, para ello lo que mejor me funciona es tomar notas y escribir la máxima cantidad de código posible.
Todas estas notas salen de diferentes fuentes que voy consultando durante el aprendizaje. En el caso de Go estas son las que para mí son las más relevantes.
El orden de los siguientes puntos es importante y mi recomendación es seguirlo.
Learn Go with Tests
Esta web de Chris James es una de las mejores que he encontrado jamás, y ya hablo en general, ojalá hubiera algo parecido para todos los lenguajes.
Personalmente, no creo que haya una manera mejor de entrar a un lenguaje que a través del testing. He conocido gente con mucha experiencia en un lenguaje que cuando le preguntabas como testeado no te sabía decir por qué no sabía.
A esto se suma además que en Go el testing no tiene nada de especial, ya que como verás en el curso de Chris, es parte del lenguaje. Esto hace que sea doblemente interesante, ya que aprendes como funciona Go al mismo tiempo que conoces como se testea en el mismo.
Go Exercism track
Un MUST que recomiendo siempre, sin importar el lenguaje. Exercism es una plataforma que te permite hacer ejercicios de programación en diferentes lenguajes, de forma completamente gratuita y que además si quieres puedes tener hasta mentores que te expliquen dudas o te ayuden a mejorar tu código.
¡Es simplemente impresionante la cantidad de cosas que puedes aprender de esta forma y que además sea gratis! En mi caso, siempre que empiezo con un lenguaje, me hago todos los ejercicios de Exercism.
Go Koans
Los Koans son una forma de aprender un lenguaje a través de ejercicios muy cortos, normalmente de completar. Suelen estar divididos en diferentes secciones y cada una de ellas te enseña una cosa diferente del lenguaje (boléanos, números, strings, etc.).
Yo las descubrí con Ruby y me parecieron una forma muy interesante de aprender un lenguaje, ya que te obliga a pensar en la solución y no te la dan completamente hecha.
Lo dicho, muy recomendable.
Documentación oficial
En general, la documentación oficial de cualquier lenguaje suele ser una buena opción. Más en el caso de Go donde por ejemplo solo existen 25 palabras reservadas.
En ella vamos a encontrar desde un tour interactivo que se puede hacer directamente en el navegador, hasta diferentes tutoriales sobre temas tanto interesantes como que son los módulos en Go o como se puede trabajar con genéricos.
Effective Go
Si has programado en Java seguro que has oído hablar de Effective Java de Joshua Bloch, pues esto es algo parecido pero para Go.
Una aproximación al lenguaje mucho más concreta, buscando resolver problemas muy habituales. Sí que es cierto que para llegar a este punto es importante tener unos conocimientos básicos del lenguaje.
Go by Example
Por último, pero no menos importante, Go by Example es una web que te muestra como hacer cosas en Go a través de ejemplos. Es una web muy completa y que te puede ayudar a resolver problemas concretos.
Tiene gran variedad de ejemplos y además está muy bien organizada, por lo que es muy fácil encontrar lo que buscas (desde montar un servidor web hasta manejar directorios, pasando por temas tan interesantes como crea un cliente de terminal).
¡Espero que os haya gustado, nos vemos pronto!