Working Agile and responsive within and on your cloud (English)

Rabbit

What is Agile software development?

“We are uncovering better ways of developing software by doing it and helping others do it. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. We welcome changing requirements, even late in development and harness those changes for the customer's competitive advantage”.

Agile methodology - Source: http://agilemanifesto.org

Agile

Requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams, their customers and users. They adapt their planning as they go, develop evolutionary, deliver early and often to use the feedback to respond flexible to changes and continuously improve the software as well as the work of the team(s).

Why to be Agile to ‘be disruptive’!

Marc Andreessen described already in 2011 in the Wall Street Journal “Why Software Is Eating the World” that “every company needs to become a software company”. Almost a cliché now, but no matter your industry, you’re expected to be reimagining your business to make sure you’re not the next local taxi company or hotel chain caught completely off guard by your equivalent of Uber or Airbnb. The question is not whether you will have to transfer your business, but how you will do this. One important way is to be responsive to your customers core needs and be agile in solving those for them.

Agile teams are continuously developing and delivering new value for customers. They work in a repeating fashion, enabling constant upgrades. In continuous interaction with users, priorities are set to those changes that add most value. To solve large complex challenges, many teams work together in a coordinated fashion.

With this said, private cloud technology and Agile methods complement each other. Private cloud technologies enable enterprise agility, and building and expanding your private cloud requires working agile and responsive.

Private cloud enables agile working

A private cloud enables an organization to be agile and responsive. By providing a perfect platform for software development with opportunities to experiment, pipelines for continuous deployment and integration (CI/CD), orchestration and automation of testing, developer workplaces and so on.

Private cloud thrives on working agile

Agile methods help you get the most value out of your private cloud as well because your templates and configuration files provide the code that configures your cloud: with for example Heat templates (IT Infrastructure orchestration), Ansible playbooks (software provisioning, configuration management and application deployment), Chef (building automation, cloud operation and consumption) and Designate (DNS as a service).

You develop them just as you develop other software making use of repositories and versioning, releases, branches, automated testing and all other tools used for facilitating the software development process.

Testable, usable and lovable private clouds

We see many waterfall built cloud deployments fail during the designing phase, trying to encompass every possible use of the cloud. While your cloud should be there to help you deal with challenges you don’t yet know everything about. We therefore take Henrik Kniberg’s (Owner and Agile/Lean Coach) advise too heart: “Aim for the clouds! But deliver in small steps!”

First start small and deliver your first cloud solution that your company can actually do something with. It might not solve your problem completely, but based on functional testing it generates at usefull and valuable feedback. You deliver this cloud solution to learn more about your users and your further cloud needs during the deployment project.

Based on the feedback from testing your live platform, you develop your next release, the first one that early adopters will actually use, willingly. It’s not done yet, but it already delivers more real value to them than without it.

MVP

With the feedback from your early adopters, you can choose to expand the cloud in capacity or functionality to create your “Earliest Lovable Product”. It is the first release of your cloud that users will actually love, tell their colleagues or even their friends about. There’s still lots to improve, and you may still end up with something completely different, but you’ve reached the point where you have a truly usable and valuable cloud solution. The next stage is to continu adding value to your cloud by responding to the feedback of your customer and agile releasing new versions.

Making sense of Minimum Viable Product and why I prefer earliest Testable/Usable/Lovable

Henrik Kniberg uses this picture about agile and lean development:

Like this

Since then the drawing has gone viral! Shows up all over the internet, in articles and presentations and is used in a book. The picture is a metaphor. It is not about actual car development, it is about innovative product development where requirements and technology are not 100% clear upfront general. Using a transportation use case as a metaphor.

Drawing 1

Kniberg: “Many projects fail badly because they do Big Bang delivery (build the thing until 100% done and deliver at the end). I’ve lost count of the number of failed projects I’ve seen because of this However, when Agile is presented as an alternative people sometimes balk at the idea of delivering an unfinished product; who wants half of a car”?

Drawing explained

Kniberg: “Many projects fail badly because they do Big Bang delivery (build the thing until 100% done and deliver at the end). I’ve lost count of the number of failed projects I’ve seen because of this However, when Agile is presented as an alternative people sometimes balk at the idea of delivering an unfinished product; who wants half of a car”?

Imagine this: “Here sir, here’s our first iteration, a front tire of what eventually be what we call ‘a car’. What do you think?” Customer is like “Why are you delivering a tire to me? I ordered that CAR you described! I want to be able to get me from A to B asap! What am I supposed to do with this”?

With each delivery the product gets closer to done, but the customer is still angry because he can’t actually use the product. It’s still just a partial car.

Now for the second row:

2nd

Here we take a different approach. We start with the same context the customer ordered a car. But this time we don’t just build a car. Instead we respond to the underlying need the customer wants fulfilled. Turns out that his underlying need is “I need to get from A to B faster”, and a car is just one possible solution to that.

So the team delivers the smallest thing they can think of that will get the customer testing and giving us feedback. We might learn some really surprising things. Suppose the user says he hates the skateboard only because of the color which he wants changed to blue. You just saved money not building the car! Or suppose the user is not yet happy with how to steer the skateboard from A to B, so we will next add value by adding a steer in the next delivery. Maybe the customer while driving in stage 3 or 4 decides, he is happy with the result? Or after driving the motorcycle decides to build a convertible to combine the value of speed and the experience of freedom of the motorcycle with the practical use of a car. He migh have spent some extra time and money, but is definitely very happy with the result while being able to get from A to B during the process, having the choice to end the project at any time. 

Agile is not about doing more work in less time: It’s about generating more value with less work.

Conclusion

So wether you are planning to deploy an OpenStack cloud, to transfer your virtual machines from another cloud or distributor, expand your cloud with containers, or just use the platform to run your business on, an Agile method is the way to go. It is helping teams align with the need for quicker delivery and higher quality of the inputs into the cloud. Additionally it helps organisations get greater value from their projects and more easily work towards the goal they are achieving so that they can recognise some of that return of investment sooner.