Thursday, 16 July 2020

One Language One Team #wethepeople


Process

Process is nothing but a natural phenomenon marked by gradual changes that leads to a particular result. For e.g., Handling of paper, records, etc. by systematically organizing them. Here, I want to highlight need of Lean-Agile Teams by implementing "One Language - One Team" mindset.


Key Process evolution in IT industry
In Software or IT industries, Waterfall model based processes were used extensively for more than 3 decades which focuses on delivering product at once. As IT industry evolved and became competent, demand raised to speed up Time-to-Market and increase efficiency to adapt the changes. This brought up Agile - a iterative based process model and first major process transformation begun in IT industries.

Agile provided different flavors of Agile- Framework like Scrum, Kanban, eXtreme Programming, TDD, BDD, etc to resolve different development challenges to achieve better Time-to-Market and deliver values with agility. From past 1.5 decades, Agile is way of working in most of IT industries and proven effective at team level.


Processes impacting way of working

Changes is SDLC execution process also affects team's way of working and team members mindset. Let us have a look how working of team changes with the processes at glance.

While working in Waterfall, Development Team used to have team members which focuses on a system block/layer like Front-end/UI Layer, Middle-ware/Business Layer, Back-end/Database Layer, Testing, Business Analysts, etc. having responsibility of specific component or task. Generally, Team member of component specific development team used to call as Expert or SME. Waterfall Team model works well and yield appropriate results where requirement is fixed.

This Team behavior also get changed when organization moved to Agile and Development Team is now a Cross-Functional and self-organizing Team having team members who focuses on end-to-end execution of a Product feature or a complete system flow from requirement clarification to development to testing. Development Team member generally called as Full-Stack developer along with participation from Scrum Master to ensure everyone align with Agile processes and Product Owner to provide business knowledge including requirement. Agile Team model works well if there is requirement to increase change adaptability and where documentation is not a priority.

Lean-Agile Mindset Team

Presence of IT is increasing drastically in all non-IT market segments and it is helping them to grow substantially. Innovation and Continuous Improvement are now need of every industry to be competent in market, especially, when world is facing pandemic situation. Hence, organization must improve their way of working to support need of an hour to better support evolution of their product/services. 
On other hand, as organization getting more Agile, the number of Agile teams are also increasing that demands more collaboration and synchronization. What if multiple teams are working on same product or large and complex project? Will Agile slow down the pace? These challenges gave birth to Agile at Scale concept. With the help of Agile at Scale frameworks like SAFe, LeSS, etc, organization somewhat tested success to implement Agile across organization and established co-ordinations between Agile teams. Having said that, only adopting these frameworks is not good enough and organization have to restructure framework as per need while eliminating wastes. Thus, organization must start using Lean-Agile Principal based processes that will help teams to focus on providing greatest value to customer, continuously identify ways to reduce the waste and work together as One Team.

What One Language One Team Must do?

Teams that speaks one language can be grouped together which will yield expected results. Here "One Language" does mean not speaking language but purpose for which they are working or anything that can bind them together so that they can understand each other and grow together. "One Language" can be anything like;
  • Programming Language - Multiple teams using same programming language (like Java, C#, Python, etc) to develop different features. For e.g., C# to Develop UI layer, Business layer and Database layer is used to develop multiple products or features by 2 or more teams, and all together called as "One Team" capable of executing anything using C# language. Thus, here "Language means C#".
  • Technology Stack - Same technology stack (like Microsoft, Java, Cloud, DevOps, Automation, Big Data, etc) consist of multiple different tools to complete one end-to-end flow or segment. For eg., Different DevOps tool like Azure DevOps, AWS Pipeline, Hybrid DevOps implementation consisting different open source tools to implement DevOps cycle. These teams together form one team capable of implementing full DevOps cycle using any tools. Here, "Language is DevOps".
If a team member within the team is expert or highly skilled in one tool or programming language then s/he should share their knowledge within team in such a way that other team member benefit and develop capability to perform same task. Every team member is dedicated to execute cycle of "Plan-Build-Test-Release-Measure-Validate-Learn", defining progress as delivering great value to customers, bring Innovation and work together for optimization, reducing risk and reducing waste. As part of implementation, Teams must set ground rules which are not limited to;
  • Share Agile event cadence: Every team must agree on same Agile team practices like Sprint weeks, Definition of Ready & Done, Retrospective, etc in a cadence.
  • Share Technology vision: Every team will define and abide with technology best practices like Coding guidelines, Branching strategy, Architecture blueprint, etc to develop system
  • Plan together: Team should follow Business and Technology vision to develop backlogs and work plan together. Team should be aligned with Release plan. Release independently wherever possible.
  • Improve Collaboration: Collaborate frequently and at regular interval. Use collaboration tools like MS Teams, Slack, etc which helps to increase information sharing, resolving dependencies and ambient awareness of each other’s work.
  • Retrospect together: Retreat and retrospect time-to-time. Self-manage and brainstorm on system improvements. 
  • Trade-off: Adapt agility and team members should be in position to move to new roles to service most critical work streams. Multiple teams can move team member as per bandwidth and emerging priorities. Consider below two scenarios where Trade-off can be done. 
    • Bandwidth Trade-off: Sometimes, team completes work items within sprint before time and team member left with some bandwidth. As per Agile practices, Scrum Master and Product Owner works together to have work item for available team member. Work item might be from future sprints, if planned already, or from backlog of specific release. If there is none, team member's either asked to perform peer programming or learning. However, great values can be achieved if bandwidth added in "Trade-off" bucket so that another team can consume this bandwidth to achieve their current sprint goal.
    • Deep Skill Trade-off: Sometimes, team want deep skill resource to solve complex problem and team lacks or have less such bandwidth to complete a story or task within sprint. In these cases, other team can swap available deep skill team member for a sprint with other team such that both teams will be in position to accomplish their respective sprint goals. 
  • Share knowledge: Team should learn together and share knowledge with each other. Participate in Design thinking sessions and engage in innovative solution to solve business challenges.  
  • Demo & feedback: Team should provide demo on work done with other teams in regular intervals. Also, share feedback received from customer with other team so that same can be utilized to improve overall performance.   

Conclusion

There is nothing like Perfection while doing Lean-Agile. It has different ways to implement it and it varies from organization to organization. Company leadership team must adopt Lean-Agile mindset way to increase agility, innovation, and continuous improvement from core of organization.

At the end, the Lean and Agile together will thrive. It improves operating architecture and organizational models to enhance coordination between agile teams. Also, it helps to achieve faster Time-To-Market and results into great values.

1 comment:

  1. very well explained, covers every bit of the chosen topic

    ReplyDelete

One Language One Team #wethepeople

Process Process is nothing but a natural phenomenon marked by gradual changes that leads to a particular result. For e.g., Handling o...