Laws of Software Engineering retweeted

𝗪𝗵𝘆 𝗖𝗼𝗺𝗽𝗹𝗲𝘅 𝗦𝘆𝘀𝘁𝗲𝗺𝘀 𝗖𝗮𝗻𝗻𝗼𝘁 𝗕𝗲 𝗕𝘂𝗶𝗹𝘁 𝗙𝗿𝗼𝗺 𝗦𝗰𝗿𝗮𝘁𝗰𝗵
Most working complex systems were not designed. They grew.
This is Gall's Law, written in 1975 by John Gall, a pediatrician who studied how systems fail:
"A complex system that works is invariably found to have evolved from a simple system that worked."
The reverse holds too. A complex system designed from scratch does not work, and patching it won't fix that. The only fix is starting over with something simple that works.
Let's look at some examples from our industry:
𝗙𝗮𝗰𝗲𝗯𝗼𝗼𝗸 started as a profile site for Harvard students. 𝗜𝗻𝘀𝘁𝗮𝗴𝗿𝗮𝗺 started as Burbn, a failing app with check-ins, games, and photos. The founders decided to throw out everything except photo sharing. That simple core became Instagram. 𝗨𝗻𝗶𝘅 started as a small system for a single purpose. It is still running everywhere.
Now the failures. 𝗔𝗽𝗽𝗹𝗲 𝗖𝗼𝗽𝗹𝗮𝗻𝗱, 𝗜𝗕𝗠 𝗢𝗦/𝟮, and 𝗪𝗶𝗻𝗱𝗼𝘄𝘀 𝗠𝗼𝗯𝗶𝗹𝗲 all tried to ship complete operating systems from scratch. All three died. Who remembers 𝗚𝗼𝗼𝗴𝗹𝗲 𝗪𝗮𝘃𝗲? It fused email, chat, forums, and a social network into one product. It launched with no clear user and no traction, and Google killed it in 15 months.
Designed-from-scratch systems fail because, upfront, you cannot know all requirements and possible failures. Those things you learn from real life and production. The plan can look good on a whiteboard. Then real users show up, and the abstractions you created don't match the work the system actually has to do.
This is why the monolith-first rule exists: build the boring monolith. Then learn where the real seams are, and split services off from working code, not from a diagram. Most distributed monoliths are teams that tried to skip that step.
There is even a harder version of this law. When a system already does not work, the instinct is to add more rules, more layers, more services, more config. Gall says the opposite. Strip it back to a working core. The honest move is a rewrite that does less.
We don't get to skip the simple working version. Every system that survived went through one.
What complex system have you seen fail because it was designed instead of grown?

English






