A "mature Agile practice" may not be the first thing that springs to mind when asked what makes mobile projects succeed. But according to mobile expert Carlo Cadet, Agile maturity is the crucial underpinning for mobile development.
Cadet is director of product marketing at mobile test firm Perfecto Mobile, in Woburn, Mass. When I asked him what it takes to make mobile projects work, I expected him to talk about things most of us have heard before: how to test on many different devices; dealing with the insane rate of mobile updates; or how to test for the wide array of conditions in which phone and tablets are deployed.
Addressing mobile test challenges is important, of course, and Cadet touched on them briefly. But he also answered the question in a way I had not anticipated, focusing on how a mature Agile team establishes a strong foundation for mobile development and testing. "When you are testing on 26 devices, there is a need for Agile maturity," said Cadet, a computer scientist by training. "To cleanly manage what is going on, you need to understand where all the moving parts are coming from."
Cadet defines a mature Agile team as having: high levels of automation for testing and deployment, a disciplined approach to managing test code, and hiring strategies that ensure a steady stream of skilled software pros -- even as needed skill sets change over time.
In this edition of Quality Time, I share Cadet's take on mature Agile practices -- concepts that apply to all software development projects, not just mobile apps.
Increasing software test automation
Carlo Cadetdirector of product marketing, Perfecto Mobile
Cadet noted that many Agile teams still operate with only a marginal level of software test automation. "There seems to be a glass ceiling," he said. Teams start with automation projects, then make do with less than optimal levels. Mature Agile teams push through that glass ceiling. They understand that test automation projects are challenging and they work hard to overcome obstacles, such as finding the right tools and acquiring new skills. You cannot develop a mature Agile practice without increasing automation levels, Cadet said.
Agile maturity matters not just for teams pursuing mobile projects, but also software organizations moving toward continuous delivery.
Developing people and skills
One thing that makes it hard to achieve higher percentages of automated testing is that the skills automation projects require are often in short supply. To write automation scripts, testers need basic programming know-how. And many professional testers lack that expertise.
From books to courses to learning from peers, there are plenty of ways to acquire the necessary skills. But the bigger picture is this: A mature Agile team understands that investing in people and skills is crucial to delivering the software their customers want. "We are always building up expertise, then losing expertise," Cadet said. Consultants and outsourcers come and go, staff rotations are a fact of life, and the need for new skills continues to emerge, he added. Mature Agile teams anticipate that. "Organizations need to be less afraid to attract the workforce for the next stage of evolution."
Treating test and production code the same
Another hallmark of a mature Agile team is treating test code -- scripts that automate the test process -- the same way they treat production code. "Many people [make do with] spaghetti code for automation code," Cadet said. But a mature Agile team applies SDLC practices, such as version control, to the test side of the house. In other words, the team takes software test automation seriously. They commit to making it work.
To sum it up, a mature Agile team shares the following traits: they work to achieve a high percentage of automated testing; they invest in the people and skills essential to software development; and they take a disciplined approach to managing test code.
Perception vs. reality in mobile testing
Ten myths about Agile development
Take Agile beyond software development