{
  "id": "9544628cf11c",
  "url": "https://maheshba.bitbucket.io/blog/2024/05/08/2024-ThreeLaws.html",
  "title": "Three Laws of Software Complexity (or: why software engineers are always grumpy) | mahesh’s blog",
  "note": "What I think this article gets very right is that complexity is a fundamental challenge in software systems. The more complex the system, the harder it is to do everything with it. Harder to modify. Harder to support. Harder to keep running. So, it follows that removing complexity should result in easier for all of those things. This is perhaps the foundational belief that drives micro-services. Limit complexity in each service and overall _average_ complexity through the entire system. Balakrishnan highlights three principles.\n\n1. A well-designed system will degrade into a badly designed system over time.\n2. Complexity is a Moat (filled by Leaky Abstractions).\n3. There is no fundamental upper limit on Software Complexity.\n\nThis line caught my eye.\n\n> The second derivative of code is always negative in the wild: the rate at which code can change goes down over time.\n\nI think the _always_ in that is too far. This is where the work that [DORA](https://dora.dev) has focused on can help. Left unmonitored I agree, the rate of change does go down. Left unmaintained it also will go down. One of the nasty things with software is that when you stop changing it you lose the confidence to change it.\n\nI’m not going to suggest there is a known process for keeping code agile for decades, but for several years applying the right practices can keep things in a \"good enough\" state.",
  "voice": "mixed",
  "saved": "2024-05-30T23:35:26Z",
  "host": "maheshba.bitbucket.io",
  "kind": "page",
  "tags": [],
  "record": "https://links.thingelstad.xyz/links/9544628cf11c/",
  "markdown": "https://links.thingelstad.xyz/links/9544628cf11c.md",
  "issues": [
    {
      "number": 290,
      "slug": "290",
      "title": "Weekly Thing 290 / Kino, Krebs, Kagi",
      "date": "2024-06-01T13:54:38.227321Z",
      "section": "Notable",
      "position": 6,
      "url": "https://weekly.thingelstad.com/archive/290/",
      "page": "https://links.thingelstad.xyz/issues/290/"
    }
  ],
  "connections": {
    "same_host": {
      "count": 1,
      "page": "https://links.thingelstad.xyz/hosts/maheshba.bitbucket.io/",
      "nearest": [
        {
          "id": "2c9fdf710f0e",
          "title": "42 things I learned from building a production database | mahesh’s blog",
          "url": "https://maheshba.bitbucket.io/blog/2021/10/19/42Things.html",
          "record": "https://links.thingelstad.xyz/links/2c9fdf710f0e/"
        }
      ]
    },
    "same_week": {
      "count": 14,
      "nearest": [
        {
          "id": "250aa4525f48",
          "title": "AI Integration and Modularization – Stratechery by Ben Thompson",
          "url": "https://stratechery.com/2024/ai-integration-and-modularization/",
          "record": "https://links.thingelstad.xyz/links/250aa4525f48/"
        },
        {
          "id": "4c03d6d183f7",
          "title": "What We Learned from a Year of Building with LLMs (Part I) – O’Reilly",
          "url": "https://www.oreilly.com/radar/what-we-learned-from-a-year-of-building-with-llms-part-i/",
          "record": "https://links.thingelstad.xyz/links/4c03d6d183f7/"
        },
        {
          "id": "e272b9e731bb",
          "title": "Why, after 6 years, I’m over GraphQL",
          "url": "https://bessey.dev/blog/2024/05/24/why-im-over-graphql/",
          "record": "https://links.thingelstad.xyz/links/e272b9e731bb/"
        },
        {
          "id": "644e77c60fff",
          "title": "What's next for Kagi? | Kagi Blog",
          "url": "https://blog.kagi.com/what-is-next-for-kagi",
          "record": "https://links.thingelstad.xyz/links/644e77c60fff/"
        },
        {
          "id": "a9ded614eb81",
          "title": "Introducing Kino",
          "url": "https://www.lux.camera/introducing-kino-pro-video-camera/",
          "record": "https://links.thingelstad.xyz/links/a9ded614eb81/"
        }
      ]
    },
    "mentions": [],
    "mentioned_by": [],
    "saved_twice": []
  },
  "elsewhere": {
    "wayback": "https://web.archive.org/web/*/https://maheshba.bitbucket.io/blog/2024/05/08/2024-ThreeLaws.html"
  }
}
