The other day I was looking at some old Elm code, refamiliarising myself with one of the key language concepts (Signals) and found an article to help me. One part in particular caught my eye:
To truly add a level of responsive interactivity to our application, we need to understand Signals, Mailboxes, and Addresses. These are concepts which at first glance sound super complicated, but when you get used to the concepts, they start to make a lot of sense (and, if you’re anything like me, you start to question why you would ever do things in another way).
I’m not entirely sure why you would ever do things in another way, but it turns out we do. That article was written to explain Elm 0.16. We’re now up to Elm 0.19 and the concepts of Signals, Mailboxes and Addresses have been consigned to the bin. What seemed intuitive once is now historical. Elm 0.19 does things differently and seems at least as simple as 0.16.
We often talk about technical debt, which I usually think of as shortcuts taken for expediency which need to be addressed before their consequences become too costly. But even perfectly good ideas become out of date and expensive. Designs and systems which were once considered ideal are now awkward, cumbersome and expensive to manage.
Legacy systems aren’t legacy because they were inherently bad, but because the world moved on. We need to recognise this when we plan our time, organisational structures and resourcing, otherwise we can find ourselves with unexpected costly overheads.