While programming, objects emerge from context and circumstance. It is an abstract on a higher level, encapsulating a few lower level functions and is independent and self-complete. A good model of objects emerged from the context have the potential to be very useful in various situations.
Objects live on various layers of abstraction, interfacing with the human world, the machine world, and etc.
Objects on each level or layer need to be complete by themselves. They need to be meaningful. They need good boundaries. They have to make up a good story on their level or layer. At the same time, their existence is also shaped by objects on adjacent levels or layers.
Writing software is thus actually creating life, just like any other art.
For us human being, what is life? We are self-complete. We take in life and be functional on a higher level. We need to learn details of various arts, which please different parts of our senses. We need to interact with other people, enjoy ourselves and at the same time help other people. We need to connect to something that is bigger than us, to organizations, to a movement, to human beings’ struggle of generations. Thus being alive, for us, means being able to take in various forms of life, let them center around ourselves, fuse them into one whole body, and as a whole body be functional and joining life on a higher level.
So the essence of life is how I can be useful to other people. But it has to start from self, because only a self pursuing his/her own happiness is able to absorb all forms of life around himself/herself. Only a self that is self-complete is able to synthesize those forms of life and apply them freely in creating new lives.
Note: This is kind of random thought now. I need to keep working on it.