Designing Against Disagreement at the Start of the Decade
Tags: architecture, design, systems, 2020
Published: 2020-01-01 16:11:02

---
title: Designing Against Disagreement at the Start of the Decade
published: true
description: "The new decade starts at 0" but about system design philosophy.
tags: architecture, design, systems, 2020
cover_image: https://thepracticaldev.s3.amazonaws.com/i/ii2chc1sbhfidw3x3x3j.png
---

A system that everyone needs to rely on for consistency does not itself need to be consistent. That would be nice, but it's not required. The best example of this is our system of timekeeping, which features all manner of gotchas and exceptions and rules that keep programmers up at night if we can't use a library that handles them automagically. People love to nitpick and debate over tiny technicalities—the smaller the stakes, the more dogged the fighting—and there is no tinier technicality in timekeeping than when the decades start.

This will be familiar. Whether you're at a kick-ass New Year's Eve party or existing on twitter in December during a year ending in 9 or 0, somebody is going to chime in that the decade isn't actually starting when you think. They'll say they don't understand *why in the world* everyone is so excited about 02020. It's a willful display of ignorance, as they're trying to demonstrate their superiority because they truly *understand* the system. According to them, the decades don't start on years ending in 0 as in 02020–02029; no, no, no: the decades start from years ending in 1 as in 02021–02030. The best version of this chicanery was people insisting Y2K wouldn't actually happen until 02001, a full year after the flaw was solved.

What, exactly, does the extra labor required to do an start-of-decade calculation accomplish? Nothing. Where, exactly, does fighting over the start of the decade (for two years out of each of them) get us? Nowhere. The only fringe benefits this view offers devotees is the ability to annoy everybody else and the occasional possibility of stumbling upon a sucker who will judge them smarter for bringing up their technicality. The decades "start at 1" to some because they want to argue that the decades start at 1. Reflexive arguing about minutia is not beneficial to our project of living together and should be considered harmful.

When confronting others with this gotcha, the first question they want to be asked is why this counter-intuitive understanding is happening. *That's a trap* to allow them to explain their reasoning, something I'll get to soon enough.

The first thing we should ask is how this new understanding affects the system; that is, how does starting the decades in years ending in 1 make the system more intuitive in the long run? Demonstrably, it doesn't. The effect of starting decades at 1 is that we have an argument over when the decades start every decade. More than that, it adds an additional layer of complexity to everything we read about decades as timekeepers: "When this says 'the 01970s', is it including 01970 or 01980?" Not to mention that the same issue extends to centuries and millennia. It's an extremely inefficient outcome, one that will be invisible to people obsessed with arcane technicalities. They're too accustomed to using arcane technicalities as coins of status to consider if the technicality is actually useful or even the most coherent understanding.

Why do people insist that the decades start at 1? Well, actually, it's because the decades have 10 years and there was no Year Zero and—*Wrong.* There was no Year Zero, true enough. However, think about the actual claim beyond this one revealed fact for even one second to expose the hidden lie.

The claim is that the decade having 10 discrete years should be prioritized over the utility of referring to decades by their tens-place digit in the vernacular. Adding a Year Zero would not address this because the First Decade BC and First Decade AD would *share a year*. That is a completely nonsensical response to an epoch, by definition a separation between two points in time. To make the system truly consistent in the way they want, we would need a third option: two Year Zeros, one for BC and another for AD. That may have been feasible to implement 2000 years ago, but it would not be feasible now. It's a change of such drastically little value that we do not, in fact, argue for it during these pissing contests. We fight over something equally infeasible and even less beneficial. Also, two Year Zeroes would just look weird, if we're honest.

We've identified the issue, discarded the proposed solution as incorrect, discarded the clean solution as infeasible, and we're going to resolve for the purposes of this article that this still needs to be "solved." This isn't an article offering miracles. There is no perfect solution to this problem-with-no-solution-needed. However, when forced to make a system decision with no clean option, it can help to figure out who will bear the burden of dealing with the technicality you're about to inject. The proposed solution (starting the decade at 1) asserts that it is OK for 6 billion people to collectively bear that burden from now until the end of time, fighting all along. My proposed solution is to treat the two First Decades as special cases. Yes, the two First Decades had 9 years (00001–00009). Indeed, the two First Centuries had 99 years (00001-00099). It's really just a fact; you can verify it by visually counting up the dates. What's more, it's unlikely First Decade and First Century researchers are even going to blink at this because the number of years in that century is irrelevant to their work. For the rest of us, a special case 2000 years ago is similarly irrelevant and can be thoughtlessly absorbed just like the off-by-one convention of referring to the years 02000-02099 as the "Twenty-First Century." When you frame it like that, it's pretty clear that the real solution is to just ignore it rather than bringing it up every 10 years.

The various trade-offs and balances made on paper before a system has actually done anything useful, its upfront design, is only one aspect of that system. Also important is how we continue to extend the system while it develops while in use. The year in which the decade begins could not have been fought over until someone decided that when decades begin was important. Things did not always change rapidly enough for that to be obvious. That cultural reference emerged during the rapidly-changing 20th Century, so the argument over when the decades begin was itself designed and implemented in earnest within the last century, after hundreds of years of uncaring peace. There is no reason to accept this new extension into our timekeeping when it only exists to start fights. Contrast this with the fact that we skip a leap year on years divisible by 100, a gotcha which serves the practical purpose of keeping our years aligned with the seasons. The technicality that there are only 24 leap years in a century rather than the 25 we might expect almost never comes up and we do not fight about it.

Incidentally, you might have noticed the extra zeroes I put in front of the years in this article. That is a practice of the [Long Now Foundation](http://longnow.org/). They decided that it's important for humanity to think about the progress of time in terms of 10,000 years (the "Long Now") rather than the short-term squabbles of individual human lifetimes. They promote that idea by zero-extending the year to 5 digits as a reminder that, one day, we will reach the Year 10000. This is a marvelous example of extending a system for a purpose while maintaining the intuitive meaning, and its ease of use should be a guiding example for the rest of us.

The common case should be easy; if a person can determine the decade just by looking at the date with no math, that is about as easy as it could ever get. If your extension to the system makes the common case hard or unclear, it's a bad extension. Moreover, our design process should be hostile to common disagreements, eliminating and refusing to adopt them at every turn. There's no reason to add a semantic difference of opinion where one did not previously exist. If your extension to the system causes a common disagreement, it's a bad extension. Yet we have accepted such a difference of opinion into our timekeeping and it is designed to make us disagree until the end of time. When in doubt, where the shift in understanding makes very little to no difference, just allow the intuitive understanding to be correct. (Just because I can hear the TERFs calling: trans people are not a difference of opinion. They are a fact. Designs that ignore them have never reflected reality, and the practical purpose of those designs has always been to marginalize people who are different.)

If we think there's somebody on our shoulders forcing our hand, that's just our work with computers biasing our minds. The way the computer prioritizes consistency over sense doesn't need to dictate how we organize the world. Nobody is forcing your decades to have 10 years stretching from here to eternity. Nobody is forcing you to be a contrarian and fight over minutiae, even if you're "right" and especially when you're wrong. Nobody is forcing you to design systems that allow these fights to go on indefinitely. Nobody is forcing you to build arguments into systems that are puttering along just fine.