How to Fire a Developer
When to fire, how to fire professionally, handling code transitions, and protecting your business during the process.
Nobody Wants to Fire Someone (But Sometimes You Must)
Firing a developer is:
- Uncomfortable (for both sides)
- Expensive (lost time, knowledge, money)
- Necessary (if the fit isn't working)
Keeping a bad developer is more expensive than firing them. Every week you wait costs you time and money.
Warning Signs It's Time to Fire
Performance Red Flags
- π© Consistently misses deadlines by 2-3x
- Not once - everyone has a bad week
- Pattern over 3-4 weeks
- π© Code quality is poor despite feedback
- Same mistakes repeatedly
- Ignores code review comments
- Introduces more bugs than features
- π© Lack of progress
- "Still working on it" for weeks
- Can't show tangible results
- π© Doesn't follow instructions
- Builds something different than requested
- Ignores priorities
Communication Red Flags
- π© Goes silent for days
- Doesn't respond to messages
- Misses scheduled calls
- π© No proactive updates
- You always have to ask "What's the status?"
- Surprises you with bad news at deadlines
- π© Defensive or combative
- Can't take feedback
- Blames tools, requirements, "scope creep"
Trust Red Flags
- π© Lies about progress
- "It's done" but it's not
- "I'm testing it" for days with no results
- π© Padding hours (if hourly)
- Claims 8 hours on a 2-hour task
- Can't explain what took so long
- π© You dread every interaction
- If you're avoiding checking in, that's a sign
The "One More Chance" Framework
Before you fire, give ONE clear warning:
Step 1: Document the Issues
- Write down specific examples (dates, tasks, outcomes)
- Be objective: "Task X was due May 1, delivered May 8, still had 3 bugs"
- Not subjective: "You're always late"
Step 2: Have the Conversation
Be direct and specific:
"I need to address some concerns. Over the past 3 weeks, we've had these issues: [list specifics]. Here's what needs to change: [clear expectations]. If we don't see improvement in the next 2 weeks, we'll need to part ways. Do you have questions or concerns?"
Step 3: Set a Clear Deadline
- Timeline: 1-2 weeks (not open-ended)
- Metrics: Specific improvements needed
- Check-in: Schedule follow-up conversation
Step 4: Evaluate
After 1-2 weeks:
- Did they improve? β Continue
- No improvement? β Time to fire
- Slight improvement but still not enough? β One more week MAX
Exception: Skip the warning if there's dishonesty, breach of contract, or they disappear.
How to Have the Firing Conversation
Prepare First
- Review contract: Notice period, payment terms
- Decide final payment: What do you owe them?
- Plan transition: Do you need code handoff?
- Backup code: Export everything NOW (before the call)
The Script
Keep it short and professional:
"After our last conversation, I've been evaluating the progress. Unfortunately, I don't think this is working out. I've decided to end our working relationship. Your last day will be [date]. I'll send payment for [hours/work completed] by [date]. Can you please [hand off code/documentation] by end of day?"
What NOT to Say
- β "This is harder for me than for you" (it's not)
- β Long explanations or justifications (don't JADE - Justify, Argue, Defend, Explain)
- β "Let's stay friends" (awkward and insincere)
- β "It's not you, it's me" (you're not breaking up, you're firing them)
If They Push Back
- "Can I have another chance?"
- "I gave you that chance [reference previous conversation]. My decision is final."
- "This is unfair!"
- "I understand you're upset. Here's what we agreed on [reference contract/expectations]."
- "I'll sue!"
- "That's your right. Our agreement is [reference contract]. I'll send final payment as stated."
Stay calm. Don't get emotional. Don't argue. State your decision and move on.
Protecting Your Code and IP
BEFORE the Firing Call
Critical: Do this FIRST
- Export all code from repositories
- Download full repo backup
- Export any hosted files/databases
- Change all passwords/access
- Repository access
- Hosting accounts
- Database passwords
- API keys
- Domain registrar
- Verify code ownership
- Code commits are in your repo (you own it)
- Not on their personal account
Horror story: Developer deleted the entire codebase after being fired because founder didn't revoke access first.
After the Call
- Immediately remove all access (if you didn't already)
- Change any credentials they knew
- Verify they can't access anything
Transition Planning
If You Need Code Handoff
Option 1: Paid handoff session (if parting amicably)
- Pay for 2-4 hours of their time
- Have them walk through code
- Document key decisions/quirks
Option 2: Skip the handoff (if relationship is bad)
- Just get the code
- Next developer reverse-engineers it
- Budget 20-30% extra time for new dev
Finding a Replacement
Move quickly but don't panic-hire:
- Use your previous hiring process
- Mention it's a "taking over existing project" role
- Show them the code early (transparency about code quality)
- Budget for ramp-up time
Legal Considerations
Check Your Contract
- Notice period: Do you owe 1-2 weeks notice?
- Severance: Do you owe anything beyond work completed?
- IP ownership: Confirm code ownership clause
- Non-compete: Can they work for competitors? (Usually not enforceable for contractors)
Payment
Pay what you owe, nothing more:
- Hours worked (if hourly)
- Milestones completed (if milestone-based)
- Any contractual severance
- Do NOT pay for incomplete work "to be nice"
U.S. vs International Developers
- U.S. contractors: Usually at-will (can fire anytime unless contract says otherwise)
- International contractors: Check local laws (some countries have stronger contractor protections)
- Generally: Contractors have fewer protections than employees
Not legal advice - consult a lawyer if you're unsure about your specific situation.
After You Fire: What's Next?
Immediate Actions
- Secure all access (if not already done)
- Send final payment promptly (within 7 days)
- Start hiring replacement
- Assess damage: What needs to be rebuilt/fixed?
Learn from It
- What were the early warning signs? (Watch for them next time)
- Did you wait too long to act? (Fire faster next time)
- Was your hiring process flawed? (Add trial tasks? Better vetting?)
- Were expectations clear? (Improve onboarding?)
When NOT to Fire
Give grace for:
- One-time personal emergency (death in family, medical issue)
- Misunderstanding that's quickly corrected
- Honest mistake if they take ownership and fix it
- Learning curve on genuinely complex problem
Pattern vs incident:
- One late delivery β Have a conversation
- Consistently late β Fire
The Emotional Side
You will feel:
- Guilt ("Did I give them enough chances?")
- Doubt ("What if I'm wrong?")
- Relief (if it was particularly bad)
- Anxiety ("Now I'm back to square one")
Remember:
- Business relationships are transactional
- Keeping a bad developer hurts your business
- Most firings are mutual - they're probably unhappy too
- You'll find a better fit
"Hire slow, fire fast" - Once you know it's not working, act quickly.
Firing Checklist
Before the Call
- β Document all issues with specific examples
- β Review contract (notice period, payment terms)
- β Backup all code and files
- β Change all passwords and revoke access
- β Calculate final payment owed
- β Prepare transition plan
The Call
- β Keep it brief and professional
- β State decision clearly (don't waver)
- β Specify last day and final payment date
- β Request code handoff (if needed)
- β Don't argue or over-explain
After the Call
- β Verify all access revoked
- β Send final payment promptly
- β Export/backup any remaining files
- β Begin replacement search
- β Assess what needs to be rebuilt
Key Takeaways
- Fire Fast, Not Slow: Once you know it's not working (pattern, not incident), act quickly - every week costs time and money
- Protect Code FIRST: Backup all code and revoke access BEFORE the firing call to prevent sabotage
- Give One Clear Warning: Document issues, set 1-2 week deadline with specific expectations, then evaluate
- Keep Firing Call Brief: State decision, specify last day and payment, don't justify or argue
- Learn from It: Identify early warning signs and improve hiring/onboarding process for next time