There is another side to this. At times you really need people to work on a project without questioning too much, just doing their job. However, most of the times you will need programmers that know what they are doing. That think about the bigger pictures themselves and are no mindless robots. An atmosphere in which things are naturally discussed and questioned is essential to create great products. If someone is at the same time a great critic and a prolific programmer, I think there's nothing better. In practice however, those traits don't always come in the same package. :-)
PS: I think the best you can do is to encourage people to criticize yourself. Make it natural for them to point at possible faults in your code, your projects, or management style. The more they can ventilate, the more you can point out. If it's one-way, it is an attack, not a discussion.
PS: I think the best you can do is to encourage people to criticize yourself. Make it natural for them to point at possible faults in your code, your projects, or management style. The more they can ventilate, the more you can point out. If it's one-way, it is an attack, not a discussion.