> [!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]]