The Hitchhiker’s Guide to Engineering AI-Infused Applications
by Andrew Begel
Artificial intelligence and machine learning (AI/ML) are some of the newest trends to hit the software industry, compelling organizations to evolve their development processes to deliver novel products to their customers. In this talk, I will describe how Microsoft software teams develop AI/ML-based applications using a nine-stage AI workflow process informed by prior experiences developing early AI applications (e.g. search and NLP) and data science tools (e.g. application telemetry and bug reporting). Adapting this workflow into their pre-existing, well-evolved, Agile-like software engineering processes and job roles has resulted in a number of engineering challenges unique to the AI/ML domain, some universal to all teams, but others related to the amount of prior AI/ML experience and education the teams have. I will tell you about some challenges and the solutions that teams have come up with.
I believe there are three challenges in the AI/ML domain that make it fundamentally different from prior software engineering application domains:
- Discovering, managing, and versioning the data needed to power AI/ML is much more complex and difficult than other types of software engineering,
- AI/ML model customization and reuse practices require very different skills than are typically found in software teams, and
- AI components do not modularize like software components — models may be “entangled” in complex ways and experience non-monotonic error behavior.
The lessons that Microsoft has learned can help other organizations embarking on their own path towards AI and ML.
Dr. Andrew Begel is a Senior Researcher at Microsoft Research in Redmond, WA, USA. He received his Ph.D. in Computer Science from the University of California, Berkeley in 2005. Generally, Andrew studies the communication and collaboration effectiveness of software engineers in collocated and distributed development. His most recent work has been to help tech companies learn how to work more effectively with autistic software engineers, to understand evolving job roles in the software industry, and to study and facilitate the growing impact of AI technologies on software engineering.