All information within leans heavily upon my 15+ years of working at SaaS organizations. Your experience in a non-SaaS org may differ.
“What am I supposed to do now?”
When I first became a Software Engineering Manager, I struggled with this question for months. I remember many times finishing up my workday wondering if I had earned my paycheck. I felt lost when I moved from being an individual contributor who wrote code to a manager whose daily activities seemed to involve anything but that activity. I had wrapped up so much of my identity in the ritual of writing, compiling, and debugging that it took quite a while to finally say to myself, “No one is expecting me to open up an IDE at work, not even myself.”
One thing I want to be clear about – you may not need to write code at work, but writing code on the side and staying in touch with new technologies and practices is an excellent idea.
If you don’t write code, how should you be spending your days? If I had to pick one word, I would say it should be “engaging.” Your value is no longer in building an application but rather ensuring its successful delivery. Success means making sure that your teams are building the right product, the right way. Those are two very loaded phrases.
The Right Product, The Right Way
You may imagine that the product manager would be in charge of defining “the right product.” I would agree, but with a caveat that they clarify the vision and desired end-user experience. As a leader, you should recognize that other requirements inherently exist within your organization that will have a strong influence on the development of the product. Any product has several stakeholders – the customer/end-user, support teams, infrastructure, accounting, sales/marketing, product management, and engineering. While each stakeholder has different concerns, the primary considerations should align on having a delightful customer experience.
Your Responsibility to the Customer
As an engineering manager, you are directly responsible for your teams delivering the reliability and performance of the application, which works as intended and designed. The integrity of data and uptime of the application falls within your purview, either directly or indirectly. Defects and poor performance typically land at your feet. Your organization will expect you to address these issues and formulate a strategy to ensure that the problems do not happen again by addressing any technical or process shortcomings.
Your Responsibility to the Support Teams
First, let’s be clear that support teams dealing with application issues exist solely to address product and engineering shortcomings, including poor documentation, poor user experience, and poor onboarding. As an engineer working on a product (managers included), one of your responsibilities includes ensuring that as few calls as possible funnel over to the support teams. Reducing support outreach from customers can be achieved in several ways, such as:
- working through edge and corner cases during story grooming
- collaboration with the proper groups to create product articles/videos
- working sessions with designers when you feel that the current implementation may introduce too much customer uncertainty in proper usage
- creation of adequate monitoring and alerting so that engineering can proactively inform support/customers of an ongoing issue
Your Responsibility to Infrastructure
If you develop software to run locally on a device, you may want to shift some of the points made on this topic. Your application will come with some overhead that includes CPU and memory consumption and possibly the opening of communication sockets which will come with bandwidth utilization (ingress or egress). In all cases, this utilization is not free and comes with at least energy costs (battery utilization for mobile devices). As an engineering manager, the efficiency of running your application should be a concern. When it comes to data centers, if you seek to serve a large customer base, the efficient scalability of your application will have real-world costs. Please work with your teams and product managers to understand the requirements and impact of delivering certain key features and how they are architected. Eventual consistency versus strong consistency, high availability versus fault tolerance – each of these decisions impacts the design, development timelines, and infrastructure needs. Driving the communication of these needs and ensuring organizational alignment to these needs is the responsibility of the engineering manager.
Your Responsibility to Accounting
This item tends to escape consideration by new and aspiring development managers. However, it is important to recognize a few things you will be responsible for in a product development organization. First, there is a concept of Capitalized Expenditures and Operating Expenditures (also known as CapEx and OpEx). Take some time to read up on the subject, work with your accounting department to understand their rules, and reflect on any impact those rules may have in scoping out projects and features. Next, it is vital to recognize that the responsible spending of company resources falls within your purview. Beyond simply spending on staff, you need to consider your teams’ costs via licensing and any infrastructure utilization. You will need to balance the financial costs with opportunity costs by understanding the interplay of multiple factors, including speed to market, personnel constraints, and potential revenue.
Your Responsibility to Sales/Marketing
If you are working on building software with more than one single function, you should consider how that software is packaged, sold, and marketed. If your organization wants to have different editions (lite/standard/pro), what does that mean to how your engineers build the product? If Sales is trying to demo the product, have you made it in such a way that this is easily possible? When marketing wants to promote a feature, are you involving them in conversations about deadlines? Are you aware of upcoming marketing events that may require you to cut scope and yet retain enough to make it worth the showing off?
Your Responsibility to Product Management
It would be best if you took the time to recognize the unique alliance that exists between product and engineering leadership. As an engineering manager, you should explicitly ask what metrics need to be measured to drive meaningful decisions based on quantitative data. You exist to help ground a Product Manager’s vision in timelines, the capabilities of the current engineering staff, and the product’s technical capabilities. You will work with the product organization to align their vision to the technical organization’s roadmap. Vetting your product manager’s roadmap and seeing ways that your teams could implement a solution grounded in practical cost models and realistic timelines will help your product counterpart decide if they want to pursue a new feature. While some may believe that a product organization should be solely in charge of a backlog – if your teams are building solutions with tech debt and defects, remember that those items were never part of the original design (most of the time). Therefore, it is your obligation to build and maintain a product that continues to function reliably, which does not take increasingly longer to add new features.
Your Responsibility to Engineering
I will start by saying that security and quality are a part of engineering. You are obligated to representing those organizations to your teams if they are not already part of them. As an engineering manager, you are responsible in an acute way to guarantee that cross-team collaboration and communication is happening between your teams and other teams (this should always be true, but doubly so in your department). You have a responsibility to ensure that your teams are adhering to your department’s standards, such as writing automated tests, logging meaningful messages, following the agreed-upon SDLC processes, and writing clear and concise documentation for future engineers.
As the engineering manager, you act as the final backstop to ensuring that your team has a proper connection to the rest of the organization. It is not incorrect to think that this is also the job of the product manager. However, you are the final backstop whose responsibility is to ensure high-quality delivery of the product, which adheres to your organization’s standards, considering the cross-departmental needs within your organization and the inflection points of those departments on your team and the product.