1. 15
  1.  

  2. 26

    My observation about Best Practices is that the ones worth listening to are often:

    • the result of colossal fuckups or near misses
    • quietly known to conservative engineers who encountered them on a team, documented them, and don’t make a fuss
    • very different from whatever is being proclaimed in the mailing-lists and blogs
    • arose during fighting common problems on real products

    All too frequently (looking at you Dave Thomas, Uncle Bob, many security folks and academics, and others) there seems to be a tendency to have practices that:

    • are meant to address theoretical concerns that don’t occur during normal development or operations
    • are given “Best Practices” status by handwaving about “the community has decided” (Thomas’s first edition of Programming Elixir was rotten with this) when the community is both very young and new
    • arose fighting uncommon problems on real products (lots of FB/GOOG/AMZN Best Practices make sense only in their operational regime…blindly following them is not good engineering)
    • rely really heavily on a commercial/philosophical context that you probably don’t share
    1. 2

      I agree, and would add to the “all too frequently” pile:

      • best practices are those things practised by mediocre teams, who would like to be told what to do rather than bring their experience or contextual knowledge to bear.
      1. 2

        Best Practices are worthwhile only when understood. Why is this a best practice? If you cannot understand it, then don’t follow it and learn why you should (or shouldn’t) follow it.

        Blindly putting them aside is also a mistake since you refuse to learn why some people wrote about them.

        1. 2

          arose fighting uncommon problems on real products (lots of FB/GOOG/AMZN Best Practices make sense only in their operational regime…blindly following them is not good engineering)

          This is probably the worst mind virus, at least the one I encounter most often. This leads to stuff like basic websites using Redis, Elasticsearch, Cloudflare, a RDBMS, docker, kybernetes, etc…

        2. 2

          That’s because “best” is relative to ones goals. Seeing it as something absolute is harmful, especially in contact with humans with different views. I strongly recommend to keep an eye on what something is best for.