The Python Principle is a principle of playing. Python makes it easy to play with programming.
Recently when I was refactoring my software project, I realized I want to make it easy to play, the same as Python did. So I am thinking about providing a web based python interactive console (possibly with good features similar to ipython console) so other members of the project including non-programmers can play with the code, supplemented with a very concise tutorial as python tutorial provided, some examples, good API reference, and so on, similar to python itself. By thinking this way, it helps me refactoring the code a lot and easily see how I should change the code to make it easy to play with. I guess eventually if the code is easy to play with then it must be very KISS (Keep It Simple, Stupid), readable, well tested, robust and functionally complete.
So I then have a sudden realization about why Python is designed so well. I guess in the design and implementation of Python, Guido (the author of Python), probably followed the principle of playing, treating being able to play with Python as the top priority (for example, it was explicitly stated by Guido Python is made easy to learn and program with — as a programming language for everyone). After meeting that top priority, other concerns such as performance are then considered.
Thus my thoughts went to my understanding of human society, I thought what this Principle of Play implies for the human society. When we are kids, we all like to play. Everything is new to us. We are curious about everything. Everything we see and touch is new to us, and easily accessible (we just need to open our eyes, walk around, and touch things). It is so easy to expand our space, and we definitely enjoy keeping learning of new things. So it is always fun. Nature is at our finger tip. So we can see that play and learning are intrinsically connected, just like in Python.
But as we grow older, it becomes harder and harder to expand our space and feel the space, to be exposed to new things. The space becomes more and more invisible and inaccessible to us (For example, it takes a lot of learning to explore human society, know and understand history and various cultures.). So this difficulty is natural and intrinsic.
Of course, in human history, people at the top of the hierarchy take advantage of this difficulty, and intentionally designed a system to make it harder for people to explore the space. So various approaches were developed to dump people down, such as compulsory schooling.
The significance of Internet and web is that they make the space more easily accessible. The information around the globe and through history can be at your finger tip. Exposed to this space (especially when it is beautifully structured), people want to learn and play again.
By applying the Python Principle to the human world, what we can do is to make the human world easy to play. To make it easy to play, we need to make things handy, easily accessible and visible so people can play with it (just like Python did). We need to build the hierarchy of space so people can learn layer by layer.
The primary projects of my life are: 1., natural learning: how people can learn naturally in real life; 2., open project: how independent artists/professionals can take control of their work/arts/creativity and build their business by cooperating with their peer professionals and professionals in other professions (This is essentially about Playing). To do these two well, on either a smaller scale (such as within an organization) or a larger scale (such as the whole society) we need to apply the Python Principle, by which I mean that by making things easily available and thus easy for people to expand their space. This is essentially social programming, e.g. doing programming not just with computer, but with the whole human society (online and offline) (in which software running on computer and Internet is inextricable part of it).
Note: below are some extras if you are interested in reading more
The experience of the Python programming language helps us gain the concrete experience of the best practices of how to program to make it easy to play with.
The open source movement these years also developed a lot of similar best practices, which I think can be summarized as making things easy to play with. Open source, by making the source code available, is to make it transparent and thus people (at least good programmers) can play with it. The appearance of many mash up webapps in the recent years means more and more people can play with programming now.
To dissect a little bit of the Python Principle, what makes Python easy to play with:
- transparent (visible instead of invisible/hidden) (Java is a hidden box. But in Python, you are playing inside the box);
- component, every component is made easy to play with
- easy to try, ground up and layered;
- easily accessible (at your finger tip);
- overall, fun and you can play with.
Above is just a very rough attempt trying to understand the Python Principle.