Developer Experience (DX)

Summarized using AI

Teaching Ruby for fun and profit

Renée De Voursney • February 20, 2013 • Earth

In her talk "Teaching Ruby for Fun and Profit" at RubyConf AU 2013, Renée De Voursney explores the challenges and rewards of teaching Ruby programming to newcomers. The presentation addresses the demand for Ruby developers in a rapidly growing tech industry and the surprising difficulty many experience in learning the language.

Key Points Discussed:

- Community Engagement: Renée emphasizes the importance of the Ruby community, known for its friendliness and collaborative spirit, which stems from creator Yukihiro Matsumoto’s philosophy, "Matz is nice, so we are nice."

- Learning Environment: Despite the rich resources available for learning Ruby, including numerous online courses and workshops, many new developers still struggle to find success.

- Stephen’s Perspective: Renée introduces a guest, Adam, who personifies a new learner's perspective. He illustrates the complexities of grasping fundamental coding concepts using relatable examples, such as comparing programming tasks to counting crayons.

- Challenges in Learning Ruby: Renée outlines key challenges that newcomers face, including:
- Navigating platform differences (Unix vs Mac) and the initial setup complexity for Ruby environments.
- Understanding core concepts like version control systems (e.g., Git and GitHub) that are essential for modern development.
- Grasping testing frameworks and dealing with the abundance of libraries (gems) and their sometimes confusing documentation.
- Teaching Strategies: The importance of context in teaching programming concepts is highlighted. Renée advocates for tailored approaches based on students' prior experiences and emphasizes the need for educators to be attuned to the challenges faced by learners.
- Community Support: Renée calls on experienced developers to provide support and encourage new entrants to the Ruby community, ensuring a welcoming atmosphere that fosters learning.

Conclusions and Takeaways:

- The Ruby community plays an essential role in supporting newcomers, and educators should focus on clarifying complex concepts to ease the learning curve.

- Despite its challenges, Ruby offers a fun and rewarding experience for developers, and fostering an environment of kindness and assistance is crucial for attracting and retaining new talent.

- Continuous reflection on teaching methods and learner engagement is vital to cultivating a positive learning experience in programming.

Teaching Ruby for fun and profit
Renée De Voursney • February 20, 2013 • Earth

RubyConf AU 2013: http://www.rubyconf.org.au

How many companies are hiring Ruby developers right now? How many are finding qualified candidates? Why aren't workers swarming into our industry to fill up all these empty developer positions? Is learning Ruby really that hard? Why is learning Ruby so hard? Isn't it a language built by people for people? Shouldn't that be easy for anyone to pickup and use? Why isn't everyone building Ruby apps? I'm going to tell you. The good, the bad, and the goofy of trying to teach Ruby, Rails, and everything else we take for granted as RoR developers. There may even be a guest appearance from a real life Ruby Newbie to demonstrate!

RubyConf AU 2013

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!
Explore all talks recorded at RubyConf AU 2013
+25