Lately I think that this is a social issue. It seems that most normal (non-technical) people are not going to expend so much mental effort in their job that they can't interact with people to a socially acceptable level. For whatever reason, programmers feel comfortable pushing themselves past the point of normal mental effort instead of simply admitting that things are hard and they won't be able to get them done in overly short time-frames.