Second system effect
A recent email from a user of one of my small software tools prompted me to write this entry…
If you read Wikipedia’s page on Second system effect, it doesn’t say much and it’s hard to internalise what it means. Some other resources describe it better, but actually learning it first-hand is, shall we say, enlightening. Fortunately, I learned this in my spare time, and not at work.
Back in 2002, I started working on a small tool
(bakonf) to basically backup /etc and
generate a tar archive out of it. It had some other features of course
that made it a bit more useful than
tar c /etc, but not many. It
worked well and I was using it to make incremental dumps of server
configuration ready to write to a CD on a few servers.
A while later (around a year or so), I came to the conclusion that just having a tar archive is not enough, and rather one would want to be able to check differences between the filesystem and the archive, and ideally between multiple servers configurations (note, this was before DVCSs) online. I started working on cfvers in my free time and initially made reasonable progress.
However, I didn’t know to hold back from changing the scope and features, so actual progress in the form of a beta release was always postponed. Then came changes to the transport protocol, to the structure of the app, etc., all the fun.
Note that this was in my free time, done in bursts of work in a month, then a few months with no work at all, so not too much work overall. Still, I slowly realised that this will go nowhere, so at the end of 2006 I finally gave up on developing it and marked the project as obsolete.
bakonf is still doing its job, and I’ve done a few small
commits to it in order to add compatibility with Python 3.x as recent
as last year. I got an email about it from a user at the start of this
year, so it definitely outlived its supposed replacement. Hah!
Overall, it was a great lesson. Maybe it wasn’t just second system effect, but also not enough effort invested by me, or bad planning, so on. But for me it drove the point home that writing the second version of something is filled with dangerous decisions…