00:00:11.100
So today we're going to talk about saving Ruby from the apocalypse. This is the second part of the future of Ruby, the present.
00:00:14.770
If you were just in the last talk, you heard Justin and Josh take us through the history of the language. This talk will continue that story.
00:00:18.550
Hello, my name is Jason. You can find me on Twitter, where I sometimes ramble about useless things on my blog. And because I live the dad life now, here’s an obligatory family photo.
00:00:30.099
I also want to give a shout-out to my family for being super supportive and letting me do things like this. By day, I'm a senior engineer at a company called Linds Reynolds.
00:00:42.129
I'm just curious who in here has heard of Linds Reynolds? Awesome! For the rest of you, I have a question.
00:00:48.550
You picked up that I probably work for a rental company, but you're probably confused about what we do, as that's always the question I get.
00:00:58.170
So, I’m going to poll you: who thinks we might be in eyeglasses? Anyone think we’re a camera rental company?
00:01:10.120
If you ever hear me say Linds Reynolds, that's what I'm referring to.
00:01:19.080
Okay, so I just told you we're going to be looking at Ruby in the present, but today I need your help. Because to safely look at the present, we’ve got to go to the future. I've been to the future; I just returned from the year 2020, and things are rough.
00:01:44.950
Specifically, I checked on how you were doing, and honestly, I think it's just better if I tell you your story. So, you've just woken up. You're not sure where you are; you think you're in a hospital room. You’ve got an IV attached to you, your throat's all dry, so you try and call out for a nurse.
00:02:09.190
No one makes a sound. You scream, "Nurse!" but to no avail; no one comes into the room. You pull out the remote and hit that call button. You keep hitting it, but nobody ever comes. In fact, nothing happens.
00:02:25.390
You slowly wipe your eyes and, as your sight comes back, you see across the room a couch and on that couch is your backpack. Right now it feels like a mile away. Your body’s weak, but you're excited because, well, that’s your backpack. The only problem is that now you've got to get out of bed and get to the couch.
00:02:57.560
You decide, "Okay, I'm going to do this: one, two, three!" and you fall back onto the bed, discouraged. You say, "Okay, I'm going to do this one more time: one, two, three!" and you're up.
00:03:24.849
You start the slow walk from the bed to the couch. Every step is a little stronger than the last, and you finally make it over there.
00:03:27.850
You grab a seat on the couch and start going through your bag. You see all the clothes you're wearing, last you see your shirt, your pants, then you find your cell phone.
00:03:38.350
Yes, your cell phone! This will have all the answers. You go to turn it on, and it's dead. Naturally frustrated, you throw it back in the bag and get dressed.
00:03:47.500
You walk out into the hall; you look to the left, you look to the right, and you're in a ghost town. As you start to make your way down the hall, you hear boom, boom, and the noises get louder.
00:04:05.470
As you reach the end of the hall, you see an elevator with the doors open, and the booms keep getting louder; the noise is coming from inside the elevator. You take a peek down into the elevator shaft, scared, but you do it anyway.
00:04:31.280
You’re greeted by zombies—a container of dead-looking creatures slapping their lifeless bodies against the metal walls of this elevator. That's okay until one tries to reach for you; it scares you, and you fall over.
00:05:01.300
You pull yourself off the ground and take off running to the exit sign. At this point, you don’t know where you are, but it's not where you remember being.
00:05:22.970
So, you make your way outside, and in fact, it's just a normal sunny day—except everything's different. The world seems empty now.
00:05:40.370
About a quarter mile away, you see a road, and you think, "Okay, I'm going to make my way to that road." As you get closer, you start to hear a car coming; it's loud, so you walk out into the street.
00:06:02.230
A car suddenly slams on its brakes, and smoke clears. It’s DHH, and he tells you to hop in. You say okay, you get in the car, and you both take off.
00:06:35.310
Now you're in a car with DHH, and naturally you're filled with questions, like what are your thoughts on single-page applications? Why should I still use Rails? Do you still think TDD is dead? But instead, you decide to ask the most burning question: what's going on here? Where am I?
00:07:01.490
He explains that for the most part, the rest of the world hasn't changed at all, but an epidemic of software developers has broken out. There were too many languages, too many tools, and too many libraries.
00:07:36.330
Decision fatigue became so overwhelming that developers were unable to cope with selecting the right tool for the job. They began to slowly lose their minds and turned into zombies. Once this happened, there was no choice but to isolate all developers to protect society.
00:08:10.810
Rightfully confused, you're taken by DHH to the only thing you have left. As you get closer to your destination, he explains that developers decided to form camps. But all the camps ended up as silos: PHP camp, Java camp, and obviously, there's a Ruby camp, and that's where DHH is taking you.
00:08:49.890
He explains that actually very few Ruby developers turned into zombies during the outbreak. In the distance, you see a shiny diamond-shaped object that begins to beautifully reflect the sun.
00:09:06.570
As you get closer, you realize it’s the Ruby camp, or a base camp if you will. You see some smiling faces writing code, embracing the expressive, beautiful language that you know and love. Hooray!
00:09:30.550
As you exit the car, DHH wishes you farewell. You close the door, stand up, take a good stretch, turn around, and you're greeted by another familiar face—it's Matt!
00:10:10.700
He shows you around, and you get to connect with old friends, meet new ones, and learn to embrace this post-apocalyptic world that you're now part of.
00:10:56.080
Everyone is so friendly, and it turns out that Matt's motto, "be nice," applies in the post-apocalyptic world too. You think at this point, well, Hacker News finally got it right. Ruby's dead.
00:11:49.070
But just like every time in the past you've heard this statement, you're confused. You look around and see tons of people using Ruby. Either way, you're confused but happy to be safe.
00:12:18.890
You grab a bunk and get a good night's sleep. The next morning, over breakfast, you start hearing frightening stories about how we've made software so complex and isolated.
00:12:36.750
There’s just no hope anymore. Every time we think we’ve solved a problem, a new language comes out that’s shinier and promises something better.
00:13:13.350
So, that leaves you with one burning question: who’s going to fix this? Weeks start to go by, and you start to become despondent, maybe a little sad. You miss life as it was before. You ask yourself, how can life return to normal?
00:13:42.240
You put on your thinking face: what can Ruby do to prevent more developers from turning into zombies? Ruby itself is already a pretty powerful language. What seems to be the problem? You're not really sure, but maybe it's time to talk to others in the group.
00:14:56.590
So, over dinner that night, you start sketching your plan with a few of your close friends. You ask, can we reverse this? They say: well, we’ve tried, but no one can hear or see us through all the noise that all the other programming languages are making. Everyone is promising the best, and we just can't do it.
00:15:58.330
Disappointed, you let the conversation turn to something else, eventually calling it a night and deciding you'll try again tomorrow.
00:16:24.320
The next morning, you ask Matt to go on a walk, and he agrees. As you stroll around the camp, he explains that ever since the outbreak, he has been trying to keep Ruby alive.
00:17:01.480
He emphasizes that while he doesn't believe Ruby's dead, he tells you that he can't keep it alive alone—neither he nor the core team. It requires more than that!
00:17:38.170
You ask, how can I help? But before you can finish your question, he's called away. How frustrating! You love Ruby and all you want to do is fight for its survival.
00:17:47.400
Others have tried, and while some are still trying, it just feels like a wasted effort. You try to go to sleep that night, tossing and turning.
00:18:09.680
Finally, you say to hell with it. You get up, head to the campfire, and dream of a simpler, happier time in Ruby—a time much like the one you saw in the previous song.
00:18:38.590
It hits you: you’ve got to step up! You've got to be the one to save Ruby! Excited to save Ruby, you decide to take some time to problem-solve.
00:19:05.420
I mean, after all, you're a software developer. You start thinking about the problems at hand. Well, Ruby isn't necessarily the shiniest language anymore, other programming languages are coming out, and they’re so popular!
00:19:39.830
People are being jerks about Ruby on the internet now, and developers are moving on, just abandoning the libraries we rely on.
00:20:21.780
You think, okay, before I try to figure out more problems or dig into solutions, I want to reach out to other people. I want to go to these other camps and learn what other programming languages have done, as they've all been in this situation.
00:20:56.160
So, without changing Ruby the language, are there any ideas I can bring back? Anything that could be introduced? Anything I can learn from other languages?
00:21:21.550
You spend weeks traveling around to find these developers—anyone who will talk to you. You visit the Python camp, PHP developers, Java developers, even .NET developers, Elixir developers, and JavaScript developers.
00:21:54.680
You take some time at each camp to understand the problems they’re trying to solve and the different approaches they take.
00:22:18.350
The thing that you learn is that they're actually all trying to do good, however skewed some of the approaches may be to you. They’re taking what they think is the best approach. After your time at camp, you try to make your way back home, feeling good from the amazing conversations.
00:24:02.180
But on your way back, you hit a JavaScript zombie who’s trying to turn you with all his frameworks and tools. You get past him safely, but then you're met by the PHP zombie of the past: "MySQL connects, it’s so easy to deploy, we don’t even have object-oriented!" This is our early 2000s PHP zombie.
00:25:08.430
Finally, you let out a sigh of relief as you safely return to camp. You’re re-energized by everything you’ve learned.
00:25:39.180
You sit down, focusing intently on the problems at hand—keeping Ruby alive. You think deeper and realize that Ruby isn't dead, but rather we need to keep Ruby relevant.
00:26:03.560
That seems more accurate. So you identify five specific problems.
00:26:33.170
First, people are talking about Ruby rather than celebrating its pros. People are shouting its cons instead of taking action or being the change they want to see. They’re just ranting online and bailing.
00:27:08.730
You see that familiarity breeds contempt; several people using Ruby before the apocalypse are starting to find it boring and are no longer excited to use it. They've just given up.
00:27:52.280
You also observe that libraries are going unmaintained. A scroll through GitHub reveals that many once-thriving libraries are now abandoned, racking up GitHub issues and making all of our applications forced to become legacy.
00:28:10.249
There are no new ideas coming in; people decide it’s just best to chase these new languages. This leads to fewer products being built with Ruby, and unless people are building products with Ruby, less relevant Ruby becomes.
00:29:07.420
So now that you've identified the problems, it's time to talk to the camp. You say, okay, let’s look at some ideas on how we can keep Ruby relevant. You suggest that we talk about Ruby more.
00:29:44.390
Years ago, the internet was filled with articles discussing the problems people solved with Ruby. Now, many of those articles collect dust while people talk about leaving Ruby for X. Those discussions, whether fair or not, don’t help. That’s how we ended up in this mess.
00:30:35.430
You challenge everyone to share and learn any new tricks they come across, even if they think the ideas are silly. Just because you're excited about them doesn’t mean they won't help.
00:30:54.420
You challenge people to learn new ideas and explore other programming languages. Learn them, understand what they’re useful for, and see if there are concepts you can bring back to your own code.
00:31:19.100
You’re sure there’s a lot we can learn from each other, even outside our own community. Continuing through your solutions, you bring up once-popular libraries that are now abandoned.
00:31:37.890
You encourage people to start digging into them and building new libraries. Things change, we have new ideas, new ways to do things.
00:32:05.020
You encourage everyone to do this: if you don’t like the way something is done, write it the way you think it should be done.
00:32:51.320
Encourage some of the teams to start building new applications with Ruby—even if they don’t succeed, some will. The successful ones create jobs for Ruby.
00:33:10.740
Armed and ready for battle, your team gets to work writing blog posts about everything they’ve learned.
00:34:01.400
People are blogging about the problems they're solving with Ruby, sharing new tricks they’ve learned. Teams are forming, going out to other camps and learning how they can solve problems, eager to learn from others.
00:34:53.760
They’ve made their way out to unfamiliar terrain in search of growth and new ideas.
00:35:03.490
Libraries once abandoned are finding new life from everyday developers like you. Issues are being closed, pull requests are being merged, and people are upgrading their applications.
00:35:51.580
Instead of painful tears, there are tears of joy. Tired of complaining, people started to build new libraries with Ruby, solving problems with code and improving the ecosystem as a whole.
00:36:43.740
The more entrepreneurial types are building products and systems to solve problems.
00:37:20.320
Others who have preached Ruby’s demise are now witnessing a renaissance of a language that, while never dead, had seemed stale. Other communities have taken notice, now recognizing Ruby as a relevant language.
00:38:01.820
The world begins to find balance; developers stop turning into zombies and instead become normal people solving problems with the language they love.
00:39:50.320
Our silos and camps begin to disperse, making it safe for Ruby developers to enter the world again. Pieces are banded together, and software, though as usual, won't be the same.
00:40:43.330
So, with that absurdly ridiculous story in place, I want to talk about the present state of Ruby and pose this question: Is Ruby dead?
00:41:52.640
I am always the first to admit that when I see articles like this, I start to believe them because I think, "Oh, they’re right. I need to abandon ship. I start looking for a new job and thinking it’s time to learn Elixir. It’s over."
00:42:42.320
But I started reading those articles years ago and I still have a Ruby job. I still attend conferences with many other Ruby developers.
00:43:48.860
So, I don't think Ruby's dead, but I do want to examine something I’m not ashamed to admit I may not know as much about as I should.
00:44:23.030
Is there anybody familiar with the hype cycle? If you're not familiar, I’ll give you a very non-official JSON definition of it.
00:44:55.830
According to this model, successful technologies go through these five phases. The first is a technology trigger; this is when a technological idea, maybe a proof of concept, enters the world.
00:45:29.440
The second is the peak of inflated expectations. That’s the point where people start to believe, whether they're right or wrong, that this new technology will solve all their problems.
00:46:02.410
The third phase is called the trough of disillusionment. This happens when the expectations aren't met, and people realize, "Oh, this technology did not solve my problem."
00:46:48.370
Fourth is the slope of enlightenment; this is the moment when people start to actually weigh the pros and cons and make a more justified decision on using a technology.
00:47:39.050
And finally, there’s the plateau of productivity. This is when things start to balance out, and people that know they need to use this technology are effectively using it.
00:48:04.140
So now that we have that wild definition, let's look at that in terms of Ruby. The technology trigger? I like to think it falls somewhere between when Matt released Ruby in '93 and the mid-2000s when Rails came out.
00:49:14.330
I consider this the technology trigger for Ruby. The peak of inflated expectations? Ruby was the object-oriented language that would rule above all. It was shiny—it made developers happy! Everyone was talking about it.
00:50:01.080
Next, disillusionment. "Oh, Ruby's too slow; it's just a toy language!" The language didn’t claim to solve those problems, but people expected it to.
00:50:21.190
The slope of enlightenment—what do we know we can get from Ruby? We know its weaknesses and businesses are building all kinds of apps with it.
00:50:52.730
It has been adopted. Finally, Ruby is mature. And that’s where I think we are today: on this plateau.
00:51:28.790
Many of us—well, probably all of us—use Ruby every day. It's one of my main tools. There’s not much to talk about Ruby per se anymore, but I still love to share about it.
00:52:25.220
So with that said, is Ruby dead? No! I feel so strongly about this that I even made a website for it: IsRubyDead.com. Next time you're unsure, check it out!
00:52:41.400
Just because Ruby isn't dead doesn't mean we don’t have to fight for relevancy. So what are some ways we can keep Ruby relevant?
00:53:20.240
Well, you already know how to do that because you saved the world earlier! Talk about Ruby more. Learn some new ideas.
00:54:04.200
Help maintain abandoned libraries! I have two specific examples I can share with you right now. The first one is a talk online by Richard Schneeman at RailsConf 2016, talking about how he became the maintainer of Sprockets.
00:54:41.590
It was a wild first three minutes, and you did not know what was going on, but it’s very good!
00:54:57.160
The next is an article that was just published in Wired Magazine about Justin Searls, who was just up here talking about how he took responsibility for RSpec after the passing of Jim Wyrick.
00:55:24.920
We know where these libraries are; we can see when they start to feel stale or haven’t been updated in a while.
00:55:59.450
Anytime we introduce one at work, I always check when was the last commit? Build new libraries when you learn new ideas.
00:56:25.120
If you think you have a better way to solve a problem, just make it a gem! Even if it doesn't become the next big thing, it might help someone else, and that helps keep Ruby relevant.
00:56:53.840
Also, build the next Rails if you feel like it! You might be thinking you're not the type to build a product and sell it, but if you do build a successful product, this is hard to do.
00:57:26.610
If you build a successful product, you create more jobs with Ruby. More Ruby jobs mean that this influx of junior developers can start getting jobs.
00:58:01.370
Ruby can stay relevant and continue to grow. And I’d like to add one more thing: teach people Ruby!
00:58:36.100
There are a lot of times I have friends who ask me how I got into programming, and I tell them my story: I stumbled upon it. I’m a college dropout because I’m really bad at math. Ruby means a lot to me; it helped me develop my skills.
00:59:36.710
So, I want to share Ruby with my friends who want to learn it. You might ask, Jason, why do you care so much?
01:00:00.000
Well, share some time with me, and you'll learn that I really love this language. There are many reasons, but mostly it's because it literally changed my life.
01:00:20.590
Like I said, I was a college dropout, but it wasn't until I was studying computer science that I knew I wanted to be a programmer.
01:00:54.340
Ruby helped me bridge that gap from being a college dropout to a full-time employed senior software developer. It made complex things more approachable for me.
01:01:25.160
And the thing is, I know I'm not alone. I've talked to many people in this community, and they have similar experiences to mine.
01:01:51.250
It's not perfect, but I’d be lying if I said it doesn’t bring me joy to use every day. It turns complex problems into fun challenges.
01:02:17.440
It’s at a point now where it’s mature, battle-tested, stable. It may not be the shiny, hip tool, but that doesn’t mean it’s irrelevant.
01:02:39.950
At the end of the day, a programming language is more than just the language itself; it’s the entire ecosystem around it.
01:03:28.470
So when I say ecosystem, I mean it includes the community, the tools we build, and the libraries—the types of problems we’re trying to solve.
01:04:10.330
Even if we don’t have commit access to Ruby, or at least I don't, it doesn't mean we can't make a difference.
01:04:46.940
So next time you think Ruby is dying, see if there's a way you can do your part. Find me on the internet; I have stickers for GoRails that my buddy Chris Oliver sent me with, and stickers for Prompt.
01:05:39.620
If you don't know what either of those two things are, come see me. I'm super shy; if you talk to me, I'll not stop talking to you, and thank you.
01:06:25.180
And also, thank you for clapping so I didn't have to use this slide.