Every great infrastructure engineer knows that beautiful code has no value unless it solves the right problems for the needs of the business.
At LinkedIn, the infrastructure team is differentiated from other product engineering groups by the fact that it has multiple stakeholders to serve. While a product engineer can focus his or her energy entirely on a single product, its myriad features and fulfilling its purpose, an infrastructure engineer must balance many requests from different teams. This requires becoming something of an expert in what another team does, and also necessitates prioritization and coordination in a way that many other technical roles do not.
For this reason, infrastructure engineers require a slightly differentiated set of skills—including a few key soft skills to achieve success. It’s important to remember that while crafting beautiful code is important, the creation of proper communication channels holds equal weight.
As an example, I once saw an infrastructure team work hard to create a tool that was intended to help a specific product team. The infrastructure folks worked to design a tool that was elegant and state of the art in terms of code. The problem was that, once deployed, this tool didn’t adequately solve the product team’s problem.
This was likely due to a lack of proper communication: The infrastructure team had created a great tool, but it hadn’t spoken enough with the product team to understand the root problem in the first place. Assumptions were made in isolation during design and development. This disconnect persisted when the product team simply avoided adopting the tool, rather than pointing out the error. It was a lose-lose scenario: The infrastructure team had wasted their time, and the product team still didn’t have the tool it needed.
As this example demonstrates, infrastructure engineers are unique, and having critical soft skills is as important for them as having strong technical chops. I’ve experienced this firsthand in my career. I previously led a product team focused on content sharing, which was both a product and a platform; this allowed me to understand the pain points of both sides. Now that I lead the presentation infrastructure team at LinkedIn, I try to foster three main soft skills to help ensure our developers’ success and happiness.
1. Have empathy
To design a great solution, you first have to truly understand the pain points your clients experience and the problems they are trying to solve. That’s why empathy is an important skill for an infrastructure engineer. It’s crucial to really put yourself in the other team’s shoes—even have them walk you through a demo, if necessary—to create the right solution.
This can be especially important in a management position, where protecting your team’s precious time and resources is key. I once had an engineer from a client team request that infrastructure design a new feature for them. He was adamant that this feature was very necessary and time-sensitive, and therefore demanded my team’s immediate attention. However, my team often deals with several of these types of requests simultaneously, so we need to prioritize. From my initial perspective, it didn’t seem like the request was critical or urgent. But this engineer’s passion and frustration prompted me to dig a little deeper, so I took the time to have him walk me through the pain points. It quickly became obvious that this was a massive issue and needed to be a priority for my team, but I would have never realized this without truly putting myself in his position to better understand.
2. Keep talking
This has two meanings in the context of infrastructure engineering soft skills. First, it’s necessary to continue coordinating with your client team throughout the design and development process in order to make sure you’re in sync. Again, remember that your goal is not to create a beautiful piece of code, but to solve a specific problem. Frequent feedback loops will ensure you stay focused on the right problem and that requirements haven’t changed as priorities shift. Without regular communication and coordination, it becomes much more difficult to ensure that what you’re designing will meet the client’s needs.
Second, it’s necessary to oversee all requests to your team to make sure they will harmonize with each other. An infrastructure team needs to always understand the big-picture business goals of the organization, and to make sure that individual requests won’t cause issues in unrelated areas. Sometimes, this requires creative solutions that can address needs of multiple clients; other times, it involves making calculated trade-offs. In an orchestra, the horns might think they are the most important part of a piece of music, while the strings believe they are more integral; like a conductor, it’s an infrastructure engineer’s job to take a bird’s-eye view and make sure each team harmonizes with the rest.
3. Create a shared definition of success
Before embarking on a project, both the infrastructure team and client team need to align to create a shared definition of success and to determine how they will jointly measure it. An infrastructure engineer may think, “I’m done coding, so I’ve successfully completed this project.” But in reality, the project’s goal is to solve a problem. Your code may be completed, but has the issue been satisfactorily resolved? Once again, it’s important to be able to look at the full picture and make sure you have done everything in your power to ensure the whole project succeeds, and not just deliver on the task you were assigned.
Based on my experience, a project always progresses more smoothly if the definition and measurement of success are clear up front. For example, a product team recently came to us asking for a specific feature, and after several rounds of conversations and a deep dive, we realized the product team’s goal was improve one particular metric for the product.
Therefore, we suggested using that same metric to hold us accountable on our deliverables, too. This alignment in definition and measurement of success opened up new possibilities for our team. We felt accountable in delivering to the goal and not just finishing a feature. Since everyone involved was aligned on the objective, we were able to quickly decide against the original feature requested due to its high implementation cost and low impact. Instead, the infrastructure team proposed and delivered different, lower-effort features that really moved the needle of the key (agreed-upon) metric.
It’s important to have good technical skills, but these three soft skills can take an infrastructure team from good to great. Concentrating on these areas helps improve efficiency, client satisfaction and overall developer happiness.
It’s critically important for infrastructure engineers to take time to understand whom they’re working with and the problem that needs to be solved. An infrastructure team can go through the whole process of requirement gathering, process reviews, etc., but in my experience, this is not always enough to truly solve the client’s problem. Instead, an infrastructure team needs to understand how each part of an organization fits together, where the interdepencies lie, the specific pain points of each team, and to brainstorm creative solutions—this is what leads to success.
This article is published as part of the IDG Contributor Network. Want to Join?