Which is harder: figuring out how to solve a problem, or convincing others about how to solve a problem well?

In software engineering, we often think of the biggest challenges as finding the right technical solution. But in reality, the challenge is often the other way around: convincing your teammates, your manager, or your customer that your proposed solution is one of the most feasible approaches given the current context

Coming up with a viable idea is often not that complicated. With experience and knowledge, engineers can think of many directions, each of which is reasonable to some extent. The problem is that not everyone has the same background, the same level of technical understanding, or the same perspective on risks and benefits.

There are problems where solutions yield similar results. The debate then becomes less about who is right and who is wrong, but about how to reach a consensus and not waste time on petty arguments. But there are times when a solution is truly superior in terms of maintainability, scalability, or reliability. Even then, it can be difficult to demonstrate that it is so superior that it is worth the risk of change and the cost of implementation.

Numbers, benchmarks, or examples from past experience can be helpful, but they are not always available. Sometimes you need simulations, tests, or even “putting numbers on the table” to prove it. And even when the data is strong, you still have to deal with non-technical factors: people make decisions not only with their intellect, but also with their emotions, imagination, and perceived safety.

That is why communication skills, storytelling, and trust building become an essential part of the software engineer’s job. You don’t just write code, you also “translate” the technical solution into a language that your teammates and stakeholders understand and trust.

Technical thinking can help you find a way, but persuasion skills are what get the team moving forward. And without a favorable consensus, even the best solution will have a hard time getting developed to the end.