> [!tldr] **[[System Complexity|Complex systems]] are more difficult to maintain over time.** Complex systems are more difficult to maintain over time. [[Fragility Comes from Complexity]]. More and more resources are spent simply maintaining that complexity, until such a time as a new problem that otherwise might have been small becomes insurmountable. The perception of complexity often leads to avoidance. ### Small Example After years of struggling to make my own, fully custom [[PDW|Data Journal]], I reverted to a simpler [[spreadsheet]]-based approach. When doing that, I made webhooks using [[Google Apps Script]] to read and write data from and to the [[spreadsheet]] using a **very intentional design choice**: keep it simple: ![[Simple is Maintainable 2026-01-17 08.51.56.excalidraw.svg]] %%[[Simple is Maintainable 2026-01-17 08.51.56.excalidraw.md|🖋 Edit in Excalidraw]]%% | | Road NOT taken | Road taken | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | API Call Params | POST<br>- sheet: string<br>- timestamp: Date <br>- data: <br> - {name}: value<br> - {name}: value<br> - {name}: value<br> - ...<br><br>GET<br>- from: Date \| string<br>- to: Date \| string | POST<br>- sheet: string<br>- data: string[] <br><br><br>GET<br>- (no params) | | Pseudocode | function doPOST(){<br> validateInputs()<br> handleIncorrectInputs()<br> parseInputData()<br> handleIncorrectHeaders()<br> findDateOnSheet()<br> mapHeadersToCols()<br> placeData()<br>}<br><br>function doGET(){<br> validateInputs()<br> handleIncorrectInputs()<br> findStartDateRow()<br> findEndDateRow()<br> loopBetweenDates()<br> buildResponseData()<br> sendData()<br>} | function doPOST(){<br> validateInputs()<br> handleIncorrectInputs()<br> placeData()<br>}<br><br>function doGET(){<br> sendData()<br>} | By accepting the simpler use case I actually needed, rather than the "imagined, someday maybe" use cases, I wrote probably 10% of the lines of code I'd of otherwise written - and kept the whole system conceptually simple. How it works is easy, so it's easy to understand, it's easy to modify if I ever needed to. It's easy to maintain. It's robust. **** # More ## Source [Complexity Bias: Why We Overcomplicate Our Lives [comic]](https://blog.doist.com/complexity-bias-comic/) ## Related - [[Habit Change - Ease]] - [[Musk's 5 Step Engineering Protocol]] - [[System Fault Tolerance]] - [[Simplicity]]