The DevOps movement is great! But…if you cannot make more money, reduce cost or be more successful as an organization what’s the point?
Those are the concepts we had in mind while developing InRelease (well, Claude and the team :) Congrats guys!), we wanted to provide a solution that would reduce the cost of delay and improve the flow of delivery. Reducing cycle times to get value out there quicker while maintaining a sustainable pace.
Continuous delivery: a competitive advantage
Very often people will explain DevOps as:
A few months ago I read “The phoenix project” (1) and one of the take away from me is that DevOps is really not only about Development and Operations, it’s mainly about alignment. Making sure we focus on business objectives, ensuring uninterrupted flow of meeting customers’ requirements, while following a repeatable process and keeping with the fast pace of change.
And as a recent (2) study shows, almost 70 percent of companies using software development for competitive advantage outperform their peers in profitability. Therefore, software development organizations, delivering commercial software or internal solutions, play a key role in achieving organizational success.
Many organizations have implemented automation in their process for things like build or test, the continuous flow of delivery is, we believe, where they could gain a lot, in terms of providing customer value faster, while improving quality, and reducing cost of manual labor.
Another reason for continuous flow and deliver faster is that, in our world software development, code is inventory, that where most of our cost is. The same way manufacturing and logistic organizations have adopted a JIT approach, software development should be the same way. Throughput is key in improving value and reducing cost.
How to adopt a continuous flow of delivery
What does it mean? It means looking at improvement earlier than Dev and after Ops. It means ensuring you are developing the right features, on the right platform, prioritized adequately, and that you reduce the amount of back and forth between stakeholders, business analysts, developers, quality analysts and operations.
Microsoft ALM Platform
Easier said than done? Not really. Leveraging the Microsoft ALM platform (which by the way means Visual Studio, Team Foundation Server, Project, Project Server, Excel, Word, SharePoint, PowerPoint, Test Pro, System Center, etc…and InRelease, or whatever the new name will be) will greatly help…in combination with the right software development practices (3).
Practice makes perfect
To reach the goals listed above, adopting an agile approach is the obvious way to go…deliver value quickly, get feedback early, build quality in, learn and fail fast so you can adjust. In addition, from experience, adopting a Kanban process (3) is also an obvious choice, as it really fosters continuous, uninterrupted, flow and sustainable pace. Putting in place task boards, defining WIP (work in progress) and prioritization mechanisms, measuring cycle time, etc. really helps visualize the work, bottleneck and business challenges.
One of our key findings is that “practice makes perfect”, call it improvement kata, Shu Ha Ri or just plain continuous improvements (with feedback loop), the idea is to practice regularly so it becomes second nature.
In conclusion, adopting the Microsoft ALM platform along with Agile practices will help you implement DevOps right.
Where to start?
Well, obviously implementing DevOps is a “project”, you should allocate funding, time and resources. You should also make sure to focus your efforts on improving the right practices in the right order (from low hanging fruits to lower priority items), we recommend our customers to perform an assessment (5) of their practices in order to get a good grasp on maturity and criticality of the various practices within their organization in order to build a proper implementation plan.
Keep in mind that automation is typically a good way to improve efficiency, therefore test automation, automated builds, automated deployments are usually a good place to start.
Once the plan is finalized, we leverage our BluePrint solution (6) to manage the backlog of improvements and its implementation. And as stated previously a Kanban approach seems to be more effective for these types of projects. Keeping in mind that “life is what happens when you have other plans”, so adapting if needed and learning along the way.
(1) Which I highly recommend – On a side note, I wonder who started the trend of writing IT books as “novels” but it makes a big difference I believe. Another good “novel” is “I’ll eat a cricket for a cricket badge”.
(2) http://www-935.ibm.com/services/us/gbs/thoughtleadership/softwareedge/
(3) http://incycle-corpweb.azurewebsites.net/solutions/devops-release-management-solutions/
(4) http://www.kanbanblog.com/explained/
(5) http://incycle-corpweb.azurewebsites.net/services/services-overview/
(6) http://incycle-corpweb.azurewebsites.net/solutions/incycle-blueprint-free-tfs-template/