• canpolat@programming.dev
    link
    fedilink
    English
    arrow-up
    25
    ·
    edit-2
    1 year ago

    Good point. However, approaching this problem from “YAGNI” point of view is a bit misleading, I think. If you are not going to need the timestamp, you shouldn’t add it to your code base.

    In my opinion, hastiness is the culprit. When a property appears to be a binary one, we jump to the conclusion to use a boolean way too quickly. We should instead stop and ask ourselves if we are really dealing with a situation that can be reduced to a single bit. The point raised by the article is a good example: you may want to record the state change as timestamp. Moreover, in a lot of the cases, the answer is not even binary. The values for is_published may be, “Yes”, “No” or “I don’t know” (and then we will be too quick to assign null to “I don’t know”). Underlying problem is that we don’t spend enough time when modeling our problems. And this is a sure way of accumulating technical debt.

    • alertsleeper@programming.dev
      link
      fedilink
      English
      arrow-up
      6
      ·
      1 year ago

      I think this timestamp-as-a-boolean is a good idea if the field is always going to be interpreted as either True or False and nothing more. If the field in question allows for a 3rd (uncertain) value, then using a timestamp would be extremely confusing.

      • canpolat@programming.dev
        link
        fedilink
        English
        arrow-up
        3
        ·
        1 year ago

        And it all depends on the problem at hand. Any of those solutions can be acceptable as long as you have a well thought out model.

    • rmam@programming.dev
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      1
      ·
      edit-2
      1 year ago

      Good point. However, approaching this problem from “YAGNI” point of view is a bit misleading, I think. If you are not going to need the timestamp, you shouldn’t add it to your code base.

      I don’t agree it was a good point. It sounds like the blog author missed a requirement a few times, and after getting repeatedly burned in the requirements gathering stage he now overcompensates previous failing with I’ll advised usages of timestamps instead of booleans.

      YAGNI is always true. Always. The author’s point, even when timestamps end up being required, are moot.

      Also, if state changes are required them you don’t tack on a timestamp to a row. You instead track events, including switching stuff on and off.

      I feel this blog post is bad advise fueled by trauma.