In my opinion, John Carmack is the greatest software engineer of our time. Unfortunately, he doesn’t talk much about what he does. His public appearances are limited to very occasional talks and his Twitter. @ID_AA_Carmack
This talk provides an insight in the way he thinks.
An interesting point he makes that resonated with me is that he “gets stuck” on ideas if he can’t test them.
He has lots of ideas. Some of them appear smart, other stupid. The only way for him to move on is to find a way to test them. The first step for him is to try to disprove an idea by theoretically scrutinising it. If he manages to disprove it - that’s great, he can move on. If not, he tries to execute the idea. Which means he tries a lot of stuff. Then he keeps what works and reject that doesn’t.