The past year brought layoffs, budget cuts, and strategic pivots to tech. Leading engineering teams through this uncertainty requires different skills than leading through growth. The playbook that worked when hiring was unlimited doesn’t apply when every decision is scrutinized.
Here’s how to lead engineering teams through uncertain times.
The Changed Landscape
Growth Era vs. Now
leadership_shift:
growth_era:
resources: Abundant
hiring: Always yes
projects: Start many, see what works
failure: Acceptable cost of learning
timeline: Long-term bets welcome
uncertain_times:
resources: Constrained
hiring: Justify every role
projects: Focus on essentials
failure: Scrutinized closely
timeline: Show results quickly
What Teams Need
team_needs:
clarity:
- What are we actually working on?
- What's the priority order?
- What are we NOT doing?
stability:
- Will there be more layoffs?
- Is my job safe?
- What's the company direction?
agency:
- How can I contribute?
- Do my opinions matter?
- Can I grow here?
purpose:
- Why does this work matter?
- What impact are we having?
- Where are we going?
Communication in Uncertainty
Honest Communication
communication_principles:
acknowledge_uncertainty:
bad: "Everything is fine, trust the plan"
good: "Here's what we know, what we don't know, and when we'll know more"
share_context:
bad: "Just focus on your work"
good: "Here's why leadership made this decision and what it means for us"
admit_limits:
bad: "I have all the answers"
good: "I don't know, but here's how I'm trying to find out"
Regular Cadence
communication_cadence:
daily:
- Available for questions
- Quick updates on urgent issues
weekly:
- Team meeting with updates
- One-on-ones with individuals
- Written summary of priorities
monthly:
- Broader context sharing
- Progress against goals
- Adjustments to plans
as_needed:
- Major announcements immediately
- Don't let rumors fill the vacuum
Prioritization Under Constraints
Ruthless Focus
prioritization_framework:
must_do:
criteria:
- Revenue generating
- Customer retention critical
- Regulatory/compliance
- Security incidents
treatment: Protected, fully resourced
should_do:
criteria:
- Improves efficiency
- Reduces tech debt risk
- Supports must-do work
treatment: Do if capacity allows
could_do:
criteria:
- Nice to have
- Future investment
- Experimental
treatment: Pause or stop
stop_doing:
criteria:
- No clear ROI
- Low usage
- Duplicate effort
treatment: Explicit stop, communicate
Making Cuts
cutting_approach:
projects:
- List all active work
- Map to business value
- Identify dependencies
- Cut bottom 20-30%
- Communicate clearly why
scope:
- Review feature lists
- Challenge "must have" assumptions
- Find MVP for each feature
- Defer nice-to-haves
process:
- Question every meeting
- Simplify approval workflows
- Reduce documentation overhead
- Focus on outcomes over process
Protecting Your Team
Shielding from Chaos
shielding_practices:
filter_noise:
- Don't forward every panicked email
- Synthesize information before sharing
- Provide context, not just data
absorb_pressure:
- Take heat for team decisions
- Don't pass blame downward
- Manage up on unrealistic demands
maintain_normalcy:
- Preserve useful rituals
- Celebrate wins (even small ones)
- Protect focus time
Advocating for Resources
advocacy_approach:
make_the_case:
- Quantify impact of work
- Connect to business outcomes
- Show cost of not doing
- Propose trade-offs
negotiate_timeline:
- Push back on unrealistic deadlines
- Provide options with trade-offs
- Document constraints clearly
protect_people:
- Advocate for fair workloads
- Fight for career development
- Push for recognition
Building Resilience
Team Resilience
resilience_building:
psychological_safety:
- Mistakes are learning opportunities
- Questions are welcome
- Disagreement is healthy
skill_distribution:
- Cross-train team members
- Rotate responsibilities
- Document critical knowledge
sustainable_pace:
- Don't sprint indefinitely
- Monitor workload
- Enforce time off
Personal Resilience
leader_resilience:
self_care:
- You can't pour from empty cup
- Model healthy boundaries
- Take your own time off
support_network:
- Peer leaders for venting
- Mentor for guidance
- Team for energy
perspective:
- This is a phase, not forever
- Focus on what you control
- Celebrate small progress
Maintaining Standards
Quality Under Pressure
quality_protection:
non_negotiables:
- Security standards
- Critical testing
- Code review
- On-call coverage
adjustable:
- Documentation depth
- Feature completeness
- Refactoring scope
- Meeting frequency
trade_off_conversations:
- "We can deliver X faster if we accept Y"
- Make trade-offs explicit
- Get buy-in on reduced scope
Technical Debt
tech_debt_approach:
triage:
- What's actually causing pain?
- What's theoretical concern?
- What blocks critical work?
strategic_investment:
- Fix debt that slows high-priority work
- Defer debt in stable areas
- Contain debt to prevent spread
visibility:
- Track debt explicitly
- Show cost of not addressing
- Advocate for maintenance time
Navigating Org Changes
Restructuring
restructuring_guidance:
when_it_happens:
- Acknowledge the difficulty
- Be honest about what you know
- Support those leaving and staying
rebuilding:
- Reassess priorities with new reality
- Redistribute responsibilities thoughtfully
- Rebuild team identity
avoiding_pitfalls:
- Don't pretend nothing happened
- Don't overwork remaining team
- Don't make promises you can't keep
Key Takeaways
- Uncertainty requires different leadership than growth
- Teams need clarity, stability, agency, and purpose
- Communicate honestly—acknowledge what you don’t know
- Prioritize ruthlessly—focus on what truly matters
- Shield your team from chaos while keeping them informed
- Advocate for resources and realistic timelines
- Build resilience through safety, skill distribution, sustainable pace
- Protect quality standards while being flexible on scope
- Take care of yourself so you can take care of others
- This is hard—it’s supposed to be
Leading through uncertainty is when leadership matters most.