Just the other day it was taking me hours to write what should have been a really simple service. I kept stopping to think about it, trying to work out how it should behave. Finally, I realized that I didn't understand one of the input variables to the primary function. I knew the name of its type, but I had never gone and read the definition of the type – I didn't really understand what that variable (a word or symbol) meant.
The most common reason developers stop to think is that they did not fully understand some word or symbol.
As soon as I looked up the type's code and docs, everything became clear and I wrote that service like a demon (pun partially intended).
This can happen in almost infinite ways. Many people dive into a programming language without learning what (
, )
, [
, ]
, {
, }
, +
, *
, and %
really mean in that language. Some developers don't understand how the computer really works.
When you truly understand, you don't have to stop to think. That was also a major motivation...