One of the key claims of Insight through making is that Effective system design requires insights drawn from serious contexts of use. But Great tool-makers are often not great tool-users, and vice-versa, so it’s difficult to create powerful contexts for thinking thorough making. Groups researching tools for thought need enough capacity to build prototypes suitable for serious work. One approach is to closely pair a tool-maker with a tool-user. Ideally they’re deeply immersed in each other’s work, perhaps to the point that they can produce (bad) original insight in their counterpart’s domain.
This approach also allows each person to remain focused and avoid switching costs: Mental states of deep software development and deep research thinking are mutually exclusive.
More on these collaborations:
Brooks, F. P., Jr. (1977). The computer “scientist” as toolsmith: Studies in interactive computer graphics. Information Processing, 625–634.
A toolsmith-user pair has several advantages over a combined user-toolsmith person. First, the user is not distracted by tool-implementation issues and can keep his attention on the research problem. This focus on the end problem helps the tool-building. Second, the implementation of such a tool involves rather sophisticated data representations and operations, and the specialized technical knowledge of the computer scientist is very useful. GRIP-71, for example, offers the user two levels of specialized virtual computer, one for molecule manipulation, and an inner one specialized for abstract 3-D geometry. Third, the toolsmith functions as observer in each session to identify the user’s real hierarchy of goals and to see how these might be more easily reached.
Brooks, F. P., Jr. (1994). The Computer Scientist as Toolsmith II ACM Allen Newell Award Lecture. SIGGRAPH.
How can working on the problems of another discipline, for the purpose of enhancing a collaborator, help me as a computer scientist? In many ways:
It aims us at relevant problems, not just exercises or toy-scale problems.
It keeps us honest about success and failure, so that we don’t fool ourselves so easily.
It makes us face the wholeproblem, not just the easy or mathematical parts. In computational geometry, for example, we can’t avoid the cases of collinear point triples or coplanar point quadruples. We can’t assume away ill-conditioned cases.
Facing the whole problem in turn forces us to learn or develop new computer science, often in areas we otherwise never would have addressed.
Besides all of that, it is just plain fun to look over the shoulders of those discovering how proteins work, or designing submarines, or fabricating on the nanometer scale.