  Knowledge sharing plays a crucial role throughout all software application
development activities. When programmers learn and share through media like
Stack overflow, GitHub, Meetups, videos, discussion forums, wikis, and blogs,
every developer benefits. However, there is one kind of knowledge that
developers share far less often: strategic knowledge for how to approach
programming problems (e.g., how to debug server-side Python errors, how to
resolve a merge conflict, how to evaluate the stability of an API one is
considering for adoption). In this paper, we investigate the feasibility of
developers articulating and sharing their strategic knowledge, and the use of
these strategies to support other developers in their problem-solving. We
specifically investigate challenges that developers face in articulating
strategies in a form in which other developers can use to increase their
productivity. To observe this, we simulated a knowledge-sharing platform,
asking experts to articulate one of their own strategies and then asked the
second set of developers to try to use the strategies and provide feedback on
the strategies to authors. During the study, we asked both strategy authors and
users to reflect on the challenges they faced. In analyzing the strategies
authors created, the use of the strategies, the feedback that users provided to
authors, and the difficulties that authors faced addressing this feedback, we
found that developers can share strategic knowledge, but authoring strategies
require substantial feedback from diverse audiences to be helpful to
programmers with varying prior knowledge. Our results also raise challenging
questions about how future work should support searching and browsing for
strategies that support varying prior knowledge.
