In the waterfall development model, a project is broken down into a set of sequential phases, – e.g., conception, analysis, design, construction, testing, deployment, maintenance, – each dependent on the completion of the previous phase. Such a model is most appropriate for complex engineering projects, like bridges, airplanes, and computer hardware. It’s also quite applicable for mission critical software and infrastructure projects where security, availability, scalability and other ilities are paramount.
But, a serial, orderly approach isn’t appropriate for projects where time-to-market, usability, and flexibility are the highest priorities. For such projects, an agile development approach is much more suitable. Key to the agile approach is the involvement of the product’s target end-users early in the process to make sure that the product under development is responsive to their requirements.
Agile development is evolutionary in nature, based on the early availability of experimental prototypes, user feedback, continuous improvements, and rapid responses to technology, market, and user requirements. It’s not surprising that agile software development took off in the 1990s, when the explosive rise of the Internet brought millions and millions of users online, lots of new user-oriented applications, and short time-to-market cycles in response to fierce competition.
Our increasingly sophisticated smart machines bring with them a whole new set of development challenges. These AI-based systems are generally software-intensive, user-centric, and data-driven. Their complexity goes way up the smarter we want the systems to be. The behavior of an AI system based on machine learning depends on the information we use to train its algorithms rather than on the precise set of software instructions that tell the computer what to do.
AI systems are designed to sense, respond and adapt to a changing environment. Their development feels sort of like bringing up and sending a teen-ager into the world. Given that we want them to be able to handle unanticipated situations, they must have a fair degree of flexibility and autonomy. But, it’s hard to be sure that the system (or the teen-ager) will always behave the way we’d like them to.
In June, Adobe announced Technology Previews, an agile development approach for building AI-powered solutions. According to Adobe, agile development is particularly well suited to AI-based products and systems, where it’s important to involve users early in the development cycle to help test, refine and improve the AI features in the product by sharing their real-time feedback with the development teams.
By engaging directly with users, Technology Previews lets Adobe researchers quickly validate the quality and value of a new idea before committing development investments. First, the researchers create a test-bed prototype of the new AI features in Adobe’s cloud. Each user participating in the evaluation then logs into the prototype, agrees to a Non-Disclosure Agreement and is shown a tutorial of the product and it new features. Once ready, the users start interacting with the prototype.
The AI-based prototype works with and is trained by each user’s own production data, so each user may well have a different experience. Once done interacting with the prototype, the users provide specific feedback on feature value and ease of use, answering questions such as: did the prototype meet your expectations?; was it easy to understand and use?; and, would you like this feature incorporate in a future version of the product? Based on the overall users’ feedback, Adobe’s development teams are better able to decide whether the new feature should be incorporated into the product’s roadmap, and if so, what priority it should be given relative to other features in the development queue.
“In legacy applications, testing is focused on logic and feature operation, both of which are quite finite,” noted John Bates, Adobe’s Director of Product Management. “However, with AI-powered applications, the testing process must fundamentally change. Optimizing algorithms requires that they be tested by many users to ensure they work across many different scenarios… The development process for next-generation AI- or machine learning-enhanced software had to evolve to include the ability to test and gather input in a manner that would consistently deliver outstanding solutions. We have moved from the waterfall process into agile processes. With Technology Previews, we can now use agile processes for AI-powered solutions.”
Initially, Technology Previews will be used to evaluate solutions based on three kinds of AI features: helping brands understand how their customers interact with their product as they move across screens by surfacing insights that may not be clear with the naked eye; identifying the ideal audience for a company’s product by leveraging machine learning to automatically cluster customers into groups based upon expected preferences and behaviors; and accelerating a brand’s ability to predict a customer’s future needs and wants using deep learning capabilities.
Technology Previews is a win-win, said Bates. Customers get early access to the latest technologies while Adobe benefits from their feedback. “We help our users have more influence and become a virtual product manager. We can see where are we going to further innovate and further invest for future solutions. It all depends on the feedback of our users.”