←back to thread

159 points todsacerdoti | 1 comments | | HN request time: 0.207s | source
Show context
smallstepforman ◴[] No.40713897[source]
Complexity builds rockets with thrust vectoring and lands modules on the moon, simplicity is good for fire crackers.

Once you scale past simple prototypes, you need performance and new features. And the architecture stops being simple and complexity eventually creeps in.

I’ve implented 4 iterations of a product from scratch, and eventually they all get complex, even though each one started out with the goal of being simpler than the previous iteration. Yes, iteration #4 is more complex than #1, but it is more performant.

In parallel I’m building a new house, and each iteration of the plans is more complex. You try to manage compromises. You take 2 steps forward, one back. Which way do windows face, can an older person navigate, is there enough storage space, cost, esthetics, where does a dirty dog enter, where is the chimney for preppers, driveway and orchard, septics and wells, drainage and water collection, guest rooms and hot tubs, all on a budget … Simple wont do.

replies(5): >>40714186 #>>40714675 #>>40714742 #>>40716914 #>>40716960 #
1. danybittel ◴[] No.40714186[source]
I'd say these are essential complexities, they are features necessary for the client. Accidental complexity would be, if you for example, assigned the work on your new house to different "teams". Then the "guest room" team also build a drainage, or used a prebuilt drainage, not connected to the drainage the other team built.

To quote a quote from the article: "In my experience most of the complexities which are encountered in systems work are symptoms of organizational malfunctions."