You need to make sure that any random commit doesn’t break the development environment for everyone, that the machines that compile code are up and running, and that mysterious bugs are found and routed to the correct engineer to fix before a new version is released to the world. Every code change and every new version requires you or someone on your team to do a piece of work. Now imagine you’re the engineer responsible for maintaining the code platform. Ideally, you write some code, add it to the codebase, have it tested automatically, and then release it immediately to some users so you can gather feedback and iterate. You could set up user studies, but these are relatively expensive and slow, and are a statistically small sample size. Each individual change you make might be relatively simple, like a tweak to the CSS changing the size of a font, or more substantial, like enabling the Badge on a new file type. You want to get quick validation on the functionality and utility of the feature. Imagine you’re an engineer working on a new product feature that is going to have a high impact on the end user, like the Dropbox Badge.