Lao Tzu's ""Tao Te Ching"" is the second-most translated book in the world, after the Bible. It's 81 poems share with us a glimpse of philosophical thought from China, over 2500 years ago. These poems, like other substantial philosophical literature, have largely stood the test of time and still have lessons to teach. We will be reframing the lessons from the Tao Te Ching as lessons we have learned as the operators of humanity's greatest artifact.
On naming: Lao Tzu warns us that names are not eternal and that while names have their utility, we should recognize their limits. We see the same in our abstractions: we can walk too far down the road of pattern-recognition whether named patterns or patterns captured as an encoded abstraction; we can pile up too many abstractions or layers and in our attempt to separate ourselves from complexity we create a new kind of complexity; we can become overly invested in our abstractions, patterns, and layers -- and the names we give them -- such that they outlive their usefulness.
On returning: _why recently released a series of dark stories describing his exit from the public eye and from programming. One of his central themes was his preference for the greater longevity of human languages over computer languages. His fate is a warning: Being a programmer requires that we enter into our endeavour with a willingness to let go of what we create.
On usefulness: ""We turn clay into a pot; But it is the space where there is nothing that makes it useful."" Software is not a physical thing and, as such, most of its construction occurs within our imagination. The words we type into a text editor are only the recipe. Upon execution, these words come to life and a world of hidden beauty and complexity erupts. Even within the runtime environment of a program, there are hidden solutions and hidden problems. There is always more to understand.
On humility: ""Knowing others is wisdom; Knowing the self is enlightenment. Mastering others requires force; Mastering the self requires strength."" Programming is a social task. We must always remember there is no perfection to our craft and that compassion for our coworkers is essential. Here, I will go into a brief story about the worst programmer I've ever known.
Each of these themes (and others) will be explored with code which highlights the idea or exemplifies change over time as described in the passage.
Other themes may include: beauty vs. ugliness, avoiding greed, effortlessness, the impartiality of the universe, accepting disgrace, fruit over flowers, constancy and sustainability, leading without dominating, ""a great tailor makes few cuts"", weapons are instruments of fear, creating without claiming, soft (dynamic) overcoming hard (static), letting go of knowledge and opinions, avoiding distraction, ""without awe there is disaster"", the simple life, laws create thieves, ""a journey of a thousand miles starts with a single step"" / ""give as much care to the end as the beginning"", etc."