Ex Valve dev on CS:GO’s codebase
One of the best, and first, things we did when starting our machine learning platform was to design it using a plugin architecture. There&#x27;s a lot of scar tissue and horrible experience through our previous ML products we built for enterprise.<p>Namely, it was extremely hard to onboard new developers to work on the product. They had to understand the whole thing in order to contribute.<p>Changing something was also hard, since it was intertwined. Adding a feature or <i>removing</i> a feature was hard. Especially given the fact we were not designing to spec, and the domain experts we were building for could not give feedback. That was a constraint outside of our control, so we were building for users we never met based on what we thought would make sense.<p>The first commits on our own platform were to establish a plugin architecture. There&#x27;s a core, and there are plugins. We could add or remove functionality changing a config file. Applications are plugins and onboarding is easy and smooth, since a junior developer can start working on one plugin and then expand their knowledge.<p>We&#x27;re reaping the rewards of that.