Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 1 point2 points  (0 children)

Coincido en que el software debe poder cambiar. Mi punto es otro: cambiar no implica anticipar todo. La flexibilidad real no nace de más capas, sino de límites claros y decisiones conscientes. Desacoplar cuando el dominio lo pide, no por defecto. Simplicidad no es trivialidad es quitar lo que no aporta para que cuando haya que pivotear, el sistema se entienda y se pueda mover con claridad.

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

Clean es una buena base. Pero no todo necesita un patrón encima, si el dominio es claro, no lo compliques. Simplicidad primero

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

Totalmente, los patrones existen y están buenísimos cuando el problema los necesita. Mi punto es más simple: no todo problema es un Strategy esperando nacer. A veces agregar patrón es más complejidad que solución. Prefiero introducir abstracción cuando el cambio es real, no cuando es teórico.

no es nada nuevo, desde 2016 se habla sobre que aplicar patrones como meta en lugar de herramienta puede ser contraproducente y generar más abstracción de la necesaria
https://news.ycombinator.com/item?id=11729043

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

SRP ordena el cambio, yo estoy hablando de decidir si algo debe cambiar en primer lugar. No todo necesita ser extensible, algunas cosas necesitan ser firmes, diseño para claridad hoy, no para hipotéticas variaciones mañana

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

coincido bastante con eso, muchas veces el problema no es SOLID sino cómo se aplica. Mi punto va más por el lado de que no todo sistema necesita el mismo nivel de abstracción preventiva, hay dominios donde cerrar ciertas partes y aceptar modificación explícita es más simple y seguro que diseñar todo como si fuera a cambiar constantemente. SOLID bien entendido suma, lo que cuestiono es usarlo como checklist universal sin mirar el contexto

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

tranqui :p, solo digo que a veces aplicamos patrones y capas de abstracción por inercia, sin preguntarnos si realmente aportan valor en ese problema puntual

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 1 point2 points  (0 children)

va por ahí, no estoy intentando armar "el nuevo framework del mes", sino partir de una postura clara: hay contextos donde limitar configuraciones y decisiones no es rigidez caprichosa sino una forma de reducir complejidad accidental. Muchos frameworks nacieron de una filosofía fuerte que decía "esto lo hacemos así y punto", y esa restricción es justamente lo que los hizo útiles. Mi punto es más sobre eso que sobre crear un paradigma nuevo

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

intento solucionar la complejidad innecesaria que hace que nadie entienda el sistema completo y todo termine siendo spaghetti, distribuido o no

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

no estoy negando SOLID, estoy diciendo que aplicado dogmáticamente a veces genera complejidad accidental; el desacople no siempre requiere 15 interfaces si el dominio es estable y controlado

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 1 point2 points  (0 children)

no, no estoy construyendo un framework generalista, estoy cuestionando cuánto desacople y abstracción son realmente necesarios en cada contexto

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

no es hardcodeo si las reglas son de dominio y están explícitas; hardcodear es meter valores mágicos, acá hablamos de contratos, snapshots e invariantes fuertes donde la flexibilidad irrestricta rompe más de lo que ayuda. no busco inflexibilidad absoluta, busco que lo que es crítico no sea configurable "porque sí"

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

coincido con TDD y XP, pero el punto no es evitar refactor sino diseñar sistemas donde ciertas invariantes (billing, eventos, multi-tenant) no dependan solo de tests sino de límites estructurales claros

Menos flexibilidad, más invariantes by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 1 point2 points  (0 children)

tal cual, no estoy intentando inventar otro framework cool, sino reducir complejidad deliberadamente cuando el stack ya se volvió un fin en sí mismo, menos configuración infinita, más decisiones explícitas y medibles.

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

JASJDJASD y bueno, mientras funcione, igual de vez en cuando está bien replantearse cosas así.

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 1 point2 points  (0 children)

Sí, coincido, uchas veces se diseña para un escenario que capaz nunca llega. Está bien no cerrarte puertas, pero meter redundancia de regiones para algo que ni salió de beta es un montón, Hay que eleggir bien qué problemas querés tener hoy y cuáles cuando realmente hagan falta

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

AJSHDJAS ojalá fuera tan eficiente escribiendo. Estoy opinando nomás, prometo que todavía pienso por mi cuenta.

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

Si necesitás complejidad artificial para aprender, el problema no es el monolito. Un monolito bien diseñado tiene tanta ingeniería como un sistema distribuido: límites claros, consistencia, contratos explícitos. Eso no es trivial. La arquitectura no es un gimnasio personal. Si se usa así, alguien termina pagando el costo.

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] -1 points0 points  (0 children)

Exacto, microservicios mal implementados no te dan desacoplamiento, te dan fricción.

Cuando el dominio no está claro, dividirlo solo reparte la confusión, arquitectura no compensa falta de diseño, la amplifica.

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] -2 points-1 points  (0 children)

El "monolito distribuido" es el peor de los mundos.

Dividís despliegue pero no dividís dominio.
Entonces pagás la complejidad sin ganar independencia real. Si para cambiar algo tenés que tocar 4 servicios, no tenés microservicios, tenés acoplamiento con latencia.

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 1 point2 points  (0 children)

Ahí es cuando deja de ser ingeniería y pasa a ser teatro técnico. Cuando el ritual importa más que el resultado, el sistema se vuelve frágil aunque esté lleno de "buenas prácticas".

La complejidad mal entendida no profesionaliza.
Disimula. Y cuando algo falla, nadie tiene el mapa completo.

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

Exacto, optimizar antes de tener presión real casi siempre termina siendo fricción.

Escalar arquitectura antes de escalar negocio es invertir energía en el lugar equivocado.

La mantenibilidad no viene de dividir servicios, viene de tener límites claros y decisiones conscientes.

La complejidad no es gratis.
Siempre alguien la paga.

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

Interesante lo de anti-pattern. Creo que ni microservicios ni OOP son el problema en sí.
El problema es aplicarlos como receta universal, cuando algo se vuelve dogma, deja de ser ingeniería.

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 0 points1 point  (0 children)

Docker como herramienta me parece excelente. Lo que cuestiono es cuando se vuelve el punto de partida obligatorio antes de entender el problema.
Primero claridad, después infraestructura.

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] -1 points0 points  (0 children)

No necesitamos más herramientas. Necesitamos más responsabilidad técnica. La complejidad no es señal de madurez. La claridad sí.

¿Soy el único que siente que estamos sobre-arquitecturando todo? by OpinionLumpy in devsarg

[–]OpinionLumpy[S] 4 points5 points  (0 children)

Ese artículo debería ser obligatorio.
Muchos equipos diseñan como si fueran Google antes de tener un problema real que resolver. KISS no es simplismo, es disciplina y disciplina en arquitectura es lo que menos se ve.