Saturday, June 16, 2018

AGILE: Inculcating The Culture of CI & CD (Continuous Integration & Continuous Delivery)



Agile, whether considered as Culture or Framework, is attracting many around the world. In the world of complex development & rapidly changing demands, agile is inculcating the culture of responding to the customer’s changing requirement & deliver the concentrated business-value in the form of the product. Agile does this in many ways & CI/CD is one of them. Let’s dive into CI/CD & SCRUM and see how SCRUM can facilitate the CI/CD & ensure that extensive business-value is being delivered to the customers.


What is CI / CD (Continuous Integration / Continuous Delivery)
The development of complex product needs a long timeline & most of the times more than one team works together to deliver the common product. All these teams work in same iteration/sprint. At the end of the sprint, all teams deliver their MVP (as a part of sprint deliverable) & all these MVPs from different teams combinedly becomes the Product Increment (PI).

Lets’ understand CI & CD:

Continuous Integration (CI):
Most of the time, during the development of complex products, the work is done in sprints/iteration & by the different-different members of the team. They share the same code base & continuously enhance/update the code to implement new functionalities/enhancements.

“Continuous integration is the process in which multiple members of multiple teams write the code in the same code-base in such a way that the newly added code is merged into the older code without breaking anything.”

To understand the concept of CI, consider the below diagram:

Dev1, Dev2…& so on are working on the same codebase for their respective implementation (on their respective User Stories). After the completion of implementation, all developers do the unit testing to test the implementation. After that, they transfer the code to ‘Test Branch’ where QAs execute the testing. Once the QA is completed, the code is merged the Source Code Master(SCM) branch. Now, this SCM branch has all the code from multiple developers. Then, this SCM branch code goes for build & the updated functionality is ready for Integration Testing. Now, these integrated functionalities pass through the “Integration Test” which ensures that “all the integrations done into the code are bug-free & not breaking anything.”

In this way, Continuous Integration is implemented.

Continuous Delivery (CD):
Continuous Delivery (CD) is the mechanism which ensures that “product can be released anytime”. As we have seen earlier in Continuous Integration, teams work in multiple iterations & continuously integrate the new code into the Codebase to implement the new/required functionalities.
Continuous Delivery goes one-step ahead to the Continuous Integration. Consider the below diagram: -

As this diagram depicts, after the Continuous Integration, Acceptance Test is performed over the integrated code base to ensure that:
  •        The integrated code is In-line with the expectation of the client
  •         Integrated code Does not have show-stopper issues
  •         Integrated code Pass through the Acceptance Test phase, &
  •         It Can be released anytime to the client

After passing the Acceptance Test, the product becomes eligible for release & to be deployed in production.
In this way, this is the concept of CI / CD.

Let’s dive into the SCRUM now.


What is Scrum
Being one of the methodologies under Agile Framework umbrella, Scrum ensures the iterative development. Originally, this term has been taken from RUGBY. Consider the below diagram:

Scrum is an iterative development cycle. These iterations are called sprints. Each sprint has a definitive goal which is based on the customer’s vision & business-value. Before going further, let’s consider the below SCRUM cycle: -

 As shown in diagram, there are below steps involved in the Scrum cycle: -
1-     Stakeholders / Product Owner meet the customer & brainstorm the customer’s requirement. They prioritize or outline the work that needs to be done as a product in general & in upcoming iterations (aka Sprints) as specific. As a result, the Product Backlog is prepared. This backlog shows the roadmap & vision of the product.
2-     There are some refinement sessions organized by Product Owner with Scrum Team (Developer, QAs, Architects) & Scrum Master. The story point estimates, dependency, blockers & other required details come to the surface for the user stories which are present in Product Backlog.
3-     Then, Sprint planning comes into the picture. Scrum Master leads this ceremony with Product Owner & Scrum Team. The refined Product Backlog is taken as input for this sprint planning & on the basis of capacity & required business value, User Stories are shortlisted from the Product Backlog to be taken into the sprint. Now, Sprint Backlog is prepared & sprint is kicked-off.
4-     During the Sprint, team works on the Sprint backlog item (finalized in #3) & perform the daily ceremonies. Scrum Master is the responsible to keep team away from distractions & remove their blockers & dependency.
5-     Finally, the team come up with MVP (Product Increment / Minimum Viable Product) which is called the sprint deliverable.
6-     This MVP is demonstrated to the Product Owner, Stakeholder & business people & collect the feedback, suggestions.
7-     Then, Scrum Team with Scrum Master goes to retrospective meeting. It can be considered as “Lesson Learned” meeting where the team members keep trust & respect to each other & feel free to put their concerns before the team.
8-     Product Owner, stakeholders & client meet to discuss the requirement shift or priority shuffling. Accordingly, the changes need to be adjusted in Product backlog. Again, the cycle from #2 runs on. It goes continuously.

This is the complete Scrum Cycle.

Now, after having the understanding of CI/CD & SCRUM, let’s see how SCRUM facilitate the CI/CD in the projects.


SCRUM and CI / CD
We have seen SCRUM, CI & CD in this article & understood these concepts. Now, the question is How SCRUM is the facilitator of CI & CD? Consider the below facts: -
1-     In SCRUM, there is an iterative (aka Sprint) approach to development. In each Sprint, Scrum Team develops the solution & deliver the MVP
2-     Multiple members of the Scrum team work for the same product & share the same codebase
3-     After the iteration, all these newly implemented solutions merged into the original codebase & product increment take place. This product which is ready after the iteration with newly implemented functionality, is called MVP (Minimum Viable Product)
4-     The solution becomes ready to be released to the client after the iteration. It is done after Integration & Acceptance testing.

Along with these facts, consider the below SCRUM cycle again:


The scrum cycle runs in 1-4 weeks’ time window & this is the duration in which Scrum Team develops the solution for new requirements. These members use their respective development branch & transfer the code to Test branch for QA process. QA team collects the multiple solutions from the multiple members & run the Integration Test. All this work is done in the iteration or Sprint. When the QA is successful for all these multiple implementations, this solution is merged into the Master Code base & Integration testing takes place. After this testing, the product is ready to be deployed.

Therefore, SCRUM facilitates the continuous integration because all the development is done into the iterations & after each iteration, the newly developed code is merged into the original codebase without breaking anything.

When the Sprint ends, Sprint Demo ceremony is organized in which Scrum team runs the Demo of newly developed features. This complete Product (Older product, with newly implemented features aka Increments) is always ready to be released to the client.

Scrum ensures that after each iteration/sprint, the product should be able to be released & it is called the Minimum Viable Product. Because it is ready to be released anytime, it facilitates the Continuous Delivery.


Conclusion
Agile has become the culture which ensures that “the change in requirement from client does not go unheard”. Agile made the process so mature that teams are always ready to embrace the change & deliver the product which truly delivers the business value. Agile made it possible by introducing the culture of “Deliver in Iterations”. And, when it comes to working in iterations, CI & CD automatically comes into the picture because these iterations are continuous & in each iteration, teams are continuously integrating the new features & continuously delivering it to the client so that it can generate continuous business value to them.


Scrum facilitate the Sync between Customer’s Journey & Product Journey. AGILE-Scrum & CI/CD are not only the process to develop the product, rather these are the culture of respecting the ‘Changes’ & deliver something which gives multiplied business value.

Saturday, June 9, 2018

Thinking Scrum? Let’s Play RUGBY!




Agile is becoming popular day-by-day. Agile, as a CULTURE, is becoming the lifestyle rapidly. It is exciting to know that agile is being used in all sort of industries like Software, Automobiles & Event management (e.g. - Weddings etc. See my blog - Getting Married? ‘AGILE’ Is Here to Help You!). To achieve Agility, there are number of frameworks available and Scrum is the most famous one. It is more exciting to know & understand Scrum in a RUGBY Way.       



Rugby is a game which follows the same sort of spirit as Scrum does. In Rugby, every member of the team has the responsibility to take the ball & touch the goal post. All the members unite together, play as team & work towards the same goal. Scrum teams, in the same way, unite & work together to deliver the MVP (Minimum Viable Product) after each iteration a.k.a. sprint. MVP can be considered like a Rugby ball.
Both Scrum & Rugby show the same thing:  One Team – One Ball - One Goal!
Except for the subject matter, Agile & Rugby have same characteristics as:

1-    Team Spirit – We, not ME!
Every member of the team shows the extensive amount of team spirit & ultimately these team-spirits & support results in the success. They all are dedicated & accountable to the goal & team. These team-members shows the unconditional support, trust & respect to each other.

2-    Adaptable Team
Both Agile & Rugby teams are highly adaptable. They are not bound to predefined strategies. Whether it is related to change the strategy at the playground or embracing the change as per customer’s requirement, they are accepting these & preparing themselves for these changes rapidly.

3-    T-shaped Skilled Team
These teams are cross-functional. Every member of the team is able to perform any required action & at the same time has expertise in some area.



What AGILE adopted from Rugby?
AGILE is an umbrella under which a number of frameworks fall like Scrum, Kanban, XP & Lean etc. Industries have adopted methodologies out of this list as per their requirements. E.g. – Toyota took Lean & Kanban; ThoughtWorks took XP. As you see in my previous blog, few Wedding planners adopted Scrum. 
Scrum is one of the most famous frameworks. Do you know the roots of SCRUM?

Yes, Rugby has given the concept of SCRUM. Scrum is the style in which players pack closely, play for the same goal & restart (after an interruption/iteration). In the same way, SCRUM is used to achieve goals in iteration by closely packed teams.

AGILE / RUGBY: Roles & Conflict Resolution?
The teams are the group of human & every human is unique. This uniqueness brings the differences among the human and so team-members. So, having conflict is obvious & that is why resolving them becomes undeniable.  
AGILE Teams have 3 roles which have the direct correlation with Rugby teams:



1-    Product Owner: The one who has the vision of product, strategy & what needs to be done on the playground (or workstation)
2-    Scrum Team: Cross-functional team working to achieve the same goal
3-    Scrum Master (or Referee): Performing roles like Facilitator, Information Manager, Conflict Resolver & Distraction Remover that too without having an authority within the team. 

The most important thing in Agile Teams is they are self-organizing teams. No manager kind of role is required because these teams are able to identify their action-items rather than being directed by Manager.

As we have seen the characteristics, roles & the performing techniques both in AGILE & RUGBY teams, it is not wrong to say that both have too much as common & inspired by the same spirit.



Think, Both Agile & Rugby are not like:  One Team – One Ball - One Goal – Similar Role!

But finally, it is not a strategy or planning or management which works alone for AGILE/RUGBY team. What really matters are the Team Spirit, Respect, Dedication, Self-organization, Cross-functionality & Work Towards the Same Goal and are these not creating A CULTURE when combined?     

'Science' of making Teams effective lies in 'Art' of Retrospective

“What is the Retrospective and what do we do in this?” My team asked. “ Apne Girebaan mein jhaankna ” – I replied in regional language. L...