Career Spotlight: Infrastructure Software Engineering
Infrastructure engineering may seem unglamorous to an outsider but hosts a domain of interesting and unique problems that are pertinent to a business’s health.
When we think of software engineers, we tend to imagine front-end engineers, who build out systems (websites, mobile apps, etc.) that users directly interact with, or backend engineers, who deal with collecting and transforming data. But for all these components to work, developers need the ability to deploy their apps, or allow their separate services to talk to each other. These problems and many more, invisible to the end users, are the domain of infrastructure software engineers. Just like the public infrastructure of roads and electricity grids, software infrastructure needs to operate at a massive scale and be extremely reliable. Let's take a closer look into what distinguishes infrastructure engineers from other roles, and why one might want to consider a career in infrastructure engineering.
So…What Is Infrastructure Engineering?
The workings of infrastructure at a tech company might seem opaque, mainly for two reasons. For one, most users can take well-functioning infrastructure for granted, given that it feels almost invisible when done right. Pages load instantly, push notifications are successfully delivered, and all data is correctly and securely stored between sessions. It can feel like all these capabilities are a given, but in reality, it takes an enormous amount of coordination and resources to keep everything running. The second reason is that the problem space for infrastructure is vast. Everything from automating deployments to creating test environments, setting up tooling to comply with privacy laws, and routing traffic between data centers, could be considered a component of infrastructure. Each comes with a unique set of requirements and technologies. A single purpose weaves these distinct threads together to define infrastructure: to create tooling that’s delightful to work with and enable application developers to realize their ideas.
Infrastructure Engineering Superpowers
Being an effective infrastructure engineer, as in many roles, comes down mainly to practice and openness towards personal growth, but there are also skills that pay particularly massive dividends in infrastructure roles.
Communication: Projects driven by infrastructure engineering tend to affect a lot of people, and they all have opinions on what needs to be done. Building alignments across the invested parties is a critical skill, as is consistently finding ways to unblock progress and maintain forward momentum.
Empathy: Everyone has clients, and everyone has products -- engineering is not done in a bubble. Just like product engineers engage in a feedback loop with end users, infrastructure engineers work with their own clients, typically other engineers. It’s critical to balance rationality with empathy -- communicate what is and isn’t feasible and be ready to embrace constructive criticism.
Know what you know, know what you don’t: Infrastructure encapsulates numerous tracks, each of which is broad enough in which to devote an entire career. In general, the more impactful a project is, the more of these tracks it tends to touch, requiring some knowledge or readiness to learn in each. Growing into a successful infrastructure engineer requires a balancing act between a deep understanding of some core competency (say, the networking stack) and a broad, but ultimately somewhat superficial, knowledge of everything else. Collaborate with and defer to the experts in these adjacent domains when needed.
Working with the unknown: At some point in your career, it becomes inevitable to work on broad problems where the requirements are ill-defined. An infrastructure engineer leverages all their different skills to talk with stakeholders to clarify requirements, spends a lot of extra time researching, experimenting, and designing, and leads a team towards delivery. This can feel almost overwhelming at the beginning, so it’s imperative to break big goals into manageable steps.
Data-driven decision-making: Because even minor changes to infrastructure can have a large impact on business health, part of our role revolves around using data to inform and justify our technical decisions. Choosing one software library can introduce an unacceptable amount of latency than another, even if that library is being used in several other places in the company. Measuring and compiling this sort of data to make decisions is a necessity to work at scale.
How Do I Know if It’s Right for Me?
Being an infrastructure software engineer is certainly not for everyone, and as with all roles, it makes sense to think about what you like and dislike about work before pursuing it as a career. Here are some good questions to ask yourself:
Positive Indicators
Does the prospect of being your own product manager excite you? Do you like defining the what, the why, and the how of the work that you do? If so, infrastructure engineering could be a good fit for you!
Do you like getting to know strangers and figuring out how to inspire folks totally outside your organization to help you? Infrastructure software engineering often involves a lot of cross-functional work, and you end up meeting and having to work with many different people from week to week.
Are you more motivated by the prospect of serving your coworkers, or end users? Infrastructure work often goes unnoticed by end users but can have a massive impact on other engineers’ productivity and happiness.
Counter Indicators
Do you like structure? If so, infrastructure engineering may be a poor fit for your needs. In product teams, the deliverables are usually very clear. On the other hand, in infrastructure engineering, the requirements and possible solution space are often large, unknown, and fluid.
Do you like instant gratification? Infrastructure work is often slow, glacially slow compared to product-facing work, so it can be hard for people who need instant gratification to stay motivated. That said, there are ways to hack your brain to get around this -- breaking projects down into teeny tiny milestones/tickets can be one way to get the high of “completing something,” even if it’s an intermediate stage.
Getting Started with Infrastructure
Getting involved in infrastructure may seem daunting, but it’s important to remember that being an infrastructure engineer isn’t all or nothing -- you can easily dip a toe in the water before jumping in. Finding small opportunities to contribute to in the infrastructure engineering space will always be the best way to practically evaluate whether it’s something you want to spend more time on or not. Working at a company like LinkedIn with a collaborative culture makes this easier!
About the Authors
You May Also Like
2024 InformationWeek US IT Salary Report
May 29, 20242022 State of ITOps and SecOps
Jun 21, 2022