The Cryptic File Name That Taught Me About Software Longevity
Software ages like fine Wine (or Cheese) depending on your code.
To illustrate this, here is an incident that happened this week.
I created a directory named soc:qsfp_0
in my Linux VM, but when I viewed it from the Host Windows Explorer, it had transformed into the cryptic name SQSR48~L
.
Why?
It’s because the relation between Linux and Windows is more convoluted than we imagine.
Linux allows certain characters in filenames that Windows is not as friendly with, such as the colon (:). To maintain backward compatibility with the MS-DOS file naming system, which supports up to eight characters for the file name and up to three characters for the extension, Windows resorts to using the tilde (~) and a generated version of the name.
Why can't Linux and Windows just use the same file naming convention?
It's a tale as old as time - standards, conventions, and a little thing we like to call backward compatibility.
Yes, you heard it right; backward compatibility.
Backward compatibility is what makes our code age like Wine or Cheese.
It's the glue that bridges the gap between old and new software.
Like a good story, software should bridge the gap between different eras, allowing the past to coexist with the present.
How do we make a Wine out of our code?
- Document Like Your Grandma's Recipe Book: Document like you are narrating a tale of wizards and dragons, craft the ancient scroll (Not like the one created by Master Oogway, and you know why) of legacy code for your future self and everyone who take up your mess.
- Hug the Standards, but Give them a Wink: Just be sure that when you break the rules, you do it with fireworks and flairs. Take suggestions from experts, brainstorm enough.
- The Software’s Wardrobe: Versioning is like your software’s wardrobe. Each version is a new outfit, but don’t force users into that avant-garde space suit without a smooth dressing room transition. Let them change at their own pace, no fashion police involved.
- The GPS for Users: Introducing changes is like planning a heist. Users are your partners in crime, and you better provide them with a detailed map. Provide them the migration paths. They need a smooth escape route from the old to the new without tripping any alarms.
- Adaptability, the Shape-Shifter: Keep your ear to the ground like a gossiping wizard's apprentice. Adapt to the winds of change, and don't be afraid to morph into a new form when the occasion demands it.
- Errors are Just Plot Twists: When things go south, don't panic. Just visit Kerala, my Home. Errors are just plot twists in the epic tale of your software. Handle them with the grace of a Master Storyteller.
- Build Bridges, Not Walls: When you make major changes, build a bridge from the old to the new. You're an Engineer, not a Demolition expert. Users should upgrade willingly, not under duress.
Originally shared on LinkedIn