One of the most popular terms bandied about in DevOps is “shift left”. I was at a workshop last month at IBM InterConnect conducted by Sanjeev Sharma and Mustafa Kapadia. They put on a great workshop which was a preview of an exercise they perform in the field for clients. A central theme of their talk was the idea of shifting left to address issues earlier in the development process.
iBM, Sanjeev and Mustafa (both of whom write here on DevOps.com) are not the first or only people who speak about shifting left in DevOps. Derek Weeks of Sonatype wrote a blog post about it back in September of 2013. Almost a year to the day later, Dibbie Edwards of IBM (and the focus of a good article by George Hulme) wrote a good article about shifting left with continuous testing. Andrew Storms wrote a post here on DevOps.com some months back about shifting security left in DevOps. Indeed shift left is generally regarded as a basic foundation of DevOps.
Before we dive into what this means to you, we should make sure that we all understand what shift left really means. For me looking at a standard flow of the development/deployment process is the best illustration of this. I think Andrew Storms used a good one in his article, so let’s repurpose it here:
Pay no attention for now to the before DevOps or DevOps rays for now. Take a look at the top line which is the pipeline. You can see the flow of an app from plan to code and all the way to operate. The flow runs from left to right. At its simplest shift left moves tasks further left. Security, continuous testing, continuous integration, continuous delivery are all shifted left.
In doing so potential issues are addressed earlier in the lifecycle. What is this a good thing? A chart from Dibbie Edwards article gives us the obvious answer:
As can be seen the earlier you can get to issues, the cheaper it is too fix them. That alone is a reason to shift left. But also concepts such as addressing security issues before it effects your customers is appealing. The same can be said for many other functions you can shift left.
For me though the question is by shifting everything left, do we just wind up with a big pile at the very left? How do we prioritize all of these left shifted functions? You can only shift left so far before you come to the beginning of the time line. This is not the birth of the Universe where you had a big bang which defies the laws of physics.
At some point can you shift too much left? This is a question I am going to pose to Sanjeev and Mustafa. I also pose it to you the reading audience.
I recognize that the concept of shifting left is not so efficient that everything that can be shifted is in fact shifted left. But as we get more efficient, more and more tasks are left shifted in the process. At what point do we reach the point of diminishing returns?
How do you feel about this? Can we shift too much left? I am interested in some of the different views on this. I am a big proponent of shifting security left, but are there other priorities?
Let us know your feedback.