  Cloud services must typically be distributed across a large number of
machines in order to make use of multiple compute and storage resources. This
opens the programmer to several sources of complexity such as concurrency,
order of message delivery, lossy network, timeouts and failures, all of which
impose a high cognitive burden. This paper presents evidence that technology
inspired by formal-methods, delivered as part of a programming framework, can
help address these challenges. In particular, we describe the experience of
several engineering teams in Microsoft Azure that used the open-source P#
programming framework to build multiple reliable cloud services. P# imposes a
principled design pattern that allows writing formal specifications alongside
production code that can be systematically tested, without deviating from
routine engineering practices. Engineering teams that have been using P# have
reported dramatically increased productivity (in time taken to push new
features to production) as well as services that have been running live for
months without any issues in features developed and tested with P#.
