Critical thinking and software design

I have consistently seen best software designers apply critical thinking ideas to their daily work, in particular, to their own design decisions.

For example, I saw this: a seasoned software designer talked about why a design could be adequate for a particular area in current system under design. Then, a junior designer asked some —apparently naïve— questions that bring interesting issues on the presented design, the seasoned designer supported this attitude and adopted the implied suggestions for its own worth.

The following papers introduce critical thinking: