For several years now, I have been tweeting or mentioning in conversations that I don’t like the term ‘shift-left’, and keep saying that I have to write a blog post on it. This week, one of my class participants called me on it, so I guess the time has come.
I think the first time I heard the term was in a talk by Paul Gerrard – perhaps a webinar for EuroStar in 2014. In the notes I made at the time, I have this sentence “
Shift Left ??? – redistributing test activities … same thing we have been saying … why is he calling it shift left? I don’t understand this at all.”
I still have those same feelings to this day. There were lots of things in his talk I liked, but I got stuck on the phrase. The term didn’t resonate with me then, and still doesn’t.
By shifting left, it feels like the development process is a linear process, and it’s not. Lisa Crispin and I have been talking about testing early for years in our presentations, in our books, etc.
I think a better model is one that Ellen Gottesdiener and Mary Gorman use in their book Discover to Deliver, 2012. It represents an infinite loop, confirming continuously – which is how we really develop software.
Dan Ashby took a similar approach using this diagram in his blog post https://danashby.co.uk/2016/10/19/continuous-testing-in-devops/
What I fear may happen using the term ‘shift-left’, is that some people will misunderstand the concept and go back to big upfront requirements that need to be tested before coding is even started. Shift-left also doesn’t include the idea of DevOps, so people have started saying shift-right, or shift-outwards.
I personally think better terms are testing continuously or holistic testing, taking into account whatever your context may be.