Adoption and Effects of Software Engineering Best Practices in Machine Learning - Supplementary Material
The increasing reliance on applications with machine learning (ML) components calls for mature engineering techniques that ensure these are built in a robust and future-proof manner. We aim to empirically determine the state of the art in how teams develop, deploy and maintain software with ML components. We mined both academic and grey literature and identified 29 engineering best practices for ML applications. We conducted a survey among 313 practitioners to determine the degree of adoption for these practices and to validate their perceived effects. Using the survey responses, we quantified practice adoption, differentiated along demographic characteristics, such as geography or team size. Our findings indicate, for example, that larger teams tend to adopt more practices, and that traditional software engineering practices tend to have lower adoption than ML specific practices. Also, the statistical models can accurately predict perceived effects such as agility, software quality and traceability, from the degree of adoption for specific sets of practices. Combining practice adoption rates with practice importance, as revealed by statistical models, we identify practices that are important but have low adoption and practices that are widely adopted but are less important for the effects we studied. Overall, our survey and response analysis provide a quantitative basis for assessment and step-wise improvement of practice adoption by ML teams.
The supplementary material consist of the questionnaire (Questionnaire.docx), the data (csvs/exports-clean.csv) and the code used to process it. The Readme.md file contains all the information for running the scripts.