Hadley Wickham | Letter to a Young Maintainer | Monktoberfest 2019

Share via Twitter Share via Facebook Share via Linkedin Share via Reddit

Get more video from Redmonk, Subscribe!


Thanks, Steve. So today I want to kind of give you all some advice that I wish someone had given me, you know, 10 or 15 years ago when I started developing open source software. But I think even if you don’t develop open source software, many of the same messages hopefully apply as well. So I’m going to start by talking briefly about my background and maybe why you should listen to me, and then follow up with a slide about why you shouldn’t listen to me, and then dive into the advice.

So —

Possibly the thing I’m most famous for is ggplot2, but what my day job is to make open source tools that really empower data scientists, primarily data scientists who use R. So I also manage a team of open source developers at RStudio, and as I’ll talk a little bit later, I also write a bunch of books about that.

So why shouldn’t you listen to me? Why might this advice not apply to you? I wanted to start with kind of a few threats to the external validity of this talk, and the first one is that I come from very much a place of privilege. Of mostly unearned privilege, being a white guy. And I’ve tried to be aware of that. I think one piece of advice that I used to give, which is great for me, but not so much for everyone, is that to make mistakes in public. I think this is a really a place where I benefit from my privilege, because if you’re a white dude and you make a mistake in public, people are like, “wow, he is so brave!”

Whereas if you’re a woman or a person of color, another minority and you make a mistake in public, people are like, “what an idiot.” So I try to be aware of this, there are so many things I’m not aware of, but I try to do my best to give advice that’s applicable to everyone.

I think another big threat to the validity is I am now paid full-time to work on open source development. This is now my job. This is something I can turn off the computer the a the end of the day and I don’t have to think about it. And I think that — and I’ll talk about this a little bit later, but I think that also has had a tremendous impact on my ability to kind of steadily do this work, like year after year.

I think also the R community is a little bit different to other programming language communities, primarily because R is a programming language that is used primarily by non-programmers, and I think that makes the community a little bit different and I think, a little bit more awesome in my admittedly biased opinion. Certainly much more diverse than other programming language communities both in terms of what the people look like and what people do with R.

And finally as a statistician, I feel obliged that I have to warn you this is a study of n = 1. This is strictly my opinion.

So with that done, my first piece of advice is pretty trite: it really is a marathon and not a sprint. If you want to have an impact on the world, I think you need to be prepared to work on problems for years at a time, potentially.

And so I’ve kind of four bits of advice around that, or four sort of loosely organized thoughts around that.

First of all, like, money is actually important, right? I don’t think you should be — I strongly believe you shouldn’t be optimizing your life to maximize your income, but having enough money so that you don’t need to worry about making ends meet is a tremendous reliever of stress.

Now, I can’t really offer much advice here, because my career has been tremendously lucky that I found a company that’s so closely aligned with my goals that I don’t think my experience generalizes at all. But a few years ago I really enjoyed this book by Cal Newport called So Good They Can’t Ignore You about building up career capital that you can trade in to get the types of things you want out of a job or out of a career.

Then if you’re thinking about the long haul, you’ve got to think about your mind and body, as well. I think it’s really important to have some kind of regular physical activity. I do yoga, I love doing yoga. You know, I don’t think it matters what you do, except that if you’re thinking about having an impact in like in even open source coding, you have to think about how am I going to make sure that my body is going to hold up for ten years of typing and hunched over a computer.

I also think it’s valuable to think about the mind. One of the things that I found helpful is learning a little bit about cognitive behavioral therapy particularly through this book called Feeling Good. Like having some understanding of how emotions work and how you can work with your own emotions I think is really, really valuable. I’ll come back to this a little bit later in the talk about criticism, because I think that’s a really — that’s probably the place where I use these ideas the most.

And then I wanted to talk a little bit about kind of like ritual and habit and how do you — like sort of free yourself from not having to be like, rah rah rah, excited about everything you’re doing, so again you can maintain this pace. So I have a few quotes that I’ve found kind of effective. I think the first thing is most people’s mental model of motivation is wrong. You think that you start with motivation and then you do work, but I think that is completely the wrong way around. The way you get motivated is by doing something and so if you just sit around waiting to get motivated, you’ll never get motivated. And kind of relatedly, if you’re procrastinating a bunch, it’s not actually a time management problem, it’s an emotion management problem.
So I think this is where the sort of learning about emotions, learning about cognitive behavioral therapy is really helpful for me. If you don’t want to go that far, one really great technique of dealing with procrastination is structured procrastination. When you procrastinate, you normally do something, you know, you scrupulously clean the house or something. The whole why of procrastination is you find something worse an make that the thing that you should be doing and then you’ll do the other thing. It’s a pretty effective technique.
And for me, like one of the ways that this — I think one of the things that’s been really important for me is just building up like habits so you don’t have to think, you don’t have to be motivated. Like I’m not motivated to go to yoga every day, an alarm goes off on my calendar and I just go, like, I don’t have to think about it. And one of the things that’s been really effective for me, as well is I have a really regular writing habit, so I write for an hour or so every day in the morning and I don’t have to think about it. That’s now you a habit I just do and that’s basically allowed me to write a book a year for the last five years. Now I’ve given this advice about writing, writing a book is really, really simple, all you have to do is write for an hour every day and after a couple of years you’ll have a book.

But this is sort of the worst sort of advice, because it’s really simple, but it’s not at all easy. It’s really hard to do this and no one to my knowledge has successfully followed my advice for writing a book. But this is what’s worked for me, but the idea of the — this is just a habit, I’m not excited necessarily about writing these books, but I have this habit, so I just do it day after day after day and if you keep doing that, after a while, you end up with something significant
And a few years ago I really enjoyed leading this article in A List Apart about having habit fields and building these sort of things where you train yourself to associate with a physical space with like a mental activity and so when you get in that space, that mental activity just kind of happens. Again, you don’t have to be motivated, you just do it out of force of habit and I think this idea of doing rituals and habits are really, really important so you don’t have to maintain that really high level of motivation in the long term, because that’s basically impossible.
I think it’s also really important to be very deliberate, very careful in your use of social media, so personally I use Twitter a bunch. It can be tremendously energizing, like interacting with people who have benefited from my work is something that keeps me motivated. It’s really useful like polling the community like do you experience the same thing, what should I call that and to learn about problems and keep up to date. But at the same time it’s a really rich source of distractions and FOMO. I am convinced that the KPI of Twitter is outrage. But this is what Twitter is optimizing for. They want you to read the tweets you see and get ohhhhh and so you have to hammer out a response. So you have to do everything you can to avoid that, I think, do not avoid Twitter’s clients are terrible, they’re not optimized for what you actually want to optimize for. And as I’ll talk about shortly, Twitter is actually a great place to get insulted. So I think on the whole Twitter is really important to me, I think kind the key thing is that you do not have a moral duty to listen to everyone. Like, you should keep your eyes and ears open for criticism, but you do not need to relentlessly expose yourself to people who do not like what you are doing, and you should, like, mute early and incredibly often, like if you’re not muting — I don’t know, I mute a lot of people. I’m muting like multiple people a day.
And then my last piece of advice is like for everything, turn off notifications. Again, this is — I’m in a career position where basically no one ever needs to get in touch with me immediately, so I do this ruthlessly. I know not everyone is in that position, but everything can you can do to reduce the number of interruptions you can get during the day, anything you can do to increase the amount of time you spend deeply focused on like the hard problems is really, really valuable, so turn off as many notifications as you can possibly stand to.
And so that kind of leads me to my next point, which is, I think, particularly if you’re an open source developer or doing anything in public, really, I think one way you know that you’re succeeding is people are going to criticize you.
So I’m going to show you like three kind of recent criticisms of my work that really got under my skin and then talk a little bit about how I try and cope with them.
So the first one is a lot of — I’m going to talk a little bit more about marketing later, but this criticism is basically nothing like what I’ve worked on the Tidyverse, it hasn’t become popular because of quality, but because my company has spent a bunch of money promoting it. This is annoying, because it’s untrue, like, my company has not spent a bunch of money. And this is just something where I’m like, uhhhhh and another one is it’s just a marketing term.
So we’ll come back to that later, but please don’t.
And this is one of my favorites, because they used this neologism, the toadyverse instead of the tidyverse.
It’s a skill. You can get better at it. I think my biggest piece of advice is you need to find a community of people who are totally supportive of you, you know, friends basically and vent to them in private. There’s basically no — it’s not worthwhile to vent in public, because it just gets people more engaged in the whole thing, you’re increasing the amount of outrage on Twitter and so I think you should vent in private, like get those emotions out to people you trust and then respond as gracefully as possible in public, and maybe that’s, you know, maybe the most graceful thing you can do is do nothing, and that’s fine, too, and maybe you just have to mute that person and move on with your life. But I think generally like there’s also — there’s — not only what you should do, which is again, like easy to say, but like how do you — how do you handle like your own feelings? Like, how do you get to sleep at night when you’re like, so wound up with unrelenting rage that these people have said such horrible things about the work that you’ve poured your life into, and to me, I think some of those techniqueses of CBT, like the thoughtfully questioning, well, like, what if it is true? Like, what’s the worst that can happen? And I think — — I don’t know, I really feel like a lot of open source maintainers could really benefit from like a good relationship with a therapist to like kind of —
Deal with these issues like yourself and not like impose them on the community.
Another really great talk, kind of related to this is by Evan Czaplicki, which I believe is the hungarian pronunciation, and I apologize if he pronounces it the American way, about the hard parts of open source.
Like the technology is easy. People are hard.
Another thing that’s easy is to get into this trap of is like following the numbers. Like you are not your Twitter followers, you are not the number of GitHub stars you have and I think particularly amongst technical folk, it’s easy to kind of narrow in on these numbers and focus optimizing those numbers, because optimizing a number is like an easy thing to do, but I think as soon as you take a metric, a good metric and try to optimize it for that metric, you end up optimizing for something you’re not actually interested in.
So I really like this paragraph from letters to a young poet which is kind of the inspiration of the talk title: So this Rainer Maria Rilke wrote these letters, this is what he wrote back. There’s something like — how you have to know in your heart that what you’re working on is good and you should try as much as possible to avoid relying on external signals to validate yourself.
And I think this just, to me, applies so beautifully to open source code, as well, like, a piece of art is good if it’s born of necessity, right? A piece of software is good if it’s born because you need it, and then want to share it with the world. Like, it doesn’t matter if other people don’t like it, like, whatever! If it makes you happy, that’s really valuable.
Now, at the same time, I think there’s a sort of tension between getting the right amount of external data. Like you don’t want to just be hovering, like shut in a tiny little ivory tower or a cave where you’re just pursuing your version of genius, but you don’t want to be completely reliant on what other people are telling, you as well.
Particularly my own work, I think one of the things that I struggle with is I think part of my job is to like find the problems that no one has a name for, and like name them.
And so that you can then talk about them and think about them.
And this means, like it’s very hard to ask people what they need, because like they don’t know. They don’t have a name for it. So you can’t rely a hundred percent on the same data. People can’t articulate actually what the problem is, that’s the reason focus groups fail. But at the same time you you don’t want to relentlessly follow your own vision, so you don’t want to end up with something that makes you the smartest programmer that ever existed but doesn’t help anyone else.
And finally marketing has a bad name in academia and in software development, but like if you build the most amazing piece of software and don’t tell anyone about it, no one is going to use it. Like, this just seems like so obvious to me, like your work, the impact of your work is a product of the quality of your work and how many people use it.
And I don’t think marketing is not about like putting lipstick on a pig, it’s not about taking subpar work and tricking people into using it. I think marketing is also about putting yourself in the mind of a newcomer and saying, how can I explain my work to you, in a way that you can understand and then benefit from.
So I think for whatever you produce you should answer the following questions. These are kind of aimed at software, you know, what does it do? I read Hacker News a bunch, probably like a bunch of you, and often I go to the page and I’ll read it and I have absolutely no clue what the point of this is. Like, what language is it written? , what problem is it trying to solve? So thinking when someone hits your website or your Read Me is answering these questions of what it does and why should anyone care.
I think it’s also important of what can I trust. Giving some kind of indicators that the person cares about the craft of software development, software engineering, not just producing a pretty website. And then making it as easy as possible to get it from the internet onto your computer. I think the metric of kind of time from reading about something cool and actually using it on your computer is a really valuable metric to optimize, because if you can make that as short as possible, people can see your work and try it out and see if it’s for them very, very quickly.
And then some hints, I think really if you’re writing code, like show a few code snippets, so people can get a feel for the interface without having to read a ton of documentation and I think really valuable to position your work relative to our projects. Doing this is kind of genuinely and honestly as you can. If you can’t concisely enumerate the key benefits of your competitors, like I think that’s a bad place to be in. Like you should be able to el is people on — you should be able to tell precisely why people shouldn’t want to use your product or use something else and because that will help you understand what problem you’re trying to solve.
If you’d like to learn more about marketing, I found like Seth Godin really helpful. A lot of this stuff I’ve read, I don’t know, in kind of the early to mid 2000, so all of my references are a little bit dated now. But I think all of this stuff is — these big ideas don’t change much over time.
So to kind of sum up, the things that I kind of think about, like every day, while trying to have an impact on the world through open source software for data science, like this idea that it’s a marathon, that if you want to have an impact on the world, you have to be prepared to put in potentially years of work and think about that, like, how do you maintain your physical body, how do you handle your mind and your emotions and then working out what are habits you can create in your everyday life in order to — so that you don’t have to stay, like, rah rah rah motivated the whole time. I think equally the other thing is like figuring out how to break bad habits you have. One of my bad habits, which I kind of regularly get is like waking up and reading Twitter.
Which I think has to be like, probably the worst way to wake up.
But it is so, like, fricking addictive. So I have to — I have all these little tricks, like I delete Twitter off my phone for a while, then I start using it on my computer and then I delete it off the computer and switch back to the phone. But I think even these little tricks, just like moving the icon around on the phone so you can’t automatically go there with like your lizard brain just clicks there the first thing you wake up, you have some chance for your waking mind to say hey, this is not that good for me. It gives me a short-term payoff, but it’s not good for me in the long term. Which brings me to the next point like be deliberate in your use of social media. You have to moral obligation to listen to everyone. Learn however to mute people and do it early and often. If someone is causing your blood pressure to rise, even if they have a good point, I think thinking about, you you know, you’ve got to put the oxygen mask on yourself first, like sure you’re in this for the long run, mute them if they’re not being useful.
Criticism, like particularly if you’re a prominent open source developer, but I think if you’re having an impact on the world, like one of the ways you find out about it is people start criticizing you, so I think like one of the things that I’ve kind of — sort of mental jiu jitsu I’ve done over the years is like think about my successes, like. Gg pot 2 was really successful when someone used it to commit a really egregious case of academic fraud. You know you’re successful when people attack your body of work and create neologisms to insult it? Important ways, I think that’s how you know you’re having an impact on the world. Really be careful about numbers. Don’t spend your life optimizing numbers. This there’s always this challenge, like as soon as you can — I think as soon as you can precisely quantitate something, I think it’s important to pay attention to these numbers and to think about them, but really think holistically, like what sort of impacts can you have, how can you measure them by other metrics, not all the them being quantitative.
And finally you’ve got to sell it. You need to learn a little about marketing. If you can think about how your work is seen for the first time by an outsider, it’s much, much easier for people to pick it up and start using it. Thank you.

More in this series

Monktoberfest 2019 (11)