(This article is the second in a series. The first one is over here.)

There’s a heartbreaking vertical/horizontal dilemma when we embark on ambitious software projects. Should we focus on a small number of cherry-picked use cases and build the best version of those we know how to, or invest effort in platform facilities that will make future, as yet unforeseen, use cases radically easier to deliver?