The way in which academic software is developed differs starkly from the way that software is engineered in industry. In this article, I summarize the main differences between academic and professional software development and reveal how academics can up their game.
Inference is concerned with learning about the data generation process, while prediction is concerned with estimating the outcome for new observations. These contrasting principles are associated with the the generative modeling and machine learning communities. Here, I showcase the differences and similarities between the two concepts and offer insights about what the practitioners from both fields can learn from each other.