Trabajando con estilo: GoLand
Live Templates
Viendo una demo de un tipo que hacía un provider de Terraform en vivo, lo que más me llamó la atención fue cómo este lo estaba haciendo. Escribiendo un par de letras y *boom* tenía la estructura general de cada archivo.
Debido a que no pillé nada escrito sobre ese asombroso truco de magia (ya sea porque pasa desapercibido o es muy simple) escribo este post.
¿Cómo lo hizo? Simple, mediante uno de los Integrated development environments (IDE) de Jetbrains y el uso de Live Templates, del cuál hablaré mas adelante, junto a algunos tips cosméticos.
Disclaimer: no uso todo el potencial de GoLand, pero pretendo hacerlo. Eventualmente.
Un poco de contexto…
Como Sysadmin, todo este tema de IDEs, editores y memes sobre Git pasaron bastante desapercibidos al comienzo, hasta que empecé por el camino DevOps. Partí por recomendación de Moisés Godoy usando WebStorm y de ahí varié en base a lo que necesitase usar. Debido al tema de Terraform Custom Providers, comencé a utilizar GoLand.
Al momento de ver al sujeto de la presentación y cómo este utilizaba el IDE para la demo en vivo, me propuse al fin sacarle provecho mas allá de lo estético. Pero primero lo primero: dominar el uso de Live Templates.
¿Qué es un IDE?
Es un poco raro agregar esto posteando en devsChile, pero para los que recién comienzan o los que aún no han intentado usar uno, es relevante.
Integrated development environment (IDE) facilita el desarrollo de software incluyendo herramientas como editor, compilador, depurador, terminal, pruebas y mas.
Dentro de las herramientas para desarrolladores de JetBrains, existen especificas para algunos lenguajes. Entregando algunas ventajas y mayor soporte para estos. Por ejemplo en Goland te permite ejecutar pruebas directamente sobre el código, sin tener que cambiar a la terminal.
Para saber más sobre las características de éste, vean el sitio oficial. Otros tipos de lenguajes como SQL, Bash o soporte a herramientas como Docker pueden ser agregados manualmente, los cuales son transversales para cualquiera de los IDE de Jetbrains.
¿Cómo se siente?
Pasar de un editor de texto a un IDE es bastante abismante. El apoyo que te entrega un IDE es más que agradable, sin mencionar que es lejos más bonito. En lo personal, prefiero bastante los detalles estéticos y lo que permita promover el orden sobre todo.
Y sí, se puede lograr conseguir algo parecido en editores de texto como Sublime, pero con unas ligeras (por no decir tediosas) modificaciones.
Por los mismos motivos que aprecio el uso de IDE’s no recomiendo el uso de éstos, al menos hasta que ya tengas un buen tiempo trabajando con algún lenguaje. Si te vuelves muy dependiente, no podrás desarrollar esa lógica de trabajo y el IDE te estará haciendo la pega.
Cuando esos errores simples que te ocurrían constantemente pasan a ser muy poco frecuentes, es buen momento de pasarse al lado oscuro.
Precio de la comodidad
Dependiendo del IDE que requieras, como ya mencioné antes, existen específicos para cada lenguaje como PyCharm (Python), RubyMine (Ruby), GoLand (Golang) y muchos más, con el mismo sistema ingenioso de nombres.
¿Qué implica esto? Si trabajas con Ruby y Python, necesitaras 2 IDEs. Cada uno por tan solo 89 dólares por año, lo cual es en cierto punto hasta razonable.
Tip: IntelliJ IDEA posee una Community Edition.
Volviendo al objetivo del post
Lamentablemente, no es fácil encontrar “how to make the thing that the terraform dude does when he writes something and then pops up the code”.
Mucho menos cuando no puedes describir bien el concepto de lo que quieres hacer. Luego de un rato dando vueltas en Google, pillé el cómo hacer tal truco de magia 🕵
¿Cómo habilitarlo?
Desde Preferencias > Editor > Live Templates, verás lo siguiente:
Fue en ese momento en que me dí cuenta quela respuesta siempre estuvo en mi código, solamente no lo sabía.
Dentro del lenguaje seleccionado, en el icono ➕ te dejará agregar un nuevo template. Abbreviation es el nombre con el cual podrás llamarlo desde el o los archivos con tal formato.
Te pedirá que lo asignes a un contexto o a todos, como prefieras. Claramente apuntando a que si lo utilizas, será en un lenguaje en particular y no a spamear parrots.
La probabilidad de que emplees esto para algo productivo, es baja. Pero para eventos familiares, bautizos y cumpleaños es bueno tener estos trucos bajo la manga para romper el hielo.
Puedo invocar parrots en mi IDE, ¿quieres ver?
Plugins
Te permite extender el alcance de lo que puedes hacer ver bonito y obtener cierto grado de soporte al formato de texto que utilices, de la misma forma en que lo hace cada IDE con su lenguaje principal, pero no tan dedicado.
Recomendados
- HashiCorp Terraform / HCL language support — Lo vieron venir, ¿no?
- Makefile support — Para otro post.
- Markdown Navigator — README with style.
- BashSupport — Que nunca te falte.
- Cualquier cosa que haga mas estético lo que leas.
Apariencia
Hace unos días quise cambiar del tema estándar de mi Goland. Lo que encontré buscando como hacer las cosas más kawaii fue:
Actualmente estoy usando Material Theme y ya olvidé cómo era el original. Se ve aceptable, así que seguiré con eso.
Para finalizar, en lo personal el uso IDEs como GoLand o RubyMine (entre otros) han hecho mi experiencia al momento de trabajar con otro lenguaje más agradable y mucho más fluida. El apoyo que estos te entregan para trabajar es más que bueno, permitiéndote ahorrar tiempo en cosas como el manejo dependencias, control version y muchas cosas más. Live Templates es uno de los tantos detalles que te hacen mas agradable el trabajar día a día con estas herramientas, claramente cuando apuntas a evitar tener que repetir tantas veces una estructura determinada ~~y no poner party parrots como comentario~~.
Recomiendo el uso de estos IDEs sobretodo a aquellos que aún no le han dado la oportunidad, ya sea porque son muy extravagantes o simplemente porque no le ven la gracia. También para aquellos que no puede utilizarlo comodamente por el impacto que genera el consumo de recursos en sus equipos, existen varias opciones para optimizar el rendimiento de estos, ya sea desactivando plugins no utilizados o metiendo mano en algunos parámetros.
Así que no hay excusa, bájenselo y sigan trabajando -pero con estilo- 😎.