In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them.
How do you see your role?
I’m responsible for my team of engineers and the cloud architecture of our system.
In terms of architecture, I try to create systems that are beneficial to engineers in the long run. Most engineers try to solve their tickets and forget that they have to maintain the system the following year. I think about maintenance, security, and the reliability of that system in the long run. Not only because it’s expensive for the company, but also because it burns the engineers down.
A large part of my job is helping engineers avoid shooting themselves in the foot. They shouldn’t create a maintenance burden because they have to finish something today. Business often overlooks this technical debt. It will cost real money to the company when engineers get tired of maintaining tech debt and switch companies. I’m trying to prevent this from happening in the first place.
What does an Engineering Manager do compared to Senior or Staff Engineers?
You get responsibility for a team. You need to build it, take care of it, and account for ups and downs. There’s also a more bureaucratic aspect of taking care of their contracts and hiring.
You’re responsible for delivering results, taking into account their education and training, and ensuring that your team lives the company’s culture. Sometimes you also need to mediate and help with conflict resolution between members. You have to see the human side of the work rather than the technological. During many individual conversations, you figure out what each engineer needs for their job. You try to unblock their work.
Our Staff Engineers handle the technical side of what we do. As an Engineering Manager, I don’t implement engineering solutions.
How does the role of Architect compare to what Senior or Staff Engineers do in your company?
As an Architect, I take care of the overall architecture and coordinate the work between several teams on our Tribe. There are about 60 engineers across all of our departments. A large part of what I do is negotiate contracts between different microservices that different teams maintain. Once agreements are in place, Senior and Staff Engineers implement software systems.
We need so much coordination because we’re moving from a monolith to a microservice infrastructure. We keep redefining ownership of different parts of systems and how we will transition it going forward.
How do you organize your team?
I assume principles, and I don’t control what they do. I set clear expectations about what I want them to deliver this quarter and where we’re going this year.
The way I see it is that it’s a contract between you and me and that terms have to be clearly defined. If not, you won’t know what to do. One of the things that I need to account for is how I tell my team if they’re doing a great job or failing. There needs to be clarity.
The other thing is that I set clear boundaries on what I don’t do. I don’t track time, care how they organize their day, or build a sprint. I care that they finish each sprint. Whatever is in this sprint, they decided how to put it together with the product manager and me. Then during a daily meeting, I want to know the status and how to unblock everyone for the next day.
When I do a retrospective, I follow the principle of self-organized teamwork. I keep drilling down to the core reason if tasks are not done. If the excuse is that another person didn’t finish the work, I want to understand why team members didn’t support them in completing the work.
Self-organization means that I don’t have to tell them what to do. I focus on specifying the expectations. They have to provide the process. Why? Because all my team members are seniors. If you’re a senior, I’m not expecting to tell you how to do your job.
If you’re a junior or a professional in the middle, I will help you do your job and find strategies, build software, etc. But if you’re a senior, we talk about the output, not the process. I’m assuming you have enough experience in your career to know how to do it. As an experienced professional, I trust you can deliver on these things.
Why focus on results?
If I care about the process, I need to care about coordination. So I give up control and coordination and care about the result. I’m so focused on results with such a highly skilled team because I work on core infrastructure for our business. I can’t afford to mix juniors with more experienced developers.
Since our downtime means a serious loss of revenue, we have a higher bar for the quality of our solutions. We need to make sure that every incremental change, each deployment is also a final solution. We need to make sure that If we stop working on this subsystem today and leave it as it is, it will continue for two years.
How do you ensure the quality of your team’s changes to the system?
I’m very clear about my expectations, and I talk with them a lot. For every change, we discuss how it needs to be tested and make sure that it’s clear what will be the impact on the business. How will our changes impact customer care, accounting, or marketing? We need to be sure that we understand all the aspects of our interventions.
If we make a mistake, this might mean that we need to send out 100,000 emails to our customers apologizing for the error. We need to understand the impact of our work and coordinate with other teams to prevent such events. We often work with customer care to ensure they’re on board with the number of potential support issues they’ll need to handle.
To minimize the issues, I make sure that my engineers have clear boundaries of responsibility. Clear boundaries allow us to discuss the potential impact on other systems when making changes. We’re not conservative with our changes. We need to make a comprehensive plan of testing the changes as part of the implementation plan.
What’s your big picture goal?
Our software is there to support business. It needs to make more money than it costs to write and maintain it. There’s no academic beauty to real-world engineering.
The only thing that executives care about is if our software makes their lives easier and how much money it makes. My engineer manager role is to explain this to new team members. You are only as valuable if you can produce value for the company. As an engineer, it means that you already are beyond dogmas and own your craftmanship. You are already a senior, and you already had training. Now you need to generate value.
What are some resources that you recommend to people?
I suggest that people enroll in Nonviolent Communication training to improve their communication skills.
What I learned from talking with Jose
The clearer the expectations and commitments everyone has the easier it is to fulfill them.
Empathy and just taking time to listen to each other is one of the building blocks.
There’s a whole class of leadership books that I can explore further.