Our company's old production deployment strategy was “land whatever the heck you want on the Git `master` branch, and it will go to production”. As we grew from 15 developers to 250 this started to have some problems. (“Some problems”. Yow!) But what should we do instead? And how to get people to actually do it? Even harder, how do we get them to like doing it? Whatever process we design, people will have to deal with it every day, and if it isn't frictionless they will despise it.
The result was Greenlight, a Git branch merging service. When you want to land code on `master`, you notify Greenlight, which takes care of it for you. Easy!
Making it work was a technical challenge, but getting people to accept it was a social engineering challenge. I'll explain both aspects of this successful project.