Devops – Integrating team cultures

With time there has been a lot of evolution in the practices that are followed by various teams within a software organization that is either developing products or providing services to develop products. In contrast to a clear boundaries that used to keep different teams separated, there has been a section of people that is working on diminishing these boundaries. People often are calling this group with different names like DevTestOps, DevOps, DevTestSecOps etc. and the most popular being DevOps that should integrate all of these together in one way or other.

What is Devops?

DevOps aims to bring together people with different cultures and philosophies, who share their best practices and continuously learn from each other, to improvise on practices and tools that can help an organization to deliver at a high velocity. In the process it enables them to learn and adapt at an unprecedented faster rate as compared to when they used to work in silos.

How it works?

DevOps aims to remove silos between various teams that are responsible to deliver a product to the end user. These may consist of only development and operations team, but in many cases it does involve test and infrastructure security teams as well (that one can also refer as DevTestSecOps model). With players from all teams coming together to form a single team, this model does boast of removing the bottlenecks quickly and everyone working together to make each other successful. One of the primary objective team has is to optimize the way of working by automating the necessary and redundant practices in the product lifecycle.

Benefits of DevOps

  • Improved Collaboration – With teams working together, there are ‘Zero’ Silos between teams that helps in building a efficient and engaged team culture
  • Enhanced Quality & Reliability – Practices like CI/CD enables quick verification and monitoring with each change of the code that results in enhanced confidence.
  • Accomplished Security – With automated security and compliance integrated into the configuration management system enables security control across the lifecycle
  • Higher Velocity – A platform to build, fail/succeed and deliver fast enables to quickly learn and adapt as per the customer needs providing a competitive edge over competitors

Best Practices to achieve DevOps

Though there is no set of defined best practices to implement a successful DevOps, but organizations have consciously started examining the proprietary practices that have engulfed them since long to identify gaps and most importantly think about getting rid of obsolete methods. With time, some of the best practices that have been adopted by various organization to implement a successful DevOps model are

  • Continuous Integration
  • Continuous Delivery
  • Automated and Continuous Testing
  • Live Monitoring
  • Involved collaboration

Though all the above is true, while implementing DevOps culture, the most important philosophy that will make one stand apart is the ability to ‘Be Agile‘.

KISS Agile Standups

Almost all the IT organizations across the world are in some kind of a race to adopt Agile. Post decision and Agile is selected as the process, the first challenge that anyone faces is to broadcast who is doing what in the team. To meet this challenge,  the best defined solution is to have a daily standup scheduled.

These  Daily standups have become a trend in project teams. The team has an awesome feeling when Agile starts as it seems to be connected. Though some projects master how to organize these meetings, but many of such meetings become a status call and slowly as the projects progresses, team starts losing the steam. People start ignoring it as it becomes time eating meeting, as other ones, and people prefer to complete work rather than giving status.

To resolve this challenge, the only way to keep the momentum going on for this meeting is to “Keep It Short Stupid”.

kiss

Do not let it become just another status call!

Implementing Agile – Understand your ‘Team’ first!

After so many years working and implementing Agile practices in various organizations, I have found that Agile is still new for many. Everyone wants to adopt it, but still.. is not able to adopt it! There is one major piece that people miss and i.e. “The TEAM”. The team that will be responsible to implement it. The team that will make it either success or failure.

Before we decide on to implement Agile, we need to look at the team that we plan to implement it in. An agile team does not consist of just any random set of people. It is not a group of developers, testers, project manager who meet for 15 mins to perform daily standup rituals. It is not the team that plays poker to do product sizing and then do sprint planning. It is not a team that has individuals supporting multiple agile teams.

Let us understand what makes

The Agile Team

An agile team should consist of members with cross functional skill sets that makes the team independent to deliver without waiting on external teams to certify it’s success or failure. These members are dedicatedly allocated to one team, and as a rule, work together to deliver the common goal without moving in and out of the teams.

The team should also understand the core principles of agile very clearly and it should be ready to go beyond rigid organizational boundaries. It should understand very clearly that the software delivered at the end of the sprint should be a working software, that works not at the unit level, but also at the integration level. Above all, it should feel empowered to be Agile.

Once one understand the team and forms an independent team to deliver, then comes the next steps – Team Activities beyond Agile standards. I will cover this in my next post.

Using automation to overcome Agile testing challenges

Using automation to overcome Agile testing challenges

Organizations globally are adopting the Agile development methodology for enhanced collaboration and faster delivery. Agile is a set of software development principles that lays emphasis on individuals over processes and tools, working software over documentation, collaboration over contracts and responding to change over following the plan. Through Agile, organizations can collaborate with their customers by delivering live and working software to them. Despite its benefits, embracing Agile in the Testing practice is not an easy task and fraught with challenges.

Challenges in adopting Agile in Testing

While selecting appropriate tools that are usable as well as flexible is an issue, encouraging the entire team to contribute towards the tests is another problem. Enabling open-source integration and promoting test-driven development are some of the other concern areas in Agile testing.

Agile also brings with itself a few technical problems like difficulties on account of distributed teams and obstacles faced by individual testers within the Agile team. In the case of Agile development methodology, it often becomes tough to keep track of the number and speed of changes in user stories, requirements or the code.

Another issue with Agile is frequently changing requirements. Due to this, the code is refactored quite often.  Agile testing can be further bogged down by the fact that the testing team has to continuously collaborate with other cross-functional and geographically scattered teams.

How Test Automation can help

Test Automation can help organizations resolve the challenges associated with Agile testing.  Test Automation ensures that the application is and continues to be in a good shape with each new sprint. It encourages the Agile development team to collaborate with the testing team, seeing it as a  partner, rather than as Quality Police. Running the tests over and over again gives the development team an assurance that the new code, which was added to the system, does not break or destabilize anything.  It also certifies that the system is working and the new code is doing what it is supposed to do. As Agile teams need to test continuously, Test Automation provides the required speed, and helps ascertain that the feature implemented during a given iteration or sprint is actually deployed.

Think, before starting

Overall, Test Automation is useful in addressing and fulfilling critical testing demands and essential for Agile projects due to their need for frequent regression testing. At the same time, while Test Automation may be needed, just deploying an automation tool is not the solution for an organization.  What companies also need is a proven automation testing strategy and a skilled test team. This involves designing an effective automation solution that supports quicker maintenance, faster ramp-up time and distributed ownership.

Do look at Jim’s comments to complete reading

Webinar – Using Automation to Address Agile Testing Challenges

Agile is being adopted by most of the organisations to achieve quicker deliveries. But, looking at the usage and implementation, they are still struggling to milk the actual benefits that they can reap while being Agile.

Testing is one such area that is making testing teams lose their sleep.

One of my friend and colleague, Garima Mishra, has prepared a 40 mins webinar that aims to showcase how testing teams can  get benefited by Automation and how it can help address the challenges that are usually encountered while testing time-boxed agile projects.

The webinar is scheduled on Nov 30, 2011 at 10 am PT / 1 pm ET

Register to learn more.

Problem on the table

This idea came to my mind when I, alongwith Ajoy Singha and Vipul Kocher, were discussing on the agenda of first NCR Testers Monthly Meet (NCRTMM) that we started in December 2010.The main motivation behind developing this idea was to provide an informal space during NCRTMM where testers can discuss the problems that they face and get the resolution from other testers present in the room.

We have already implemented this in the two NCRTMM and attendees have found it beneficial. The testers  have utilized this space to resolve the problems that they face in their live projects.

This post of mine will provide the complete details about “Problem on the table”.

What is “Problem on the table”
“Problem on the table” defines a space that allows group of testers to interact in a simple and organized way to enable valuable dialogs that addresses the day to day issues that they get stuck with and want some expert help to get them resolved. This space encourages people to discuss and resolve the issues and be more productive within their organizations.

Fundamental Rules

  • No one will control your discussions
  • Whoever wants to provide help is the right person
  • Allow owner of the problem to steer his or her topic in the right direction
  • Always thank individuals whose suggestions have actually helped you

How “Problem on the table” works?

  • Come up with some interesting problem area that you would like to discuss during any NCR Testers meet to ITB NCR Chapter with as much detail as possible.
  • After receiving an email from your side, there will be a space allocated during the meet to discuss about your “Problem”.
  • Anyone attending the meet is free to walk to the designated area for your listed “problem” and provide their frank suggestions.
  • It is upto the owner how they would like to steer the discussion.
  • At the end of the session, the owner of the “problem” needs to present their “problem area” alongwith the best solution, that fits in their context using a defined template.

Benefits of owning “Problem on the table” session?

  • You manage and define your own agenda
  • As most of the test experts from the industry are joining the NCR Testers Meet, there is a high probability that you will be able to find the answer to trivial issues that remain unanswered elsewhere.

Developer and Tester – Can we make them work together?

In the past we were always taught that developers and testers often are the two opposite poles of a product team; they are two different entities that should only collaborate in the form of bug reports and the tester should verify each functionality based on the requirements that are documented.

Today, when I relook at that separation, it sounds dangerous. But it has been the case in many organizations even lately. As it has been sometime since we started working on a platform that will help bridge this gap between developer and tester, I thought of sharing the idea in a webinar and how developer and tester can work more closely without any communication overhead. The webinar is scheduled on 17th Sep, 2010 at 10:00 AM PST. This webinar should give a fair idea on how you can develop your own solution that can bring both the teams together and make them work to achieve organization goals.

Register for this webinar at http://www.impetus.com/webinar?eventid=26