?
You may have heard this before:
- if all you have is a hammer, everything is a nail
Now try this on for size:
- if everything is a nail, you'll always reach for your hammer
Wait. How could you have a hammer if everything is a nail? And wouldn't you be a nail too‽
Many years ago this question captured me:
- What does it mean to be an expert in a discipline?
I got stuck at "discipline". It's not so hard to define existing disciplines, but how do you know when you're looking at a new one? or at a hidden discipline?
"Discipline" started to make sense when instead of looking for a single thing, I saw combinations of these two things:
- Questions
- Ways to find answers for those questions
I now think of disciplines as conventional combinations. Disciplines have a conventional type of question, and conventional methods for answering them.
So what does it mean to be an expert in a discipline? I think it means you've developed the intuition to ask certain questions and are very good at certain methods for finding their answers. no more, no less.
Where do unexpected questions come from? And how can you find an answer to a question no one understands yet?
Conventional disciplines may have constrained themselves to asking questions for which they already know how to search answers.
But what if you reject known constraints and set new ones? You'd have to ask unknown questions and find unexpected ways to answer them.
- Alone, you can only ask the questions you can think of, and search for answers in ways you can think of.
Try replacing "question" with "problem", and "answer" with "address":
- Alone, you can only find the problems you can think of, and address them in ways you can think of.
Listening and empathy are the keys to finding problems you couldn't know exist. Collaborative design is the way to find answers you never expected were possible.
- Together, we can find the problems we didn't expect, and address them in ways we never imagined.
Here's the question I've spent a few years trying to answer:
- How can we make the best ways of teaching programming the easiest?
Rephrased as a problem:
- There are empirical best practices for teaching programming, but those are not common.
Hold on. What does it even mean to teach programming? Maybe it means first teaching students to ask questions that can be answered with code.
I certainly haven't found the answer yet, but I do have lots of ideas. Let's compare notes.