Unsolvable Problems
In Marriage
In the first few years of our marriage, my wife and I had some relational issues which we sought help for in marital counseling. Our counselor showed us a theory from the Gottman Institute that a certain percentage of problems in marriage are “unsolvable”.
I’ve forgotten the fine details of this theory, but an LLM summarizes it as having to do with personality differences and lifestyle needs.
“Unsolvable” sounds more grim than it really is. The term really refers to the subjective nature of marital issues. One such issue, for example, might be; who should do the dishes? (a light-hearted subject should do for the purposes of this article!) For this problem, there is no universal rule to direct what the couple should do. If each spouse was raised in a household that handled it differently, they’ll come into the marriage with different expectations, and conflict will surely follow.
The couple will need to communicate and compromise; but even if they do, is the problem truly solved? Most likely, one (or both) of the spouse(s) won’t be completely satisfied with the solution, but they’ll have to be willing to deal with their dissatisfaction for the sake of the relationship.
The hardship spouses endure for the sake of the relationship is an essential part of their maturity; they learn to put others’ needs first and perhaps even learn to sacrifice their own desires: “Suffering produces character.”
In Product Teams
Just like in marriage, product teams thrive not because they solve every problem, but because they learn to navigate the ones that can’t be solved. The concept of “unsolvable problems” translates well to the relationships in a software development product team. Doesn’t each member of the team also come with different personalities and needs? Like dish-washing in a marriage, product teams also have “unsolvable problems”. You can imagine that even in the best case (where teams have retrospectives and communicate internally) individual team members will still have to compromise on their ideals for the sake of collaboration.
For example:
- How to define work: Business analysts might find themselves having to divide tasks into ever smaller steps… OR sometimes combine them, according to the apparently arbitrary whims of fickle software engineers.
- How to work together to write code (how pairing should go, or how to conduct PRs): Experienced engineers may have to find a balance of hands-on and hands-off guidance for the less-experienced engineers. The amount of guidance they need (or want) is a constantly moving target.
- How to format and structure the code: Software engineers who like to use lambdas may have to stop using them if the team finds them too difficult to debug. Some choices are just a matter of opinion constructed by an individual’s priorities and their pragmatic trade-offs.
- How to manage and exercise authority: Some product teams feel that management acts unfairly, and some managers feel that their product teams have gone rogue!
Character and Resolve
I sometimes see resigned fatalism in response to these unsolvable problems. They can wear a person down over time! Perhaps it’s okay for us to acknowledge that things should be better, and even to accept that some of these things are unfair and out of our hands… But also to see them as opportunities for us to show our character in the face of adversity; not to eliminate the friction, but to grow through it.