Multiprocessors are now commonplace, and cloud computing is swiftly following suit. While it is possible to write high performance code for these systems, concurrency bugs are extremely common and theoretical performance is often difficult to realize. In order to take advantage of increasing numbers of parallel resources, numerous parallel programming systems have been proposed and deployed, usually without a systematic evaluation of their usability. In order to make both programmers and their parallel applications more effective, we need more useful metrics for measuring programmer productivity and a better way to evaluate such metrics. We posit that usability is a key factor in the effectiveness of a parallel programming system, and that theoretical performance gains can only be realized if programmers are able to successfully reason about their parallel code. Categories and Subject Descriptors