In case you don't know: the title is a play on Stanislavski's "An Actor Prepares" (Работа актёра над собой)
Read the previous articles on R package development: software testing, development environment, version control
I remember starting writing this series in the parking lot where I was watching my wife skateboarding. I thought at the time: um… I just want to write the last one, the feeling piece. But I wanted to make it educational so I thought it might be good to bundle a feeling piece with three other technical pieces.
As things usually go, I actually enjoyed writing the other 3. When I really need to write this one, the feeling is just getting so bitter that I don’t want to write it. And in this atmosphere, I don’t think it is a wise idea to express one’s bitterness. We are like all-singing all-dancing academics. We should hide our bitterness to make this world appear to be happier.
But history tells me I’ve not finished any series. I really want to finish one. So here it is. The final piece on professionalism.
Nothing
Let’s talk about professionalism.
According to the Cambridge Dictionary, professionalism is “the combination of all qualities that are connected with trained and skilled people”. What are those qualities? Well, that’s actually the real question. For example, if all trained and skilled people are involving in corruption, then professionalism should also include being corrupted. Luckily, in my circle most trained and skilled people are not corrupted (AFAIK). So, being professional is morally less ambiguous. In my opinion the best trained and skilled people in my circle should at least have three qualities: curiosity, perfectionism and altruism. It is absolutely okay to not agree with me on this. Perfectionism is now almost like a taboo in the academic world where “impostor syndrome” is endemic. However, perfectionism is not about being perfectionist (not accepting something that is not perfect). Instead, it is about perfecting one’s craft. I see the best people in my field have all three qualities. Well, “the best people” do not equal to the most successful people. One doesn’t need to be professional to be successful, unfortunately. Those pros are usually not “profs”, paradoxically.
My parents are farmers, a rare kind of people in the cosmopolitan, asphalt-jungle-filled Hong Kong. For most people, their profession is not professional. But they show their professionalism: Their devotion to their job. In the old days, they woke up super early to either catching fishes or ducks for the markets. It’s a 7-day job: no rest day, because Monday to Sunday people still need to eat. Of course, fishes and ducks need to eat from Monday to Sunday too. Also, when you are unhappy, sad, angry or whatever emotions you might have, you still need to work. Even when you are sick, your daughter is hospitalized, the temperature is 1 degree, you still need to work. They never quit. Up to this day, they are still doing the job. Their work ethic has a great influence on me. But not everyone can appreciate their work ethic. There is no “work-life balance”. We celebrate the successful people who have the salonsozialistisch luxury of “work-life balance” 1. The nameless people working 24/7 in the background who keep the world running have nothing remotely resembling such luxury.
I remember during the early period of the pandemic in the Western world, people thanked the nameless cashiers working at supermarkets, the nameless carriers who deliver Amazon orders, or most commonly, the nameless healthcare workers. Do you still remember the “thankyouhealthcareworkers” (together with the “stayathome”) stickers you posted on Instagram? Do you remember people clapping and singing “Bella Ciao” for the healthcare workers at 7:00pm every evening? The German TV program Extra3 captures this very well. It’s an one-hit wonder. Feel-goodism, if you prefer an academic term. As expected, it didn’t last. The Extra3 team use a pun “Wir waren Helden” 2. The act of thankfulness waned quickly when the world went back to “normal”. I don’t think the people right now is as thankful. The worst part, however, is that people don’t do their part to keep these once-heroes’ job easier. In the end, we actually don’t appreciate people for being professional. We only appreciate someone’s professionalism, only when he or she keeps us from collapsing. Even with that feel-goodism, we still remember these professional nameless people as a group. They are cashiers, carriers, and healthcare workers. Not Anna, Bettina, or Claudia.
As an open source developer, I maintain some of the most boring R packages one could imagine. They’re not exciting packages researchers use to collect Twitter data; not for doing “word embedding regression” or any other cutting edge text analytic method. It won’t win me citations (the de-facto academic currency, whether or not you agree with that), make me famous, or as I said last time, improve my employability.
However, my R packages are something hidden in the background. I don’t think any of my papers has been downloaded 10000 times in its (or even my) lifetime. But one of my maintained R packages has 10000 downloads per month. Therefore, a lot of people are using it every day or even every hour. It is in some mission critical workflows. When I think about it, a simple mistake in the code I made could affect a lot of people. That’s where I should show my professionalism: I make my software testable, aggressively test my software in various settings. I version-control my code and follow some best practices. Of course, I attend to the community of users, fix bugs, and keep my software maintainable.
In such a journey, it is easy to feel alone but I am never lonely. No one talks to me about it so I usually talk to myself: Why am I doing that? No one would care about the answer. But I care about my answer. The answer is about the three qualities I said above: it satisfies my curiosity, it’s perfecting my craft, and most importantly, it’s a altruistic service to the community. It is never about me.
I’ve been in such a position for half a decade now. It makes me appreciate the professionalism of the people writing the most boring part of the software in my Linux computer. Do I know the developers who wrote the USB driver of my mouse? If those people don’t do their job professionally, I can’t even use my computer.
But still, taking such an altruistic task is one thing. Whether or not people will appreciate your altruism is another. I remember in April 2014 the discovery of the heartbleed bug in OpenSSL revealed that there were only two main developers working on OpenSSL. Of course, after the incidence, every major players in the tech sector jumped in to either save or fork OpenSSL. We only appreciate someone’s professionalism, only when he or she keeps us from collapsing. Remember, for a long time there were only two main developers developing the software that enables safe online traffic and e-commerce on most computers. Two! It is less that the total number of developers of the R package that emits warning messages with ascii animals. Most (top-notch) programmers are working for Google or Facebook and chase the latest technological trends such as machine learning, 3D printing or internet of shit things. Not the boring stuff such as open source cryptography.
This post is like a rant now but it is meant to be educational. I think the main message is that if you are open source developer, don’t live for applause, accolade, citations or whatsoever external incentives 3. You might see that some people could get those external incentives through writing R packages. But this world is intrinsically unfair so please don’t expect that. The most important thing is internal: be professional. In some day, when the system collapses, people will appreciate you. Well, as a whole group of nameless R package developers, of course.