Live data from Hacker News

The Tao Of Programming

canonical.org

1–10 of 12 posts

Re: The Tao Of Programming

#2
Ah, old memories... I remember reading this years ago. And recently while naming my blog too as 'The Tao of Programming' by myself, I thought it sounded vaguely familiar (but oddly, didn't think of Googling for it).

But reading this now, I realize this is more like a set of Zen koans than like Tao Te Ching itself. A little 'poetry' here and there like Tao Te Ching, but most parts are obviously inspired from koans.

Re: The Tao Of Programming

#5

So many pieces of truth in here. Most of them I internalized long ago, but still there is the odd one which I encountered recently. This time it's "Software rots if not used". It is indeed a mystery, but oh so true.

Not such a mystery. It stays the same, but dependencies continue to change and it does not participate in shaping them or being shaped by them.

Re: The Tao Of Programming

#6
2.4 is my favorite by far:

A novice asked the Master: ``Here is a programmer that never designs, documents or tests his programs. Yet all who know him consider him one of the best programmers in the world. Why is this?''

The Master replies: ``That programmer has mastered the Tao. He has gone beyond the need for design; he does not become angry when the system crashes, but accepts the universe without concern. He has gone beyond the need for documentation; he no longer cares if anyone else sees his code. He has gone beyond the need for testing; each of his programs are perfect within themselves, serene and elegant, their purpose self-evident. Truly, he has entered the mystery of Tao.''

Re: The Tao Of Programming

#7
>A novice programmer was once assigned to code a simple financial package.

>The novice worked furiously for many days, but when his master reviewed his program, he discovered that it contained a screen editor, a set of generalized graphics routines, an artificial intelligence interface, but not the slightest mention of anything financial.

>When the master asked about this, the novice became indignant. ``Don't be so impatient,'' he said, ``I'll put in the financial stuff eventually.''

I love this one because it took me many many years to "get" this lesson: it's not about the code. It's about the Program.

EDIT: Minor edits

Re: The Tao Of Programming

#8
post #5

So many pieces of truth in here. Most of them I internalized long ago, but still there is the odd one which I encountered recently. This time it's "Software rots if not used". It is indeed a mystery, but oh so true.

Not such a mystery. It stays the same, but dependencies continue to change and it does not participate in shaping them or being shaped by them.

Not only the dependencies, also the requirements and the people who use it.

But it's more than this. I think the real lesson is that a program is always a work in progress... like a walking person, always falling forward and putting one leg after the other to stop the fall. The moment you don't touch it anymore it dies.

"Working" can be a programmer writing code, or just a user putting data in, or submiting the occasional bug report... or anything. But the moment it stops interacting it gets out of sync with the world.

Re: The Tao Of Programming

#9

> A novice programmer was once assigned to code a simple financial package. > The novice worked furiously for many days, but when his master reviewed his program, he discovered that it contained a screen editor, a set of generalized graphics routines, an artificial intelligence interface, but not the slightest mention of anything financial. > When the master asked about this, the novice became indignant. ``Don't be s…

I'm not sure I understand this one yet. Could you explain what you mean about code vs. Program?

To me, it seems the novice is correct here (supposing that those components produced are required for a good result). Is the lesson similar to that of building DSLs?

Re: The Tao Of Programming

#10
Once, a large computer company, seeking to plumb the depths of the Tao, decided to psychologically test a large group of its programmers, including its Masters. Unfortunately, they did not have enough copies of the test. Luckily the test came in two separate parts, so half the group got one part, and half the second. When the group was done taking one part, the tests were exchanged, and the psychologist administering the test, following his programmed script, gave the exact same instructions that he had already given, ending with "Are there any questions?" He was about to command "Then you may begin." when one of the Masters shouted out: "Should we use the same personality as we did on the first half?" The psychologist was silent, and completely baffled. One novice in the room, and some reading this story years later, became enlightened.

[Stolen, with slight alteration, from Gerald Weinberg's The Psychology of Computer Programming]

Post reply on HN