Polyglot Programming
Summarized using AI

What is a Rubyist?

by Steve Klabnik

In his talk at RubyConf AU 2015, titled "What is a Rubyist?", Steve Klabnik explores the identity and evolving nature of being a Ruby programmer. The presentation is grounded in philosophical concepts, particularly ontology and process philosophy, to examine what defines a Rubyist beyond mere technical proficiency. Klabnik, despite engaging less with Ruby day-to-day, emphasizes the importance of community participation and the physiological understanding of identity in programming.

Key Points Discussed:
- Philosophical Foundation: Klabnik uses ontology to discuss existence and identity. He compares how we define objects in programming models to Plato’s theory of forms, asserting that attributes alone aren’t enough to define a Rubyist.
- Process Philosophy: Instead of rigidly categorizing Rubyists based on specific attributes, Klabnik advocates for defining them by their active engagement in the community and in the evolution of Ruby itself.
- Community and Inclusivity: He stresses that the Ruby community should embrace contributions from various programming languages, highlighting the collective experience rather than strict definitions of identity.
- Adapting and Evolving: Klabnik discusses the necessity for the Ruby community to cease negative comparisons with other technologies and instead embrace useful insights from them, especially from languages like Java.
- Crossing the Chasm: Referencing Geoffrey A. Moore’s model, Klabnik argues that the Ruby community must recognize its stagnation and effectively bridge the gap to attract the early majority, which can lead to broader acceptance and growth.
- Embracing Change: He points out how Ruby is now viewed more as a stable, reliable tool rather than an innovative choice, indicating maturation within the community.
- Collaboration and Cross-Pollination: Klabnik emphasizes learning from other programming languages and practices as crucial for Ruby’s future. He cites examples such as the introduction of static typing as a step towards quality enhancement.

Conclusion: Klabnik’s talk encourages Rubyists to respect and learn from other programming ecosystems while acknowledging the need for the Ruby community to adapt and evolve. He promotes the idea that being a Rubyist encompasses an open-minded approach to programming, fostering collaboration and a positive perspective towards other tools and technologies. The future of Ruby, he suggests, relies on this capacity for adaptability and respectful engagement with the ever-changing landscape of programming.

This session ultimately fosters a dialogue on maintaining relevance in technology by embracing innovation and collaboration as core values.

00:00:00.280 Good morning everyone! I have a talk for you this morning that starts off a little intense.
00:00:02.159 I apologize for that, especially since it's morning. I'll be using a couple of big words, but I won't go too deep.
00:00:05.560 The title of this talk is 'What is a Rubyist?' As Josh mentioned, I've been doing a little bit less Ruby work nowadays.
00:00:11.559 Although I still maintain a bunch of gems, I've stepped away from Rails development. However, I still consider myself a Ruby programmer.
00:00:15.080 I love coming to Ruby conferences because all of you are my friends, and you're great. It's interesting to think about why, if I don't do a lot of Ruby now, I still come to Ruby events all the time.
00:00:19.560 I even have a little Ruby tattooed on my body to show how much I appreciate Ruby! The answer to this lies in the question presented in the title: what is a Rubyist?
00:00:24.000 Why do I call myself a Rubyist even though I write less Ruby now? To explore this, let’s start with philosophy, specifically ontology.
00:00:31.280 Ontology asks the question: what kind of stuff exists? It’s all about understanding the nature of being and the essence of things.
00:00:40.280 For example, Plato was interested in this question and came up with the idea of the theory of forms. Essentially, he claimed that we can declare what exists by certain properties it holds.
00:00:47.680 For instance, a tree has a trunk and leaves. If something possesses those attributes, we can call it a tree. This concept mirrors how models work in a Rails application.
00:00:54.080 Your ‘User’ model might have attributes such as a username and a hashed password. However, modeling the real world in applications presents challenges, especially as situations evolve over time.
00:01:02.480 For example, what happens when a user account goes inactive and is reactivated? Understanding the nuances of time and change in programming is crucial.
00:01:11.120 Now, if Plato’s ideas are up for debate, who comes next? I don't think we can strictly categorize philosophies as right or wrong, but I lean towards a concept called process philosophy.
00:01:22.760 This philosophy suggests that identity is defined by actions rather than attributes. So rather than defining a Rubyist by a checklist of attributes, we should define them by their activities.
00:01:32.360 According to this view, being a Rubyist is about engaging with Ruby community, participating in its evolution, and contributing to the history of the language.
00:01:39.320 This concept is more inclusive since it allows us to identify as Rubyists while also being involved with other programming languages, like JavaScript and PHP.
00:01:45.679 Being part of multiple communities enriches our experience and contributes positively to our identity as developers.
00:01:51.399 Another important idea within process philosophy is 'assemblage.' Once we move away from the notion of essential attributes, it becomes more challenging to define groups or communities.
00:02:01.200 For instance, what exactly is RubyConf Australia? It's all of us gathering together, but sometimes people join or leave at different times, making it a bit amorphous.
00:02:06.720 We aren't strictly RubyConf Australia if one person is missing; it's more about the collective experience, and that's perfectly natural.
00:02:13.439 As I navigate the Ruby community, having stepped in and out of it, I find myself with unique insights, and I want to share some thoughts on where the Ruby community should head.
00:02:22.119 The first thing I believe is essential is that we need to stop talking negatively about other technologies. Our community needs to mature and understand that we aren’t school kids anymore.
00:02:31.199 There are few startups that capitalize on Rails as their competitive advantage anymore. It's crucial to recognize that Java and other languages have valuable insights and practices.
00:02:39.840 For too long, we've mocked Java developers for their practices, but we might be missing out on great learning opportunities. We need to be open to understanding and adopting effective techniques from them.
00:02:47.239 There's a possibility that the JVM and Java might play a crucial role in Ruby’s future. The work that Charlie Nutter and the JRuby team are doing is noteworthy and might lead us toward a faster Ruby.
00:02:55.000 It’s also important to consider static typing, as Tom pointed out in his talk. Incorporating sound practices from other programming languages can help Ruby grow and improve.
00:03:03.360 I want to discuss the model of 'Crossing the Chasm' by Geoffrey A. Moore, which explains how technologies gain acceptance in the mainstream.
00:03:12.720 This model illustrates how new technologies are adopted by different cohorts: innovators, early adopters, early majority, late majority, and laggards.
00:03:19.600 The innovators are the ones who embrace new technologies at the start, but there's often a significant gap between the early adopters and the early majority, which is referred to as the 'chasm.'
00:03:27.679 To survive, a technology must effectively bridge this gap. Unfortunately, many technologies fizzle out before they can bridge this divide.
00:03:35.880 In order to cross the chasm, technologies have to prove themselves to be effective, reliable, and capable of meeting the demands of the early majority.
00:03:43.560 It’s worth reflecting that the Ruby community hasn’t crossed this divide since around 2008 or 2009, and we must recognize how we can evolve to reach the early majority again.
00:03:49.920 The late majority typically consists of enterprises using stable technology, while laggards consist of users who are very resistant to change. At this point, Ruby has been around for over 20 years.
00:03:58.760 Interestingly, I'm realizing that I’ve started to endorse Ruby not for the innovation but because of its stability and the robustness of its libraries.
00:04:05.520 This demonstrates a shift—we’ve become familiar with Ruby as a reliable tool rather than the adventurous option. It's a compelling reminder of where the Ruby community stands.
00:04:14.680 I remember a time, back in 2009 or 2010, when I chose Ruby over other technologies simply because of its propensity for experimentation and continuous development.
00:04:27.040 It's fascinating to see how our perceptions have changed over the years as the Ruby community has matured. We need to acknowledge that Ruby is undergoing significant transitions.
00:04:39.560 In reflecting on where we stand, it's crucial for us to understand the changing dynamics and how they affect Ruby's relevance in the software landscape.
00:04:45.440 There was a conversation recently highlighting the necessity to adapt, shown by talks about growing into management roles and integrating static typing.
00:05:01.560 These are signs of Ruby maturing as a language and community. Embracing the idea of being a polyglot while nurturing Ruby traditions will prove to be vital.
00:05:08.640 The idea of assemblage aligns well here. We need to avoid talking trash about other programming systems and instead, learn from them.
00:05:15.760 By integrating good ideas from other programming languages into Ruby, we can foster growth and development—essentially evolving our approach to programming.
00:05:24.519 One practical example is how we promote the use of static typing as a quality enhancement. If we don't adopt ideas outside our bubble, we risk becoming irrelevant.
00:05:34.240 Collaboration and cross-pollination between languages are necessary for innovation. I’ve noticed this dynamic working with Rust, where we’ve introduced Ruby's ease of use.
00:05:43.280 This cross-pollination extends to discussing how tools like Bundler have improved programming experiences, illustrating the significance of effective community practices.
00:05:49.640 Such impactful tools have accelerated workflows, enabling developers to get started quickly in their projects. We identified similar challenges for making Rust development easier.
00:05:56.160 Rust was initially complicated due to Makefiles, so we proposed Bundler-like workflows, which fundamentally transformed how components can be managed.
00:06:02.720 It’s crucial to recognize the diverse ways that programming communities can benefit from each other’s knowledge. The shared goal is to create efficient and enjoyable programming environments.
00:06:08.000 To thrive, we need to be respectful and understanding of other technologies and ecosystems while also embracing the notion that we've matured as a community.
00:06:15.080 Maintaining a sense of reverence for progress, innovation, and collaboration in programming will ultimately ensure Ruby remains relevant and beloved by future developers.
00:06:22.480 Thank you so much for being here with me today! I look forward to discussing further with all of you and hope you enjoy the rest of the conference.
Explore all talks recorded at RubyConf AU 2015
+14