Ganesh Venkataraman
Published Jun 16, 2014
[I am fairly certain this idea came from my discussions with Mahmoud]
The Greeks while trying to answer the all important question “Who’s God?” figured out it’s much easier to answer the question - “Who’s not God?”. Hence was born Apophatic theology or via negativa. I often use this line of thinking as my personal BS-meter.
Here’s an example.
“Expert” is an overloaded term. Overestimating one’s own capacity at something is so well documented that there’s an entire field of psychology dedicated to this particular cognitive bias. How do you know when someone is in fact an expert in (say) programming language? Apply via negativa. You cannot answer the question if someone is an expert, but you can (to reasonable extent) answer if someone isn’t.
Here’s my favorite question - “Tell me what you hate/don’t like about the programming language?”. These are things I look out for:
- A real expert isn’t stumped by the question. Neither is he/she surprised. This is most likely something he/she has given serious thought into.
- Experts are generally opinionated. The correct stuff we are looking for is not just being opinionated for the sake of it, but being respectably opinionated. What does that mean? It means you can back your opinion with reasons and in some cases cold data. You understand the underlying assumptions that guide your opinion (if any) and are willing to change your opinion if presented with the correct logic/data.
- Every language has it’s weaknesses. That does not necessarily make the language bad.
Some concrete examples.
C++
- Exception handling. Google style guide explicitly disallows exceptions.
- Reference syntax. I personally don’t like the fact that you can’t figure out by looking at the caller code if the variable is passed by reference or not. Explicit is better than implicit
Python.
- Packaging. This will need another long post.
- Slowness. Again needs another longer post.