El desarrollo de software es una disciplina que a muchos nos ocupa una parte importante de nuestros días. En concreto la programación, y convertir ideas en código, es algo a lo que podemos dedicar la mayor parte de nuestro tiempo. Desarrollar software no es solo programar, pero definitivamente programar forma parte del desarrollo de software.
Programar también es un hobby, que puedes usar como manera de dar rienda suelta a tu creatividad en un entorno controlado y sin ningún tipo de expectativas sobre el resultado. A título personal siempre ha estado en ese punto medio entre profesión y hobby, y es una de las razones por las que existe este blog.
Sin embargo, y sobre todo tras períodos de mucha intensidad laboral, intento volver a la programación como hobby y no paro de repetirme tres preguntas, ¿qué, cómo y cuándo?
¡Importante!
Existe la creencia de que tener la programación como hobby es un requisito indispensable para ser un programador o desarrollador de software de éxito, y que es necesario emplear tiempo fuera de nuestro trabajo programando.
En mi caso particular, disfruto de la programación como hobby, me ayuda a concentrarme y a cambiar de contexto, pero no creo que sea ni la mejor ni la única manera de tener éxito profesional en el desarrollo de software. Hago esto porque me apasiona, no me siento obligado a ello, y tú no deberías.
¿Qué?
Existen muchas cosas que se pueden hacer al programar como hobby, por una parte podemos usar algo relacionado con otro apartado de nuestra vida, en mi caso un Dashboard en QuickSight para llevar registro de mis entrenamientos, Trillo para llevar un registro de viajes y «comparar banderas» o una aplicación de gestión de tareas para Android (The Time Box).
Por otra, si lo que buscamos es aprender o intentar entender cómo funcionan las cosas, podemos intentar copiar herramientas existentes, como hice con Kanwal, intentando hacer una copia de Trello o con un motor de inyección de dependencias en C# emulando otros tantos existentes. Intentar averiguar cómo funcionan herramientas o aplicaciones que usamos día a día puede ser increíblemente estimulante.
Finalmente, podemos recurrir a problemas externos, entre los que están las katas. Una kata, que viene del mundo de las artes marciales, es un conjunto de movimientos repetido una y otra vez con los que se desarrolla memoria muscular.
Las katas de código, , al igual que las katas de artes marciales, son problemas que comienzan de manera muy simple y luego adquieren complejidad con cada paso. En este blog hemos visto algunas. Existen muchas fuentes de Katas disponibles, una de las más interesantes es este repositorio de Github en el que además puedes contribuir si encuentras otras.
Finalmente existen libros como Exercises for Programmers que nos proporcionan problemas que podemos implementar en nuestro lenguaje favorito, así como opciones adicionales para agregar complejidad a la ejecución de los mismos.
¿Cómo?
Uno de los componentes más importantes a la hora de hacer un proyecto de hobby es el entorno. Salvo que el objetivo que estemos persiguiendo sea el de aprender cómo funcionan gestores de dependencias y compilación como npm, webpack, gradle, maven o nuget, serán un inconveniente más que una ayuda para empezar.
Es por ello que, en mi última sesión de programación como hobby, encontré una herramienta que me permitiera crear un entorno listo para empezar a escribir código sin tener que estar pendiente de dependencias y configuración, llamada TSDX:
Esta herramienta, como mencionaba en el tweet, permite crear un paquete desde cero con la configuración necesaria para hacer pruebas, y poder empezar a cacharrear, usando TypeScript. En mi caso, pude descargar la aplicación, y empezar a ejecutar los tests en tan solo unos minutos, y eso me ahorró una cantidad significativa de tiempo.
En el caso de otros lenguajes estoy convencido que existirán soluciones similares, si conoces de alguna no dejes de comentarlo!
¿Cuando?
Los hobbies suelen estar relegados a «cuando haya tiempo» sin embargo por nuestra paz mental, es recomendable que dediquemos tiempo a hacer tiempo para nuestros hobbies.
Por una parte es necesario recordar que el objetivo es aprender, divertirse y que no debe ser un motivo de frustración, pero también que este hobby puede ser increíblemente absorbente. Es por ello por lo que recomiendo, y me estoy aplicando el cuento para este artículo, pensar durante unos minutos en lo que que queremos llevar a cabo, y luego definir el tiempo que dedicaremos a ello.
Idealmente estos proyectos deberían ser cortos, de tan solo unas horas o como mucho unos días (un fin de semana largo o períodos vacacionales puede dar lugar a mucha creatividad)
Es más que probable que el tiempo que planeemos no sea suficiente para lo que queremos, pero eso también nos permitirá aprovechar el tiempo que le hemos asignado a este pequeño proyecto antes de vernos «en modo Roomba«.
Conclusiones
Si programar es tu hobby, sea o no tu profesión, necesitas saber qué hacer, donde y cómo. En este artículo hemos visto tipos de proyecto que llevar a cabo, fuentes de datos para katas y proyectos, herramientas para tener un entorno en el que empezar a jugar sin estar preocupados de configuración o dependencias, así como algunos consejos sobre cómo organizar nuestro tiempo para que la sesión de programación sea lo más efectiva posible.
¿Y tú, tienes algún consejo relacionado con la programación como hobby?
La verdad es que coincido con la mayoría de lo dicho aquí. Un punto fuerte de esto, a mi vista, es que te permite aprender tecnologías que en tu día a día no tocas (estaba jugando con WebGL el otro día, que dudo que le daré uso en mi trabajo ‘real’), y a su vez te abre la mente a nuevas maneras de pensar y afrontar problemas. (No olvidaré que JS sea single threaded, cuando hay gráficos de por medio, y seguro que le doy uso en mi trabajo diario).
+L&BC