Software development, like engineering, is a craft that requires the application of creative approaches to solve problems given a wide range of constraints. However, while engineering design may be craftwork, the production of most designed objects relies on a standardized and automated manufacturing process. By contrast, much of what’s typically involved when moving an application from prototype to production and, indeed, maintaining the application through its lifecycle remains craftwork.