The Manager’s Crucible: Leading Without Crunch
- Samir Haddad 
- Sep 8
- 9 min read
So here I am, writing about leading software teams from the perspective of someone who once wore code shorts (or at least, thought they were cool). Yeah, that phase passes. Now it's all meetings and perpetually tired eyes. But hey, authenticity is key, even if it means admitting you used to care more about `git push` than `team synergy`.
My journey from coder to… well, not just another coder demanding immediate results, was anything but smooth. It started like most tech transitions: a promotion email arrived, excitement briefly flared, then reality set in – managing people who write code as fast or slow as you dictate, while somehow expecting it not to burn them out.
I remember my first team lead role vividly. I’d spent years immersed in the logic of clean abstractions and efficient algorithms. Now, I was supposed to… manage? My mind raced through technical challenges: database optimization, asynchronous processing patterns, maybe even a distributed systems architecture for this new virtual 'office'. But wait – there were people! Humans with actual lives outside coding deadlines!
The biggest hurdle wasn't the tech stack or roadmap pressure; it was unlearning the engineer's default mode. As engineers, we often operate in a state of flow, fueled by problem-solving and the occasional caffeine jolt. We're comfortable pushing limits because the reward structure is clear: deliver working software on time.
Transitioning to management means navigating different constraints – budget cycles, hiring pains, stakeholder demands – but crucially, it requires managing human capacity differently. The temptation was immense to just ramp up effort like scaling a server cluster until peak performance… only to risk total system failure (i.e., the team).
I realised sustainable pacing isn't about being soft. It's fundamental leadership respect.
Think about it: you wouldn't ask an old diesel engine to rev at 6000 RPM constantly without expecting catastrophic failure. Similarly, demanding consistent high-intensity effort from your team is setting them up for burnout, which ultimately harms the project and your own credibility as a leader.
It’s about understanding capacity versus capability. Your engineers can handle spikes – debugging crazy edge cases or pulling an all-nighter for that critical deployment. But constantly running at peak capacity? That's like expecting my old laptop to render 4K video without thermal throttling. It doesn't scale well, does it?
Sustainable pacing means building a rhythm where predictability and resilience are the norm, not heroics followed by crashes.
And crucially, this isn’t about being lazy or avoiding pressure. It’s about efficiency – getting more predictable output over time rather than relying on unsustainable bursts.
Boundaries in Practice: More Than Just ‘No’
This brings us to boundaries. As an engineer, drawing lines was easy – within my own head (sometimes). Now, I need to draw them for the entire team and often communicate those limits externally.
The first rule? Set your own boundary clearly. You can't effectively protect others if you're perpetually maxed out yourself. It's like trying to prevent data leaks from a database while actively pouring coffee on your keyboard – impossible without self-awareness.
Then, model that for your team. When I said "no" or "we need more time," it wasn’t just my personal preference; it was articulating the reality of our sustainable pace. This requires courage because it often clashes with immediate demands from product owners, stakeholders, or even internal pressures to "just get it done."
But consider: what happens when you constantly say yes? Capacity erodes. Innovation stalls (because brains are fried). And eventually, people will push back – usually in more disruptive ways than polite discussions.
Effective boundaries aren't walls; they're negotiation points. It's about saying "Yes, we can discuss this further offline," or "I appreciate the urgency, but let’s schedule a dedicated time to address it properly." This protects quality and sustainability without necessarily sacrificing immediate delivery goals – just ensuring they are feasible long-term.
And importantly, boundaries aren't static. They need regular review, especially when teams change composition or priorities shift dramatically. Think of it like refactoring core code periodically; the structure needs maintenance too.
Burnout Math: Recognizing the Signs Before They’re Irreversible
Okay, let's get slightly more analytical but keep it grounded. I call this "burnout math," because while there isn't a precise algorithm, understanding the contributing factors can help predict and prevent it.
Think of team health in terms of input versus output. Inputs are obvious: workload (the number of tasks), energy level (their capacity to do work), context (how much time is wasted switching between unrelated tasks). Outputs include tangible results but also crucially:
- Output Quality: Does code pass review? Are tests green? 
- Predictability: Can sprints deliver consistently? 
- Engagement Levels: Do people talk positively, or are they just present? 
Burnout occurs when the input rate significantly exceeds the sustainable output capacity for a prolonged period. It's like constantly running a server at 100% CPU – eventually, nothing works.
The signs aren't always dramatic public meltdowns (though those do happen sometimes). Often, it’s subtle:
- Escalation of Effort: People consistently coming in later or asking for overtime without complaint. 
- Reduced Proactivity: Fewer people volunteering for tasks; requests needing approval. 
- Quality Creep: Deliverables becoming less polished over time (even if functional). 
- Increased Resignations/Hires: A constant cycle of replacing burned-out engineers. 
- Silent Suffering: The most dangerous one – people are quiet, deadlines slip slightly, but the code still kinda works. 
I find tracking these metrics helps. Not necessarily spreadsheets filled with burnout scores, but qualitative observations:
- Cadence Consistency: Are releases regular and predictable? 
- Context Switching: Observe how often people jump between tasks (less focus = more switches). 
- Code Review Times: Are reviews taking longer or attracting fewer constructive comments? Slower is often a sign of fatigue. 
- Team Chats/Meetings: Monitor the energy levels during meetings; are they engaged and positive, or just nodding off? 
Ignoring these signals is like ignoring server logs warning of high load before the database crashes entirely.
Feedback Culture 101 for Leaders Who Code (Or Think They Did)
Ah yes, feedback. As an engineer, I understood technical feedback – code reviews, performance metrics, debugging sessions. That language was familiar: "This function lacks cohesion," or "The branching factor is O(n²)," or simply "That's not how we usually do it."
Now, translating that into management feedback requires a different vocabulary and approach.
Your direct reports aren't primarily interested in whether their commit message format is perfect or if they optimized the wrong SQL query. They need to understand:
- How their contribution impacts the team's progress. 
- Clarity on expectations (technical and non-technical). 
- Recognition for effort, especially when tackling tough problems. 
This requires moving beyond technical jargon. While context matters, the feedback should be tailored:
- Be Specific: Instead of "Your code is messy," say "Specifically, I'm concerned about commit message clarity in the `user-auth` module pull request last week. Could you try to follow the convention we discussed?" 
- Focus on Impact: Frame technical feedback around business outcomes or team goals. 
- Prioritize Context: Discuss how their work fits into the bigger picture. 
Think of it like pair programming but for all interactions:
- Schedule dedicated time for feedback, not just ad-hoc comments. 
- Use "check-ins" – brief daily/weekly conversations about progress and roadblocks (not necessarily code). 
- Frame difficult conversations as collaborative problem-solving: "We're facing this challenge in [Project X] delivery. What are your thoughts on potential solutions?" Instead of blaming. 
And crucially, solicit feedback from the team regularly. This is where managers often fail – assuming their leadership style is perfect because they used to be respected engineers themselves. But leading requires different skills!
This involves vulnerability: admitting you don't have all the answers about managing people. Using techniques like:
- Anonymous Surveys: Understand sentiment without filter. 
- Regular One-on-One Check-ins (Structured): Don't just talk – ask structured questions ("What's working well for you?", "Where are you hitting roadblocks?"). 
- Feedback Cadence Meetings: Small team sessions focused solely on leadership effectiveness. 
Your goal is to understand the human system, not just debug a line of code. And that understanding requires listening actively and responding authentically – something I had to unlearn slightly when my default engineer response was often "fix it" rather than "understand why."
Career Ladders That Don’t Require You to Be a Human Stapler
This is probably the hardest transition for engineers who climb the ladder quickly. The old model: more hours = higher pay, promotions based on output velocity.
The new reality (at least what I advocate): building sustainable careers requires different steps and signals.
What worked well in engineering doesn't automatically translate to promotion criteria:
- Velocity Isn't Everything: Delivering well is at least as important. A slower but highly accurate developer might be more valuable long-term. 
- Focus on Problem Solving: Can they articulate a complex technical challenge clearly? Do they mentor others effectively in tackling difficult problems? 
- Capacity Management: Have they demonstrated the ability to build and sustain high-performing teams over time, rather than just managing immediate tasks? 
Think of career growth like building an architectural structure:
- Foundation Layer: Deep expertise (like a solid foundation). This is valued but isn't enough for climbing. 
- Structural Elements: Problem-solving skills, leadership ability (managing projects and people), mentorship capacity. 
- Sustainability Features: Ability to maintain pace without burning out self or team – this becomes critical at higher levels. 
Promotions should signal an increase in impact and responsibility, not just a jump in effort level. This requires defining clear pathways:
- Explicit Competencies: What skills are needed for each promotion (e.g., technical lead -> architect, engineer -> senior engineer/tech lead, tech lead -> product manager or director?). 
- Celebrate Different Contributions: Recognize mentorship and process improvement alongside code output. 
- Regular Check-ins (For Growth): Use one-on-ones to discuss career aspirations and tailor development plans accordingly. 
It’s about shifting the metric from 'how fast can you run' to 'what kind of impact do you want to have, and how will we help you build that?' This is a conversation I still find challenging but crucial for keeping talent healthy and motivated over the long haul.
Meeting Hygiene: Crafting Cadence, Not Chaos
Meetings. The bane of every modern professional's existence. As an engineer, my default was zero meetings unless necessary – maybe a sync during crunch time or a stand-up to coordinate blockers.
Now I know better. Or at least I think I do. Meetings are essential for coordination, communication, and alignment in software teams. But they can also be deeply inefficient if not managed well.
The key is establishing predictable cadence:
- Stand-ups: Daily 15-minute syncs – must be strictly time-boxed to prevent tangent conversations. 
- Planning Meetings (Sprint Planning): Crucial, but need dedicated preparation and facilitation. Can't just wing it based on velocity assumptions alone. 
But here's the thing: I still think in terms of code commits when planning these things.
Velocity isn't a magic number; it's an indicator of sustainable progress. If everything is green-lit for every task, something's wrong – either tasks aren't properly prioritized or capacity estimates are off.
This requires:
- Clear Agendas: No vague "let's talk team" unless you're prepared to structure it well. 
- Preparation: Send materials beforehand; attendees should have time to think, not react immediately. 
- Timeboxing: Allocate specific times for each agenda item and stick to them ruthlessly. 
- Decision Orientation: Meetings must lead to clear outcomes or decisions (unless their purpose is simply brainstorming – but even then, set a boundary on how long that can happen before it becomes inefficient). 
And don't forget the people side:
- Who Needs to Attend? Only those who contribute directly. If there's doubt, they shouldn't be in the room. 
- What is Their Role? Facilitator (keeping time), participant (contributing ideas/discussion), or note-taker (capturing action items). Don't let roles blur into passive attendees. 
Finally, establish a clear 'meeting rhythm' – don't schedule 5 meetings one week and none the next. Predictability reduces cognitive load about when to expect collaboration.
From Engineer To Leader: Leading Through Change Without the Crunch
Change is constant in tech. Frameworks evolve, requirements shift, market demands change overnight. Leading through this requires navigating uncertainty without sacrificing sanity or team health.
My engineer brain initially saw change as a problem to be solved – I wanted stable requirements, predictable timelines. As a leader, it’s different: you need to cultivate adaptability and resilience in your team.
This is where sustainable pacing becomes critical again. If the team is already exhausted from previous sprints, introducing new complexity or scope will just push them over the edge faster than expected.
My framework requires:
- Buffer Time: Build slack into estimates for inevitable disruptions (illuminated bugs, context switches). This protects against the tyranny of immediate pressure. 
- Incremental Adoption: Don't try to implement massive changes overnight unless absolutely necessary and feasible. Break it down smaller than a microservice architecture change. 
- Transparent Communication: Explain why things are changing (the business imperative) clearly, even if technical details aren't the focus yet. 
The biggest trap here is the tendency for engineers accustomed to deep problem-solving to jump straight into technical solutions without considering human impact or capacity first.
I learned this the hard way during a particularly stressful refactoring project. The initial plan was heroic – rewrite everything in three weeks using the new framework with zero external dependencies. Result? Burnout city, population exploding. Lesson: even good engineers need time to refactor their own approaches when entering leadership roles.
Leading through change means making calculated decisions based on impact assessment and capacity reality, not just technical feasibility.
Key Takeaways
- Sustainable Pacing ≠ Softness: It’s about building predictable, efficient systems by respecting human capacity. 
- Boundaries = Clarity & Safety: Leaders must model them first; they are negotiation points protecting quality, innovation, and well-being. 
- Burnout Math: Watch the Signs: Escalation, reduced proactivity, quality creep – these often precede major breakdowns. Regularly check your team’s health indicators. 
- Feedback Culture Requires Translation: Move from technical jargon to impact-focused communication; solicit feedback proactively yourself. 
- Career Ladders Need Reimagining: Focus on sustainable impact and capacity building skills, not just output velocity. Define clear competencies for each level. 
- Meeting Hygiene Saves Sanity: Schedule them predictably, timebox ruthlessly, ensure preparation and clear outcomes – meetings are tools, not obstacles. 
- Leading Change Requires Prudence: Assess team capacity before committing to technical solutions; build buffers and communicate transparently about the human cost. 







Comments