  To make microtask programming more efficient and reduce the potential for
conflicts between contributors, I developed a new behavior-driven approach to
microtasking programming. In our approach, each microtask asks developers to
identify a behavior behavior from a high-level description of a function,
implement a unit test for it, implement the behavior, and debug it. It enables
developers to work on functions in isolation through high-level function
descriptions and stubs.
  In addition, I developed the first approach for building microservices
through microtasks. Building microservices through microtasks is a good match
because our approach requires a client to first specify the functionality the
crowd will create through an API. This API can then take the form of a
microservice description. A traditional project may ask a crowd to implement a
new microservice by simply describing the desired behavior in a API and
recruiting a crowd. We implemented our approach in a web-based IDE,
\textit{Crowd Microservices}. It includes an editor for clients to describe the
system requirements through endpoint descriptions as well as a web-based
programming environment where crowd workers can identify, test, implement, and
debug behaviors. The system automatically creates, manages, assigns microtasks.
After the crowd finishes, the system automatically deploys the microservice to
a hosting site.
