Critical Thinking Skills for Developers