Making data science useful to people
Data visualisation specialist, mainly using R, Python, and D3.
Background in statistics, operational research, and data science.
Author of several R packages (mainly for visualisation).
Co-author of Royal Statistical Society’s Best Practices for Data Visualisation guidance.
Not just:
Can someone else understand it, use it, question it, and build on it?
Imagine the stereotypical data scientist:
git commitEverything happens inside the code.
We often think:
code → computer
But actually:
code → computer
code → future me
code → colleague
code → collaborator
code → user
Who might encounter the code you write?
Write for the people who will have to understand it.
Consider this perfectly functional code:
It works.
But what does it mean?
Past you: “Obviously this makes sense.”
Future you: “WHAT IS THIS?!”
The problem is context. Someone else needs to know:
x represent?Technical reproducibility isn’t the same as understanding.
They probably don’t care whether you used R or Python. And that’s okay.
They might care about:
A data analysis might begin as:
data
↓
code
↓
plot
But the person making the decision sees:
question
↓
evidence
↓
understanding
↓
decision
The code is what makes the analysis:
The code is infrastructure. The communication is the interface.
Analysis
Audience
A chart isn’t the end of an analysis. It’s the beginning of a conversation.
A technical collaborator might ask:
“What’s the uncertainty around this estimate?”
A manager might ask:
“Is this difference meaningful?”
A policymaker might ask:
“What should we do?”
A member of the public might ask:
“What does this mean for me?”
The same data might become:
There isn’t one universally “best” representation.
…and still fail.
Maybe:
Correctness is necessary, but not sufficient.
Good communication doesn’t mean removing complexity.
It means:
Simple communication can sit on top of complicated analysis.
When building for non-technical users, we constantly translate.
Why did productivity change last month?
I’ve built a regression model. Here are the estimates, residuals, and confidence intervals.
Our models show that people who did X increased their productivity slightly, but this may just have been down to chance in who was surveyed. Our estimates aren’t precise enough to be sure.
Should we do anything differently next month?
We sometimes expect non-technical collaborators to learn:
before they can participate.
If I asked you to document this code:
You probably assume I mean “add some code comments”.
!= communicationWe usually talk about reproducibile analysis as:
“Can someone run my code?”
And documentation as:
“Can someone understand my code?”
But there’s another question:
Can someone understand what I was trying to do?
If the answer is:
“Here’s our R code, it’s all explained in the comments.”
Or:
“Read this 47-page technical guide for information about our processes.”
Then you’re building barriers for collaborators.
They’re part of the team. They bring:
Sometimes the person who can’t explain your code is the person who best understands whether your answer is useful.
When we show our work to someone else:
Feedback isn’t just quality control. It changes what we build.
Beginners:
Collaboration doesn’t have to mean:
“Please clone this repository, create a branch and submit a pull request.”
Contribution can mean conversations, comments in Word documents, post-it notes:
All of these are contributions.
One person can build something useful.
A group of people can build something better.
A community can make the process repeatable and maintainable.
Sharing unfinished work with a community can feel uncomfortable.
But publishing code, examples, visualisations and ideas creates opportunities for:
An audience asks:
“What can you show me?”
A community asks:
“What can we make together?”
That’s a very different relationship.
Think about the things that make R more than a programming language:
The technology matters. But the people around the technology matter more.
One dataset. Thousands of possibilities.
People share:
The community learns by seeing what everyone else did.
TidyTuesday is a fantastic example of growing a community by making contribution easier:
Don’t ask everyone to become an expert before they’re allowed through the door.
1. Start with the question.
2. Code for people.
3. Make your (imperfect) work easier to contribute to.