When I started my career, I thought my value was tied to how clean my code was or how fast I could fix a bug.
A few years in, I’ve realized that the most exhausting days aren't spent debugging complex algorithms. They are spent explaining to product managers why a "simple feature" requires a database migration, or negotiating deadlines with stakeholders who don't understand technical debt.
How do you manage non-technical stakeholders? What's your framework for pushing back on unrealistic deadlines without sounding uncooperative?
Portfolio: ahmershah.dev
GitHub: ahmershahdev
Still early in my journey, but one shift that's helped me stop explaining the code is starting to explain the cost. I think stakeholders aren't ignoring the technical side out of bad faith. They just need the translation. Once I started framing delays and pushback in terms of user trust, maintenance debt, and revenue risk, the conversation became less adversarial. The hard part is that this skill isn't taught anywhere. You just have to burn your hands on a few rushed deadlines before it clicks.
One thing that has helped me is framing pushback as tradeoffs instead of resistance is I normally try to clearly explain the why in terms of business like “We can absolutely do this fast, but here’s what we’d compromise in scalability, testing, or future maintenance.”
That usually changes the conversation from “why is engineering blocking this?” to “which option makes the most sense for the business?”
I have recently started documenting my journey from scratch and sharing similar experiences here : https://hashnode.com/@keyashah - keyashah.hashnode.dev/i-m-21-still-studying-alrea…
Totally agree. Code is usually the easy part compared to unclear priorities, changing requirements, and people assuming “small change” means small effort. A lot of engineering pain comes from communication gaps, not technical gaps.
Instead of explaining why a database migration is hard, I frame it in terms of business impact: "We can rush this in a day, but it increases the risk of system downtime and slows down the next three features."
When deadlines are unrealistic, I switch to a variable scope menu: "We can hit that date, but we have to drop features X and Y to make it happen. Which one matters less for launch?" Turning a flat "no" into a collaborative trade-off conversation changes everything.
It really comes down to visibility. Non-technical stakeholders often think features are just toggles you turn on and off because they can't see the underlying architecture. I’ve started using simple visual analogies or high-level flowcharts during planning sessions. Once they see how many connected systems a "simple change" actually touches, the unrealistic deadlines usually dissolve on their own.
A great manager once told me: "Product managers don't care about technical debt; they care about feature velocity." If you want to justify fixing technical debt or doing a complex migration, you have to tie it back to how it impacts their roadmap. "Doing this now means future features will take two days instead of two weeks." Speak their language, and the alignment happens naturally.
The most exhausting days are definitely the communication heavy ones. I’ve found that building trust early makes a massive difference. If you only ever talk to stakeholders when things are broken or when you're saying "no," they start to see engineering as a bottleneck. Sharing small, proactive updates and involving them in the technical wins helps build a partnership, so they trust your judgment when you eventually do have to push back.
My go-to framework for pushing back is the "Yes, and..." approach combined with trade-offs. Instead of saying a deadline is impossible, I say, "We can absolutely hit that date, but to do so safely, we will need to cut scope on these two items, or accept that we will need a dedicated two-week sprint afterward to clean up the technical debt." Giving them ownership of the trade-off removes the friction and makes it a collaborative decision.
This is the ultimate transition from a junior to a senior engineer. The mindset shift happens when you stop communicating in technical limitations and start communicating in business risk. Instead of explaining the mechanics of a database migration, I frame it around data integrity and system downtime. When stakeholders understand that rushing a feature might cause a outage that affects users, the timeline conversation changes completely.
Offloadly
Helping small business owners reclaim 10+ hours/week by combining smart VAs with AI automation. Tips on ops, delegation, and scaling without
This resonates hard. The skill gap that catches most engineers off guard is translation — taking a technical constraint and explaining it in business terms the other side actually cares about.
"This needs a database migration" means nothing to a PM. "If we rush this, we risk breaking checkout for existing users" gets their attention immediately.
I've started framing every pushback around user impact or revenue risk instead of technical complexity. It changed the entire dynamic. You stop sounding like you're making excuses and start sounding like you're protecting the product.