Personally, I think if every manager, marketing person, art designer, UI designer, web designer etc. spent just a day or two learning to program, it would give them an order of magnitude improved understanding of what happens on the coding side and would help them make better decisions. Likewise, programmers should try to learn a little about the domains of other teammates to understand each other better.