Monday, 22nd October 2018 (1:00PM)
I write from a place of love and respect for the UK Python programming community. Some of what follows may make painful reading (sorry). But I want to be clear: if you misconstrue my words as aggressive, nasty or hurtful, then you have completely misunderstood my intent. I will never knowingly be a source of vindictive pain.
I'm going to shine a light on the (usually hidden) problems I have encountered in the UK Python community over the ten years that I've been volunteering.
It's hard to do this without appearing as if mud slinging or trying to diminish the considerable public-facing achievements of the UK Python community in doing genuinely wonderful things. I am anxious to avoid a situation that undermines all the good stuff.
But only by highlighting and acknowledging such hidden problems can action be taken to address them. I hope you bear with me as I try to find the words to explain things in a constructive, non-confrontational yet honest way.
The problems of which I speak are many in number and range from the institutional (a woman of limited means put into the humiliating position of having to beg for financial support), and petty (describing the John Pinner awards as "just a popularity contest") to plagiarism (members of the community claiming the work and intellectual property of others as their own) and an exercise of power and control for organisational gain (a sponsor taking steps to exclude others from fully participating in a community event -- they threatened to pull out if they didn't get their way). Sadly, I have a list as long as my arm full of such things.
Above and beyond these problems are personal attacks, slights and snark aimed directly at me (more on this later). Having said that, I want you to know that I bear no ill-will nor grudges.
I'm necessarily vague about the details: I don't believe finger pointing or blame is a useful or constructive way forward. Far better to honestly and constructively highlight such problems in the hope that they are acknowledged and can be avoided in the future.
If you're thinking, "that's not the UK Python community I know", then I am happy for you. You know the joyous, supportive and friendly place that welcomed and sustained me as a new Python programmer in 2007. I wish you good fortune and hope you cherish, advance and grow this aspect of the community.
However, such problems are themselves problematic because they are so often hidden. Furthermore, I've observed that those involved often don't appear to realise they are causing a problem. Upon reflection, I believe such situations are caused by a lack of just one thing: compassion (an awareness of and sympathy for another's feelings and suffering, mixed with a pro-active desire to help).
So my plea to members of the UK Python community is to show more compassion.
If you remain unconvinced of my plea, I want to explain what happens when we lack compassion.
Over the past three years I have grown despondent about the problems I have encountered in the UK's Python community. This past year the feeling became unbearable, to the extent that I sought professional help to deal with mental health problems solely arising from my contact with the UK Python community.
Last weekend a straw broke the camel's back and, after a considerable amount of thought and reflection, I finally decided to publicly reveal how I felt via Twitter. I'd been sitting on a huge amount of pent up frustration and sadness, and there needed to be a controlled release. I came to the realisation that only by "coming clean" and honestly describing my feelings would I be able to heal, move on and allow my life to return to some normality.
To say the reaction has been "interesting" is an understatement.
I'd like to start by thanking the many people who took the time to reach out with kind messages of support. You are the best of us, and the reason why the UK Python community is often an amazing place. Your compassion and thoughtfulness is an example to us all. Thank you.
However, I was reduced to tears of hurt by the initial reaction of one member of our community who went for the jugular (and it saddens me deeply that this reaction was "liked" by a number of other people in the UK Python community). I have been asked to justify my feelings to others (how dare I feel this way about the UK Python community) and I have had my words picked over in public leading to unwanted, unhelpful and upsetting comments.
These latter reactions inadvertently demonstrate why I've been feeling despondent. They show a complete lack of compassion and suppress hoped-for constructive dialogue or catharsis.
My despondency and poor mental health is directly linked to encountering and dealing with an excessive number of such problems: a sort of death by a thousand paper cuts.
"But why didn't you reach out for help?" you may ask.
I was rebuffed when I tried to find support from several individuals in the UK Python community. This led me to a downward spiral of frustration, self doubt and sadness: "What have I done to deserve this? Am I such an obnoxious person that people would refrain from showing support? Why am I not able to speak of my pain?"
I felt a complete failure, rejected and disempowered by the whole situation.
My only choice has been to step away from the UK Python community. It's not the ending I would have wanted and it makes me feel extraordinarily sad.
But my tweets brought acknowledgement from others in the international Python community. I'm not on my own in encountering such problems or the associated feelings of despondency. This is definitely not only a UK Python issue. My far flung friends highlighted patterns, features and common ground which, in turn, helped me realise, "I am not the only one".
Personally, by speaking of these things I feel I have turned a corner and have felt a great sense of release, although I still carry a huge amount of sadness and pain about how things turned out. For what it's worth, I hope people in the UK Python community never treat one of their own like this ever again.
What will I do next?
For me, this boils down to a positive assertion, through deeds and words, of humanity, honesty, compassion, patience, love and respect. What that entails depends on all sorts of complicated variables: who, what, where, when and how a situation is. Ironically for a conversation about a programming community, it's not a case of following an algorithm -- I'll have to exercise that unique and precious spark which means I'm not an unfeeling machine: my humanity.
Sunday, 17th December 2017 (9:30PM)
At the start of 2018 I will delete my account and all associated content from Facebook.
I joined Facebook to work with their public API as part of my work at Fluidinfo. After a while people started to find me (with a surname like "Tollervey" I'm easy to find online). As a result, I've reconnected with many friends. This has been a lovely and positive experience: anything that brings people together in friendship is to be applauded.
Unfortunately, Facebook makes me uncomfortable: it makes it easy to bring people together, yet drives a wedge between friends.
Posts and responses may appear like conversations between people, but they introduce a layer of indirection -- they are always done via Facebook rather than directly between friends. To analogise, it would be like going to a bar where all interactions between the patrons were made via the bar tender. Facebook acts like a really efficient and multi-media aware version of the bar tender from my analogy.
This is problematic for several reasons.
Our socialising on Facebook is reduced to interactions that standardise, process and normalise our lives into a digital production line of uniform social outputs ("like" something, post a picture, reply with a comment, set your mood). The messy, complicated and raw aspects of life, which I would argue are the most valuable, fun and interesting are lost or have no way to manifest themselves. We commoditize ourselves into a dribble of systematized digital assets (photos, posts, likes etc...).
Once commoditized, Facebook insinuates itself into our friendships. For example, after chatting with a particular friend (let's call them "X") you appear to see more "X likes Y" content interleved into your timeline. Facebook even tries to guess things about your background (where did you go to school? X attended Y university). Our commoditzation makes it easy to be measured and analysed which, in turn, allows Facebook to work out who we are from the way we behave on the website. Remember, the bar tender in my analogy knows the content of all the conversations between the customers as well as everyone's drink and snack preferences, favourite seat and usual arrival time.
To be fair, Facebook are up front about how they make money: they sell access to our accounts to the highest bidder who wants to advertise at us. As their website explains: "Find people easily; you can choose your audience based on demographics, behaviours or contact information. Get their attention; our advert formats are eye-catching, flexible and work on every device and connection speed. See the results; our advert reporting tools show you how your adverts have impacted your business in visual, easy-to-read reports." It's obvious that their customers find this a valuable service (note: as users, we are not their customers, but, as is often pointed out, the product on offer): "We can target adverts to people based on how and when they engaged, and create an experience that is relevant to where they are in the process of investigating our products."
So, here's why I'm leaving Facebook: I don't want my friendships reduced to pre-canned types of interaction. I want to look my friends in the eye, smile at them, make music, laugh and give them a hug or shoulder to cry on. I want to welcome them to my home, make them a meal, share a drink and get lost in conversation. I want to shake their hands, listen to their tone of voice, raise my eyebrow at a silly comment or make a joke so we laugh together. Put simply, I want to spend quality time with my friends in real life, rather than watch a stream of mediated content in a sterilised digital life.
Furthermore, I don't want to be measured, analysed, prodded and poked for the purpose of brand engagement. I don't want my friendships interrupted for the sake of a commercial break in my timeline. It's troubling to be reduced to a means to an end by virtue of simply being me (my friendships make me a way for Facebook to make money). Put simply, I find Facebook's openly Orwellian platform troubling.
Many people, including maybe even you, don't have a problem with such a state of affairs. I completely respect that, as I hope you respect my discomfort with Facebook and my decision to leave. Facebook is, after all, an opt-in personal choice.
So, what will I do post-Facebook?
I'll concentrate on fostering friendships unmediated by Facebook. That will take time as I try to stay in touch via email, phone calls or face-to-face, but I'm confident such efforts will be worth it.
Finally, if we are friends on Facebook and Facebook is the only way we interact, please don't lose touch. Drop me an email and never doubt that I'll be pleased to hear from you. If you find yourself wondering if you should get in touch with me, the answer is always, "yes, you should definitely get in touch".
I look forward to hearing from you soon... :-)
Wednesday 1st November 2017 (12:30pm)
Last week was PyCon UK 2017. It was perhaps the best PyCon yet and, as usual, I met many old friends and made plenty of new ones. Many thanks to Peter Inglesby (chair) and the other volunteers who put so much work into making this such a wonderful space for bringing together a community.
A highlight of the conference for me was the number of young people who were not part of the young coders' day but who were attending the conference as regular attendees (and accompanied by ever-supportive parents). I got chatting to one such combination of young person and accompanying parent and they asked for advice on how to develop as a beginner programmer in the Python community.
What follows is based upon my response:
What you get out of the Python community is directly related to how much you put in. The Python community has a huge number of interesting projects with which you could engage and learn from.
Put simply, look for a project that you find interesting and start to contribute.
Don't dive in and submit thousands of lines of code - rather, do something small, easy and/or trivial. It'll introduce you to the current maintainers of the project and demonstrate you're competent while allowing you to get used to their modus operandi. Be polite and ask questions that demonstrate you've read their documentation.
Don't be afraid to ask questions - good developers are always asking questions. Knowing how to ask and what the right questions are is an essential skill to develop. Asking questions is NOT a sign you don't know what you're doing. To good developers it's evidence that you're exploring the problem and a signal that you're engaged and interested.
To be clear, it takes time to get involved in a project and the quickest way is often to take small (but secure) steps. Your collaborators, if they're any good, will provide advice about your contributions. This is invaluable mentorship and it also means you'll get to know people in the community. When you go to conferences, you'll have allies and colleagues!
Be careful to separate criticism of your code from criticism of you. The very best developers are humble, listen to advice and understand that code can always be improved. Sometimes it's hard to hear that your code is not very good, but this also helps us to appreciate how to give good (constructive) advice.
Nevertheless, if you don't get support, if people are rude or there's a bad smell around the project, just leave. Life is too short to have to deal with idiots, and if you have no choice, find experienced, thoughtful and conscientious allies to help support you (you'll find plenty of them in the Python community).
A good project will have a code of conduct that sets expectations of how collaborators are to interact. This is far more important than you may at first realise and, happily, many in the Python community take this aspect of programming very seriously.
In a similar vein, one of the best activities to help you learn new things is to teach. Being able to explain things indicates you know the craft of programming at a deep level. For example, you appreciate what to leave in or how much to leave out of an explanation. You have clear enough mental models of the concepts of programming that you can accurately analogize and summarise. Furthermore, to explain yourself in simple and easy-to-understand language demonstrates your own clarity of thought. Perhaps most importantly, finding the opportunities to practice the skill of teaching is a sign of moral and professional value: you're putting something back into the wider community and you have shown initiative.
Our community is at its best when people take the time to create a space where others, no matter their background or differences, can flourish together. You should endeavour to follow this example. Why? Because inclusion that celebrates difference and diversity exercises our capacity for empathy and understanding of others' lives, problems and interests. As a developer, how can you be sure what people need from your software? Only by listening to others, reflecting, evaluating and experimenting is such valuable knowledge revealed. Only then will you know what important problems to solve. This is (also) far more important than you may at first realise.
Finally, make sure you're having fun. Writing code is often a very frustrating activity, but when you make something work, the elation at seeing something you've created solve a problem makes all the hours of frustration worth it.