logoalt Hacker News

w10-1today at 2:36 AM0 repliesview on HN

This is really, really good as an overview of system-level issues. I write only to encourage others to read it.

Ideas that helped me situate many of the issues we struggled with at various companies:

- distinguishing programs (the code as designed) from (distributed) systems (the whole mess, including maintenance and migration, as deployed)

- versioning code (reversibly) and data (irreversibly)

- walk-through of software solutions for distributed systems, and their blind spots wrt data versioning; temporal databases

- semantic drift: schema-less change

- Limitations of type systems for managing invariants

- co-evolving code and data; running old code on old data

The real benefit of systems thinking is recognizing whether an issue is unsolvable and/or manageable (with the current approach, or warrants a technology upgrade or directional shift). It's like O(n) evaluation of algorithms, not for space/time but for issue tractability.