I develop in an environment where we tend to do a lot of A/B testing. I am curious to learn from others on how A/B testing code is managed in your code base?
Do you mix your A/B testing code with your control code (existing functionality). If you do so, how do you ensure the code base from becoming unmaintainable?
Is there a specific design pattern you found to be useful in "forking" out control vs test code?
My current place basically asks front end engineers to keep copy the "entire" front end folder for each experiment and make modifications to it.
- Isolates front end control code vs test. If test code has bugs, control code is not affected. You can turn off A/B test without doing code release.
- Can do ambitious layout changes with this pattern.
- Change management becomes more difficult. If you are running 5 concurrent A/B tests, and makes modifications to the control code, you will have to ensure all A/B tests get the changes made to control code.