Intuitions and tacit knowledge

2024 / 11 / 29  •  Daniel Garnier-Moiroux

Uh. This plant looks a bit … tired. The leaves are starting to droop, and its shade of green is slightly paler than usual. It probably needs watering. Touch the dirt - dry. Got that right!

Would I have been able to explain what the plan should look like to someone who does not usually deal with our potted friends? Probably not. It’s an intuition, knowledge built from experience: in this case by not watering plants enough and seeing them wilt and wither. Now I can tell the signs earlier on, and avoid damage.

Same goes for many things in life. The sound the food makes in the frying pan, an increasingly loud crackle that makes me turn the heat down two notches. Not “uh ho, I smell burning”. Not “uh ho this very loud, and therefore very hot, and unless attended is going to burn my food”. But instead “it is getting louder at a certain rate, and unless attended it is going to get too hot and burn my food”. Third-order thinking, noticing the acceleration and acting accordingly. Of course this knowledge was acquired by overcooking, under-cooking and cooking just right long enough that I can recognize the signs. Again, hard to convey.

We all do this. Lots of people can catch a ball when it was launched at a reasonable speed - we’ve seen enough parabolic movement and trained our eye-hand coordination enough to be able to do it. Driving is also very similar, or riding a bike. Do you remember the first time you drove a car?

There’s a similar feeling I have with codebases now. I’ve been doing this Daniel-talks-to-computers thing professionally for over 10 years, and geeking out for 20 years. I’m starting to see patterns emerge in my code when things start drifting, before we’ve painted ourselves into a corner. I can’t fully explain, mostly convey some ~ vibes ~. Given then right environment, that may be enough to steer the project in a better direction. I’m navigating second-to-third order thinking, sometimes missing subtle signs. I’m not sure how I could practice this skill, other than “do a lot of projects” :)

Reminds me of this article by Cedric Chin, Why Tacit Knowledge is More Important Than Deliberate Practice. It describes this tacit knowledge mechanism, you can’t really teach someone to ride a bicycle by just talking to them. It also discusses an example of tacit knowledge in software engineering, in a much better way than here. Check it out.