So you had a project.

You scratched your head a couple of days and came up a really nice and robust design.

“The design solves the problems now and it should be able to handle future changes.” You thought that.

You finished the project, it worked and everyone was happy.

Two years later, the ‘future’ has came.

Now you have a new requirement, and you find out that the thing that your code relies on is changed.

Will it break your code?

It turns out the code you wrote can handle the new requirement, with very little changes.

You ‘saved’ the future.

That’s the joy of coding.