Tuesday 24 November 2015

Is DevOps, just operation teams being fashionably late to the Agile party?

There is a talk about the DevOps movement being a new philosophy that is an evolutionary step from Agile. A change in mindset and different way of thinking. But is there really anything new in this philosophy that Agile manifesto and principles don't cover. Or is it just operation teams now catching up with Agile?



So what is causing the DevOps community to say they are the next step from Agile. Could it simply be that infrastructure and operations are not explicitly mentioned enough in the Agile principles?

Lets look at some of the Agile principles that I feel promote practices of DevOps.

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
This principle talks about continuous delivery to satisfy the customer. The customer is not going to be satisfied if it is running on a developers machine so delivery here must be out in to the real world and therefore on suitable infrastructure. Should the term software be changed to software and infrastructure?

Business people and developers must work together daily throughout the project. This principle is about daily collaboration and just stating developers and business may be limiting. Testers, UX designers etc have had to live with this for a while and operations are certainly not included. May be changing the term developers to "delivery teams" to be more inclusive would help.

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. It depends on your definition of "environment and support". For me this includes the right tools, dev and test infrastructure and necessary expertise to maintain and develop these. This is a key part of DevOps.

Working software is the primary measure of progress. As mentioned in the first principle the same applies here. If our measure of progress and therefore success is working software. The delivery team can not be progressing if they don't have delivered and working in front of the users. Therefore operations are needed to make this principle be fulfilled.

Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. Again should this principle be more inclusive. As development teams ramp up without operations or DevOps practices, there is often pressure as they want to release much more frequently. This can become unsustainable for operation teams, in my experience this often one of the key drivers in an organisation that has been doing Agile to start talking about DevOps.

Agile and Lean should not just be about the development and QA team working with the business. To fulfil the principles it should be about getting all the necessary people working in a team with constant collaboration to deliver working software. That software can't be working unless it is deployed on suitable infrastructure and systems to support it. The Lean; build, measure and learn feedback loop can't be fulfilled unless you have the supporting infrastructure and skills in your team to collect the data. The business can't react to what they learn if they can't quickly release changes to the customer. To do that you need business, designers, developers, testers and operations. They need to be working collaboratively and all working together to deliver the software to the customer. They need to take on DevOps practices such as treating infrastructure as code, automated testing and automated releases to be able meet the Agile and Lean principles.

It may come down to your interpretation of the Agile principles and how you define terms such as "working software", "continuous delivery", "developers". Personally I don't feel there is anything particularly evolutionary about DevOps, depending on what definition you use. But it could be argued that the Agile principles could be tweaked to be more inclusive of operations when talking about developers and more explicit that working software also includes the underlying infrastructure and systems to support it.

What do you think? Could a some minor changes to the Agile principles show that DevOps practices are just part of the Agile principles or is there a fundamental mind shift from Agile to DevOps?

Monday 10 August 2015

The power of cake...

Now that I have your attention with the mention of cake, I wanted to share my thoughts on how simple gestures that bring the team together out of their day to day work can really strengthen and improve your team. I know there is much literature out there on team building and activities away from the office but these don't have to involve being knee deep in freezing mud whilst being shot at by flying balls of paint.


I would like to share my experience on how stopping once a week for 10 minutes to share some cake can have a vast improvement on the collaboration (but not so much the waistline). 

Originally, when I was working in the UK our office had the rule, as I'm sure many do, that if it's your birthday you bring in some cake. When I moved to NZ and started working in a true agile team, I decided to continue the tradition. Other team members followed suit and, being the competitive bunch we are, it quickly sparked a who could bake the best cake, with increasingly outrageous attempts at baking. More and more people got involved from across different teams. Eventually this turned in to a weekly cake rota and as far as I know to this day the table we all stood around and ate cake is still affectionately called the cake table.

Little did I realise at the time the benefits this was having. Suddenly, communication barriers were being broken down, team members and members across teams were engaging in conversation and discussing what they were up to and problems they were having; both at work and out of it. Trust was built as team members got to know each other and felt able to have in depth and constructive conversations about those tricky design and coding decisions without the fear of upsetting someone. Once a team starts to communicate, people aren't scared to ask for help or grab people together for an informal discussion on the best way to design this piece of code or point out that perhaps a different approach could be better. Blockers are reduced and the team morale and motivation increases as the team is more productive.

In a new role, I tried the same trick on my birthday and although it hasn't quite turned in to the same level of baking competitiveness I believe it has certainly helped in building team communication and morale. Many a retrospective includes mentions of the amount of cake that week.

For those gluten free or not eating sugar it doesn't have to be just about cake, the point is that team building and building stronger team collaboration doesn't need to be a big ordeal.


I'm sure there are many similar stories in your teams. What goes on at your office that brings people together for a bit of fun?