I disagree with the first statement of your title: a designer SHOULD code, if a designer wants to. But I’m saying that for the point that anyone should be stopped or discourage from learning a new skillset, especially as important as coding.
However, I do agree and can completely see where you are coming from for the second part of your title. Yes, a designer should learn about business, which essentially means to learn about how to better solve people’s problems. And yes, taking a class, getting higher education could help. And more effectively, I would suggest: is to be one of the people. To be part of the people. Designers should try to sell their own product, clothes, technology, chairs, airplanes, and see if their passion translates. If not, there will naturally be direct and constructive feedbacks, whether from facing the rejection or complaints.
Those are my ideas. Thank you for your writing, very thought-provoking!