Software has a life cycle just like everything else, and sometimes even goes beyond into the after-life (in keeping with this season, that's zombie-hood). We've all had to deal with legacy code, either as developers or as users. I've developed a 13 point scale to measure legacy-ness of software from inception (1) to death (12) and beyond into zombie-hood (13). The following guidelines to help you place where the code you are working on or using might fit into.
The form of this is "Stage / What They Say / What They are Thinking", followed by what it might really mean when talking to someone who knows something (perhaps not much) about the code in question.
1. First Date / May be Coming Soon / Never heard of that one before.
- The product manager hasn't heard that idea before, but it sounds intriguing. Could you say more?
2. Talking about It / In a Future Major Release / Heard of that, still thinking about it.
- There's an open requisition for the architect who can design that.
- It's not in the plans.
- There's an open requisition for the architect who can design that.
- It's not in the plans.
3. Engaged / In a Future Release / Heard of that, think it might be useful.
- The architect knows what needs to happen, but needs to document it.
- There's an open requisition for the engineers who can write that.
- It's in not in the plans yet.
- The architect knows what needs to happen, but needs to document it.
- There's an open requisition for the engineers who can write that.
- It's in not in the plans yet.
4. Twinkle / In the Next Major Release / Heard of that, pretty sure it's useful.
- There's an open requisition for the architect who can design that.
- It's in the plans.
- There's an open requisition for the architect who can design that.
- It's in the plans.
5. Pregnancy / Coming Soon / Know what that is, planning on it.
- The architect knows what needs to happen, but may need to document it.
- There's an open requisition for engineers who can write that.
- It's in the plans.
- The architect knows what needs to happen, but may need to document it.
- There's an open requisition for engineers who can write that.
- It's in the plans.
6. Birthing / In the Next Release / Know what that is, implementing it.
- The architect knows what needs to happen, and has documented it.
- There are engineers who know how to write that code.
- It's in the plans.
7. Infancy / Piloting / Still working the details out.
- The architect knows what needs to happen, and has documented it.
- There are engineers wrote that code.
- There are still some bugs preventing full shipping.
- The architect knows what needs to happen, and has documented it.
- There are engineers who know how to write that code.
- It's in the plans.
7. Infancy / Piloting / Still working the details out.
- The architect knows what needs to happen, and has documented it.
- There are engineers wrote that code.
- There are still some bugs preventing full shipping.
8. Childhood / It's in Production Today / Implemented it.
- The architect who designed it is still around.
- The engineers who wrote it are still assigned to the project.
- It shipped.
- The architect who designed it is still around.
- The engineers who wrote it are still assigned to the project.
- It shipped.
9. Adult / In Maintenance / Been there, done that, losing interest.
- The last engineer who knows how that works is leaving the company for another opportunity.
- An open requisition exists for an engineer to maintain that which is expected to be filled soon (hopefully before the last engineer who knows how that works leaves).
10. Middle-Age / Reaching the End of Life / Losing interest.
- The last engineer who knows how all of that works left the company for another opportunity.
- There's an intern who can compile it and can fix the occasional bug.
11. Elderly / Legacy / Lost interest but the customer's haven't.
- The person who wrote that retired.
- The engineer who took it over from left the company for another opportunity.
- This is an engineer or intern who maintains that and understands how some of it works.
12. Dead / End of Life / Customers have lost interest.
- The intern who maintains that goes back to school full-time next week (or at least that's what they said).
- The intern who maintains that goes back to school full-time next week (or at least that's what they said).
13. Zombie-Hood / Extreme Legacy / Everybody else BUT the customers have lost interest.
For that mission critical software that just can't go to end of life.
- The guy who wrote that is dead,
- The person who took it over from him has retired,
- The engineer hired to maintain it quit,
- There's an intern who can run the legacy compiler used for it and who can fix the occasional bug.
- Nobody else knows how that any of that works anymore.
Just like real life (in the movied), death and zombie-hood can happen to software at just about any time, and death isn't really a prerequisite stage before zombie-hood.