I think it's almost impossible to be a software developer unless you're capable of lateral thinking.
"Lateral thinking is solving problems through an indirect and creative approach, using reasoning that is not immediately obvious and involving ideas that may not be obtainable by using only traditional step-by-step logic."
Software development often involves taking bits you learned while doing something else, and applying them in completely new ways.