How Scientists Use Jupyter Notebooks: Goals, Quality Attributes, and Opportunities
Ruanqianqian Huang, Savitha Ravi, Michael He, Boyu Tian, Sorin Lerner, Michael Coblenz
TL;DR
This paper investigates how scientists use Jupyter notebooks by conducting an observational study of 20 participants across computing and non-computing domains. Using constructivist grounded theory, the authors identify eight non-functional quality attributes—clarity, reproducibility, explorability, debuggability, reusability, correctness, performance, and collaboration—and eighteen tactics that scientists deploy to promote these qualities, revealing nuanced trade-offs between exploration and explanation. They also document widespread AI-tool usage within notebooks and discuss design opportunities for improving notebook usability, notably through modularity, better state/dependency management, and refactoring support to facilitate transitions between exploratory and artifact-oriented work. The findings challenge assumptions about notebook usability, highlight domain-specific priorities, and offer concrete design directions (e.g., per-cell scopes, parallel evaluation, dependency packaging, AI integration) to enhance reproducibility and reuse for scientists. Overall, the work provides a theory-driven, evidence-based foundation for evolving computational notebooks toward more flexible, reliable, and collaboration-friendly tools tailored to scientific practice.
Abstract
Computational notebooks are intended to prioritize the needs of scientists, but little is known about how scientists interact with notebooks, what requirements drive scientists' software development processes, or what tactics scientists use to meet their requirements. We conducted an observational study of 20 scientists using Jupyter notebooks for their day-to-day tasks, finding that scientists prioritize different quality attributes depending on their goals. A qualitative analysis of their usage shows (1) a collection of goals scientists pursue with Jupyter notebooks, (2) a set of quality attributes that scientists value when they write software, and (3) tactics that scientists leverage to promote quality. In addition, we identify ways scientists incorporated AI tools into their notebook work. From our observations, we derive design recommendations for improving computational notebooks and future programming systems for scientists. Key opportunities pertain to helping scientists create and manage state, dependencies, and abstractions in their software, enabling more effective reuse of clearly-defined components.
