All Software Problems are People Problems

One of the more fascinating insights from Domain-Driven Design, which is obvious in hindsight, is that human relationships can and will affect even the most purely technical of problems. For example, how two different systems within the same company interface will be informed just as much, if not more so, by how the two managers of the two teams might get along.

If they have an antagonistic relationship, that might show up in various ways. Less integration than is technically possible or advantageous. Or the team with less political clout gets stuck with all of the less exciting tasks, which affects the fundamental design of the entire system. 

Or it could be the opposite. Teams that get along great, have important touch points for communication, and the contours of their respective systems and responsibilities mesh perfectly.

Another example might be when a certain framework or conceptual model is dictated from on high, stifling creativity the further it cascades down.

It was a good reminder that software is made by people, to solve problems that other people have determined need to be solved. Some social rationality and awareness is needed. Navigating these issues, with a realistic view of human nature, is just part of the job.