¡Hey, desarrolladores y amantes del software! ¿Listos para sumergirse en el salvaje mundo del ÑaaS? ¡Oh, sí! Estamos hablando de Ñapas as a Service, ese término cool que define todos esos errores y ñapas que solemos cometer en los proyectos de desarrollo de software y que, por alguna extraña razón, muchas veces se pasan por alto. Pero aquí hay algo importante que debemos abordar: a veces, el ÑaaS no es solo un problema técnico, sino una consecuencia de las prisas, urgencias y criticidades que enfrentamos en nuestro día a día. ¡Así es, amigos! A veces, en nuestra carrera frenética por cumplir plazos y resolver problemas críticos, acabamos priorizando las ñapas para salir del paso. Pero no te preocupes, hoy vamos a hablar de cómo evitar caer en esta trampa.
En los aproximadamente 15 años que llevo liderando proyectos, muchísimos de ellos proyectos de desarrollo de software, he visto y sigo viendo que por falta de tiempo, error de previsión, presión por entregar un proyecto y una larga lista de etcétera de excusas, también la incompetencia; llegamos a estirar el chicle de forma insospechada a tal punto que mucho del software que se produce y entrega se llega a probar en Producción. ¿Queeeeeé? Si, así es. Sucede y en la vida real. Y no porque nos guste ser kamikazes sino porque no se ha podido cubrir todos los aspectos necesarios o deseados.
Desarrollar software no es solo ‘picar código’. Desarrollar software es seguir patrones, modelamientos, nomenclaturas ya que junto a la habilidad del propio programador hará no solo que sea software funcional sino también eficiente, limpio.
KPIs: ¿KP… qué?
Primero, hablemos de los KPIs, esos indicadores clave de rendimiento que nos guían hacia el éxito. Establecer KPIs claros y medibles es esencial para evaluar el progreso de nuestros proyectos. Pero, ¿qué pasa cuando las prisas nos invaden y los plazos se acortan? Ahí es donde debemos recordar que la calidad siempre debe tener prioridad sobre la velocidad. Es tentador ceder ante la tentación de hacer una ñapa rápida para solucionar un problema urgente, pero a largo plazo, estas ñapas pueden acumularse y causar estragos en el proyecto. Así que, mantén tus KPIs en mente y recuerda que una solución sólida y bien planificada vale más que una solución rápida pero poco confiable.
Ha que evitar los KPIs de trampantojo, es decir los que están de relleno. KPIs que son basura darán mediciones que serán, lamentablemente, basura y no aportarán nada salvo ruido y mucha incertidumbre. Un KPI trampantojo es el grado de ejecución del plan o avance de tareas porque decir que estamos al 66% o 73% es efímero, subjetivo e irreal.
Recordad GIGO = Garbage IN, Garbage OUT
KPIs válidos y que nos serán válidos para evitar ñapas son por ejemplo la cantidad de incidencias por prioridad y cantidad de líneas de código añadidas, modificads y eliminadas. Estos KPIs son muy útiles y guadan mucha relación con la deuda técnica.
Deuda técnica
Ahora, hablemos de la deuda técnica. Todos sabemos que a veces, bajo la presión de las urgencias y criticidades, es tentador hacer «apaños» rápidos para resolver un problema y seguir adelante. Pero aquí está el truco: esas ñapas suelen generar deuda técnica. La deuda técnica es como una bola de nieve que crece y crece con el tiempo, y tarde o temprano, termina por golpearnos en la cara.
La deuda técnica es el coste y los intereses a pagar por hacer mal las cosas.
Entonces, ¿cómo evitamos caer en esta trampa? Aquí tienes un consejo de oro: sé consciente de las consecuencias a largo plazo. Antes de optar por una solución rápida y sucia, piensa en cómo afectará al proyecto en el futuro. Evalúa los riesgos y las implicaciones que puede tener. A veces, tomarse un poco más de tiempo para hacer las cosas bien desde el principio puede ahorrarte muchos dolores de cabeza más adelante.
Principal causa de la deuda técnica: la presión de las fechas
La mayoría de los autores coinciden en que la principal causa de la deuda técnica es la presión en fechas y planes.
Sin embargo, hay muchas otras causas, como la falta de cuidado, falta de educación, procesos pobres, la no verificación de la calidad, o la incompetencia.
Con el tiempo, el concepto de deuda técnica ha evolucionado y se ha expandido gracias a personas como Steve McConnell y Martin Fowler. ¡Son como los «titos» de la deuda técnica!
La divertida taxonomía de McConnell nos dice lo siguiente:
- ¡No toda tarea incompleta es deuda técnica! Si hay retrasos, recortes, etc., pero no se requiere el pago de intereses, entonces no es deuda técnica.
- Ahora, si hay deuda técnica, puede ser por (I) trabajos de baja calidad involuntarios o (II) por elección, cuando se incurre intencionalmente.
Pero eso no es todo, ¡aquí viene lo emocionante! En la siguiente imagen, se muestran cuatro tipos de mejoras o tareas que se pueden hacer para aumentar el valor del producto de software. Estas son los cuatro cuadrantes de Fowler.
Imagínalas como diferentes caminos de colores:
- El verde representa ampliar funcionalidades, algo que a las empresas les encanta.
- El azul es invertir en arquitectura, una especie de «futuro brillante» para el software.
- El rojo simboliza la reducción de defectos, como eliminar pequeños villanos.
- Y finalmente, el negro es la deuda técnica, un villano invisible con efectos negativos.
«Este es el camino»
Pero espera, no puedo olvidarme de mencionar dos herramientas poderosas que pueden ayudarte a evitar estas trampas: SonarQube y Git con GitHub.
SonarQube es una herramienta de monitoreo de código que te ayuda a detectar problemas y mantener tu código limpio. ¡Es como tener un amigo que te señala los errores antes de que te hundas en ellos! Y luego está Git con GitHub, que te permite mantener un control de versiones eficiente y evitar esos momentos de «oh, ¿qué archivo era el más actualizado?».
El código limpio es la base para un software de calidad, y SonarQube es como el mejor amigo que te ayuda a mantenerlo brillante y sin problemas. Es como el champú anticaspa para tu código, asegurándose de que esté siempre fresco y reluciente.
Estas herramientas no solo te ayudarán a ahorrar tiempo, sino que también te mantendrán más tranquilo que una alpaca en un prado. Como diría nuestro amigo El Mandaloriano «Este es el camino».
‘Briconsejos’ para evitar el ÑaaS
Y ya para ir terminando que se va haciendo largo el post, a continuación tienes cuatro consejos generales para evitar caer en el ÑaaS (Ñapas as a Service):
- Establece KPIs claros: Define indicadores clave de rendimiento (KPIs) que te ayuden a evaluar el progreso y la calidad de tu proyecto. Estos KPIs deben ser medibles y estar alineados con los objetivos y requisitos del proyecto. Mantén tus KPIs en mente y prioriza la calidad sobre la velocidad para evitar caer en la tentación de soluciones rápidas pero poco confiables.
- Planifica y gestiona el tiempo adecuadamente: Dedica tiempo suficiente para planificar y diseñar tus proyectos de software. Realiza una evaluación adecuada de los riesgos y los requisitos antes de comenzar a codificar. También es importante gestionar el tiempo de manera efectiva, estableciendo plazos realistas y evitando el trabajo apresurado que puede llevar a soluciones de ñapa.
- Mantén una arquitectura sólida y código limpio: Dedica tiempo a diseñar una arquitectura sólida y bien estructurada para tu proyecto. Utiliza buenas prácticas de desarrollo de software y mantén un código limpio y legible. Evita los atajos rápidos y sucios que pueden generar deuda técnica a largo plazo. Utiliza herramientas de análisis estático de código como SonarQube para identificar y corregir problemas antes de que se conviertan en ñapas.
- Fomenta la comunicación y colaboración: Promueve una comunicación abierta y transparente entre los miembros del equipo y otras partes interesadas del proyecto. Esto facilitará la detección temprana de problemas y permitirá abordarlos de manera efectiva. Fomenta la colaboración y el intercambio de conocimientos, de manera que todos puedan contribuir con ideas y soluciones de calidad.
En resumen, el ÑaaS puede ser un enemigo formidable, especialmente cuando las prisas y las urgencias nos empujan hacia las ñapas rápidas. Pero con un buen uso de los KPIs, la conciencia de la deuda técnica y el uso de herramientas como SonarQube, Git y GitHub, podemos evitar caer en esta trampa.
Recuerda, evitar el ÑaaS requiere disciplina, planificación y una mentalidad enfocada en la calidad. Sobretodo esto último. Siguiendo estos consejos, estarás en el camino correcto para desarrollar software exitoso y evitar las temidas ñapas. ¡Buena suerte en tus proyectos! Y que la fuerza te acompañe.