Skip to main content
Project Management

When to Say No to a Client Request (And How I Do It)

5 min read

When to say no to client requests as a developer, with real examples from UAE projects

developer communicationclient managementLaravelNext.jsAbu Dhabi tech

A client in Abu Dhabi once asked me to completely rewrite a Laravel backend and rebuild a React Native interface from scratch in just seven days. They were launching an Arabic/English bilingual app for a UAE logistics company and had just realized the old code was incompatible with iOS 17. I told them no before my coffee cooled down.

Technical Debt That Makes "No" the Only Option

Here’s the thing: I’ve seen too many projects collapse under the weight of old code. A month ago, a client in Dubai wanted to add AI chat to a Laravel app built in 2018. The catch? It was still on PHP 7.1, and the Composer dependencies were a minefield. Upgrading would’ve taken two weeks minimum.

When you’re dealing with systems that should’ve been deprecated yesterday:

  • Forcing new features in old code creates more bugs than value
  • The "quick fix" ends up taking longer than a rewrite
  • You’ll spend half your time explaining why it’s broken

I once tried to patch a Vue 2 app with Firebase auth for a Saudi e-commerce client. Halfway through, I realized the Vuex store was a spaghetti mess. Ended up rewriting it in Vue 3 anyway. Lost 3 days but saved 10 downstream.

Balancing Client Wants vs. Market Realities

UAE clients often think "bilingual" just means sticking Arabic text on the same design. Last year, I worked on a limo booking platform where the client initially refused to let me create separate Arabic/English booking flows. Result? Testers in Jeddah kept selecting the wrong pickup locations because right-to-left text broke the form logic. Had to redo it twice.

If your client’s demand ignores cultural or technical context:

  1. Point out specific risks (e.g., "RTL text will break the current dropdown component")
  2. Cite examples from Gulf-focused projects (like the Tawasul Limo platform)
  3. Offer incremental steps instead of outright rejection

This isn’t about being stubborn. It’s about not shipping garbage because the color scheme looked nice in Figma.

How I Explain "No" Without Burning Bridges

I used to beat around the bush. Now I just say: "That’ll create more problems than it solves. Let’s try X instead." But it’s more art than science.

Steps I actually follow:

  • Start with "I understand this matters to you" (makes them listen)
  • Show screenshots/logs of similar issues in past projects (like the React Native form errors in Greeny Corner)
  • Offer 1–2 compromises (usually a phased approach)

Once, a UAE real estate client wanted a live video feature added overnight to Reach Home Properties’ platform. Said no, suggested embedding YouTube Livestream embeds instead. Took 3 hours instead of 30.

When the Timeline Is Just Impossible

Abu Dhabi clients love "urgent" requests. Last summer, one wanted a fully functional admin dashboard in three days, including role-based access. The kicker? They expected it built into their 2019 Laravel monolith that still used Vue 2 mixins.

Here’s my math for impossible timelines:

  1. Estimate honestly (I multiply by 1.5 for UAE time zones, client interruptions, and prayer times)
  2. List what’s realistically achievable in the window
  3. If they push, ask what should get cut (never volunteer to work 90-hour weeks)

Once built a dummy proof-of-concept dashboard in 4 hours using HTML tables, then weeded out features from there. They ended up launching with just three pages, but it worked.

Frequently Asked Questions

How do you politely decline a client request without losing their trust?

State the problem clearly without technical jargon. Instead of "Your legacy code is bad," try "This current feature will break the payment system on Android 13." Offer alternatives and show you’re solving their actual problem, not just refusing a request.

When should a developer say no to changing project scope?

Say no if the change creates technical debt you’ll have to maintain. For instance, I refused to force Firebase Firestore into a PHP 7.2 project after realizing it’d cause 10x more latency issues in Dubai’s data centers than a MySQL solution.

How do you handle clients who insist on bad technical decisions?

Force proof of concept. When a UAE client demanded a Laravel 9 upgrade before verifying their custom PHP 7.4 extensions, we built a test environment first. They backed down after seeing their inventory feature broke for 8 hours.

How do you manage expectations without using vague technical explanations?

Use real-world metaphors. I tell clients trying to patch old code: "Your app’s backend is like a 15-year-old car engine. You can keep fixing it, but it’ll always break down faster than a newer model."


I’ve learned the hard way that saying no isn’t failure — it’s keeping clients from wasting time and money. If you’re struggling with unreasonable demands or just want to brainstorm a better approach, book a free consultation to discuss how we’d tackle your technical challenges.

S

Sarah

Senior Full-Stack Developer & PMP-Certified Project Lead — Abu Dhabi, UAE

7+ years building web applications for UAE & GCC businesses. Specialising in Laravel, Next.js, and Arabic RTL development.

Work with Sarah