Too Long; Didn't Read
Traditional software engineering methods have been designed and optimized to build high-quality software in a controlled and cost-effective manner. When building software systems that include Machine Learning (ML) components, those traditional software engineering method are challenged by three distinctive characteristics: Inherent uncertainty: ML components insert a new kind of uncertainty into software systems. Data-driven behavior: The behavior of ML components is only very partially determined by the logic that a programmer writes. Instead, behavior is learned from data. Data cleaning, versioning, and wrangling become essential parts of the development cycle.