The Curse of Knowledge

Try this. Pick a tune in your head, something most people would easily recognise. Find someone and tap the tune out. Tap, not hum. See if they get it.

How annoyed or frustrated do you get if they can’t get something that seems so obvious to you? I am somewhat ashamed that I wasn’t able to recognise “Happy Birthday” when Marty tried it on me, though it did prove a point.

When you know something, and you know it well, it’s hard to imagine how someone else could possible not know about it. Until we develop ET-like powers of psychic connection, most experiential or knowledge exchange is carried out under context deficient conditions and restricted by language. Remember the mythical swing?

This is hardly an insight. What is perhaps less stated is its censorship effects. One of the common reasons I abandon an idea or poject is because it seems so obvious that I feel embarassed to mention it, or even write a whole article about it. Especially since someone could easily reach the same level of understanding if they spent enough time googling for it.

I think this self-censorship robs us twofold. It robs us of an opportunity to synthesise and refine our thoughts in writing, but also robs the rest of the world of your insight that may not be all that obvious to them.

One of the most visited pages on this blog is about an Android related build system problem. This is despite there existing a stackoverflow post about it that’s shorter and more concise. There is value in your unique synthesis and contextual insight.

So stop crossing out those ideas for projects and articles. It could even be about something as mundane as fried rice. 🙂

Fried Rice, Very Nice

Yesterday I cooked fried rice. It was probably the best fried rice I’ve cooked ever, and I’ve cooked a few.

I’ve never had any real education where cooking is concerned; when I was growing up in Singapore, my family had a domestic servant (read: maid) who did all the cooking, cleaning and washing. All the way up until I left Singapore for Uni in Sydney, I never had to cook.

Consequently, any cooking I did was very much the way I was brought up; by the book. Even today, my approach to cooking usually goes like this:

  • Find a recipe online
  • Measure out each of the ingredients in the recipe
  • Follow the recipe to the letter

As you can imagine, this didn’t always result in a dish that resembled the recipe, or tasted the way I had imagined it to be. Often things like “until fragrant”, “until cooked through”, or something which didn’t have a precise time or visual measurement associated with it didn’t work too well.

Yesterday was different. I still looked up a receipe, but not only did I have totally different ingredients for the recipe, I didn’t actually measure them out. Instead I just mixed stuff in and tasted as I went along.

Some years back, there was a popular sitcom on Singaporean TV called Under one roof, about a Singaporean family. In one of the episodes, the mother is trying to teach her daughter how to cook. She used phrases like “just put some oil”, or “add a bit of salt”, much to the chagrin of her scientific-method oriented daughter. The daughter then started measuring how much oil acutally corresponded to “some oil” and how much salt was “a bit of salt”, and found incredible consistency between trials attempted by her mother.

I think well-practised cooks get the same measurements and dosages consistently. Good cooks taste as they go and know how to adapt to different states of a dish. Better cooks have a wider range of ingredients to play with when adapting a dish, and the best cooks are consistent through practice, have a wide range of ingredients at their disposal, and efficiently execute quickly. Consqeuently, they are able to handle much more complicated dishes in the comparable amount of time as the average cook.

You can probably see where this is going. I think well-practised software developers produce consistent, familiar code. Good developers iterate quickly and adapt to customer feedback. Better developers have various techniques to use when adapting to change, and the best developers can do this in a much shorter period of time. Consequently, they are able to handle larger, more complicated projects than the average developer.

I got a glimpse of being a good cook yesterday, but my only tools are salt, pepper, soya sauce and oyster sauce. I certainly cannot produce consistently and am some ways away from amassing a reasonable body of knowledge to adapt to different states of a dish. Soya sauce, salt, pepper, oyster sauce, fish sauce and seasame oil are still the best cooking friends I have. But I’m getting there.

Still a long way to go, where software and cooking are concerned, but here’s a picture for posterity.

It also helps if you add a liberal dose of oil 🙂

From Dublin with love

Despite my best attempts, this blog post is stilll almost 2 months late. For all the talk about consistency, I was still unable to put pen to paper and get things done.

This happened even though I had numerous ideas about what to write, going as far as to write outlines and code samples but never actually putting it together.

I don’t think it was the difficulty of finding topics, I think it was the dread and expectation of the arduousness and pain I would need to go through to actually craft a piece. That probably wouldn’t end up being that hot anyway.

There is a mantra that’s grown more common among software folks in the last few years. Ship fast, Ship often. It works because you get used to the pain, rather than forgetting it. It works because you find ways to deal with what’s constantly in your face, rather than hours slogging through it each time.

It’s not a new invention. Successful blog writers have long advocated the virtues of releasing consistently with a schedule. And I’ve always thought I’d be good at following a schedule. When I was in school, my annual report card usually had some remark about “high self discipline”. As it turns ot, following what someone tells you to do is not the same as following goals you set for yourself.

Being obedient is not the same as being as being self motivated.

A long time ago, in a galaxy far far away, I was a reasonable runner. I even took part in a 4 x 100 track relays for my class. It was a time when I would run around 6km every Sunday. I would meet Mr. Wee, a friend of mine, at the same place every Sunday morning and we would jog down for breakfast.

We didn’t always make it all the way there (sometimes we even skipped the run altogether!), but we would show up.

Years later, as I’m writing this here in Dublin, all that seems rather far away. I’m not sure when we’ll make it back to Sydney for any extended period of time, and I’m even worse at keeping in touch with the folks from Singapore.

Who knows what the future holds, or where this post actually leading to. I do know I had to get it out, even though no one was really pushing me to. And it cannot end without a solution, because what seems like the hopelessness of a hopeless problem is a poor excuse for not trying to solve it.

So I’ll ship fast and ship often, with a blog every Saturday. Next one will be on 15/11, so stay tuned!