15 Jan 2020

Why Developers Should Embrace Productivity Engineering

It’s come time to face the facts: we’re living in a post-DevOps engineer world.

It’s come time to face the facts: we’re living in a post-DevOps engineer world. As the software industry continues to evolve at a rapid pace, so too do the tools and services available to developers. Ultimately, these changes have created a shift in the ideal structure of a development team and the way its members consume technology.

Advancements in automated platforms, such as Kubernetes, now allow developers to directly take on more responsibilities than ever before. Whereas previous infrastructure (think Terraform or Ansible with Amazon Web Services) required management and facilitation from a DevOps engineer – who holds specific operational knowledge – Kubernetes tackles many traditional DevOps tasks straight out of the box. It also offers more capabilities to developers – especially with application management. However, in order to take full advantage of these capabilities, developers must consume Kubernetes directly.

The benefits of this autonomous developer scenario are huge: If developers are writing applications while also managing their own apps, they can do more, and they can do it quickly. They become self-enabled, development cycles move faster and deployment occurs without friction. Together, they can form autonomous teams to deliver more value with fewer costs.

Reducing cognitive load on developers

Of course, as is the case with any leap of progress, this pro-developer shift comes with a new challenge. Increased responsibility also leads to increased cognitive load. Developers who embrace and own DevOps practices must also be ready to own security, performance, reliability, operations and more.

That’s where Productivity Engineering comes in. Simply put, it’s the emerging practice of helping developers tackle the spike in cognitive load that results from assuming more responsibilities. The goal of Productivity Engineering is to keep developers empowered and focused on delivering real value.

Productivity Engineering is primarily focused on platform selection, or choosing the right service providers that enhance developer experience and reduce complexity. Features such as intuitive user interfaces and helpful default options create an easier, smoother process for developers and help them realize the full potential cloud native applications. Every decision in Productivity Engineering should be made with complexity reduction in mind.

Developer-driven culture: Paving the way for empowerment

Early enthusiasts of Productivity Engineering have mostly conceptualized it as an operation separate from core development; in other words, as a setup in which select, designated engineers hold and disseminate the knowledge of how to balance cognitive load.

Sound familiar? Unfortunately, this kind of Productivity Engineering only repeats the problem we were trying to get away from in the first place: siloing knowledge into the hands of a few.

It’s not enough to hire consultants or in-house Productivity Engineers. It’s also not enough to think of Productivity Engineering as something separate from the core development team. In fact, doing so negates the real benefits of the practice. If developers become empowered to deliver more by taking on DevOps responsibilities, they should maintain that empowerment by also owning their support and organization systems.

What if Productivity Engineering was a community practice shared amongst all developers? Then developers would truly be the masters of their own domain – able to provide maximum value without bottlenecks.

A developer’s first step towards full ownership

Development teams are now faced with a choice: to maintain the status quo of deployment friction and structural bottlenecks, or seize the opportunity for increased responsibility and self-empowerment.

The latter begins with strategic developer training – the kind that gets developers learning new practices by doing them. Because concepts such as infrastructure management and stability maintenance involve tacit knowledge – or knowledge that’s difficult to communicate through words – it’s essential that developers are given the right environment to jump confidently into these new tasks. Equally as important is that the individuals who transfer this knowledge adhere to the culture of developer empowerment, while simultaneously understanding the most effective educational practices.

Skill Sprints embody the principle of Productivity engineers as they are build to get people learning by doing. They build solutions with technology under our guidance. Because we have to make things simple and understandable for Learners we instill best practices of Productivity Engineering throughout the process. The result is powerful infrastructure, self-enablement and a skillset that can be passed on from developer to developer. These updates become entrenched in the culture of entire development teams, which then translate to direct business value.