Diario de Decisiones Contundentes

¿Decisiones complejas? Esta técnica te ayuda a elegir con más claridad

El otro día descubrí el Diario de Decisiones Contundentes gracias a la newsletter de Daniel Primo, que desde aquí recomiendo.

La idea es, al tomar decisiones no triviales, documentar los siguientes apartados:

  1. El reto: Describir el problema a resolver.
  2. Las soluciones alternativas: Evaluar las opciones disponibles.
  3. La decisión escogida: Explicar la opción elegida y las razones detrás de esa elección.
  4. Las consecuencias: Registrar los efectos de la decisión una vez implementada.

He estado aplicando esta técnica en un proyecto de desarrollo de una app, y la verdad es que estoy encantado. Estas son las principales ventajas que he encontrado:

  • Es simple de aplicar.
  • Facilita tomar decisiones de forma más racional y fundamentada.
  • Documenta el proceso, lo que permite incorporarlo al repositorio de código o a un repositorio documental del proyecto.
  • Facilita el reporte al equipo, ya que las decisiones quedan registradas de forma clara.
  • Al tenerlo por escrito, puedes compartirlo con un LLM para que analice y critique la decisión, aportando más perspectiva.

Aún no he completado la sección de consecuencias en varias decisiones, pero los otros apartados ya aportan suficiente valor como para seguir usando esta técnica.

Sin duda, pienso seguir utilizándola en el futuro porque estoy convencido de que me ayudará a mejorar mis decisiones.

Las herramientas de IA que uso para programar

🚀 Las herramientas de IA que uso para programar

Desarrollo aplicaciones móviles, principalmente nativas para Android y multiplataforma con Flutter. La mayor parte de mi trabajo lo realizo en Android Studio, aunque también utilizo otras herramientas según la tarea.

🤖 Mis herramientas de IA favoritas

GitHub Copilot (de pago) en Android Studio

Uso tanto el autocompletado como el chat integrado.

Para el chat, prefiero el modelo Claude 3.7 Sonnet y reservo los modelos más avanzados (con cadenas de razonamiento) para problemas complejos.

El chat inline lo utilizo ocasionalmente cuando el autocompletado no es suficiente.

Visual Studio Code + Copilot

Hasta hace poco, era la única forma de acceder a Copilot Edits, por lo que alternaba entre VS Code y Android Studio.

¡Ahora Copilot ya está disponible en Android Studio! Así que, en breve, puede que ya no necesite cambiar de entorno.

Chatbots especializados

Cuando las herramientas anteriores no bastan, recurro a varios asistentes:

  • ChatGPT, Gemini y Claude para consultas generales.
  • DeeSeek R1 para los problemas más complejos.

🛑 Lo que he probado y ya no uso

🔻 Codeium en Android Studio

Es una gran opción gratuita, pero el autocompletado de Copilot es más rápido y preciso, así que lo desactivé.

🔻 Cursor

Antes lo usaba mucho para editar código, pero desde que Copilot lo incluye, ya no lo necesito.

🔻 Gemini en Android Studio

Lo probé, pero tiene menos funcionalidades y sus resultados no me convencieron.

🔍 Este es mi set actual, aunque siempre estoy explorando nuevas opciones.

Calidad en software. ¿Cómo sabes que no te están dando gato por liebre?

🧑‍💻 Software de calidad: ¿Cómo sabes que no te están dando gato por liebre?

Cuando contratas a una empresa o profesional independiente para desarrollar software, o incluso al trabajar con tu propio equipo, surge una pregunta clave: ¿cómo asegurarte de que el resultado final será de alta calidad?

La calidad del software abarca muchos aspectos. La norma ISO/IEC 25010:2011, por ejemplo, destaca los siguientes:

✅ Funcionalidad: Que el software haga lo que se espera de él, cumpliendo con los requisitos especificados.
✅ Eficiencia de rendimiento: Que el sistema responda de forma rápida y use los recursos de manera óptima.
✅ Compatibilidad: Que funcione correctamente en diferentes entornos y sistemas.
✅ Usabilidad: Que sea fácil de entender, aprender y utilizar por los usuarios.
✅ Fiabilidad: Que funcione de forma estable, con tolerancia a fallos y con una frecuencia mínima de errores.
✅ Seguridad: Que proteja la información y evite accesos no autorizados.
✅ Mantenibilidad: Que el código sea comprensible y esté diseñado para facilitar futuras modificaciones.
✅ Portabilidad: Que pueda adaptarse a diferentes plataformas o entornos con facilidad.

Para un producto mínimo viable (MVP) o una prueba inicial, quizás no todos estos puntos sean cruciales. Sin embargo, en la mayoría de los proyectos comerciales, son fundamentales.

🔍 Lo visible y lo oculto en la calidad del software

A mí me gusta diferenciar entre lo que se ve a simple vista y lo que no. Por ejemplo, si encargas una aplicación con funciones A, B y C, y un diseño específico de Figma, es fácil verificar si la app cumple con esas funciones y si el diseño es fiel al original.

Otros aspectos se revelan con el uso: rendimiento pobre, errores inesperados, interfaz confusa. Si los detectas a tiempo, quizás puedas solucionarlos con la garantía del proveedor.

Pero hay problemas que pueden surgir demasiado tarde: brechas de seguridad, o un código tan complejo que dificulta cualquier mejora.

🛠️ La importancia del proceso

Evaluar la calidad del software no se limita al resultado final. Es vital entender cómo se construyó. Las buenas prácticas de desarrollo, las pruebas automatizadas, la documentación clara y una arquitectura sólida son la clave para un software que funcione bien a largo plazo.

– Vale, eso está muy bien, pero yo no soy experto, ¿cómo puedo estar seguro?

Es normal no ser un experto en todo. Al igual que confiamos en médicos o mecánicos por sus credenciales y experiencia, podemos confiar en los desarrolladores de software.

Busca profesionales con experiencia comprobada, referencias de otros clientes y que sigan estándares reconocidos. La confianza es fundamental.

Personalmente, he ayudado a resolver problemas ocultos en varios proyectos, ganándome la confianza de mis clientes.

¿Cuáles son tus mayores preocupaciones al contratar un desarrollo de software? ¿Qué estrategias utilizas para asegurarte de la calidad? Comparte tus experiencias y consejos en los comentarios.