Almost everyone knows the famous Japanese toy Tamagotchi.

These are digital mascots that you’re supposed to take care of during all its life. During all this period you get to see how the mascot develops before it dies and you as the owner decides to restart with a new one using your previously gained knowledge to improve.
Besides, it is a straightforward idea; it is the general life cycle of almost everything, including software.
Born
The software as the Tamagotchi has to born. You received an egg (or choose one depending on the Tamagotchi version), and you waited for it to hatch.
In software development, our born state usually covers the requirement definitions. This state refers to obtain the requirements and defining the to enclose the objectives of the project. Like a tamagotchi (but less random) depending on our egg, we can have a good idea of the product we are going to obtain.
Grow
After our tamagotchi hatches from its egg, is time to take care of it and make sure it grows and develops.

You do what’s most vital for it, sometimes feeding it, others playing with it and others just letting it sleep, but always rotating between these tasks. All this to obtain a full-grown, healthy, and happy mascot after some time. Disclosure alert, it isn’t guaranteed to earn this best full-grown Tamagotchi even if you’re the best care keeper.
Software development is really similar, after you define the requirements (hatch of the egg) you start working on the software, and the tasks depend on the needs of the project, it could be programming, maybe testing or it could be (the hated) documenting. These needs are always changing as the software evolves before its final form.
Die
Even after all your efforts, your Tamagotchi will die, maybe because of natural causes (it was too old) or perhaps because you’re not the best owner out there.
So now, you know your Tamagotchi will die, so before that happens, make sure to give your last words to it. Those could be hate words because all the work it made you do or maybe the love words of a proud parent, whatever your decision is, your tamagotchi deserves a good final (or maybe not).
In software development, even if you don’t want, the software has an end, and you need to be prepared for it. This will be maybe by giving your users its last support or even by creating the new version that substitutes the original, either way even software dies.
Restart
Now, your original Tamagotchi is dead, but that doesn’t mean you couldn’t get a new egg and by consequence a new partner. There are tons to have, and in all of them, you can apply the gathered knowledge from the dead generations.

As we have been reading through all this text, the same applies to software development, where now, you can use your new knowledge in creating new things or improving them.
The complete Software development perspective
After writing in terms of Tamagotchis, the general idea of software life-cycle is covered, but there exists a lot of specific ways of implementing this life-cycles. In software, there exists a classification of these types of life-cycles:
- Waterfall
- Incremental
- Spiral
- Agile
Each model performs the “Tamagotchi” steps in its way, but if we generalize them, we can obtain this “Tamagotchi” steps, because in its core everything is those steps.
To know more about some of these models, you can read this file I created (is in Spanish) where I go deeper into this topic:
2 thoughts on “Born, grow, die… restart”