Engineering

How Full Cycle Developers Can Avoid the ‘Fog of Development’

By | | 4 min read


Summary
As systems and platforms grow ever more complex and distributed, software developers must never stop learning. Still, they’re going to need a little help from AIOps.

As software engineers, we strive to hone our craft and learn new skills. And with a revolution underway in how we deliver and maintain the platforms we create, these character traits are particularly useful. Change happens fast—from developers being highly specialized, to dabbling in multiple parts of the stack, to today’s blurring of operational lines in a hybrid cloud world. One emerging IT role is that of full cycle developer, a term minted by Netflix last year to describe the reorganization of its Edge Engineering team.

So what’s a full cycle developer? As Netflix explains, it’s a developer who applies engineering discipline to all areas of the software life cycle, one who “thinks and acts” like an SWE, SRE or SDET. A full cycle developer may be called upon to create software and write test cases to solve business problems, automate operational aspects of the system, or deftly perform some other essential task.

For many organizations, however, this type of transformation is easier said than done. Problems arise when software engineers are expected to know the entire tech stack, when at the same time the increasingly distributed nature of enterprise applications makes it very difficult for one person to understand the whole system.

In my career, I’ve learned database, caching, build, load balancing, infrastructure automation, security, performance testing, public cloud, and container orchestration stacks. And compared to how applications were built only a decade ago, I’ve noticed that modern technology stacks are more purpose-built for a specific use case or environment. This rising complexity of systems and platforms spotlights the importance of software engineers’ never-stop-learning mantra, but it also shows the growing need for automated systems that help manage and maintain these intricate environments.

Lost in the Fog

Military leaders are familiar with the fog of war, the uncertainty in situational awareness that occurs in a military campaign. Software development isn’t war, of course, but developers often find themselves experiencing a similar uncertainty—one I call the “fog of development”—which can occur when developing a small piece of a system or platform. For instance, a software engineer might be part of a scrum team working on a dozen endpoints in a platform with hundreds of endpoints. With so many moving pieces, it’s easy to get lost in the software delivery battle.

Operate what You Build

This brings us back to full cycle developers and Netflix’s strong culture of innovation. When an organizational or team-structure change occurs at Netflix, the software industry takes note, such as when the streaming giant’s Edge Engineering team reorganized last year to enable more accountability and ownership of platforms it develops and maintains. This team, inspired by the principles of the DevOps movement, adopted the motto “operate what you build.” Simply put, if you develop a system, you’re also responsible for operating and supporting it.

The goal here may seem simple, but the amount of skill, discipline and infrastructure to make this approach successful is not trivial. Essentially, a full cycle developer can participate in any area of the systems development life cycle (SDLC)—from design and development to deployment and support of the code they write.

The old adage, “so much to do and so little time,” certainly rings true with developers today, particularly those tasked with staying on top of rapid, constant change. Team dynamics, skill sets, and learning curves all impact developers’ productivity. In a recent Stack Overflow survey of more than 100,000 developers, roughly three-fourths of respondents said they expect new coworkers to be fully up to speed within three months. Another interesting finding: developers are “lifelong learners,” with nearly 90% of respondents saying they have taught themselves a new language, framework or tool outside of their formal education.

AIOps: Because We Can’t Do It Alone

With so many platforms to master, an emerging operate-what-you-build ethos, an upsurge in metrics to monitor and extract insights from, shortened time spans on projects, and new responsibilities for full cycle developers, it’s no wonder the fog of development is a real phenomenon.

Artificial intelligence for IT operations (AIOps) can help bridge and support these initiatives, enabling full cycle developers to rely on system automation to help tune their platforms. A key promise of AIOps is the ability to provide systematic self-healing, including autonomous A/B tests when a bottleneck is detected. Look to AppDynamics to provide leadership in the AIOps space, as we’re preparing for the next leap forward in automated software monitoring, observability and remediation.