We present research on harnessing of human computation for executing general problem solving via employing such algorithmic constructs as divide-and-conquer and iterative refinement. We take a program synthesis perspective on the creation and optimization of such crowd-centric problem solving. We show how we can use the crowd to decompose problems into subproblems in a recursive manner and then to solve base-case subproblems.