Good stupid questions


I tried putting it into words, but it didn't turn out well enough.
Will come back to this sometime in the future.

Stupid questions are the fun hard questions

I used to be in a small bubble of people, where we chased stupid questions. We had a lot of respect for them, and used to get extremely pumped when we found them. It became a habit for me - Coming up with stupid questions, and then trying to find their answers.

The group dissolved, but the habit remains. Now when someone comes up with a good stupid question, I have to control the impulse and not say out loud "that's a stupid question!", while getting excited about it (for obvious reasons).

(This caused an awkward moment in a closed room meeting once. I realized it much much later)

By stupid questions, I don't really mean questions coming from of a lack of specific knowledge. They aren't factual questions. Eg of bad stupid question: How does api x work?

Stupid questions are much deeper. They are pretty naughty questions that come up from a mix of knowledge and/or experience and/or luck. Novices rarely ask good stupid questions.

And answering these stupid questions takes a surprising depth of study and clarity. Most of what I know came from answering stupid questions.

Some examples I can think of: down stupid questions.

  • What even are variables? (references to memory locations, absolute or relative. Sometimes references to references to references to ... and so on. The answer changes radically if you move from compiled to interpreted languages)
  • What if we give up on any one of ACID?
  • How can I implement closure in a non GC language? (stole this one from a podcast)
  • Why can't I just tell database x connect to app y? (you'll end up building heroku. So many companies have tried to build heroku. Declarative networking should be a thing.)
  • What makes an algorithm different from an AI/ML model?
  • What really is machine learning? (the ability to take feedback)
  • How does unsupervised learning really work, if it is unsupervised? (This is especially tricky if you understand the intuition behind feedback)

Naughty stupid questions also lead to amazingly robust engineering, as they are great for adversarial programming:

  • What if we pull the server's cord right now? (I bet stable ec2 on aws is leading to extremely brittle un-recoverable server software worldwide)
  • What if we increase the packet overhead by n bytes? (you'll discover the pains of MTU based fragmentation. On a random note: my respect for GKE, they let us set the network MTU)
  • What if we pass parameter y into this api?
  • What if we create a billion files in here?

If you find someone who asks stupid questions on a regular basis, you've hit a gold mine.