Ah, so i've formulated a new theory on the young/old boundary. It's an esoteric thang, and really the only reason i
bother mentioning it here is because i think it might apply to software maturity.
You see, the usual idea is that you become old when you're disillusioned with the ideals you had when you were
younger. So, if you can look back five years and say, "Wow, i actually believed that. How cute.", then you're
I propose, however, that you're still young at that point, or at least at some not-young-but-not-yet-old state.
Because, i think, there's a point at which you look back five years and think, "Yep, still right." That is
when you're old. When you no longer innovate in your own value system.
Ok, ok, it's just a theory, and i haven't really thought it all the way through yet (and, ideally, the theory will
obsolete itself in five years as far as i'm concerned). But i think there's something valid there, about how youth is
the time when you grow, and growth is about making mistakes (or at least refining truths). And i think there might
be a parallel in software development.
You know how it is, when you first start a project, and you whip through the first few iterations before realizing that
some of your base assumptions were way out there (whether you whip through it in code, or on paper, or
whatever, you usually get through the first few times pretty quickly). Then comes a period of time when you've
decided on some basics, but everything else is in flux (should the API be functional or OO, how to group the code,
which features should be extended...). Usually that period of time (at least for open source projects) is when the
project has hit the "real world", and the changes are made to respond to real needs. That's when a project is really
maturing, but can still change drastically over the course of a few months.
At some point, though, that kind of rapid change slows down, or even stops. Eventually, everything's in place, and
the only new development is for bugfixes. Sometimes this is a wonderful thing, a venerable perfection, like TeX, or
sh. It solves the task given to it with aplomb.
Sometimes, it's old senility, like sendmail, or the Windows Registry. Somewhere along the line, it ceased to be a
process of refinement, and became a hack, stretching to fill a taskspace not originally part of the plan.
Hmmm.... i'm no longer sure where i'm going with this, so i'll stop. Analogies only carry you so far before you
notice their deficiencies.
But, just for the record, i'm still right. :P
... at least for another couple years ...