Últimamente trabajando en varios proyectos y con personas de varios lugares al rededor del mundo y leyendo algunas publicaciones me he encontrado con que a la gente últimamente le gusta la sobre-ingeniería para hacer cosas que son demasiado básicas.
Antes que nada, ¿Qué es la sobre-ingeniería?, bueno vamos a usar un ejemplo algo ridículo pero que nos hará entender…
Tenemos un blog, como este, que recibe unas 10,000 visitas únicas al mes, eso se traduce en aproximadamente 333, al día, o 14 visitas por hora, o 0.2 visitas por minuto, entonces vamos a quedarnos con este último valor subiendo a 1 visita por minuto. Un VPS muy chiquito con un caché simple, en WordPress, en un blog simple con un diseño simple, y así podría fácilmente maniobrar 1 petición por minuto porque la petición tardará digamos que 4-5 segundos en completarse entonces nos quedan 55 segundos para que el servidor no haga nada…
Ahora viene la sobre-ingeniería, porque tengo un montón de dinero que puedo gastar, se me ocurre meterle entonces una CDN para las imágenes, así que el servidor ahora no se va a cargar tanto para las imágenes y será más rápido mi sitio para 10,000 personas al mes, después porque «no vaya a ser que tenga un spike de visitas» le agrego un balanceador de carga, para que entonces tenga mayor redundancia, pero eso no es todo, por si mi servidor se cae, abro una zona en AWS para que esté mi servidor ahí y otro en una red de Azure, y para meterle más velocidad, cacheo las queries en Redis, y para mayor seguridad, separo el WP-Admin, y lo monto detrás de una VPN o intranet y al servidor de base de datos le permito que solamente ese puede conectarse externamente al servidor, y meto todo en Docker para levantar múltiples ambientes de trabajo para realizar y revisar mis publicaciones yo mismo y si cambio el código del estilo del tema poder validarlo y actualizar a través de un Pipeline en Github con Github Actions y tener respaldo del código y un respaldo general de imágenes en S3 y de SQL en un data warehouse y bla bla bla bla…
Y es que todo este texto es sobre-ingeniería, yo solo ocupo un blog simple, en WordPress que le sirva a la gente para leer mis tonterías o tutoriales o lo que sea que les interese (y hayan encontrado, guiño guiño), ¿entonces para qué diablos quiero todo eso de arriba?
Eso es sobre-ingeniería y no solo en infraestructura existe, también en código, piensa que estás haciendo una tabla que quieres mostrar ciertos elementos, ¿realmente necesitas que tenga un ordenamiento de columnas?, ¿qué puedas ocultar y mostrar columnas?, ¿qué puedas hacerle ajuste del tamaño de las columnas y todo eso?, a nivel de código, voy a meter N mil cosas para que solo mostremos cosas simples, y bueno eso ya se entendió.
Es ahí donde la sobre-ingeniería hace abrumador el trabajar con todo, desde una cosa tan simple hasta algo complejo la experiencia del desarrollador puede verse afectada por lo que hacer una reparación, hacer un cambio pequeño, puede tomar HORAS por algo que debió tomar minutos, porque hay que encontrar dónde están las cosas, cómo se conectan, cómo se utilizan, etc…
Dejemos de utilizar sobre-ingeniería, de complicarnos la existencia, si se ocupa un botón simple, hagamos un botón simple, no necesitamos hacer N mil cosas para algo tan simple, sobre todo aquellos directores, managers o gente «de arriba» que son los que más acostumbran hacer este puerquero y quienes pagan los platos rotos son los desarrolladores, como líderes no ocupamos hacer sobre complicadas las cosas, pensemos siempre en las 5 cosas principales que debemos buscar al código:
- Hacerlo legible
- Hacerlo con buena experiencia al desarrollador
- Hacerlo seguro
- Hacerlo tolerante a fallos
- Hacerlo ágil
Punto, no se ocupa nada más… no usen variables como x, y, z, v1, a2, t3 somos personas no máquinas, la experiencia al desarrollador nos permite avanzar más rápido, más fácil, mejor, debe ser seguro para que no nos hackeen y terminemos en «otro leak», hacerlo tolerante a fallos, más vale un «Algo falló» que «el código no está haciendo nada, o ya se me cerró el programa» y hacerlo ágil o que tenga buen rendimiento, para que sea rápido.
Así que ya sabes, si haces sobre-ingeniería ya no lo hagas o nadie te va a querer, si no lo haces, sigue así









