
The Tao of Programming (1987) - ghosthamlet
http://www.textfiles.com/100/taoprogram.pro
======
chrisweekly
Ha! I first came across this verse (7.2) early in my career, circa 2001 or so,
and it always stuck with me.

> 7.2

In the East there is a shark which is larger than all other fish. It changes
into a bird whose wings are like clouds filling the sky. When this bird moves
across the land, it brings a message from Corporate Headquarters. This message
it drops into the midst of the programmers, like a seagull making its mark
upon the beach. Then the bird mounts on the wind and, with the blue sky at its
back, returns home.

The novice programmer stares in wonder at the bird, for he understands it not.
The average programmer dreads the coming of the bird, for he fears its
message. The Master Programmer continues to work at his terminal, unaware that
the bird has come and gone.

~~~
BossingAround
That feels like kind of a dangerous advice. Seems to me that means that if
Google announces that they want to roll out a full cencorship in China so that
they can enter the market over there, the most prominent developers will just
silently continue to work on it..?

~~~
ppseafield
I think the context of where this came from helps explain the quote (beginning
of chapter 1 of Zhuangzi):

> IN THE NORTHERN DARKNESS there is a fish and his name is K'un.1 The K'un is
> so huge I don't know how many thousand li he measures. He changes and
> becomes a bird whose name is P'eng. The back of the P'eng measures I don't
> know how many thousand li across and, when he rises up and flies off, his
> wings are like clouds all over the sky.

The big bird is so huge that it is alien to the smaller ecosystems below it.
In the same way, CEOs and upper management are so "huge" (at the top of the
hierarchy) that their choices seem incomprehensible from the point of e.g. a
junior dev. Maybe they good or bad choices, but in any case their day-to-day
choices are different from a single developer's.

> The cicada and the little dove laugh at this, saying, "When we make an
> effort and fly up, we can get as far as the elm or the sapanwood tree, but
> sometimes we don't make it and just fall down on the ground. Now how is
> anyone going to go ninety thousand li to the south!"

Here the small creatures make fun of the bird, not exactly understanding its
world or experiences, but instead comparing the Peng's actions and natural
inclinations to their own. A dove has no need to travel thousands of miles,
which is a short trip for the Peng.

In the GP's comment, the novice programmer "stares in wonder at the bird"
because - in the same way - his day-to-day experience is so different from the
people who run Corporate Headquarters. The Master Programmer knows that CH is
"doing it's thing" so to speak, or just following its own nature. Any attempt
to understand the machinations and decisions of upper management from the
viewpoint of a programmer simply doesn't work, so they do not bother to think
about it.

------
ConfusedDog
I am already loving it. "1.2

The Tao gave birth to machine language. Machine language gave birth to the
assembler.

The assembler gave birth to the compiler. Now their are ten thousand
languages.

Each language has its purpose, however humble. Each language expresses the Yin
and Yang of software. Each language has its place within the Tao.

But do not program in COBOL if you can avoid it. "

------
peterwwillis
Or get it in HTML:
[http://www.mit.edu/~xela/tao.html](http://www.mit.edu/~xela/tao.html)

~~~
yellowapple
And without the various typos, to boot.

~~~
kiddico
Said typos are (for the most part) on purpose.

[https://news.ycombinator.com/item?id=19024327](https://news.ycombinator.com/item?id=19024327)

~~~
yellowapple
If they were deliberate, then that would imply that their existence is
perfection. To recognize that the typos were accidental mistakes by the human
typing them is to recognize the Tao.

------
raphlinus
The Tao of programming is Nigel Tao, long one of the main people on the Go
team. Not to be confused with the Tao of mathematics, who is of course Terence
Tao, Nigel's brother.

~~~
synthmeat
Also not to be confused with another brother - Trevor, an autist savant with
double degree in mathematics and music, as well as a chessmaster.

That's what you get when a pediatrician and a mathematics/physics teacher have
kids. Who would've known. (Not trivializing at all. Complimenting, if
anything.)

They're so cute too. [https://media.gettyimages.com/photos/brilliant-brothers-
dr-t...](https://media.gettyimages.com/photos/brilliant-brothers-dr-terence-
tao-trevor-tao-and-nigel-tao-are-the-picture-id540164715)

------
cbanek
> Only a fool expects rational behavior from his fellow humans. Why do you
> expect it from a machine that humans have constructed? Computers simulate
> determinism; only Tao is prefect.

Spelling as plot device, so underrated.

~~~
alfonsodev
> "Spelling as plot device"

I'm curious, what do you mean ? could you point me somewhere to learn about it
? is it something like or related to a McGuffin ?

~~~
JetSpiegel
The typo "prefect" at the end is part of the plot, that nobody id perfect.

~~~
alfonsodev
Apparently the typo was "fixed" in the html version
[http://www.mit.edu/~xela/tao.html](http://www.mit.edu/~xela/tao.html) maybe
whoever ported didn't catch the subtle double meaning ? Or was just a typo.

------
forgotmypw2
.

[http://www.catb.org/jargon/html/story-of-
mel.html](http://www.catb.org/jargon/html/story-of-mel.html)

.

~~~
yellowapple
And for the best of both worlds:
[http://www.catb.org/jargon/html/koans.html](http://www.catb.org/jargon/html/koans.html)

The first one's my favorite:

    
    
        A novice was trying to fix a broken Lisp machine by turning the power
        off and on.
    
        Knight, seeing what the student was doing, spoke sternly: “You cannot
        fix a machine by just power-cycling it with no understanding of what
        is going wrong.”
    
        Knight turned the machine off and on.
    
        The machine worked.

------
hyperpallium
_When the specification is defined by the program, it cannot have bugs._

~~~
coliveira
Did he know Python already in the 80s?

~~~
jonathanstrange
Yes, because Python is just a small subset of CommonLisp with bad syntax.

------
vram22
Windows Haiku are also good.

[https://www.google.co.in/search?q=windows+haiku](https://www.google.co.in/search?q=windows+haiku)

[https://www.gnu.org/fun/jokes/error-
haiku.html](https://www.gnu.org/fun/jokes/error-haiku.html)

[http://wiki.c2.com/?ComputerErrorHaiku](http://wiki.c2.com/?ComputerErrorHaiku)

------
amadio
I prefer "The UNIX Koans of Master Foo" [http://catb.org/esr/writings/unix-
koans/](http://catb.org/esr/writings/unix-koans/)

~~~
grkvlt
Those are actually pretty terrible, probably written after reading GEB. ESR is
trying to emulate Hofstadter but isn't clever enough, so they are all based on
a one-trick pony, search-and-replace joke that wears thin quickly.

2/10, would have preferred bobcat?

~~~
glitchc
The housecat may mock the tiger, but it will not turn his purr into a roar.

------
teddyh
I was not until many years after I read this until I realized it was an actual
book:

[https://en.wikipedia.org/wiki/The_Tao_of_Programming](https://en.wikipedia.org/wiki/The_Tao_of_Programming)

I now own a copy, and it is glorious.

------
_hardwaregeek
I really _get_ 4.4 for some reason:

> True, sometimes there are difficult problems. I see them coming, I slow
> down, I watch silently. Then I change a single line of code and the
> difficulties vanish like puffs of idle smoke.

I've started to debug like this. Sure, I also actively debug by adding print
statements and manipulating my code. But there's something to be said about
just thinking and waiting for the answer.

~~~
BossingAround
Interesting. Generally, what I do as the first step is immediatelly connect a
remote debugger and debug the piece of code that I think is problematic (which
is correct in around 90% of the times for me). Then, the answer is generally
trivial. I started doing this because it felt way more time efficient than
staring into the code and trying to think what goes wrong over there.

~~~
yellowapple
I've found that sometimes there's additional benefit to the "take a step back
and think about what the code is actually doing" step, in the sense that doing
so helps gain better knowledge about how the code actually works and often
reveals opportunities to simplify the design (sometimes in such a way that
ends up inadvertently fixing the problem, though admittedly it'll more often
just introduce more bugs ;) ).

------
jordanbeiber
I’ve stuggled with 7.1.

The shelter a massive enterprise with a sane middle-manager provides can be a
beautiful place for innovation and creative freedom.

However, the older I’ve become the less corporate bs and re-orgs I’m prepared
to live through.

Maybe my Tao is slipping...

~~~
yellowapple
The trick is to ignore the corporate BS and re-orgs, since they matter not in
the grand scheme of things.

In the now-more-prescient-than-ever words of Grace Slick:

    
    
        Someone's always playing corporation games
        Who cares, they're always changing corporation names

------
dang
Lots of previous discussions:
[https://hn.algolia.com/?query=The%20Tao%20of%20Programming%2...](https://hn.algolia.com/?query=The%20Tao%20of%20Programming%20points%3E3&sort=byDate&dateRange=all&type=story&storyText=false&prefix&page=0)

(Edit: I mention links like this just in case people are interested. If we
were treating the post as a duplicate it would be marked [dupe].)

------
sifoobar
I used to own the book but left it at my desk when I quit a job in the hope
that it would help the next poor victim for the same position.

Reading the whole thing, I'm again surprised at how much wisdom is hidden in
there.

Shouldn't that be:

"Time for you to return."

though?

~~~
qu4z-2
I'm not sure whether you're aware that "time for you to leave" is a reference
to the old Kung Fu TV show[0].

I also don't know enough about systems programming to be sure whether RET or
LEAVE is the right instruction there :P

[0]:
[https://www.youtube.com/watch?v=wQBVYko_uhQ#t=46s](https://www.youtube.com/watch?v=wQBVYko_uhQ#t=46s)

------
emersonrsantos
> The Tao gave birth to machine language. Machine language gave birth to the
> assembler. The assembler gave birth to the compiler. Now there are ten
> thousand languages.

Heh, nothing changed.

~~~
deeg
You left out the most important line in the whole treatise :)

> But do not program in COBOL if you can avoid it.

~~~
pnw_hazor
Cobol does not look that bad given the mess we are in today.

------
mark_l_watson
nice, I haven't seen this in years.

I really laughed at the bit about 'structured programming.' As it turns out,
long ago, structured programming was a thing.

~~~
bitwize
It still is a thing. Today we just call it "programming".

~~~
paradoxparalax
And how do you call it if is Not structured nowadays?

~~~
yellowapple
Javascript.

------
rblion
I really enjoy the synthesis of Eastern and Western, Ancient and Modern.
Pulling up something from before I was born makes this post that much better.

------
hyperpallium
4.1 is like wtf/min
[https://www.osnews.com/story/19266/wtfsm/](https://www.osnews.com/story/19266/wtfsm/)
(not xkcd)

It's not the law of _no_ astonishment.

------
jamiewildehk
I bought a physical copy of this (still have it around somewhere) after
reading many of the koans from /usr/bin/fortune

------
ghosthamlet
When i dreamed the code, Maybe it is the code dreamed me.

When Worlds end, The Rest Is Silence of Code.

------
jgamman
sheesh - wandered around the site and found angela.txt, an ascii nude (which i
now know was/is a thing and wish i didn't). and people wonder why other people
think on-line culture is a cesspool.

------
JHH_18
I first read that on POTS with my '486 . Just now, rocked and laughed just
like Chris Griffin when he noticed the Jingled keys. Thanks.

------
russaga_com
like

------
wpmoradi
awesome!!!

