What comes first... good SCM or DevOps?
Prior to a DevOps engagement, a potential client would want to know how you'll engage their team(s) and where your analysis may start. Would it be continuous integration? How about continuous testing or delivery? Would the engagement focus on the client's latest monitoring proof of concept? Don't worry... continuous monitoring shines brightly this holiday season. While each of these continuous practices may improve delivery outcomes, getting the fundamentals right is still the quickest way to deliver both short and long-term DevOps value.
I mention this as I sense and sometimes see a bit of sadness when telling a client that we're starting the process with Source Code Management. SCM is a system that provides version-control. The tools include: SVN, GIT, Perforce and VSS. Thankfully there is a silver lining to this initial reaction. Over time, getting your version-control strategy right, will invariably turn that frown upside-down. Like most things in life, eliminating tasks that consistently create aggravation is a worthwhile pursuit.
Let's think about how versioning affects DevOps... Since DevOps is synonymous with lean practices and culture, we want to eliminate any non-value-added tasks and automate the mundane. How can you expect to deliver a sustainable program if your current versioning strategy is at odds with the common tenets of DevOps? By treating version control as a cornerstone of the continuous practice, it will ensure the sustainability of DevOps practices.
The common adage is, 'you can only manage what you can control.' This is also true for software development. How a team employs SCM is highly correlated with both product success and DevOps maturity. In branching and merging patterns (and there anti-patterns), it will reveal much about the current and future success of your DevOps program. If you take the time to think about it, it is the only practice common to all DevOps programs! After some consideration, most will agree that solid version-control practices are required to successfully adopt and maintain any continuous practice.
Everyone likes to believe that transformational change will come from the shiny new tool; but it is the mastery of the fundamentals, that allows your team to perform consistently at a high level.