The topic of this talk came about naturally from a 6+ month project in collaboration between IBM Watson and IBM Research in which we had to find an efficient way for engineers to be able to iterate on system design while researchers iterate on the state of the art, without losing significant time to friction in the process itself. In this session, we share our approach to scaling a scrum-like development process across teams with different incentives and backgrounds, in our case research and engineering teams; by designing and implementing a microservice-based system architecture in which concerns that are specific to or play to the strengths of one team are hidden behind component boundaries with simple RPC APIs, such loosely coupled teams were able to effectively work together to deliver a cohesive, state of the art product. Although we took this approach to enable collaboration between research and engineering teams and will discuss some points specific to that situation, we believe that the approach generalizes to collaboration between teams that generally have different disciplines or specializations; we discuss lessons learned, observe useful patterns, and derive principles to generalize the approach.