Some are like this, and others tend to have more of a "mess around and try things until it works" style. In fact I've noticed a lot more programmers in the latter category than the former.
Edsger Dijkstra calls it Mozart vs Beethoven style of programming in an interview.