🤖👑 at Automattic
March 04, 2019#distributed-teams #mobile
I have a CS degree from the University of Edinburgh, and then I dropped out of grad school at the University of Ottawa. I spent nearly four years as a software engineer at Google, a year doing my own thing, a stint at a startup that failed, and then I joined Automattic nearly two and a half years ago now.
I joined to lead the mobile team, but after around 18 months I handed it over and went to run the Jetpack engineering team, then I worked on the rollout of Gutenberg on WordPress.com, and more broadly. Now I lead our DevEx team, which reports to the CEO and has a remit for technical leadership including owning our hiring process.
In some ways, easier than I expected - I had inadvertently done a lot of work and reading that prepared me, and I was lucky to have a good network. Hard in others, of course. I think it’s hard to anticipate the loneliness - especially if you are at a small company and have no peers. This pushes me to do more to create community amongst engineering leaders - such as starting a slack for engineering managers. Now that kind of work is part of my job, probably my favourite part of it actually - I run engineering lead roundtables, and spend time 1:1 with leads looking for some extra support.
I moved from managing ICs to managing managers pretty quickly. I really like managing managers, the kind of impact I got to have, and the way I spent my time. But again, it can get lonely. I’m lucky in that I had a really great and supportive group of peers. I think how much less support you get can be a shock to some people - if you report to the CEO, they are busy so there’s some stuff you will just have to figure out.
I think moving into meta management, one of the challenges is that you don’t have everything you need on your team - you have to learn to manage across and up more. As an engineer, I tend to be very pragmatic and direct. It can still be a bit of a culture shock to interact more with non-engineering parts of the organization.
That is super variable. Really my time is split into three distinct categories. The first is a lot of reading - we’re a distributed organization, and work asynchronously across the world, so a lot of our communication is in writing. This is how I keep up with relevant things going on, and also share what is happening in our part of the organization.
The second part is supporting our technical teams. Maybe I’m helping one of my peers with their staffing plan or roadmap, or reviewing the technical direction of a project to make sure it’s in line with our longer term engineering ideas. 1:1s with team leads - maybe they are kicking off a project and want to talk about scoping, or struggling with a gnarly people issue. Lead roundtables, team switches, onboarding, etc.
The third part is hiring. Interviews, training interviewees, generally the care and feeding of the process - I pay a lot of attention to the metrics. What do our diversity numbers look like? How much time does it take to hire someone? How long does someone wait for an interview? We’ve been focused on standardizing and scaling it lately, so that’s a lot of my time.
As for what motivates me to do it every day… I care a lot about the organization, being an engineering organization that is a functional work environment, and delivering well. My immediate team are great, and I’m really excited by our momentum and appreciative of their hard work. And then my boss - Matt’s been really good to me, and if this is the way I can be most helpful to him right now, I’m happy to do it. I do miss being on a team that is delivering product though!
Probably the biggest challenge has been personal: I am a fixer. Give me a team that is not doing so well, and I will work with them to create clarity, capacity and alignment, to ship as a habit, sustainably. There’s something very rewarding about this, I really believe most people are just trying to do a good job, and the failure of many engineering organizations is that people don’t know what that looks like, or that incentives are created that create conflict between what is good for individuals, and what is good for the team.
But that kind of work is really emotionally draining and exhausting. The biggest challenge for me has been what it’s done to me - how to be able to show up and do that kind of work, without it having a destructive effect on me personally. I think healthy boundaries - time off, making time for a life outside of work, not working too many weekends, and then coaching, and eventually therapy. My therapist was shocked by how much people-ing you do as an engineering manager! But you can’t support other people if you’re not supported yourself.
How much of being a good manager is being a decent human being. There are a lot of books out there - helpful, great, useful books, and some that are pretty useless. But you will get a surprisingly long way if you show up and try and be decent to everyone around you every day.
But you know, decency is hard. Being decent is not being “nice”. It includes the hard conversations you would sooner not have, balancing the conflicting priorities and accepting you can’t make everyone happy. Advocating for people who wouldn’t be heard - whether it’s your users (never forget them!) or under-indexed groups. Functional teams are inclusive, and inclusion is hard work.
Get a coach. When everyone around you needs something from you, you need someone who is just there for you, who has no agenda other than helping you be the best you can be.
I don’t like to tell anyone anything when they’re making a decision like this - it’s too personal. Generally I like to ask questions about motivation - what pushes them towards it, what is holding them back. I want to support people in making a considered decision for the right reasons.
I do tell people what is expected of them, what kind of support is available and what they can expect from me, though. I think that’s really important for people to know.