Por amor al código Code snippets y reflexiones sobre tecnología

No ames la tecnología, ama tu oficio

Ultimamente he estado reflexionando sobre lo que hace que me sienta bien en el trabajo y me interese más cada día en aprender y en seguir mejorando.

Por un lado el trabajo de desarrollador es un trabajo realmente privilegiado: trabajo de oficina en lugares normalmente bien acondicionados, a veces incluso con café o una cocina a nuestra disposición, donde el mayor riesgo que corremos es el de la tendinitis del ratón o la vista cansada.

Aunque eso no hace el trabajo divertido. Sí, puedes sentirte afortunado, pero no emociona.

En realidad, el día a día es bastante estático: Estás ocho horas diarias sentado delante del ordenador, probablemente más, de vez en cuando tienes alguna reunión o conferencia y puedes interactuar con otras personas, pero la mayor parte del tiempo solo eres tú, el código y la documentación de las X herramientas, frameworks, lenguages, bases de datos y demás software y/o hardware que estés utilizando.

Por otro lado, es habitual escuchar a los desarrolladores quejarse. Nos quejamos de los jefes, de la gestión del proyecto, de los clientes, de los diseñadores, de QA, de los demás desarrolladores, etc.

Muchas páginas se han escrito sobre la frustración del programador. La frustración con las herramientas, con el lenguage, con la metodología en cascada, con las metodologías ágiles… Que si en mi empresa usamos Ángular y a mi me gustaría usar React, que si trabajamos con Java y a mi me gusta Python, que si indentar con tabs o con spacios, que si SCRUM no vale para nada, que si este código no hay quien lo entienda. Parece que nada nos vale. O bien somos muy exigentes o no lo estamos enfocando bien, y yo me decantaría por lo segundo.

No digo que todas esas quejas sean inventadas o ilegítimas. Pero si lo piensas, son tonterías, cosas sin importancia. No deberían preocuparnos, y además normalmente no está en nuestra mano cambiarlas. Siempre habrá aspectos que mejorar y cosas que se podrían haber hecho diferente. Pero creo que en lugar de centrarnos en el último framework o lenguaje de moda, debemos centrarnos en mejorar nuestro código y nuestro trabajo cada día.

Si cada día te pones delante del código/software/producto y te planteas ¿Cómo podría hacerlo mejor? ¿Cómo podría hacerlo más rápido/legible/seguro/automático? entonces todo lo demás empieza a parecer menos importante.

Tenemos delante un problema que podemos y debemos atacar sin depender de nadie: nuestro código. Muchas veces no podemos elegir el lenguaje, las APIs que usamos o la base de datos con la que interactuamos. Pero sí tenemos control sobre el código que escribimos y mantenemos. Ese es nuestro trabajo y es ahí donde podemos centrarnos en mejorar. Además somos una de las pocas profesiones donde tenemos control directo sobre las herramientas que utilizamos y sobre lo que producimos, no debemos olvidar que nuestro oficio es muy artesanal todavía en ese sentido y podemos aprovecharnos de esa ventaja.

¿Probar tu código es lento porque tienes que pasar por X pasos hasta llegar a lo que tú has escrito? Tal vez si el código estuviera en un módulo independiente y pudieras escribir unos tests la experiencia sería completamente diferente.

¿La aplicación es lenta y siempre tienes que esperar X segundos a que se inicie? Tal vez puedes echar un ojo al código de arranque para optimizarlo.

¿No te gusta trabajar con la API/BBDD/librería de terceros? A lo mejor puedas hacer un interfaz o una fachada que haga que no te tengas que preocupar más de ese problema.

¿Te da pánico cada vez que tienes que cambiar algo en el código porque no sabes si estás rompiendo otra cosa? Toca escribir unos tests de regresión…

En definitiva: ataca los problemas que están a tu alcance, convierte las incomodidades en retos. Reduce la fricción en tu trabajo día a día. ¡Automatiza todo lo que puedas! La tecnología es una herramienta, no te enamores de cada nuevo lenguaje o de cada nuevo IDE, enamórate de tu capacidad para crear y modificar tus herramientas y tu producto. Estarás más motivado, mejorarás como desarrollador y serás más productivo.

Es muy fácil caer en la tentación de hacer lo justo para que funcione, de meter unas cuantas líneas de código con calzador aquí y allí para arreglar el bug o para añadir esa funcionalidad que corre tanta prisa. Pero cuando eso ocurra, piensa de nuevo en los problemas de arriba. Nosotros creamos o reducimos nuestra deuda técnica con cada día de desarrollo. Está en tu mano convertir tu código y tu flujo de trabajo en un placer o en un martírio para ti y para los demás desarrolladores de tu equipo. Ten valor y toma el control de tu oficio, haz de tu trabajo un placer.

Si quieres comentar, corregir algo o contribuir, puedes hacerlo en twitter o en Github. Cualquier comentario, crítica o contribución será bien recibido.