Birth, Aging, Sickness, and Death.
Every entity in this world will go through this cycle of living and dying. Nothing shall escape it.
This applies to the most obvious entity of all, our own self. However this also applies to other concept in life. Take for example, a computer system.
A computer system is often the result of a software project. There is the moment where an idea is being formulated, a prototype is built to pitch the project, budget acquired, team formulated and grown, and finally, the project took off (birth). Over time, the system is crafted, again and again it is perfected, broken, fixed, patched, deployed. installed, broken again, fixed again, and so on (aging).
However, as software system changes hand from one team to another, fixes and enhancement done to it may or may not be in accordance with the original structure conceived by its creators. This will eventually result in various internal complication and inconsistencies. Sometimes it is not the software that age, but the hardware. Disks failing, cables aging, memory corruption, dead power supply, and so on. Indeed, nothing last forever! (sickness).
Finally, at some point, all software system will be retired. It may became obsolete, replaced by a newer system, or simply, broke down (death). On that fateful day, management, end-users, or whoever it is that work closely with the system will eventually look back and reflect upon the value it has contributed to the organization or end users. Even future systems implemented will be measured, directly or indirectly, against its older counterparts.
Therefore for those of you who works in the realm of computing, do keep in mind this principle. Take it to your heart that nothing in this world is permanent.
In doing so, when crafting and scoping a system, it is important that we ask ourself (and the client) – what is the intended lifecycle of this project or software system? how will it be supported and maintained? who will look after the system when your team is gone?
Remember that a software system is an entity as much as you are. How you write each of your system reflects your view and life-state in general. And verily so, you can infer the character of a programmer from a piece of code that he has written. From the various decision points he made which is visible in the way the system is structured, organized, partitioned and optimized.
Have that system lived a life worth living?
Well, have you?
Indeed it is true that truth emerges and lies stripped bare when one reflects upon Death. When the system has reached the end of its live, and your name written as craftsman of that system in the various source code and documentations that surrounds the system, how would you like to be perceived?
So if there is one credo for a programmer to follow, this would be it:
Live a life worth living – Craft a system worth crafting.
The two goes hand in hand.