Questionable Advice: “My boss says we don’t need any engineering managers. Is he right?”

I recently joined a startup to run an engineering org of about 40 engineers. My title is VP Engineering. However, I have been having lots of ongoing conflict with the CEO (a former engineer) around whether or not I am allowed to have or hire any dedicated engineering managers. Right now, the engineers are clustered into small teams of 3-4, each of which has a lead engineer — someone who leads the group, but whose primary responsibility is still writing code and shipping product.

I have headcount to hire more engineers in the coming year, but no managers. My boss says we are a startup and can’t afford such luxuries. It seems obvious to me that we need engineering managers, but to him, it seems just as obvious that managers are unnecessary overhead and that all hands should be on deck writing code at our stage.

I don’t know how to make that argument. It seems so obvious to me that I actually struggle to put it into words or make the case for why we should hire EMs. Help?

— Unnecessary Overhead(?!?)

Oh boy, there’s a lot to unpack here.

It is unsurprising to me that your CEO does not understand why managers exist, given that he does not seem to understand why organizational structures exist. 🙈 Why is he micromanaging how you are structuring your org or what roles you are allowed to fill? He hired you to do a job, and he’s not letting you do it. He can’t even explain why he isn’t letting you do it. This does not bode well.

But I do think it’s an interesting question. So let’s pretend he isn’t holding your ability to do your damn job hostage until you defend yourself to his satisfaction. 😒

I can think of two ways to make the case for engineering managers: one is rather complicated, from first principles, and the other very simple, but perhaps unsatisfying.

I personally have a … vigorous … knee-jerk response to authority; I hate being told what to do. It’s only recently that I’ve found my way to an understanding of hierarchy that feels healthy and practical, and that was by looking at it through the lens of systems theory.

Why does hierarchy exist in organizations?

It makes sense that hierarchy comes with a lot of baggage. Many of us have had bad experience with managers — indeed, entire organizations — where hierarchy was used as a tool of oppression, where people rose up the leadership ranks by hoarding information and playing dominance games, and decisions got made by pulling rank.

Working at a place like that fucking sucks. Who wants to invest their creativity and life force into a place that feels like a Dilbert cartoon, knowing how little it will be valued or reciprocated, and that it will slowly but surely get crushed out of you?

But hierarchy is not intrinsically authoritarian. Hierarchy did not originate as a political structure that humans invented for controlling and dominating one another, it is in fact a property of self-organizing systems, and it emerges for the benefit of the subsystems. In fact, hierarchy is absolutely critical to the adaptability, resiliency, and scalability of complex systems.

Let’s start with few basic facts about systems, for anyone that may be unfamiliar.

Hierarchy is a property of self-organizing systems

A system is “a network of interdependent components that work together to try to accomplish a common aim” (W. Edward Deming). A pile of sand is not a system, but a car is a system; if you take out its gas tank, the car cannot achieve its aim.

A subsystem is a collection of elements with a smaller aim inside a larger system. There can be many levels of subsystems that operate interdependently. The subsystems always work to support the needs of the larger system; if the subsystem instead optimizes for its own best interests, the whole system can fail (this is where the term “suboptimize” comes from 😄).

A system is self-organizing if it has the ability to make itself more complex, by diversifying, adapting, and improving itself. As systems self-organize and their complexity increases, they tend to generate hierarchy — an arrangement of systems and subsystems. In a stable, resilient and efficient system, subsystems can largely take care of themselves, regulate themselves, and serve the needs of the larger system, while the larger system coordinates between subsystems and helps them perform better.

Hierarchy minimizes the costs of coordination and reduces the amount of information that any given part of the system has to keep track of, preventing information overload. Information transfer and relationships within a subsystem are much more dense and have fewer delays than information transfer or relationships between subsystems.

(This should all sound pretty familiar to any software engineer. Modularization, amirite?? 😍)

Applying this definition, we can say that a manager’s job is to coordinate between teams and help their team perform better.

The false binary of sociotechnical systems

You’ve probably heard this canard: “Engineers do the technical work, managers do the people work.” I hate it. ☺️ I think it misconstrues the fundamental nature of sociotechnical systems. The “socio” and “technical” of sociotechnical systems are not neatly separable, they are interwoven and interdependent. There is actually precious little that is purely technical work or purely people work; there is a metric shitload of glue work that draws upon both skill sets.

Consider a very partial list of tasks done by any functional engineering org, besides writing code:

  • Recruiting, networking, interviewing, training interviewers, synthesizing feedback, writing job descriptions and career ladders
  • Project management for each project or commitment, prioritizing backlog, managing stakeholders and resolving conflicts, estimating size and scope, running retrospectives
  • Running team meetings, having 1x1s, giving continuous growth feedback, writing reviews, representing the team’s needs
  • Architecture, code review, refactoring; capturing DORA and productivity metrics, managing alert volume to prevent burnout

A lot of this work can be done by engineers, and often is. Every company distributes the load somewhat differently. This is a good thing! You don’t WANT an org where this work is only done by managers. You want individual contributors to help co-create the org and have a stake in how it gets run. Almost all of this work would be done more effectively by someone with an engineering background.

So you can understand why someone might hesitate to spend valuable headcount on engineering managers. Why wouldn’t you want everyone in engineering to be writing and shipping code as their primary job? Isn’t that by definition the best way to maximize productivity?

Ehhh… 😉

Engineering managers are a useful abstraction

In theory, you could make a list of all the tasks that need to be done to coordinate with other teams and have each item be picked up by a different person. In practice, this is impractical because then everybody would need to know about everything. One of the primary benefits of hierarchy, remember, is to reduce information overload. Intra-team communication should be high-bandwidth and fast, inter-team communication should be more sparse.

As the company scales, you can’t expect everybody to know everyone else; we need abstractions in order to function. A manager is the point of contact and representative for their team, and they serve as routers for important information.

I sometimes imagine managers as the nervous system of the company body, carrying around messages from one limb to another to coordinate actions. Centralizing many or most of these functions into one person lets you take advantage of specialization, as a manager builds relationships and context and improves at their role, and this massively reduces context switching for everyone else.

Manager calendars vs maker calendars

Engineering labor takes concentration and focus. Context switching is expensive, and too many interrupts can be fatal. Management labor consists of context switching every hour or so, and being available for interruptions throughout the day. These are two very different modes of being, headspaces, and calendar schedules, and do not coexist well.

In general, you want people to be able to spend most of their time working on things that contribute to the success of the outcomes they are directly responsible for. Engineers can only do so much glue work before their calendar turns into Swiss cheese and they can no longer deliver on their commitments. Since managers’ calendars are already Swiss cheese, it’s typically less disruptive for them to take on a larger share of glue labor.

It isn’t up to managers to do all the glue work, but it is a manager’s job to make sure that everything that needs to get done, does gets done. It is a manager’s job to try to line up every engineer with work that is interesting and challenging, but not overwhelming, and to ensure that unpleasant labor gets equitably distributed. It’s also a manager’s job to make sure that if we are asking someone to do a job, they are equipped with the resources they need to succeed at that job. Including time to focus.

Management is a tool for accountability

When you’re an engineer, you are responsible for the software you develop, deploy, and maintain. When you’re a manager, you are responsible for your team and the organization as a whole.

Management is one way of holding people accountable for specific outcomes (building teams with the right skills, relationships, and processes to make good decisions and build value for the company), and equipping them with the resources (budget, tools, headcount) to achieve those outcomes. If you aren’t making building the organization someone’s number one job, it won’t be anyone’s number one job, which means it probably won’t get done very well. And whose responsibility will that be, Mr. CEO?

There’s a real upper limit to what you can reasonably expect tech leads, or engineers, or anyone whose actual job is shipping software to do in their “spare time”. If you’re trying to hold your tech leads responsible for building healthy engineering teams, tools, and processes, you are asking them to do two calendarily incompatible jobs with only one calendar. The likeliest scenario is that they will focus on the outcomes they feel comfortable owning (the technical ones), while you pile up organizational debt in the background.

In natural hierarchies, we look up for purpose and down for function. That, in a nutshell, is the more complicated argument for why we need engineering managers.

Choose Boring technology Culture

The simpler argument is this: most engineering orgs have engineering managers. That’s the default. Lots of people much smarter than you or me have spent lots of time thinking and tinkering with org structures over the years, and this is what we’ve got.

As Dan McKinley famously said, we should “choose boring technology“. Boring doesn’t mean bad, it means the capabilities and failure conditions are well understood. You only ever get a few innovation tokens, so you should spend those wisely on core differentiators that could make or break your business. The same goes for culture. Do you really want to spend one of your tokens on org structure? Why??

For better or for worse, the hierarchical org structure is well understood. There are plenty of people on the job market who are proficient at managing or working with managers, and you can hire them. You can get training, coaching, or read a lot of self-help books. There are various management philosophies you can coalesce around or use to rule people out. On the other hand, the manager-free experiments I’m aware of (e.g. holacracy at Medium and GitHub, or “Choose Your Own Work” at Linden Lab) have all been quietly abandoned or outgrown. Not, in my experience, because leaders went mad for power, but due to chaos, lack of focus, and poor execution.

When there is no explicit structure or hierarchy, the result is not freedom and egalitarianism, it’s “informal, unacknowledged, and unaccountable leadership”, as famously detailed in “The Tyranny of Structureless“. In reality, sadly, these teams tend to be chaotic, fragile, and frustrating. I know! I’m pissed too! 😭

This argument doesn’t necessarily prove your CEO is wrong, but I should think his bar for proof is much higher than yours. “I don’t want any of my engineers to stop writing code” is not an argument. But I’m also feeling like I haven’t quite addressed the core question of productivity, so let’s pick that up again once more.

More lines of code != more productivity

To briefly recap: we were talking about an org with ~40 engineers, broken up into 10 small clusters of 3-4 engineers, each with a tech lead. Your CEO is arguing that you can’t afford to lose any velocity, which he thinks is what would happen if anyone stops writing code full time.

Maybe. But everything I have ever experienced leads me to believe that a fewer number of larger teams, each helmed by an experienced engineering manager, should way outperform this gaggle of tiny groups. It’s not even close. And they can do so in a way that’s more efficient, sustainable, and humane than this scrappy death march.

And systems thinking shows us why! With fewer groups, but larger ones, you have less overall management overhead, and much less of the slow and costly intra-group coordination. You unlock rich, dense knowledge transfer within groups, which gives you more shared coverage of the surface area. With 7-9 engineers per group you can build a real on call rotation, which means fewer heroics and less burnout. The coordination that you do need to do can be more strategic, less tactical, and much more forward-looking.

Would five big teams ship as many lines of code as 10 small teams, even if five engineers become managers and stop writing code? Probably, but who cares? Your customers give zero fucks how many lines of code you write. They care about whether you are building the right things and solving problems that matter to them. What matters is moving the business forward, not churning out code. Don’t forget, the act of churning out code creates costs and externalities in and of itself.

What defines your velocity is that you spend your time on the right things. Learning to make good decisions about what to build is something every organization has to work out for itself, and it is always an ongoing work in progress. Engineering managers don’t do all the work or make all the decisions, but they are absolutely fucking vital, in my experience, to ensuring that work happens and is done well. As I wrote in my last piece, engineering managers are the embodiment of the feedback loops that systems use to learn and improve.

Are managers ever unnecessary overhead?

Sure, absolutely. Management is about coordinating between teams and helping teams run more optimally, so anything that decreases your need for coordination also decreases your need for management. If you are a small company, or if you have really senior folks who are used to working together, you need a lot less coordination. The next most relevant factor is probably the rate of change; if you’re growing fast or have a lot of turnover, or if there’s a lot of time pressure or frequent shifts in strategy, your need for managers goes up. But there are plenty of smaller orgs out there that are doing just fine without a lot of formal management.

Look, I’m not a fan of the word “overhead”, because a) it’s kind of rude and b) people who call managers “overhead” are typically people who disrespect or do not value the craft of management.

But management is, in fact, overhead. 😅 So is a lot of other glue work! By which I mean the work is important, but does not itself move the business forward; we should do as much of it as absolutely necessary and no more. The nature of glue work is such that it too-easily expands to consume all available time and space (and then some). Constraints are good. Feeling a bit underresourced is good, and should be the norm. It is incredibly easy for management to get a bit bloated, and managers can be very loath to acknowledge this, because it’s not like they ever feel any less stressed or stretched.[*]

Management is also very much like operations work in that when it’s being done well, it’s invisible. Evaluating managers can be very hard, especially in the near term, and making decisions about when it’s time to create or pay down organizational debt is a whole nother ball of wax, and way outside the scope of this post.

But yes, managers can absolutely be unnecessary overhead.

However, if you have 40 engineers all reporting to one VP, and nobody else whose number one job is the outcomes related to people, teams and org, I feel pretty safe in saying this is not a risk for you at this time.

<3 charity

[*] In fact, the reverse can be true; bloated management can create MORE work for managers, and they may counterintuitively feel LESS stretched or stressed with a leaner org chart. Bureaucracies do tend to pick up a momentum all their own. Especially when management gets all wrapped up in promotions and egos. Which is yet another good reason to ensure that management is not a promotion or a form of domination.

 

Questionable Advice: “My boss says we don’t need any engineering managers. Is he right?”

11 thoughts on “Questionable Advice: “My boss says we don’t need any engineering managers. Is he right?”

  1. drew says:

    There’s what EO is asking, then there is the real problem: CEO wants direct control over EO. And also that the CEO wants EO to not have control, but that’s secondary. The control thing will affect every aspect of work life there.

    Why was EO hired? If the CEO wants to call all the shots and doesn’t want changes made in the org, what was EO hired to do? What are the CEO’s pain points with engineering that EO could alleviate? Those might be great places to start the conversation . . .

    Did the company just grow rapidly? I’ve seen CXOs who were really hands on have trouble letting go of things (usually at much lower headcount because 30-40 was _only_ the engineers). The absolute worst responses I’ve seen to that, multiple times, often the result of bullying from the board, are hiring VPs with management styles totally opposed to the business style, say VPs from large orgs in cost-cutting mode dropped into growth-mode startups, so maybe that’s a CEO fear. It’s also possible that the CEO just hasn’t talked with mentors or the board about scaling inflection points and how to delegate more effectively – talking about that advice or coaxing CEO to seek the advice could be helpful.

    I used to recommend books but I find these days either people don’t read them or they skim for “quick lessons” and don’t think about what they’ve read. So at this point not only will I not recommend any books but I will softly recommend not recommending books.

    Just a few off-the-cuff thoughts. But the relationship between EO and the CEO seems most important to me.

    1. Yes, exactly. I completely agree. I think this CEO has never actually worked at anything other than very small startups, so has no mental model or frame of reference. But you’re right, the key issue is that the CEO is not allowing this person to do their job. Like I said, it does not bode well… >_<

  2. Tony says:

    Great post. Count me as someone else who believes hierarchies get a bit of a bad rap. They’re not a necessary evil, they’re just necessary. They can become evil if you let evil people into them, but so can any new-age flat / holocracy structure you can imagine. At least the accountability is built into the structure in the hierarchy. I imagine a lot of those flat orgs are just like a massive brigading Reddit turf war when things go slightly wrong because it’s so hard to determine consensus on who messed up.

    With that said, in my own situation (VP Eng of a ~35 person startup with ~20 of them reporting up to me) I’ve eschewed *full-time* people managers in favor of a setup with teams of between 3-7 where one person is named manager of the team, but still spends 50% or more of their time directly doing senior/principal/staff level engineering work.

    I don’t know how large this arrangement can scale, and I’ve often wondered if we’ve just gotten lucky finding the right combination of low-maintenance ICs and high-performing multi-tasking “managers who code”, but I don’t plan on hiring any full-time EMs until our luck on this runs out, because I do strongly believe that hands-on work helps them manage better, and having a leadership role helps them amplify the effects of their work, and that of their team.

    1. I don’t think it’s luck Tony. It works. My comment on “CEO want’s everyone to code” would be – so be it, but still we need someone to manage other people (and they can code), so let’s promote some of them.

      It kinda makes no sense to me to transition people from full-time technical into full-time people role. They aren’t educated to do that in the first place. I think that’s where EM0 level comes from, do derisk the transition if technical person doesn’t like it.

      I am a VPE and my context is such that we have 130 engineers in a service software company, split in “squads” of 10. We don’t have Engineering Managers, but we do have Engineering Leads. Yes, they are 60+% in technical shoes, but they also have people growth responsibilities. With this approach we managed to:
      – establish this necessary management layer in org hierarchy
      – provide support to each engineer as well as growth direction
      – proper performance evaluations
      – keep experienced engnineers hands on and mentor younger engineers
      – conduct 1-1s (at least once a month, but often in reality)
      – vertical and horizontal scaling of the company (EL, can transition to fully managerial role by becoming Head of one division)
      – and from the revenue perspective to convince clients to actually pay for EL hours. It is much difficult to do so if person is not directly contributing to project.

      While my context is service company, I don’t see why the same concept cannot be applied in product company as well.
      – introduce a “lead” role which manages and contributes, measure things and in 1y from now prove to your CEO that you’re right. There’s a buy-in for introduction of fuly managerial roles in the future.

      I’d love to hear Charity’s opinion on this as well 🙂

      1. Great comment, thank you! It’s important to consider my bias and background, which is primarily VC-backed startups, where things may change a LOT from year to year. 🙂 The faster the growth or the rate of change, the more coordination costs there are, and the more cycles need to go into building the org itself (think interviewing, job ladders, onboarding, documentation, etc). The more stable the org, the less you need. Management labor should always be minimized.

        I think your structure makes a lot of sense for a services company, where (as you point out) it’s pretty hard to get a customer to want to pay for “non-contributing” hours. I’m guessing there isn’t a lot of cross-functional coordination involved, because each squad owns separate product areas?

        In case it wasn’t clear from my post, I fully endorse the idea that doing some hands-on work makes people better managers. In sociotechnical systems, there is no such thing as a “full-time people role” — the labor is sociotechnical in nature, and in order to do it well, you need to keep your hands in the work. However, I wouldn’t count the EM/EL as a contributor when estimating and allocating the core development tasks. I would use them as flex capacity — pick up surprise p0 bugs, maybe, or work on internal tooling, or pick up on call work when someone is out sick, or annoying p2 tasks that haven’t gotten done. Stuff that’s not in the critical path. This allows them to stay fresh and contribute while keeping their heads “up” above the fray.

        TLDR this seems like a reasonable plan, and I’m happy it’s working well for you!

    2. Hands-on work helps people manage better — absofreakinlutely. There’s a ton of overlap / smear between staff+ engineering work and management, especially at a startup. I feel like the ideal manager in that scenario is someone with staff+ level skills who has great judgment about when they should just do the thing quickly themselves, and when it’s a great growth opportunity for someone else on their team.

      Maybe it wasn’t clear enough from my post, but in sociotechnical systems, I think there’s no such thing as a “full-time people manager”. Almost all of the labor is sociotechnical in nature, and people managers will do a better job if they stay grounded in the work.

      However, if you’re a manager, your core responsibilities are the people, team, and org, which means that’s the work that comes first. In smaller companies, or companies that aren’t growing fast, that might mean you have 50%+ of your time free for technical contributions. This is great and should be encouraged.

      In practice, I feel like core product work should be scoped and allocated to the team without including the manager. If something comes up and the manager has to react quickly to it, the team shouldn’t be left waiting or blocked on their contribution. There’s always a ton of useful work that can be done outside the critical path. This also allows the manager to pitch in as burst capacity before a deadline, or pinch hit for someone in the on call rotation, etc. Flex capacity is really nice to have.

  3. Anne says:

    Another very thoughtful post! I have a small client with six engineers. The owner is breaking that into two teams, each with a “lead” but who still codes. It might work well; we’ll see. I am sending him this post. His setup is like what Tony describes he is doing.

  4. Colleen Kirtland says:

    An excellent article! I like to point to the fact that hierarchy appears in nature as helpful in some key examples. Sea lions are apex creatures that keep the kelp forest alive. Starfish do the same for tidepools which die without them

  5. Elaine says:

    Another great post. One thing I’ve observed over the years is that there are “fast cycle” jobs and “slow cycle” jobs. Fast cycle jobs are ones with short deadlines, like sales. If you’re a sales person meeting with a customer at 1pm Tuesday, you better have your presentation ready to go before then. 1:30pm Tuesday is too late. Whereas slow cycle jobs like product development have longer deadlines. If a requirements doc is due on Tuesday, it might be ok to get it there Wednesday or even next Tuesday.

    The problem is that when you mix fast cycle tasks and slow cycle tasks in the same role, the fast cycle tasks tend to take precedence and the slow cycle tasks might never get done. I’ve most often run into this when a product manager is responsible for sales support (answering questions from sales people about the product, preparing pitch decks) and product definition. The sales support tasks get done and there is never “enough time” to get product definition done.

    1. I love this, thank you! I sometimes think of it in terms of “heads-down” work, when you’re deep in the code or the product domain, and “heads-up” work, where you’re scanning the horizon and watching for blockers, conflicts, inefficiencies that are hobbling the team, lack of alignment, etc.

      As a manager, I think you can do a decent amount of technical work while remaining heads-up, but you have a responsibility not to go heads-down, at least not for very long. Tuning and maintaining the sociotechnical system itself is your primary responsibility, so you can’t let yourself get too lost in the weeds.

  6. KK says:

    The CEO, who opposes having managers, fails to recognize the value that engineering managers bring and the positive impact they have on the company’s growth and culture. This approach, marked by a reluctance for growth, results in a lack of accountability, poor communication, and a sense of direction within the organization. Additionally, the CEO’s stance appears to disregard the importance of fostering diversity and inclusion in the workplace. So, Net-Net CEO doesnt value above BS and see employees as code-monkeys!

Leave a Reply