Disagree early, privately where possible, and with evidence rather than opinion. Make sure you understand their reasoning first, frame your concern around the shared goal, offer a concrete alternative, and accept the decision once it is made. Disagreeing well builds trust; silence or going around them does not.
What people tell me
I am a junior or mid-level developer. My tech lead has decided on an approach for a feature that I think will cause problems later: it seems overcomplicated and I have seen a simpler way work before. I do not want to look arrogant or like I am challenging their authority, and they have many more years of experience. But I also do not want to build something I think is wrong without saying anything. How do I handle this?
A composite of the messages behind this question, with personal details left out.
Key takeaways
- First make sure you understand why they chose it. Ask before you argue.
- Raise it early, before work starts, and privately if it might embarrass anyone.
- Bring evidence and a concrete alternative, framed around the shared goal.
- Once a decision is made, commit to it fully, and note the risk so it can be revisited.
- Good leads want to be challenged well. Disagreement handled respectfully earns trust.
Disagreement is part of the job
Engineering teams make better decisions when people speak up. Most good tech leads know this and genuinely want to hear concerns, especially before something is built. What they do not want is resistance that shows up late, arrives as criticism in front of others, or turns into quietly building something different.
So the question is not whether to disagree. It is how.
Step one: understand their reasoning
Before you argue, ask. Senior engineers often know about constraints you do not: an upcoming feature that needs the flexibility, a past incident, a team agreement, a performance requirement. A curious question costs nothing:
"I want to make sure I understand the approach. What made us go with a separate service here rather than keeping it in the existing module?"
Sometimes the answer resolves your concern completely. That is a win, not a loss.
Step two: raise it early and in the right place
Timing matters more than wording. A concern raised during planning is useful. The same concern raised after two weeks of work is expensive for everyone.
If the discussion is happening in a meeting, it is fine to ask a question there. If you think the decision is actually wrong, a short private message or quick call is usually better. It lets them consider it without feeling challenged in public.
Step three: bring evidence and an alternative
"I do not like this" is an opinion. Compare it with:
"I am worried about how many moving parts this adds for a feature with low traffic. On my last project, a similar setup took us a lot of time to debug. Would a simpler version inside the current service work for now, with a clear point where we would split it out if load grows?"
That message states the concern, gives evidence, offers an alternative and ties it to a shared goal. It is very hard to take personally.
Useful kinds of evidence:
| Type | Example |
|---|---|
| Data | Current traffic, error rates, query times |
| Experience | A similar approach you have seen succeed or fail |
| Prototype | A small spike showing the simpler version works |
| Cost | Time to build, maintain, onboard others |
| Risk | What happens if the assumption behind the design is wrong |
Step four: disagree and commit
After you have made your case clearly, the lead may still choose their approach. Then your job is to build it properly, not half-heartedly, and not to say "I told you so" later. This is often called disagree and commit, and it is one of the clearest signs of maturity on a team.
It is fine to leave a record, for example a short note in the ticket or design document: "Considered a simpler approach; chose this one because of X. Revisit if Y." That protects the team, not your ego.
When it is more serious
A few situations justify escalating beyond the lead:
- Security or privacy risks that are being ignored.
- Something illegal or unethical.
- Repeated decisions that clearly harm users or the team, after you have raised them directly.
Even then, raise it with the lead first, then with your manager, calmly and with specifics. Going around someone before talking to them directly almost always backfires.
What not to do
- Arguing in a group channel in a way that forces people to take sides.
- Quietly building your own version instead.
- Bringing it up weeks later when changing course is costly.
- Making it about their skill rather than the decision.
- Giving in silently and then complaining to teammates.
The long game
Every time you disagree well, the lead learns that your concerns are thoughtful and worth hearing. Over time they start asking for your view before they decide. That is how influence grows, long before any title changes.
A worked example
A composite I hear often: a lead proposes adding a caching layer with a separate store for a page that currently loads in under half a second. A junior engineer thinks it is unnecessary. Here is how the conversation went well:
- The junior asked privately why the cache was needed. The lead said a marketing campaign was expected to multiply traffic in two months.
- The junior had not known that. The concern changed from "this is unnecessary" to "is this the simplest way to handle the spike".
- They brought a quick measurement: the page's slowest query, and how a database index alone improved it.
- The lead agreed to add the index first, load test, and only add the cache if the numbers required it.
Nobody lost face. The team got a simpler system, and the lead learned that this junior thinks carefully. That is the outcome to aim for.
A self-check before you raise it
Ask yourself honestly:
- Do I understand their reasoning well enough to explain it back to them?
- Is my concern about users, reliability, cost or time, or is it mostly taste?
- Do I have evidence, or only a feeling?
- Would I still raise this if it were my own idea being questioned?
If most answers point to taste without evidence, it may be worth letting this one go and saving your credibility for the disagreements that matter. For how to put your reasoning across clearly when you do raise it, see how to explain technical ideas to other engineers.
If you are still stuck
Read Twelve moves that take you from mid level to senior and The habits that make an engineer worth routing work through. If you want someone to look at your specific situation, join Sefism and, as a member, book a 1:1 session.
Was this answer helpful?
Read next
- Twelve Moves That Take You From Mid Level to SeniorGetting to mid level is mostly time and repetition, and then the path stops being clear. The thing that got you here, doing assigned work well, is not what the next level rewards, and nobody says so directly, so capable engineers respond by doing more of what already worked. Twelve heuristics for the part that is not obvious.
- The Habits That Make an Engineer Worth Routing Work ThroughEvery team has one or two engineers other people route work through, and what they have in common is not raw technical strength. It is that when something is given to them it comes back, and when it will not, you hear about it early. Fifteen habits that build that reputation, none of which require a title or permission.
Your situation is not quite this one?
Members get written answers to their own questions, a roadmap built for them and feedback on their projects. Early access is open to X and Instagram followers and university students. Prefer to talk? A free call works too.