Over a million developers have joined DZone.

Reverse Shift-Left: What Can Dev Managers Learn From Production?

DZone's Guide to

Reverse Shift-Left: What Can Dev Managers Learn From Production?

DevOps is about bringing developers and operations closer together. But what can dev learn from ops to enrich their collective efficiency?

· DevOps Zone ·
Free Resource

Do you need to strengthen the security of the mobile apps you build? Discover more than 50 secure mobile development coding practices to make your apps more secure.

As a dev manager, there seems to be continuous tension between accelerated velocity, accelerating time to market and maintaining a high-quality bar. Delivering a high-quality product to meet end-user expectation requires thoughtful planning. Extracting data from production can assist the dev manager in this planning process, let's discuss some of the obvious aspects and those that are less obvious.

As the sprint launches, the dev manager has a number of decisions to take in the context of testing. To name a few:

  • What flows to script and promote into the smoke or nightly regression test.

  • Which platforms to prioritize, and, well, which squad member to assign to each task.

Today, for the most part, this process is done intuitively: the dev manager hopefully has sufficient experience to heuristically make those determinations. Also, production data, which can assist in making these decisions, is commonly available to the OPS and marketing teams. Perhaps it's time to change that. 

Let's look at the easy stuff: user flows and platforms used are readily available from any analytics tool. Those just need to be shared by the marketing team, and they would love to provide insight in return for a better product. Usually, even if you build a new asset, the platforms would be similar. If you are struggling with a completely new audience, perhaps the free online Factors magazine can help. prioritizing target platforms is critical to success. Similarly, dev leads can take metrics from production, such as app launch, time to login etc., to benchmark against the next build.

But what if we could take it one step further? Can app behavior in production tell us something about areas of the code that require more care and attention? The answer is yes.

Consider that every functionality that's deployed has a business goal and realistic outcome. Consider mobile app check scanning using the camera. The business objective is to appear more competitive and modern to end users by streamlining this experience and allowing them to avoid the visit to the branch, a welcome change. Let's say for example that this feature has been seen chronic failures and outages due to the 3rd party integration, the vendor who actually scans the checks.

In that case, there would be multiple support cases and specifically Jira tickets. Those tickets would be tied to code changes in your repository. If you were able to track the number and frequency of code changes; correlate those with the outages and negative business impact, you might reach an interesting conclusion: even though integrating the 3rd party vendor API seemed fairly straightforward, you may need change a few things:

  • Fix this code so it's more resilient;

  • Consider this area of the code as higher risk and assign a more seasoned developer to handle;

  • Better document and certainly apply more testing cycles to it

Extracting insight into the sprint from production data

In other words, production data is something that can enrich decision making so you are more informed and eventually, better positioned for success. The first step in this direction is information sharing, usually across a centralized dashboard that can be shared between OPS, marketing, and dev.

Check out tips for blazing the way from agile to DevSecOps with security built into your mobile app toolchain.

devops ,production testing ,software development ,operations

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}