00:00:05.680
Awesome, thanks, Josh.
00:00:06.730
All right! So, teaching Ruby for fun and profit—yay for, you know, nice cliche talk names! I googled "teaching for fun and profit," and that's what came up. I thought it was funny, so I put it on a slide. However, it doesn't really tell you what I'm going to talk about.
00:00:12.400
Today, we're going to go on a little journey and think about what it's like for new people coming into our community who want to join us. How do we teach them? How do we bring them in? What are some of the challenges that they face?
00:00:25.680
I'm Renée De Voursney, as Josh just said. I run a consulting company in Seattle, in the States, and I've been teaching now for about three years. I do RailsBridge workshops and I've been working with them for three years, and I also offer paid classes. So, I've been teaching a lot.
00:00:39.520
This talk will be a bit about what it's like for my students. There was a New York Times article that inspired parts of this talk. It discusses learning the language of the internet. We're in a really interesting sector of the global economy—it's hot! Everyone wants a Ruby on Rails developer. There are tons of jobs in our industry, and it's popular. We work on the internet, which is exciting!
00:00:54.960
In the article, they were talking about all these schools cropping up to teach people how to code, how to learn the language of the internet. There are many programs related to Ruby and Rails. There are tons of courses and little code academies popping up everywhere, with different people teaching. It's interesting because there is still a demand for jobs, and it’s hard to find a qualified Ruby developer. With all these classes available, that's quite intriguing.
00:01:23.040
Here's another article listing 27 different online universities and courses, out of which about 15 to 17 had something to do with Ruby on Rails. That's really interesting! There are lots of resources out there. It seems everyone wants to be a Rubyist.
00:01:30.280
What we do is fun—we're here at a conference enjoying each other's company. I'm traveling all over the world these days, having lots of fun. It's interesting; I was talking to some students about how, in our industry, it's rare that your friends are also the people you work with. But we're Rubyists! We go out and have drinks together. It's a very interesting and fun community to be part of.
00:01:44.320
When you talk to other people in different industries, they often say, 'What you do is so fun; I wish I could do that. My job sucks!' We have an awesome community of people. I borrowed this idea from Constantine. He had a talk at RubyFusa and mentioned that Matt (Matz) actually calls himself a dictator regarding what he allows into the standard library. He still maintains that role, applying to the community as well: we have this 'Matz is nice, so we are nice' mantra!
00:02:04.560
Matz created a language for people, he is a nice guy, and this ideal exists in our community—a focus on kindness. We have this great community, all these courses online, a booming economy, tons of jobs. So why isn’t there a large turnout here at this conference? Why are there still job openings? There must be something difficult about Ruby and the transition for new people entering our community.
00:02:30.320
Let's take a little detour for a moment. I want to start this section—for new people—their perspective on conference presentations. Can anyone tell me what these equations are?
00:02:50.240
The rocket equation! I'm thrilled that someone actually knew that. Can you please explain it to us, Constantine? You have the typical mass times acceleration equation, but it doesn't work for rockets because you're constantly losing mass as you're burning fuel and dropping tanks. This is essential because otherwise, it would be inefficient.
00:02:54.960
Indeed, you need to rearrange the foundational equations of motion. Did you look this up because you knew I would ask? Actually, I taught a presentation in high school on this. That's awesome! So we've stepped a bit off course; thanks for that, Constantine.
00:03:18.480
This section serves as a playful return to the coding slides we've encountered before. So here’s a situation: Adam is going to join us on stage. Adam has a degree in rocket propulsion. He's my fiancé, so I get to tease him a bit! He's a new Rubyist trying to learn. At home, we have this running joke—we like to call it 'Ask a rocket scientist.' Whenever I don't understand something, I just ask Adam!
00:03:35.679
So maybe you could explain these equations, Adam? This rocket equation is crucial: delta-v represents how much you're changing the velocity of your vehicle as you expel mass out of the back. The rocket equation is specifically the most important aspect of rocket science, especially as you consider your mass is changing while expelling exhaust.
00:04:00.679
Using Newton’s second law—force equals mass times acceleration—you’ll have a certain amount of force your rocket is generating, but since your mass is changing, your acceleration is also changing. You need to integrate across that. I see some confused looks, so you should thank Renée for not bringing up the differential equations.
00:04:30.000
So to summarize what you’re saying, Adam, we need a huge rocket to put a little tiny hat on the moon? That's it! Now, if that equation was simpler, we would be having RubyConf on Mars right now; if it was harder, we’d still be figuring out Sputnik.
00:04:37.270
That equation basically allowed us to reach the moon—albeit barely! Adam, could you explain to me about arrays? Basically, it's like a counter type situation where, as you loop through the array, you add to the counter. At the end, it gives you the total number of elements in the array.
00:05:01.159
Great! Thank you, Adam. So here’s a metaphor: I've got a collection of crayons in boxes. If I said to a five-year-old, "Go grab all the crayons in the first box and put them in another box in order, then count how many crayons you have," they could do it. This task is analogous to counting elements in an array.
00:05:20.679
Going further, you could explain this process of counting with the inject method in Ruby. While I haven't yet explained inject in detail, I've provided enough information for someone to guess its function. You may also consider other operations like multiplying numbers.
00:05:41.719
You don't need a degree in rocket science to understand inject, yet having such a degree doesn't necessarily help your understanding—you need someone experienced to break it down for you.
00:06:02.319
When teaching Ruby, context is crucial. I've tried to explain inject, but there's complexity underneath that can differ based on your level of understanding. As you introduce Ruby concepts, think about how to clarify them for your audience.
00:06:14.639
It's vital to approach each learner based on their prior experience. This applies to beginners trying to learn Ruby as well—if you forget to lay out simplifications or foundational assumptions, they may struggle.
00:06:40.799
So, learning Ruby can be challenging, not just because of the language itself but also due to the moving parts involved. When introducing someone as a Ruby developer, they must absorb a lot more information compared to learning Java or C#.
00:07:05.680
Java has a clear starting point with its documentation and one-click installers. To get started with Java, you visit the Sun Microsystems website, download the relevant documentation, and begin hacking right away.
00:07:23.240
Other languages like C# and VB follow a similar model. But in Ruby, things change. Just a few years ago, the easiest way to get started with Ruby or Rails was through Windows.
00:07:41.880
The Rails installer simplified everything, whereas the common industry standard used to be to code on Unix—most developers use Macs. To become a Ruby developer, many would naturally gravitate towards a Mac because it’s what's usually recommended.
00:08:11.920
In Ruby, the complexity increases when you introduce source control, which every developer in the world needs to use. Here, we use Git, the industry standard, which is so much easier than SVN.
00:08:37.960
One significant difference to be aware of is that working with Git goes hand in hand with GitHub. While you can manage your changes in Git via the command line, GitHub adds an additional layer of collaboration. Not only do developers need to learn Git, but they also need to understand how GitHub works and how it interacts with their Git workflows.
00:09:04.440
Additionally, there's Ruby Version Manager (RVM) that simplifies managing Ruby versions, a significant aspect. You've had to compile Ruby from source in earlier days, which was a hassle.
00:09:24.560
Now with tools like RVM, switching between Ruby versions and projects is almost effortless. Though it's easy to forget, new developers may feel overwhelmed by command lines, text editors, and even terminal-based tools when they are just starting out.
00:09:52.080
Common testing practices in Ruby, like using RSpec or Minitest, can confuse newcomers. They might feel they have to juggle many moving parts while trying to build something functional.
00:10:09.200
With the vast array of gems and libraries, the Ruby community offers many tools that automate tasks and streamline functionality. However, navigating the repository of available gems and understanding their proper use can be daunting!
00:10:25.280
Not only are there numerous gems available, but the documentation for many of them can create additional ambiguity—such as have multiple names or unclear associations. This lack of consistency can lead to miscommunication about how to implement them properly.
00:11:06.679
Despite this, Ruby easily allows developers to learn through community resources, gaining exposure to example code. Developers can jump straight in to decipher schemes detailing how various pieces fit together, helping them build their understanding.
00:11:30.000
However, as educators, we have to acknowledge the gaps where new developers might struggle to inquire or experience confusion, particularly in the context of modern software development.
00:11:57.360
Rethinking how we introduce Ruby to beginners is essential—to help them feel welcomed into the community. Sometimes new learners may vent their frustrations online, giving rise to misunderstandings.
00:12:09.720
As educators, we must reach out and lend a hand—offering extra guidance and clarification. We should work together towards fostering a constructive learning environment rather than an intimidating one.
00:12:32.960
So, let's remember that it takes much to be part of this remarkable Ruby community. Our aim should be to support new learners and share the joy we derive from our craft. Let's continue to extend our kindness and extend our resources to those who may need help navigating these waters.
00:12:54.080
Thank you for your attention today! I look forward to chatting about teaching Ruby, Rails, and more over lunch. I really appreciate your engagement and support.
00:13:00.639
Thank you!