It’s a win for me if I get selfish and try to ignore the stuff I already know and the stuff I dislike and hunt for the one thing that makes me better.

Raymond Smullyan does much more than write about Infinity, Combinatory Logic, Recursion Theory, and Gödel’s Incompleteness Theorems. And he does much more than teach these concepts delightfully by turning them into stories and puzzles to solve. He also teaches philosophy by way of insightful essays and anecdotes.



I’m going to paraphrase one of his down-home insights. This particular little story has helped me through many dark periods in my life. Raymond was talking about Taoism , and he explained that his two pet dogs embrace the Tao. I think he described them as “Sages.”



Raymond explained that like many dogs, they preferred rich chunks of meat and gravy to dried kibble. And like many people, Raymond had tried making the kibble more palatable by mixing in some meat with the dry dog food and pouring gravy over the whole thing.



The dogs, of course, would carefully pick the meat out and lick up all the gravy, leaving nothing but the dried kibble behind. But did they resent this? Did they howl and whine about the kibble ruining the meat? Of course not! They would wag their tails and frisk about, joyous in finding all that good meat and tasty gravy in their bowls. It was like the kibble existed in some alternate dimension that the dogs could not perceive.



Aaah… Dogs truly are Sages.

This post is not meant as a criticism of people for writing blog posts criticizing other blog posts. Or even for flaming them. It’s just a challenge to keep our eyes out for value and to keep our minds open at all times.

I see that someone has posted this on programming.reddit.com. There’s something ironic about the first couple of comments I saw. Honestly, I tried to respond and then deleted my thoughts immediately. I’ll return to participating there when there’s an opportunity to add value, not just to deepen entrenched prejudices.

The saw and the blunt instruments are not metaphors for programming languages, compilers, or debuggers. Please comment here or email me if this is not obvious, I will edit the post to be more explicit.

This just in: someone has pointed out that Zen and Taoism are not the same, and that the parable was wrongly attributed. Thanks.

In sales, there is a very high, observable, and measurable correlation between attending sales training seminars and sales volume. One explanation for this is that the kind of people who take time off of selling to sharpen their own saw are the kind of people to be top salespeople.The other possibility is that there is something abut the seminars themselves that make salespeople better. I have asked salespeople about it, and generally I get a variation on the exact same answer: If I can learn just one thing that improves my sales skills, the seminar will pay for itself.Think about that. They go to an all day seminar, where they will probably hear twenty, thirty, or forty tips. They will probably sit through tip after tip thinking “Yawn, I knew that, tell me something new.” Or they hear something and think: “That is the worst suggestion I’ve ever heard.” But then, suddenly, they hear something new, and they profit from it.In sales, you are used to making call after call, facing rejection after rejection, but you keep dialing because… the next one could be a winner. So the kind of person who can keep on dialing after rejection ought to be the kind of person who can sit through a seminar waiting to pounce on one new thing that can improve their income.Is this how we learn about programming? No!What we do is this: we read a blog post, reading thing after thing we agree with, and if just one thing in there doesn’t fit our personal world view, we demand a correction. If the thesis of the post clashes with our prejudices, we accuse the author of being an idiot. Honestly, we would suck as salespeople. We would quit the first time someone disagreed with us.What I suggest we do is mimic these salespeople. When we read a post, or a book, or look at a new language , let’s assume that some or even most of it will not be new. Let’s assume that we’ll positively detest some of it. But let’s also look at it in terms of our own profit: we win if we can find just one thing in there that makes us better programmers.That’s all we need from a blog post, you know. It’s a huge win if there’s one thing in a post. Heck, it’s a huge win if we read one hundred posts and learn one new valuable thing.This is what I’ve learned from sales: It’s a win for me if I get selfish and try to ignore the stuff I already know and the stuff I dislike and hunt for the one thing that makes me better.When someone says something outrageous, like: Fuck compilers and their false sense of security , it is not important whether I happen to think that programming languages with strong, expressive type systems are valuable (hint: I do ). What is important is to look at this statement and ask yourself: Is there just one thing in there, one kernel of wisdom that I can extract and use to be a better programmer?I think there is a lot of useful stuff to be extracted from that one outrageous statement. So much so that it is not important to me whether, on the whole, compilers are a bad idea. And likewise, it is not important to me whether debuggers are always a bad idea.No more important than asking a salesperson if, on the whole, she thought the seminar presenter was any good. She’ll be too busy using the one thing she learned to give any thought to the question.(Part I of “What I’ve Learned from Sales,” Don’t Feed the Trolls , looked at why resistance to a new idea is expressed as a never-ending series of objections. Part II, Wanna Bet? , described how to handle one very common form of objection.)Update: A couple of thoughts after sleeping on this post.