Critical thinking is a core characteristic which most of the good developer has in common. And best part is that it is a skill which can be learned and mastered through continuous practice. In this article is Derk Chen (Product Manager at Udacity) writes about how it can be learned and mastered. Anyone with a strong determination and regular practice can think like a Developer.
Must watch this short You Tube video on Critical Thinking: