Is Making Software Sisyphean?
Sisyphus, a character of Greek Mythology, was exceedingly crafty, deceitful, and made a pattern of tricking the gods. As a punishment for his deceitfulness, Zeus cursed Sisyphus in the afterlife. His punishment?
To push a boulder up a hill.
That doesn't seem so bad! But there is one little catch: every time the boulder got close to the top of the hill, it would roll back down. Every time. For all of eternity.
Sisyphus was cursed to eternally repeat a task that couldn't be finished.
I thought this article was about software development? Well...
Pushing the Boulder Up The Hill
Even if a piece of software is feature complete and totally bug-free (ha!), you can't simply leave it alone forever. Software rots.
Everything continues to move along, even when your software doesn't. The underlying OS needs upgrades, your programming language version will eventually be EOL'ed, your dependencies will need upgrades, external APIs you rely on will change or go away completely.
Don't even get me started on browsers.
And those are just things that are not your code. We haven't even started talking about all the code directly under your control. There are always more features to add, more bugs to fix, sections that need to be refactored, emergent concepts that need to be formalized, bad abstractions that need to be undone.
Monoliths! → Microservices! → Monoliths! → Heat Death of the Universe
The Top of the Hill is a Myth
Are we Sisyphus? Are we doomed to meaningless labor for all eternity?
Absolutely not. For software developers, we have to know that the top of the hill is a myth. Sisyphus was continually trying to reach the top to complete his task, for us there is no finished. There is only the journey along the way.
We're not doomed, tragic figures. We're gardeners tending to an ever-changing landscape. Carefully pruning, planting, and weeding.
A gardener is never finished, only finished for today.
Setting your focus on being completely done will make your work along the way will feel a lot like fruitless toil.
Setting your focus on the work at hand will bring you the joy of a gardener — crafting order from chaos, even if only for today.
My main project focus is Hammerstone, where we build components for your Laravel and Rails applications. My business partner and I do a podcast where we talk about building a software company.
I do another podcast about web frameworks called Framework Friends.
If you ever have any questions or want to chat, I'm always on Twitter