Sobre Boring Software y el Heroku Stack

El mundo del software avanza tan rápido que a veces sentimos que nos perdemos de cosas nuevas.

Hace unos, años herramientas como Terraform y librerías como React no existían y ahora es muy común verlas en muchos proyectos. Sin embargo, el hecho de que sean populares no las hace las únicas alternativas.

Es importante no siempre tomar nuevas tecnologías para todo porque se corren riesgos que muchas otras más probadas y estables ya cubren.

Y de eso trata «Boring Software«: usar herramientas, lenguajes y librerías que ya están probados, seguros, estables y funcionales. El «Heroku Stack» trata sobre lo mismo pero enfocado en la nube.

Boring Software

Muchos desarrolladores hemos sufrido de querer usar lo más nuevo y reciente en algún proyecto. Supuestamente, lo nuevo es mejor cuando en realidad dista mucho de ser así.

Cada tecnología nueva que sale representa un riesgo: errores nuevos, características faltantes o incompletas, agujeros de seguridad, etc. Cosas que en software «viejo» ya muy probablemente no pasan.

Ejemplo de esto fue el boom de las bases de datos NoSQL representado por MongoDB.

Mongo venía a ser el motor que permitiría escalabilidad con facilidad ya que su forma de almacenar y acceder a los datos así lo permite. Sin embargo, hay historias en Internet de proyectos que se encontraron con muros al usar MongoDB en lugar una base de datos tradicional.

¿Es Mongo un mal producto? Claro que no, pero tiene un caso de uso muy particular que los desarrolladores debemos entender y conocer para poder determinar si usarlo o no.

El Manifesto de Boring Software

Lo que está en la izquierda es estable. Lo que está en la derecha sobrevalorado.

  • Aplicaciones de 3 capas vs. Microservicios
  • Bases de datos relacionales vs. NoSQL
  • Sitios web que recargan la página vs. Aplicaciones de una sola página (SPA)

Tokens de Innovación

Deberías considerar que tu proyecto o empresa tiene tres tokens de innovación. Gastar un token implica planificación, tiempo, dinero y esfuerzo enfocado en lograr usar dicha tecnología y resolver un problema con la misma.

Entre más tokens gastes, más vas a tener que invertir en lo necesario para que tal tecnología sirva al proyecto:

  • Documentación
  • Entrenamiento
  • Pruebas
  • Costos de infraestructura
  • Despliegues
  • Errores
  • Nuevas versiones
  • Mantenimiento
  • etc

Usa tales tokens de manera sabia. Cada vez que usas uno vas a tener que desviarte un poco del enfoque principal de tu proyecto para poder integrar de manera suficiente tal tecnología en tu software.

Lo que no sabes que desconoces

Photo by Jakub Kriz on Unsplash

Al llevar algún tiempo trabajando con una herramienta, entendemos que no sabemos todo sobre la misma. Por ejemplo, yo llevo trabajando con Ruby on Rails más de 7 años y sé que hay muchas cosas que no sé sobre el framework.

Esas son las cosas que yo sé que desconozco.

Si algún día quisiera hacer una aplicación en Python, sé que tengo muchas aptitudes para lograrlo pero en el fondo hay cosas que yo no sé que desconozco de Python.

Acá «Boring Software» nos plantea otro dilema:

  • Lo que sé que desconozco (no sé todo Rails)
  • Lo que no sé que desconozco (no sé nada de Python ni Django)

Intentar hacer ese proyecto ficticio en Python me incurrirá un montón de tiempo y esfuerzo mientras elimino cada cosa que desconozco.

Es importante estar al tanto de esta distinción cada que se quiera integrar una nueva tecnología. Hay mucho terreno desconocido y hay que estar preparados para navegarlo.

Heroku Stack

Aquí nos enfocamos más en servicios para montar software en la nube. En Dev As Pros, cada aplicación nueva preferimos subirla en Heroku o Vercel, dependiendo del caso.

AWS es una buena plataforma pero requiere una cantidad enorme de trabajo para poder subir una aplicación y que esté disponible. Con Heroku y Vercel solo es subir los cambios a un repositorio de código.

Este termino nace porque en muchas ocasiones se ha visto software que apenas está empezando y quiere estar en AWS con los últimos juguetes y con una infraestructura mega compleja y aún no tienen los primeros 100 usuarios.

Si quieres tener tu producto en AWS vas a tener que aprender muchas cosas nuevas de infraestructura (tiempo y esfuerzo) o contratar a alguien que lo sepa (mucho dinero). En Heroku o Vercel solo vas a invertir dinero (inversión inicial muy baja).

Imagen cargada por el usuario: image.png
Usa Heroku hasta cuando ya sea muy caro para tu software

No es malo aspirar y ambicionar que nuestros proyectos vayan a tener escala global, sin embargo, lo primero de primero. Si quieres que 1000 usuarios usen tu app, necesitas características disponibles, estabilidad, tiempo y esfuerzo para trabajar en errores y peticiones. Si vas a gastar esfuerzo en configurar AWS, vas a ir sobre la pendiente.

En determinado momento será entendible que decidas migrar a una infraestructura más compleja y ahí es donde AWS entra a jugar, no antes.

Conclusión

No está mal querer usar nuevas tecnologías, sin embargo, en proyectos donde las prioridades son otras es mejor hacerlo con cuidado y revisar si las opciones actuales podrían servir.

Mucho software tradicional es más que suficiente para validar tu idea o lanzar un MVP. Vale la pena primero intentar resolver el problema con lo que se tiene a mano. De esta forma se puede descartar traer una tecnología nueva solo por gusto.

Por otra parte, aprovecha lo eficaces que son servicios como Heroku o Vercel para montar aplicaciones en la nube. Cuando estás empezando, lo importante es ganar tiempo y ahorrar esfuerzo. No te compliques tanto con las configuraciones y una gran infraestructura en AWS, deja eso para cuando tengas miles de usuarios.

El primer gran problema que quieres tener es escalabilidad. Hasta entonces, apegate a lo sencillo y práctico.

Algunos enlaces complementarios:

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.