Engineering is a Social Activity
Many of the most important decisions in software are not about finding the "correct" answer, but about getting a group of smart people to agree on a good path forward. Your ability to persuade and influence is what allows your technical expertise to have a real impact.
How to Advocate for an Idea
When you want to propose a new technology, a refactor, or a different approach, you need to build a case.
- Frame it as a Solution: Don't start with "I want to use Rust." Start with the problem: "Our current service has high memory usage and is expensive to run. I've been exploring options to improve its efficiency."
- Anchor Your Argument in Data: Whenever possible, use data to support your position. This could be performance benchmarks, cost savings projections, or user feedback.
- Build Allies: Before a big meeting, talk to a few key colleagues one-on-one. Get their feedback and incorporate it. It's much easier to build consensus gradually than to persuade a whole room at once.
Navigating Disagreements Constructively
Technical debates are healthy and necessary. The key is to keep them focused on the problem, not the people.
- Listen to Understand, Not Just to Reply: Genuinely try to understand the other person's perspective. Use phrases like, "So, if I'm understanding you correctly, your main concern is..."
- Find Common Ground: Start by identifying what you all agree on. "Okay, so we all agree that performance is the most important goal here."
- "Disagree and Commit": Not every decision will go your way. A key trait of a senior developer is the ability to voice their opinion, argue their case, and then, if the team decides to go another way, fully commit to making the chosen path successful.