Knowing how

People who don’t have a particular skill tend to think of those who do have that skill as “knowing how” to do that thing.

To a non-programmer, a programmer is a person who “knows how” to write software. A doctor is a person who “knows how” to diagnose and treat health problems. A carpenter is a person who “knows how” to make things out of wood.

Knowledge only works this way in movies.

But it’s never that simple.

As a programmer, I can tell you that knowing a programming language doesn’t make you capable of writing good software any more than knowing English makes you capable of writing the Great American Novel.

Knowledge is a gateway, not a summit. Knowing how to do one thing opens the door to knowing how to do other things. And once you know how to do those things, you’re on the path to knowing how to do even more things. Some of those things are things that can’t be easily taught. You can try, but without the context of experience, the lessons won’t always resonate.

The tricky thing about this is that knowledge acquisition isn’t a linear path. I’ve been programming for over twenty years, but much of what I learn comes from listening to people who are younger and ostensibly less experienced than I am. Experience is valuable, but it’s not the only source of good ideas.

Knowledge is a progress bar that never quite seems to make it to 100%. If you want to know how to do something, understand that you’re embarking on a potentially endless journey. The journey is the destination.