How to Learn to Think like a Skilled Engineer or Scientist and How to Teach It