Software development was hard, even a half-millennium ago

I, like any software developer, occasionally get disheartened by the seemingly-unending meetings over inane details and trivialities. However, I now have a visual to help me remember that things could be worse: Gregorian Dates. I thought I’d had an inkling of the mess that it was to convert everyone to a single calendar, but it turns out I was very wrong. I had no idea:

The motivation of the Catholic Church in adjusting the calendar was to have Easter celebrated at the time that they thought had been agreed to at the First Council of Nicaea in 325. Although a canon of the council implies that all churches used the same Easter, they did not.

Sounds familiar, right? The great thing about standards is that there are so many to choose from.

Worse, the reckoned Moon that was used to compute Easter was fixed to the Julian year by a 19 year cycle. However, that is an approximation that built up an error of one day every 310 years. So by the sixteenth century the lunar calendar was out of phase with the real Moon by four days.

Days. Not minutes or hours, but days. But wait, it gets even more convoluted!

During the period between 1582, when the first countries adopted the Gregorian calendar, and 1923, when the last European country adopted it, it was often necessary to indicate the date of some event in both the Julian calendar and in the Gregorian calendar, for example, “10/21 February 1751/52”, where the dual year accounts for some countries already beginning their numbered year on 1 January while others were still using some other date. Even before 1582, the year sometimes had to be double dated because of the different beginnings of the year in various countries. Woolley, writing in his biography of John Dee (1527-1608/9), notes that immediately after 1582 English letter writers “customarily” used “two dates” on their letters, one OS and one NS.

I find the entire Wikipedia article to be fascinating, as I think any software architect would. It illustrates all of the major stumbling blocks we run into today in software engineering: egos, agendas, miscommunication, deadlines, partial-support, vague specifications, incompatible requirements, and even embrace-extend-extinguish. Sounds like all of the reasons you quit your last job, right?

And this process took literally hundreds of years to implement.

It boggles my mind. The next time I’m stuck in a pointless meeting that seems to drag on all day, I’ll try to remember that it could be worse: I could be trying to get everyone in the world to agree on one calendar.

I highly recommend you take 15 minutes and read the entire article. If it doesn’t help put your day in perspective, I don’t know what will.