Influence apart from Adoption: How Interaction between Programming and Scientific Practices Shapes Modes of Inquiry in Four Oceanography Teams
MetadataShow full item record
Scientists have been producing and sharing code for decades. Code work done by scientists spans simulation, data processing, analysis, visualization, communication, and data stewardship. Robust instrumentation generates data beyond the scale and comprehension of individuals in their current tools, requiring new approaches to automation and collaboration. Sophisticated web frameworks enable more interactive web portals for displaying data or simulation results to various stakeholders. Educational initiatives that target scientists learning to program are increasingly available, and increasingly reach enrollment limits. Given this context, how is programming in science changing? I argue that changes enacted in scientific programming practices are intended to lead to code that is not only exists and runs for a long time, but continues to be understandable, usable, and extensible. My dissertation examines the interaction between coding practices and scientific inquiry. Although deliberate change is oriented toward this goal, a particular tool or protocol does not require sustained use by a group to have impact on the work practices of that group. In this dissertation, I develop an alternative conceptual framework for reflecting on the goals and outcomes of change. My findings are based on over 300 hours of observation of a total of 46 scientists from four different oceanography groups. Of the 46 scientists, 21 comprise the core study participants, doing code work at graduate, post-graduate, and faculty levels. Of the four oceanography groups I studied, two focus on simulation and two on observational data analysis. All engaged in deliberate, reflective change of their programming skills and practices. In collecting and analysing qualitative data, I focused on "code work" in a broader sense, rather than referring to "scripting," "high-performance computing," "scientific software engineering," "data science," or other more specific terms that imply particular working environments and aesthetics. Maintaining an inclusive scope allowed me to not only draw parallels between these practices, but also to consider ways in which they intersect and influence one another. Particular practices or philosophies can be pervasive through all layers of code work, from maintaining a co-authored LaTeX-typeset manuscript in GitHub, to "adding biology" to a well-established model, to implementing an automated test suite for an analytic pipeline that generates daily results and images for a web endpoint. I propose a conceptual framework of change and use stories from my qualitative study to illustrate its components and dynamics. This framework defines relationships between (1) the working environment, which is subject to deliberate change; (2) the perfect world, which directs that change; and the (3) moment of flux, which constitutes taking action to bring about a change and its immediate outcome. The working environment combines resources that are technical (e.g., iPython Notebook, Google search), cognitive (e.g., looking at many small charts encoding information in a familiar and consistent way to aid quick understanding), and social (e.g., a shared office with frequent "hey, how do you [do a particular tricky thing]?"). The working environment is subject to change, including changes in not only the technical components (e.g., tools) but also cognitive (e.g., skills) and social (e.g., communication practices and language). This change is informed and directed by a collective imagination of a perfect world: the moving target to which possible modifications to the current way of working can be compared. The moment of flux when a scientist elects to pursue deliberate change requires both momentum and opportunity, which can arise in the wake of a breakdown of the prior approach, in the space created by embarking on a new project, or through an energizing workshop or group event. These situations allow the exploration of options that are already in the awareness or intention. Actually making the ``leap'' of deliberate change to integrate an unfamiliar component or learn a new skill is associated with uncertainty and the possibility of disappointment or failure. The conceptual framework I propose creates optimistic vocabulary for reflecting upon these changes. As projects involve more people, longer time spans, and more ambitious collaboration between disciplines, understanding how coding practices influence scientific inquiry is increasingly important. The discussion of "best practices" in open science encourages the sharing of negative results and disappointing data as a top priority. This call for reflection on failure must be extended to include code work. With data as well as with code sharing, repeated "best practices" are not sufficient to inspire change, even for those scientists who openly feel they "should" do it. I present qualitative findings that demonstrate concrete ways to deliver interpersonal rewards in the wake of particular efforts not panning out as well as hoped or intended.