Good read!
The computer science department of my college made considerable efforts to teach us how to analyze business problems, which was a good compliement to technical courses such as structuring logic and learning the programming languages. They did a decent job to teach user interface design, business analysis, and mandated general business courses. We were also taught about cultural and social interactions.
And 20 years later, a lot of the professional workplace still does not fully understand the importance of User Experience research. I found that many managers can't differentiate between UI and UX outside of catch-phrases, and don't mind dictating what the users need instead of backing the design by research and feedback.
As for the BA side, I find that most companies have those, but in many cases are very disconnected from the engineering team. Ideally, a programmer can have access (and the training) to understand the problem from a user's perspective, but it is not the norm, unfortunately. I love being able to see how our team's work is used; it brings much more meaning into what I do.
Last note: one thing I found in at least one or two companies, was that the software was being used by customers in ways the product wasn't intended to be used - but it worked for them. And it bacame a thing (to support). At that point you might be questioning: "are we building the right product?"