Ruby on Rails

Summarized using AI

Upgrading the Ruby Community

Pat Allan • February 16, 2023 • Melbourne, Australia

In the session titled "Upgrading the Ruby Community" presented by Pat Allan at RubyConf AU 2023, the speaker reflects on the unique and welcoming nature of the Ruby community while urging its members to engage more deeply with broader societal issues. Pat begins by acknowledging the challenges faced globally, such as pandemics and climate change, and the need for the Ruby community to evolve rather than become complacent about its existing strengths.

Key points discussed throughout the session include:
- Community Attributes: The Ruby community is characterized by fun, caring members who are social, opinionated, and occasionally 'weird.' This sense of identity is foundational to Ruby culture.

- Need for Growth: While recognizing these positive traits, Pat emphasizes the need for Rubyists to expand their impact, particularly in addressing systemic injustices and supporting marginalized groups.
- Awareness and Listening: The speaker encourages Ruby developers to listen to voices of lived experience regarding issues like racism and inequality, rather than relying solely on traditional experts.
- Collective Action: The importance of collective rather than individual solutions is highlighted, advocating for union membership and shared knowledge about salaries to empower members.
- Active Engagement: Pat stresses the necessity of active engagement in societal issues, challenging the notion of being merely 'nice' and instead promoting 'kindness' that involves uncomfortable truths and proactive efforts against systemic oppression.
- Examples of Action: Practical examples for Rubyists include selecting renewable energy data centers for hosting applications, donating to relevant causes, supporting labor unions, and engaging in discussions about equitable workplace practices.

- Philosophical Changes: Finally, Pat calls for a cultural shift in the Ruby community away from venerating heroes and towards a more collective approach to problem-solving and advocacy.

In conclusion, Pat Allan invites Rubyists not only to foster their coding skills but also to become responsible global citizens who actively engage in the fight against injustice and inequality, reiterating the importance of solidarity and collective action within the community. With humor and thoughtfulness, Pat aims to provoke deeper critical thinking about the role of developers in today's world.

Upgrading the Ruby Community
Pat Allan • February 16, 2023 • Melbourne, Australia

The Ruby community has a reputation across the wider tech industry for being a bit special - opinionated, yes, but also warm and welcoming. Our conferences, our events, even our code is so often a bit more thoughtful and a bit more fun, and the legacy of this has spread beyond Ruby to other language communities such as Elixir and Rust. We have every reason to be proud… yet, we should be wary of resting of our laurels.

And when we look at the broader world - with pandemics, wars, and the devastation of the climate emergency - well, it's easy to become despondent, or to shut that out and focus on the code. But instead, we should tap into that special community vibe that has nurtured us, and take a step forward in having a broader impact. So what could that look like?

To understand what we can (and perhaps should) do, we must understand what has been done already: this session will cast a critical eye on our industry, pointing out missteps and missed perspectives, as well as looking at what has been done elsewhere to make lasting, positive changes. With that foundation set, we will then talk through several recommendations on what meaningful action for software developers can be, as well as possible guidelines to help each other critique, share and refactor our actions to have even greater impact.

RubyConf AU 2023

00:00:00 Hello everyone, good morning. It is such a pleasure to be here with you all and to be back after the pandemic-enforced break these last few years.
00:00:09 It’s great to be in a room filled with Rubyists.
00:00:14 Thank you for the shoutout, Michael, for the Calm Calendar. If work-life balance with calendars is something you're interested in, you can check that out.
00:00:19 I didn't bother putting Twitter up because I'm largely not on there anymore.
00:00:35 I want to start by acknowledging that we are currently on the land of the Wurundjeri and Bunurong peoples of the Eastern Kulin Nation, known as Melbourne for the past 200 or so years, but known as Narm for tens of thousands of years. I pay my respects to Elders past and present and thank them for their ongoing care of culture, people, land, and water.
00:00:52 As we consider our context, let’s take stock of where we are right now, for we live in interesting times.
00:01:04 Lately, we’ve had David Heinemeier Hansson (DHH), the creator of Rails, warning us about the dangers associated with diversity. Tom Stewart was certainly spot on when he labeled DHH as the Fox News of Ruby.
00:01:22 If you've been taking DHH's opinion seriously, now is a very good time to reconsider that.
00:01:34 We also have Twitter, which has always had its issues, but it felt like the de facto place for Rubyists to connect online. I have a bit of a soft spot for it, but now it's run by billionaire Elon Musk, who has imposed restrictions on the API, banned criticism of himself, and welcomed back a flood of white supremacists.
00:01:48 Additionally, we are witnessing significant increases in the cost of living alongside mass redundancies in many tech companies. If anyone here has been impacted by that, I'm sorry, and I hope you're doing okay. I hope you find a new and better job soon, maybe even through conversations here at this conference.
00:02:17 We also remain in the grips of a global pandemic while other pandemics continue to threaten us. Many thanks to everyone wearing a mask here today, helping to keep yourselves and each other safe.
00:02:34 In the past week, we’ve had the devastating death toll from the earthquake impacting Syria and Turkey. This is on top of the continued violence in Iran, Myanmar, and the United States, as well as here in Australia.
00:02:46 My heart goes out to people suffering in Ukraine, Yemen, and Palestine as well. I don't know if climate change will end up being a big deal, but it has certainly had a hand in the floods in Western Australia and New Zealand this year, as well as in eastern Australia and Pakistan last year.
00:03:02 Bushfires around the world, including Queensland this week, have devastated lives and livelihoods. I apologize for the mix of light and heavy tones; it's a bit of a situation where if you don’t laugh, you cry, and crying is a very fair reaction.
00:03:35 Many of these issues are starting to impact even the luckiest of us, so spare a thought, and maybe some donations, for those who are less privileged.
00:03:52 Now, 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. Keeping that in mind, I want to talk about our Ruby community.
00:04:06 The title of my session is about giving it an upgrade, but let's be clear: what we have now is actually pretty great.
00:04:19 If I were to pick out some key attributes of who we are collectively, I would say that Rubyists are fun. Yukihiro Matsumoto, the creator of Ruby, built the language with programmer happiness in mind. How could it not be fun? How could we not be fun?
00:04:38 Rubyists are also caring; through Matsumoto’s demeanor, we have the acronym MATS (Mats is Nice), and so we are nice. We also have a history of bringing underrepresented and marginalized groups into Ruby through RailsBridge and Rails Girls events, as well as providing opportunity tickets at conferences like this one.
00:04:58 All these events now have codes of conduct as standard to ensure we are as safe and respectful as possible.
00:05:17 Speaking of events, Rubyists are social. It’s not just the number of Ruby conferences that happen around the world, but also the style of them.
00:05:28 We are not just here to learn about code, though we certainly do that too. Rails camps, which began here in Australia, have had more than 50 iterations around the world, and we definitely prioritize socializing at those events.
00:05:44 Rubyists are opinionated, which I suspect is no surprise to anyone here, and it's not just how we run our events, but also how we code with tools like Standard Ruby and RuboCop. The concept of idiomatic Ruby is also part of this.
00:06:01 Sometimes Rubyists are a little weird, in the best way. Some of you, if you've been around a little while, may be familiar with 'Why the Lucky Stiff.' Yes, that was his name, and his poignant guide to Ruby is available online for free. Just be warned, it is indeed weird.
00:06:16 It works for some people; others may not like it at all. Your mileage may vary. Fun, caring, social, opinionated, and weird—I think that's a pretty great combination.
00:06:28 But I wouldn't be up here talking if I didn't think we could be even better.
00:06:41 So what do I want us to be known for? I want Rubyists to be known for helping others.
00:06:50 That extends beyond helping each other to include those in society more generally.
00:07:02 I want Rubyists to be known for standing in solidarity and support with those who are oppressed, marginalized, and generally treated badly.
00:07:14 I also want Rubyists to be known for combating the numerous systemic issues and injustices we face in society.
00:07:27 Those aren't small things. So why should we even care? Let's take a step back for a second.
00:07:44 I'm about to wade into some deep topics, and I want to make a couple of things clear before that.
00:07:57 Firstly, I'm not going to give you all the answers—just prepare yourself for that.
00:08:07 Partly, it's because I don't want to be too prescriptive; you shouldn't do things just because I say so. That would be nice, but also, I don't have all the answers.
00:08:21 I'll provide some recommendations, but I think my bigger goal here is to get you thinking more deeply and critically.
00:08:36 Secondly, I feel like collectively—especially within the Ruby community—we're continually improving our awareness on matters like diversity and inclusion, racism, sexism, transphobia, ableism, and so on.
00:08:45 I also want to recognize that there's always more learning to be done, and we’re all on different points of that journey.
00:09:05 So there might be some moments in my talk where you feel I’m skipping over some fundamentals, and other points where you feel I should speed up; it’s going to vary for each of you.
00:09:20 I would love to engage with all of you where you are at, but it’s just not possible from a stage, even if I had all day.
00:09:38 That said, I want to set out a few signposts on this journey, and hopefully we can at least agree on this.
00:09:49 Firstly, we acknowledge that things aren't great for a lot of people in many ways, and we want things to get better.
00:10:02 Secondly, we acknowledge that our societies have previously been built on top of racism, sexism, slavery, war, and other terrible things.
00:10:14 Thirdly, we agree that we haven't had a proper reckoning with that history.
00:10:25 I could offer other examples of this—but I don't want to make anybody's day any worse, so if you need more proof, feel free to go read the news.
00:10:38 Given that we’ve not properly dealt with these issues, the status quo—the default, the norm of our society—is not great.
00:10:55 When I refer to systemic issues and injustices, this is what I'm talking about.
00:11:05 If we don’t see change, what we get going forward is what we've got now.
00:11:17 A key reason that these systemic issues persist is that those with power are comfortable and happy and understandably don’t want to give up that power and comfort, even though it could make a lot of people's lives so much better.
00:11:36 I hope our own personal situations aren't too badly impacted by such issues and injustices.
00:11:46 But even if they were, I want to stress that we can't accept that doing things normally is okay—because what's normal is harmful.
00:12:00 To change things means challenging those with power.
00:12:12 If you're not feeling like you can agree with this, I hope you can still appreciate the rest of my talk.
00:12:21 But I won't spend my limited time trying to win you over.
00:12:30 How do these issues relate to the conference, to Ruby, to us?
00:12:39 These problems, these injustices, impact us even within our wonderful Ruby community.
00:12:54 If we want to get serious about looking after Rubyists, we need to address these issues at their root causes.
00:13:05 We need to act in ways that actually help everyone, not just Rubyists; otherwise, we'll just keep fighting the same Sisyphean battles again and again, papering over the cracks without fixing the foundations.
00:13:21 This isn’t an either/or situation. I’m not suggesting we ignore our local issues or the local impacts of broader issues.
00:13:33 But if we want to truly be caring, if we want to help others, and if we want to have a positive impact on the world, then we need to look beyond our corner of the tech industry.
00:13:49 I understand it can be overwhelming; I get it.
00:14:01 But if we’re going to tackle these big issues, a fair question is: how?
00:14:14 Again, I stress that I don’t have any simple answers, but perhaps I can provide some guidance on what has helped me, what might help you, and offer some suggestions on potential next steps.
00:14:28 Firstly, we need to approach all of this with the right mindset because I can guarantee if you're feeling pretty comfy right now, you're going to come up against some very uncomfortable truths.
00:14:44 So be prepared to be challenged, and maybe even have your mind changed.
00:14:55 As you go out and learn more about these issues, you’re going to hear a lot of different takes.
00:15:10 In those cases, please don’t forget the influence and bias of power and privilege, and that could well be within yourself.
00:15:25 There are very few easy solutions, if any, and there’s not going to be a point where we can say, 'Great, everything's solved.' I mean, I hope there is a point, but I don’t think we’re going to get there.
00:15:37 You will need to lean into this sentiment from Maya Angelou: do the best you can until you know better, and then when you know better, do better.
00:15:46 If your journey through this is anything like mine, you’re going to be learning again and again about what's actually better, and then adjusting your actions accordingly.
00:16:03 With this mindset, the next step is to gain awareness, which means doing a lot of listening.
00:16:15 When you're considering a particular set of issues, listen to those with lived experiences—those who are personally confronted by the injustices.
00:16:30 You wouldn’t ask a white guy about racism; you wouldn’t ask a straight person about homophobia.
00:16:38 This is the kind of stuff I’m talking about. There’s also a place for experts, but be mindful of who gets to define expert.
00:16:52 Whether someone is an expert or not, generally lean towards those who are suffering from the injustices.
00:17:05 There’s also a distinction between listening and asking. People may not want to share their own experiences, their own trauma, especially just for the benefit of others.
00:17:21 So instead of expecting people—whether they be your colleagues, friends, or others—to explain everything to you, find a good book, a documentary, a podcast, or any medium that works for you.
00:17:34 I’ll post recommended reading to social media, Mastodon, and the Ruby Australia Slack after this.
00:17:49 Books are how I learn, so that's really what I’ll be recommending.
00:18:04 Also be wary of Ruby exceptionalism and tech exceptionalism generally. Tech folks have a habit of seeing a problem and trying to fix it without a deep understanding, and often that can make things worse.
00:18:22 So please don't be that person.
00:18:31 I’ve come across an appropriate analogy regarding racism lately. Beverly Daniel Tatum writes about racism in society as a traveler on horizontal escalators you might find at an airport.
00:18:43 If you stand on the travelator, it takes you there; you don’t need to do anything. Tatum refers to society as being racist by default—if you don’t do anything, you’ll be drawn toward racism.
00:19:00 If you really want to lean into being racist, that’s like walking along the travelator in the direction it’s going; don’t do that.
00:19:11 If you want to stop being racist, that requires energy. You need to turn around and walk the other way.
00:19:25 Tatum talks about this kind of active movement as being anti-racist, a term that’s gaining traction thanks to Black Lives Matter activists.
00:19:40 And it’s this active behavior that I’m seeking regarding dealing with racism, but also with all systemic issues. We can’t just be aware of them; we need to take action.
00:19:56 We live in a flawed society, and expecting the comfortable status quo to lead us to a solution isn’t going to happen.
00:20:10 This is why sitting on the fence and remaining neutral in such matters is harmful.
00:20:22 Reinforcing the earlier comment about not treating ourselves, as tech people, as inspired experts, unless you have lived experience, you shouldn’t drive these actions.
00:20:37 The experts, the people with lived experiences we’ve been listening to probably have recommendations on better ways to combat inequality and injustice, so follow their lead.
00:20:49 So do not treat Rubyists as special; don’t treat them as experts.
00:21:02 Here I am on the stage—a Rubyist without all that much expertise on the topic. I realize that's a bit of a contradiction, and I don’t feel especially comfortable with it either.
00:21:18 You can all make your own judgment at the end of whether I should have even been up here.
00:21:31 With that acknowledgment, let’s get into some practical actions, shall we?
00:21:45 Now, I considered looking at this from a code perspective because I know that’s practical and easy to dive into, but it felt wrong because we’re dealing with people.
00:21:58 Let’s focus as much as we can on people, not that the way we code doesn’t have an impact.
00:22:09 Fine, I’ll give you one technical point to consider, but it’s still not code; it’s about servers. In particular, the energy they consume.
00:22:22 The internet is made of servers, and it is a significant contributor to carbon emissions.
00:22:36 These days, we can usually find out how data centers are powered, so if you can, be more selective about where you host your apps.
00:22:51 Choose data centers or regions where renewable energy is the primary source.
00:22:59 However, we're mostly dealing with providers like Amazon, Google, or Microsoft, and in all cases, their ethics are problematic at best.
00:23:14 In all three cases, their actions actively harm people.
00:23:30 Let’s return to that travelator analogy. If you know these companies have terrible records but you use their services anyway, are you just standing on that travelator, being drawn toward acceptance of treating warehouse workers inhumanely?
00:23:43 This includes the removal of immigrant children from their parents and supporting fossil fuel companies and their misinformation campaigns.
00:23:57 I’m well aware that disentangling yourself from their services is extremely difficult, but you still need to understand the cost of that convenience.
00:24:06 The challenge to you is: what actions can you take to offset the terrible behavior of these giant companies?
00:24:19 How can you take your own steps on that travelator in the opposite direction? Is it donating regularly—as I stress, regularly—because you pay these companies regularly too?
00:24:33 Could you send some money to strike funds supporting workers at these companies? YouTube workers are currently striking.
00:24:48 This is a bit like carbon offsets, but you’re offsetting other things instead. I know offsets are a flawed system too. Have I mentioned I don’t have all the answers?
00:25:05 If you have other suggestions about this, please find me in the breaks; I’d love to chat more about ideas.
00:25:19 I highlighted donating before because generally (not always, but generally), we developers get paid pretty well, and I hope we can afford to be generous.
00:25:34 Money is a direct form of power, but where you send that money matters.
00:25:50 Try and get a sense of which organizations do the most meaningful work—whether they are sustainable and if they’re actually changing things or just papering over cracks.
00:26:06 This also comes back to awareness—it comes back to listening to those with lived experience.
00:26:22 For tackling racism and colonization, one group I’m happy to recommend for those here in Victoria is Pay the Rent (paytherent.net.au). They distribute funds to First Nations groups who need it.
00:26:39 Those groups then do important work in their communities; the admin work is done by allies, but the decisions regarding support are driven by First Nations folks.
00:26:53 I think that's a great approach. Pay the Rent recommends people chip in every month with a target of 1% of your salary. I know there are people in this room who already do this.
00:27:09 As a next step, I’d love to see businesses taking a similar approach—1% of profits, or even 1% of revenue. Let's get serious about this.
00:27:25 It's also important to note that, in the case of Pay the Rent, it's not a tax-deductible donation, and that is fine.
00:27:38 We’re not here to do this to feel good or to pay less tax; we’re here to make actual change.
00:27:54 Also, related to money is a more one-to-one kind of situation.
00:28:00 Talk about your salaries. Share them with your colleagues and peers at other companies.
00:28:15 Sharing what we earn gives us more awareness and more power to negotiate and can help highlight salary imbalances, especially concerning gender and race.
00:28:29 Essentially, it empowers us to push back against the status quo.
00:28:45 I can’t offer a salary of my own as an example because I’m a contractor, but as a limited data point, I earn a daily rate of $1,300 excluding GST for writing Ruby.
00:28:55 That’s based on over a decade of experience.
00:29:07 There are nuances to this that we could discuss; I realize that. I’ve got other topics to cover.
00:29:19 The next suggestion I have took me some time to navigate, so it might be a journey for you too: join your union.
00:29:32 For those of us here in Australia, that union is called Professionals Australia. It’s a bland name—a bit of an underwhelming moniker.
00:29:42 I wasn’t sure about unions for a long time; I understood they stood up for workers, but they also seemed to be frowned upon by others. I thought they were maybe only for some industries.
00:29:57 I feel like I missed key education along the way. I wondered if I would need to strike if I joined, and what that would even look like for contractors.
00:30:13 Ultimately, strikes are tools of last resort. Unions are largely for enabling collective action and distributing power among workers rather than giving control to employers.
00:30:28 For anyone who wonders, 'What have unions ever done for us?' Here's a very incomplete list: two-day weekends, eight-hour days, paid parental leave, reasonable retirement ages and pensions, occupational health and safety regulations, paid holidays, minimum wages, and paid leave for domestic violence situations.
00:30:45 Unions also protect the right not to be sacked if you’re pregnant, just got married, or are simply unwell. You might think that’s normal, but it wasn’t always the case, and we have unions to thank for that.
00:31:08 In the tech sector, decent working conditions may seem normal, but that isn't always the case. In the current climate, we’re seeing mass layoffs affecting workers, but are they impacting management?
00:31:20 Are bonuses being removed, and executive salaries reduced? Are executives even being laid off?
00:31:35 We might have it well off now, but we shouldn’t become complacent. We also shouldn't be alone in enjoying decent working conditions.
00:31:48 Even if you don’t need union support right now, that doesn’t mean you shouldn't sign up. Supporting your union with membership dues means they can provide more support to more of our peers.
00:31:58 I haven’t needed their services myself, but I’ve heard enough anecdotes to know that Professionals Australia does care and does help.
00:32:12 Many are directed to take work issues to HR, but at the end of the day, no matter how good the team might be, HR is there to serve the business more than the employees.
00:32:23 So consider a union as your voice when HR fails you.
00:32:39 Separately, for those of you who run businesses and employ others, I hope you feel challenged right now—thinking about discussions surrounding power and how much should be distributed.
00:32:54 I hope you're considering ways to reduce that power and to be more cooperative.
00:33:06 Also, if anyone has experience with building businesses as cooperatives, please talk to me afterward.
00:33:13 For those also interested, please investigate. I don’t have all the answers; I read a lot and educate myself—it's a work in progress.
00:33:26 But not knowing the answers shouldn't stop us from having conversations—they need to happen in the open for everyone to benefit.
00:33:39 I was lucky enough to see Rebecca Giblin and Cory Doctorow speak earlier this week, and Rebecca commented that with systemic issues, there are no individual solutions, only collective solutions.
00:33:48 Working together is the only way through.
00:34:02 That’s the last challenge: if you grapple with these topics and find ways to make progress, please share what you're doing.
00:34:11 I know that comes with ego challenges and concerns about grandstanding—it's not easy, but it’s worth doing.
00:34:23 If you’re unsure how to begin these conversations, start by sending me an email—I'd love to hear from you and figure this out together.
00:34:36 We come from a culture of open source sharing by default, and that is essential for helping us all learn and grow together.
00:34:45 Now, I have two more thoughts—two changes to what I think the Ruby community should be, and then it'll be lunchtime.
00:34:56 The first is: it's time to retire 'MATS is Nice.' I’m not questioning whether Mats is nice, but 'being nice' can be the problem.
00:35:05 'Being nice' means not rocking the boat. It's about not challenging the status quo, which allows for systemic inequality.
00:35:22 Being nice serves those with power and allows those without power to suffer.
00:35:32 Sometimes we need to rock the boat, and sometimes we need to make people uncomfortable.
00:35:43 We need to actively fight against inequality; things won't improve unless we do.
00:35:58 Harking back to that travelator analogy, being nice is standing still and polite on the travelator, letting it take you to a terrible destination.
00:36:11 Conversely, being kind is different—it's great, caring, and wonderful. But enough with just being nice.
00:36:23 The second point is: no more heroes—especially no more tech heroes.
00:36:37 Nothing against Mats, but humans are fallible and corruptible by power and influence, and sometimes they can be wrong.
00:36:49 So, don’t give them that pedestal. No more heroes—not Mats, definitely not DHH.
00:37:03 But also not good people like Aaron Patterson, Sarah May, Andre Arko, Evan Phoenix, Sandy Metz, or Coraline—who will be speaking here tomorrow—and certainly not me.
00:37:17 I’m just as flawed and fallible as the next person. But I believe that beyond these two changes, the foundations of our community are solid.
00:37:27 To me, the desire to help others, stand in solidarity, and challenge injustice feels like something Rubyists are already on board with.
00:37:43 I hope I’ve offered some challenges today and got you thinking a bit more deeply about how we engage with the world.
00:37:56 Let’s continue being fun, social, opinionated, and weird, but most importantly, let’s keep caring for each other.
00:38:11 We need to broaden our focus and aim to not just be good developers or colleagues, but also good citizens, acting in solidarity.
00:38:24 Thank you.
Explore all talks recorded at RubyConf AU 2023
+11