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.