Posts Tagged ‘Devops’

This is the best book I’ve read on DevOps and it follows on nicely from Gene Kim’s other book The Phoenix Project.

It’s quite easy to think that DevOps practices are just something that dev teams deal with and the value is simply just an increase in throughput, but the book provides clarity on the colossal value that adopting a DevOps culture and the principles can have on teams, the business, and customers.

Throughout the book, Gene echoes the importance of having the whole product team (product manager, designer and several engineers)) involved in the transformation, as well as focusing on outcomes, and to achieve outcomes you need to collect data and learn through experimentation which is covered in the book too.

Gene gives good advice that it’s important to avoid funding projects and instead you should fund services and products: “A way to enable high-performing outcomes is to create stable service teams with ongoing funding to execute their own strategy and road map of initiatives”.

This is the most comprehensive and practical DevOps guide out there and the layout makes the content easy to digest. The book covers:

– History leading up to DevOps, and Lean thinking
– Agile, and continuous delivery
– Value streams
– How to design your organisation and architecture
– Integrating security, change management, and compliance

The principles and tech practices of:
1. Flow
2. Feedback
3. Continual Learning and Experimentation

“Our goal is to enable market-oriented outcomes where many small teams can quickly and independently deliver value to the customer”

Lean

A product team is never short of customer problems to solve or ideas to validate, so if there are activities in the idea -> customer flow which are wasteful, then this impacts delivering customer/business value, motivation and time to market.

In the middle of the 20th century, Toyota created an efficient manufacturing concept called Lean which grew out of their Toyota Production System. It is based on the philosophy of defining value from the customer’s viewpoint and continually improving the way in which value is delivered, by eliminating waste or anything which does not contribute to the value goal.

The core 5 principles for adopting a Lean way of working for a digital product are:

  1. Define Value – Understand and define what is valuable to your customers.
  2. Map the Value Stream – Using your customer’s value as a reference point, map out the activities you take to contribute to these values throughout the idea -> customer flow. Also map out all of the activities which don’t contribute to delivering customer value which is essentially waste and should be reduced as much as possible.
  3. Create Flow – Once you have removed the waste from the value stream, the focus should be on ensuring that the remaining activities which are valuable, flow smoothly without interruptions or delays, with some strategies including: DevOps practices, automation, breaking down steps, creating cross-functional departments and training employees to be multi-skilled and adaptive.
  4. Establish Pull – The goal of a pull-based system is to limit your work in process (WIP) items while ensuring that your highest priority customer Product Backlog Items (PBIs) are in a ready state for a smooth flow of work. By following the value stream and working backwards through the idea -> customer flow, you can ensure that your product development will be able to satisfy the needs of your customers.
  5. Pursue Perfection – Every employee should strive towards perfection while delivering products that customers needs and love. The company should be a learning organisation and always find ways to get a little better each and every day.

Some examples of my experience on reducing waste to deliver more customer value:

We introduced DevOps, where we optimised our release pipeline making it 83% quicker to deploy software updates to the team environment and 92% quicker to deploy builds to live.

We reduced the time to market for a new website from 18 months to just 4 weeks! This was achieved by identifying waste through value stream mapping, then using that analysis to simplify the code base and reconfigure some of the hard coded elements of the code (waste) to make them remotely configurable through a CMS.

The last example had the most impact where we merged a floor of front-end developers with a floor of back-end developers to create cross-functional high performing teams.

Good luck in your journey to become Lean!

Devops

Development effort isn’t cheap, but extremely valuable no matter what industry you work in, so once a product iteration is ready to ship, automating the final steps including the software build, deployment, environment and release process will help continuously deliver customer value in an efficient way without unnecessary delays or bottlenecks.

DevOps is the combination of cultural philosophies, practices, and tools that increases an organisation’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organisations to better serve their customers and compete more effectively in the market.” – AWS

There’s often a significant amount of thought and effort which goes into getting an idea into development, so when the code (solution) is ready to kick off the build (ship) process, it’s important that this is as automated as possible to avoid unnecessary delays with customers getting hold of the feature within a timely fashion.

Due to the rise of the DevOps culture, it’s now possible to automate the whole build, deployment and release process. As well as customers getting features sooner as mentioned above, other benefits of adopting a DevOps culture includes:

  • Software Development division remaining competitive
  • Reduction in waste from having to wait for software to build, deploy, dealing with environment issues and working with the operation team to handle the release
  • Increasing the R in ROI (Return on Investment) as less waste results in delivering more value to customers
  • Improving team morale – dealing with environmental, build and release issues manually isn’t fun
  • Improving on sprint goal complete rates as it’s less likely stories will drag over to multiple sprints because of build / release issues
  • Decreasing lapsed time of development work
  • Improved security
  • Easier to track build to release timeframe
  • Automated
  • Scalable

Adopting a DevOps culture should ideally come from bottom up rather than top down – a Product Manager shouldn’t need to create stories, sell in the importance of it to dev teams or prioritise it, as optimising the software build and release process should be BAU (Business as Usual) and should always be constantly looked at and improved.

As development teams adopt a DevOps culture and they start migrating over to a fully automated process, the benefits will be obvious and lucrative.