Skip to content

Instantly share code, notes, and snippets.

@pat
Last active February 16, 2023 17:04
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pat/34cabde895e7875206c02c98b7833191 to your computer and use it in GitHub Desktop.
Save pat/34cabde895e7875206c02c98b7833191 to your computer and use it in GitHub Desktop.
Upgrading the Ruby Community - RubyConf AU 2023

Upgrading the Ruby Community

Good morning everyone - it's always such a pleasure to be here with you all, and even more-so after the pandemic-enforced break of the past few years. So great to be back!


👨🏼‍💻 https://github.com/pat

For those of you I've not yet had to pleasure to meet - my name is Pat, my pronouns are he/him, I've been working with Ruby for a long time - primarily as a contractor. I've also been building a little side project called Calm Calendar, which helps to bring work/life balance in your calendars.

You can also find me on various places on the Internet - though these days I've largely moved on from the trash-fire that is Twitter.


Always Was,

Always Will Be

I want to start by acknowledging that we are currently on the land of the Wurundjeri Woiwurrung and Bunurong Boonwurrung peoples of the Eastern Kulin nation, stolen land called Melbourne for the past 200 or so years, but known as Narrm for tens of thousands of years.

I pay my respects to elders past and present, and thank them for ongoing care of culture, people, land and water.


Right Here

Right Now

Speaking of context, let's take stock of where we're at right now - for we live in interesting times.


DHH 😬

Lately, we've had David Heinemeier Hanson - DHH, the creator of Rails - warn us about the dangers of… oh, diversity? Really?

Tom Stuart was certainly spot on when he labelled DHH as the Fox News of Ruby.

If you've been taking DHH's opinions seriously, now is a very good time to stop doing that.


Twitter 🤦🏻‍♂️

Twitter, which has always had issues, was once the de-facto place for Rubyists to connect online. It's now run by billionaire man-child Elon Musk, who supposedly in the name of free speech has restricted the API, banned criticism of himself, and welcomed back a flood of white supremacists.


Costs of Living 📈

Redundancies 😔

We're seeing significant increases in the costs of living, alongside mass redundancies in many tech companies - if anyone here has been impacted by that, I'm sorry, I hope you're doing okay and are able to find a better job soon! Perhaps via conversations here at this conference?


COVID 💉😷💉

We remain in the grips of the global COVID pandemic, while other pandemics have also been threatening. Many thanks to everyone who's wearing a mask here today, to help keep yourselves and others safe.


Earthquakes 😔

State Violence 😔

War 😔

In the past week, we have had the devastating death toll of earthquakes in Syria and Türkiye.

There's continued violence and murder from police and military in Iran, Myanmar, the United States, and also here in Australia.

… and there's the continuing impact of wars as well - Syria's suffering there too, but my heart also goes out to those in Ukraine, Yemen, and Palestine.


Climate Change 🔥🌊

Oh, and this little issue, I'm sure it's minor: something called climate change - which has a hand in the floods in Western Australia and New Zealand this year, Eastern Australia and Pakistan last year, bush fires around the world, the loss of lives and homes and livelihoods.


❤️

And I apologise for mixing a somewhat light tone there - it's a bit of a if you don't laugh you cry situation, and crying is a very fair reaction.

Many of these things are impacting the luckiest of us, so please spare a thought - and maybe some donations - for those less privileged.


Upgrading the Ruby Community

I'm not here to make you depressed about the state of the world - but it is important to understand where we are all at, both individually and societally.

And with that in mind, I want to talk about our Ruby community. I know the title of my session is about giving it an upgrade, but let's be clear, what we've got now is actually pretty great.


Rubyists are…?

If I was to pick out some key attributes of who we are collectively:


Rubyists are fun

We're fun - after all, Matz - Yukihiro Matsumoto - the creator of Ruby, built the language with programmer happiness in mind.


Rubyists are caring

We're also caring: through Matz's demeanour, we have the acronym MINASWAN: Matz is nice, and so we are nice.

We've also had a history of bringing under-represented and marginalised groups into Ruby through Rails Bridge and RailsGirls events, opportunity tickets at conferences, and so forth - and these events now have codes of conduct as standard.


Rubyists are social

Speaking of events, we're definitely social - it's not only the number of Ruby conferences that happen around the world, but also the style of them: we're not just here to learn about code (though we certainly do that too).

… and then there's Rails Camps, which began here in Australia, and of which there's been more than 50 around the world! We definitely prioritise socialising at those events.


Rubyists are opinionated

We're opinionated: not just in how we run our events, but also in how we code, with tools like Standard Ruby, and Rubocop, and the concept of idiomatic Ruby.


Rubyists are weird

And, we're also, sometimes, a little weird - in the best way! Some of you may be familiar with Why the Lucky Stiff (yes, that was his name), and Why's Poignant Guide to Ruby. If you haven't come across it yet, it's online for free.


Rubyists are great!

Fun, caring, social, opinionated, weird. That is a pretty great combination, hey?


Rubyists… could be even better?

But I wouldn't be up here talking if I didn't think we could be even better.

So, what do I want us to be known for?


Rubyists can help others

I want Rubyists to be known for helping others - and that stretches beyond helping each other, to those in our society more generally.


Rubyists can stand in solidarity

I want Rubyists to be known for standing in solidarity and support with those who are oppressed and marginalised and just generally treated badly.


Rubyists can challenge injustice

And I want Rubyists to be known for combating the numerous systemic issues and injustices we face in society.


Whoa

… sorry Pat, what? These aren't small things… but why should we even care about them?


Watch your step

Okay, let me take a step back for a second.

I'm about to wade into some deep topics, and so I want to make a couple of things clear before that:


Answers are in short supply

Firstly: I'm not going to give you all the answers.

Partly because I don't want to be too prescriptive - you shouldn't do things just because I say so! But also, because I don't actually know all the answers.

I'll certainly provide some recommendations - but also, my goal here is to get you thinking more deeply.


We are making progress

Secondly: I feel like collectively - and especially within the Ruby community - that we're continually improving our awareness on matters like diversity and inclusion, racism, sexism, transphobia, ableism, and so forth.


We are all individuals

I also want to recognise that there's always more learning to be done, and that we're all on different points on that journey.

So, there might be moments in which you feel I'm skipping over some fundamentals, and others where you feel I should speed up. And it's going to vary for each of us.

While I'd like to engage with you all where you are at, it's just not possible from this stage, even if I had all day.


Finding

common ground

That said, I want to set out a few things as signposts on this journey, and hopefully we can at least agree on this:


Let's agree:

We value a better world

Firstly: we acknowledge that things aren't great for a lot of people in a lot of ways, and we want things to get better.


Let's agree:

Our history is problematic

Secondly: we acknowledge that our societies have previously been built on top of racism, sexism, slavery, war, and so forth.


Let's agree:

Our present is problematic

Thirdly: we acknowledge that we haven't had a proper reckoning with that history.

Perhaps you might pause on this point, but, well, here's one example: the fact that pay gaps for people who aren't straight, white men still persist. These biases and bigotry still exist.

I could offer other examples, but so much of it is linked to trauma that I'm sure some folks here would find pretty tough. I don't want to be making anyone's day any worse if I can help it. Maybe just go read the news if you need more proof?


Let's agree:

The status quo is still inherently racist, sexist, transphobic, ableist, and so many other terrible things.

And so given we've not properly dealt with all of this, the status quo - the default, the normal - of our society is, uh, not great.

When I refer to systemic issues and injustices, this is what I'm talking about.

And if we don't seek change, then what we get is what we have now.


Let's agree

Power prefers the status quo.

And a key reason that these systemic issues persist, is because those with power are comfortable and happy and don't want to give up that power and comfort, despite the fact it could make a lot of peoples' lives so much better.


Normality is not okay

I'd hope our own personal situations aren't impacted too badly by such issues and injustices, but also: I want to stress that we can't just accept that doing things 'normally' is okay. Because what's normal is harmful. And so to change things, this means challenging those with power.

If you're not feeling like you can agree with this - well, I hope you can still appreciate the rest of this talk, but I'm not going to use my limited time to try and win you over. It might be where I draw the line on hallway conversations as well.


And how does this all relate to this conference, to Ruby, to us?

These problems, these injustices: they impact us, even within our wonderful Ruby community. And if we want to get serious about looking after Rubyists, well then, we need to address these issues at their root causes.

So: we need to act in ways that help everyone, not just Rubyists. Otherwise, I can't help but think that we'll be fighting the same Sisyphean battles again and again, papering up the cracks without fixing the foundations.


Beyond Ruby

This isn't an either/or situation - I'm not suggesting we ignore our local issues or even the local impacts of broader issues.

But if we do want to be caring, and if we do want to help others, and if we maybe want to have a positive impact on the world, then we need to look beyond our corner of the tech industry.


Overwhelmed? Me too.

Okay. That doesn't mean it's not a touch overwhelming.

But if we were to go about tackling such big issues, the big question is: How?

And again I stress: I can't give you a simple answer on this…

… but I can perhaps provide some guidance on what has helped me, and what might help you, and then make some suggestions on potential next steps for you to take.


Be Prepared 🦁

Firstly, we need to approach all of this with the right mindset.

Because I can guarantee that if you're feeling pretty comfy with life right now, you're going to come up against some very uncomfortable truths.

So: be prepared to be challenged, to have your mind changed.


Consider the warp of

power and privilege

You'll probably hear very different takes on issues - and in those cases, don't forget the influence and bias of power and privilege. And they could very well be your own biases!


> "Do the best you can until you know better. Then when you know better, do better."
Maya Angelou

There's going to be very few easy solutions, and there's not going to be a point where we can relax and think: "Great, everything's solved".

You'll need to lean into this sentiment from Maya Angelou: “Do the best you can until you know better. Then when you know better, do better.”

If your journey through this is anything like mine, there's a lot of learning, again, and again, about what's actually better, and adjusting actions accordingly.


Listen to

Lived Experience

And with this mindset, the next step is to gain awareness, which means a whole lot of listening.

When you're considering a particular set of issues, listen to those with lived experiences - that is, those who are confronted personally by the injustices and issues. There's also a place for experts as well, but be mindful who's defining whether someone is an expert, and err towards those suffering injustices.

There's also a distinction between listening, and asking. People may not wish to share their own experiences, their own trauma - especially just for the benefit of others. So, instead of expecting people - your colleagues, your friends - to explain everything to you, find a good book, or a documentary, or a podcast.

I have some recommended reading I'll be posting to social media and the Ruby AU Slack afterwards, in case that's helpful.


Watch out for

tech exceptionalism

Also: be wary of Ruby exceptionalism, and tech exceptionalism. Tech folks have a habit of seeing a problem and trying to fix it without actually having a deep understanding - and often, that just makes things worse. Don't be that person.

I came across an analogy with regards to racism lately, and I feel it's appropriate more broadly as well:


Beverley Daniel Tatum writes about racism in society as a travelator - a horizontal escalator often found at airports. If you're on the travelator and you do nothing, you're still moving towards racism - this is the status quo of society I was discussing earlier.

And if you really want to lean into being racist, well, that's walking while on the travelator, in the direction that it's already taking you.


But if you want to stop being racist, that actually requires energy - to turn around and walk the other way. Tatum talks about this active movement as being anti-racist.

And it's this kind of active behaviour that I'm seeking: we can't just be aware of systemic problems, we need to take action against them. We live in a flawed society, and expecting the comfortable status quo to lead us to a solution isn't going to work.

This is also why sitting on the fence and remaining neutral in such matters is actually harmful as well.


Follow the Leaders

And to reinforce comment earlier about not treating ourselves as inspired experts, in almost every case we also shouldn't be the people driving actions.

The experts we've been listening to are likely recommending ways to combat inequality, injustice and so forth. Follow their lead rather than trying to be the leader yourself.


And yet… 😓

So: don't treat Rubyists as special, don't treat them as experts.

And here I am on stage, a Rubyist, without much expertise on this topic. I realise that's a bit of a contradiction, and I don't feel especially comfortable with it either. I guess you can make the judgement on whether my session is truly helpful.


Practical suggestions?

But with that acknowledgement, let's get stuck into some practical actions, shall we?

I considered looking at this from a code perspective, but it felt wrong. We're dealing with people, let's focus as much as we can on people. Not that the way we code doesn't have an impact…

Okay, fine, I'll give you one technical thing to consider, and that is servers.


Servers

Renewable energy as a priority

In particular, the energy they consume, because the Internet is a significant contributor to carbon emissions.

These days we can usually find out how data centres are powered. So, if you can, be more picky about where you host your apps, and choose data centres or regions where renewable energy is the primary source.


Servers

Big Tech: they're all terrible.

That said: we're generally dealing with Amazon, Google, or Microsoft, and in all cases their ethics are problematic at best. In all three cases, their actions actively harm people.

And so let's reach back to that travelator analogy: if you know these companies have terrible records, but you use their services anyway, then: are you just standing on the travelator, being drawn towards acceptance of treating warehouse workers inhumanely, towards removing immigrant children from their parents, towards supporting fossil fuel companies and their misinformation campaigns?


Servers

The convenience has a cost

I'm well aware that disentangling yourself from their services is extremely difficult, but still: you need to understand the cost of that convenience, and figure out how it sits on your conscience.


Servers

Offsets? 🤷🏻‍♂️

A challenge to you is: what other actions can you take to offset the terrible behaviour of these giant companies? How can you take your own steps on that travelator, in the opposite direction?

Is it donating regularly (not just a once-off gift) to community groups fighting against such behaviour? Or, can you send money to strike funds supporting workers at these companies?

Think of this like carbon offsets, but you're offsetting other things instead. Granted, offsets are a flawed system too…

Have I mentioned I don't have all the answers? Suggestions are very welcome, come find me in the breaks if you have ideas!


Hand it over 💰

I highlight donating, because generally (not always, but generally): we developers get paid pretty well, and I would hope we can afford to be generous. And money is a quite direct form of power. But also, please note that where you send your money matters!

Try to get a sense of which organisations do the most meaningful work - again, this comes back to awareness, and listening to those with lived experience.


Pay the Rent

When it comes to tackling racism and colonisation, one group I'm happy to recommend for those here in Victoria is Pay the Rent - paytherent.net.au - an organisation that distributes funds to other First Nations groups who need it, and who do important work in their own communities. The admin work is done by allies, but the decisions around who is supported is totally driven by First Nations folks. i.e. the people who have lived experience of racism and the ongoing effects of colonisation.

Pay the Rent recommend people chip in every month, with a target 1% of your salary, which is a great start, and I know there's people in this room who already do this. As a next step, I'd also love to hear of businesses taking a similar approach with their profits, or even revenue!


Hand it over 💰

It's also important to note that this isn't a tax-deductible donation, and that's okay, because this isn't actually about feeling good and paying less tax.


How much do you make?

Also related to money: please talk about your salaries - with your colleagues, and with your peers in other companies. Sharing what we all earn gives us all more awareness, and more power to negotiate. It can also, importantly, help highlight any salary imbalances, especially when considering gender or race.

Essentially: it helps give us all power to push back against the status quo.


Walking the talk…

I can't offer a salary of my own as an example, because I'm a contractor - but as one limited data point: at the moment my daily rate is $1,300 excluding GST, for writing Ruby, something I've got well over a decade of experience in.

There's a whole lot of nuance we could go into there but I've got other topics to get to, sorry! We could have a whole separate talk about salaries and contract rates. Again, I'm very happy to have conversations about this afterwards.

Okay, this next suggestion was a bit of a journey for me, it might be for you too, but essentially:


Join Your Union

Join your union.

For those of us who live here in Australia, that union is called Professionals Australia. Yes, that's pretty bland name, and it doesn't even have 'Union' in the name, but that's just how it is.


Join Your Union

I am both happy and embarrassed to admit that, for a long while, I wasn't really sure about unions. I understood that they stood up for workers, but seemed to be frowned upon by others, and I thought it was only some industries, not others. Are strikes good? Bad? I feel like I missed a key bit of education somewhere along the way.

And, I also wasn't sure that, if I joined, does that mean I would need to strike? What does that even look like, in our industry, and for me as a contractor?

But while I'm still not an authority on the topic, here's where I've landed: strikes are a tool of last resort. Unions are largely a tool for good, for standing in solidarity, for distributing power amongst workers instead of giving too much control to employers.


What have the unions ever done for us?

For anyone wondering "what have the unions ever done for us?", here's a very incomplete list:


What have the unions ever done for us?

two-day weekends


What have the unions ever done for us?

eight-hour days


What have the unions ever done for us?

paid parental leave


What have the unions ever done for us?

reasonable retirement ages and pensions


What have the unions ever done for us?

occupational health and safety regulations


What have the unions ever done for us?

paid holidays


What have the unions ever done for us?

minimum wages and pay increases


What have the unions ever done for us?

paid leave in domestic violence situations


What have the unions ever done for us?

the right to not be sacked if you're pregnant,
or if you got married,
or even if you just simply become unwell.


> “What happens when engineers stop thinking of their interests as fundamentally aligned with the companies' owners and management, and develop their own class consciousness?"
Tim Carmody

Particularly amongst a lot of tech companies, these conditions can seem pretty normal - but that isn't always the case. And especially at the moment, we're seeing mass layoffs - which are definitely impacting workers, but are management losing their bonuses? Having their far more significant wages reduced? Or even being laid off as well?

Which is all to say: we might have it good now, but we shouldn't become complacent. Also: we shouldn't be alone in having decent conditions!


Join Your Union

And perhaps you don't need the support of a union right now? Wonderful! But also, that doesn't mean you shouldn't sign up.

Supporting your union with your membership dues means they can provide more support to more of our peers. I've not been in need of their services thus far myself, but I have heard enough anecdotes to know Professionals Australia do care, and do help.


HR is not on your side

Also: we're often directed to take work issues to HR - but at the end of the day, no matter how good the people within that department may be, it's there to serve the business more than the employees. Perhaps consider a union as your voice when HR fails.


Employers?

And separately: for those of you who run startups and other businesses that employ others: I hope you're feeling a bit challenged about these discussions about power, but in a good way. That is, you're considering the ways in which you can reduce your own power.


Investigate Co-operatives

One thing I'd love to know more about is building businesses as co-operatives, and what that can look like within the tech space, and for startups. If anyone has experience with this, come find me afterwards or send me an email, I'd love to hear more - and for everyone else who's equally intrigued, please do investigate!

And this is a good place to remind you all: while yes, I've done a bunch of reading and listening and educating of myself, I clearly cannot provide all the answers. No one person can.


Tell the World

Or at least, me.

But I don't want to let that stop us from having these conversations - and they need to happen in the open, so everyone benefits.

I was lucky enough to see Rebecca Giblin and Corey Doctorow speak earlier this week at ACMI - and Rebecca made the comment that with these systemic issues, there are no individual solutions, only collective solutions. Working together is the only way through.

So that's the last challenge: if you grapple with these topics, and finding ways to make progress, then please, share what you're doing.

I know that comes with challenges around ego, and other people thinking you're grandstanding, tall poppies and so forth - it's not easy, but it's worth doing.

If you're not sure how to begin these conversations, maybe start by sending me an email, and we can figure it out together.

We come from a culture of open source, of sharing by default, and I think that's essential for helping us all learn and grow together.


A New Ruby Ethos?

Okay, I've got two more thoughts - two changes to what I think the Ruby community should be - and then I'll be out of your way.


So long, MINASWAN

The first is: I think it's time to retire MINASWAN.

I'm not questioning whether Matz is nice, but rather: being nice is a problem.

Being nice means not rocking the boat. Being nice means not challenging the status quo. Being nice means accepting systemic inequality. Being nice serves those with power, and lets those without power suffer.


Niceness does not help us

Sometimes, we need to rock the boat, to make people feel uncomfortable, to actively fight against inequality. Indeed, things aren't going to get any better unless we do fight.

Harking back to that travelator analogy: being nice is just standing still and polite on the travelator, letting it take you to a terrible destination.

Being kind is great. Caring is great. But enough with just being 'nice'.


No more (Ruby) heroes

And my other point is: no more heroes. Especially no more tech heroes. And that's nothing against Matz, but it's more that humans are fallible, and corruptible by power and influence, and also just plain wrong. So let's not give them that pedestal.

No more heroes. Not Matz, clearly not DHH, but also not people like Aaron Patterson, Sarah Mei, Andre Arko, Evan Phoenix, Sandi Metz, Coraline - and certainly not me. I'm just as flawed and fallible as the next person.

But beyond those two changes, I think our foundations are solid.

To me, the desire for us to help others, to stand in solidarity, to challenge injustice - to be honest, they already feel like things Rubyists are on board with. That's why I feel comfortable sharing this with you all!

But I still hope I've offered some challenges today, and got you thinking a bit more deeply about how we engage with the world.


Rubyists are…

fun, social,
opinionated, weird,
but especially: caring

We should keep being fun and social and opinionated and weird. And most importantly, we should keep caring for each other - it's just that 'each other' needs to be a much broader consideration. Let's aim not to just be good developers, or good colleagues, but also to be good citizens. To act in solidarity.

Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment