I took a class in my undergrad program titled Human Engineering and Ergonomics. It was an elective in comp sci but I really think it should have been a requirement. Going through how humans communicate and perceive interfaces/communication. Every developer should have to take it.