Jen Diamond

Feats of Daring with the Ruby Standard Library

Feats of Daring with the Ruby Standard Library

by Jen Diamond, Stephanie Betancourt, Omowale Oniyide, and Josh Loper

The video titled "Feats of Daring with the Ruby Standard Library," presented by Jen Diamond, Stephanie Betancourt, Omowale Oniyide, and Josh Loper at the Rocky Mountain Ruby 2014 conference, explores the effort of the Standard Librarians. They worked collaboratively as a volunteer team during the Rails Girls Summer of Code to enhance the accessibility of the Ruby Standard Library for users of various skill levels. The presentation details their project, which aims to demystify the Ruby standard library by creating an interactive application for learning.

Key Points Discussed:

  • Team Background: The speakers introduce themselves, sharing their diverse backgrounds in creative arts, education, and development, all linking back to their experiences with Rails Girls workshops.
  • Rails Girls and RailsBridge: They explain these programs aim to encourage women to learn coding through workshops and ongoing support, highlighting their significance in providing resources and mentorship.
  • Project Overview: The main project, "Feats of Daring," is an interactive Ruby app inspired by TryRuby.org, focusing on helping beginners navigate the extensive Ruby standard library.
  • Challenges of the Ruby Standard Library: The team discusses how overwhelming the Ruby documentation can be for newcomers and their motivation to create a user-friendly learning tool.
  • Development Process: They detail their collaborative work methods, including mob programming, an agile approach that fosters teamwork and accelerates learning by sharing knowledge among group members.
  • User-Centric Design: Emphasizing user learning, the project categorizes libraries and presents them through engaging storytelling, aiming to enhance relatability and understanding.
  • Learning Experiences: Throughout their development process, team members share personal growth stories, emphasizing the importance of collaboration, mentorship, and embracing challenges in learning to code.
  • Future Aspirations: They express their plans for expanding the application and commitment to continuing their development journeys, including mentoring other women in the coding community.

Conclusions and Takeaways:

The presentation highlights the importance of community support in learning to code and the role of programs like Rails Girls in fostering skills among underrepresented groups. The team's commitment to ongoing education and mentorship reflects a dedication to contributing positively to the Ruby community. As they conclude, they encourage others to engage with the Rails Girls programs and consider coaching opportunities to help cultivate the next generation of developers.

00:00:00.060 Hello everyone! We're the Standard Librarians. We are a volunteer group for Rails Girls Summer of Code.
00:00:03.060 This year, my name is Jen Diamond. I come from a creative background; I did a whole bunch of different creative things. A few years ago, I got into coding, and I met Josh and Stephanie at our study group. I convinced them to sign up to coach a Rails Girls workshop that we were doing. Wally ended up being at that workshop, and it was the first day that we were all in the same room together. In a couple of months, we'd all be a team.
00:00:34.640 Hi, hello Rocky Mountain Ruby! My name is Omowale, but I also go by Wally. Please ask that whatever you do, do not pronounce my name as whale. As Jen touched on earlier, I was actually introduced to Ruby at a Rails Girls workshop that she ran.
00:01:01.740 Before that, my background actually had to do with underground live art events for youth in my area. I worked with a friend, and we would put on random shows, anything from sticker trades and street art to break dancing contests, heavy metal and ska shows, and even food competitions. So, when I went to the Rails Girls workshop, it was my first introduction to the world of programming and development.
00:02:03.780 I got onto this project in an interesting way. I had applied for a summer of code with a friend, but I didn't get in. However, our coach was the same coach for the Standard Librarians, and he introduced us. That's how I met Jen, Steph, and Josh.
00:02:42.420 Hi everybody, I'm Stephanie Betancourt. I work in education with the California Association of Independent Schools. I've been doing front-end design for about four or five years, starting with WordPress and working my way through. I did a little bit of object-oriented stuff, C++, and Python, and then two years ago, I went to RailsBridge and made the jump to Ruby. Since then, I have coached at Jen's Rails Girls event in March and then a couple of months later, we applied for the Summer of Code.
00:03:01.680 Hi, so my name is Josh Loper. I'm a remote Rails developer currently living in Texas. I've been coding since elementary school and have been interested in web development for a long time. I was a coach for Rails Girls LA like Jen said, and I was also participating in the Ruby study group that we were having twice a week. From there, Jen asked me if I wanted to help with the open-source Rails Girls Summer of Code project, and I said yes.
00:03:44.640 We've said a lot about Rails Girls. Maybe there are a couple of people in this room who don't know what Rails Girls and RailsBridge are. Who doesn't know what Rails Girls or RailsBridge is? I'm curious. There are a few? Okay, I'm speaking to you. Rails Girls and RailsBridge are programs designed to help get women excited about coding.
00:04:32.880 They start out as a weekend workshop where you spin up a Rails app really quickly and demystify coding while teaching some basic Ruby. This is followed by study groups or small workshops and other support to guide you in learning more, because as we all know, you can't learn to code in a single weekend, but you can certainly get excited about it.
00:05:18.540 The Summer of Code is a program put on by Rails Girls to provide a supportive environment for women during the summer to focus on coding. Our team was a volunteer group, so we weren't compensated, but for a regular Rails Girls Summer of Code team, they receive financial support, access to resources, and amazing coaches. We were fortunate to have access to those resources and amazing coaches.
00:06:15.960 Each Summer of Code project has a coach and a mentor, and ours happened to be Pivotal Labs in LA. They did an amazing job providing us with resources and space to learn. We had four dedicated Pivotal coaches who worked with us four nights a week on our project, and we also had a mentor, Pat Maddox, who was there from the beginning and oversaw the project.
00:07:01.680 So what is Feats of Daring? Feats of Daring is an interactive Ruby app inspired by TryRuby.org, which aims to help beginners and junior developers learn about the Ruby standard library. We accomplish this through imagery, storytelling about a cat falling into a well, and you'll hear more about that when we show you what the project looks like.
00:07:49.380 You might wonder why we chose the Ruby standard library. When I first started coding, several people, including Giles Bouquets, who was one of my main influences, told me that a great way to start learning more about Ruby is to check out the Ruby standard library. So, I was excited to have a direction, took a look at the Ruby docs, opened it up, and as you might know, the Ruby docs are incredibly extensive, well documented, and pretty intimidating for a beginner.
00:08:58.920 Just the sheer volume of methods in the libraries can be overwhelming. Each individual library can have 25 classes and 25 methods, and then you wonder where to even start. How do you know which methods are good? What libraries do people even use? When we had to come up with a project for Rails Girls Summer of Code, I thought it would be great to create a learning tool so beginners could jump in and start to grasp these libraries.
00:09:24.720 As Josh mentioned earlier, we created our project in the spirit of TryRuby because we wanted people to jump right in without downloading any software. We also aimed to create a fun learning experience to motivate people to explore the libraries.
00:09:34.200 When we first started, we wanted to go through the entire standard library, which contains about 107 libraries. We explored every single library at least a little bit and tried to categorize them into chapters. Our chapters included HTTP, encoding and compression, IO, Ruby tools, DSL, and more. We ultimately spent the entire summer working on just one library and aimed to come up with the best possible process.
00:10:07.200 One of our coaches, Eric, tweeted asking what the most popular Ruby standard libraries are. OmniRef replied with a blog post containing a list of the most included libraries by gem. Libraries such as test unit, YAML, JSON, and fileutils are some that you would expect to see on that list. We do plan to add more libraries in the future.
00:10:53.520 As Josh said, there's a lot to learn in the Ruby standard libraries, and sometimes it can feel overwhelming. I've met people who built a gem only to discover it duplicates parts of the library. If Ruby had a better grasp of what the library could do, we wouldn't need to reinvent the wheel. One of our main priorities for our app was to focus on user learning and ensure the libraries were understandable and accessible for those using our app.
00:11:56.760 However, our main priority was to learn for ourselves, and later we will share what we learned throughout this process. Our project started out like most pivotal projects, with an inception. If you're unsure what inception is, it's part of an agile process where you think about your project and how you are going to build it.
00:12:40.440 A lot of decisions need to be made because you are creating something from scratch. This is a thoughtfully creative process that involves breaking your idea down into stories, understanding who your user is, and considering the different levels of your users, as well as the technologies you'll use and how you’ll wireframe your application.
00:13:08.760 We are a large group, so we had to decide if we would work individually, in pairs, or as a mob. Given the size of our group, we needed some structure, and our mentor, Pat, suggested that we try mob programming for those unfamiliar with it. Mob programming involves three or more people sharing a computer. It has defined roles, communication guidelines, and a rotation cycle, so it's not chaotic.
00:13:57.000 In mobbing, a team meets before they write any code to establish a set of communication guidelines. Once those guidelines are set, they can start working together on the project using defined roles. In mobbing, you have a driver (the person at the keyboard), a navigator (who steers the project), and assistant navigators. This allows for collaboration and can lead to faster solutions.
00:14:45.600 If a challenge arises and the navigator is stumped, they can rely on their assistant navigators for guidance. This collaborative nature of mobbing allows for faster problem resolution, as ideas can be bounced off one another. Some benefits of mobbing that we experienced included an accelerated learning environment; when one person asks a question, everyone learns from that query, regardless of skill level.
00:15:45.780 Additionally, when a new member joins the group, you don't have to break down the project for them. Instead, they start at the end of the rotation, allowing them to gain an understanding of the project while waiting for their turn to contribute. If they're still confused when their turn comes, help is just a seat away.
00:16:28.920 The last point about mobbing worth noting is that it offers a unique opportunity for learning. You can invite us to your conference to talk about our experiences, as we have gained valuable insights from our time practicing mob programming. Many people have limited experience with mobbing, but we have three full months under our belts.
00:17:10.920 As you may know, Pivotal uses extreme programming and test-driven development. Over the summer, we implemented test-driven development practices and learned the best practices for testing. It’s important to express your ideas in the tests, even if it feels a bit repetitive at first, to ensure your concepts are conveyed effectively.
00:18:08.400 We learned how to write controller specs, model specs, and feature specs. We were fortunate to have guidance on how to simplify problems and approach them in small, manageable steps. Although it may sound trivial, this approach helps tackle larger challenges.
00:19:03.600 Our mentors advised us not to worry about writing JavaScript right out of the gate, or using Ajax, or even focusing on a database. They simplified the problem and showed us how to break it down effectively.
00:19:58.440 We also became accustomed to using Vagrant for our development environment, which was important since one of us was using a Mac, one was on Linux, and one was on Windows. Our process involved meeting up at Pivotal Labs from four to ten every night. We would write stories and tasks focused around our beginner user persona.
00:20:43.920 After our inception, we decided to keep our focus on our newbie persona, although other users might find value in our app. During our weekly iteration planning meetings, we would estimate stories for the week in a gamified manner—utilizing timers, rotating chairs, and aiming to complete as many stories as possible before the week ended.
00:21:40.560 Now, we’re finally going to show you what we’ve been building for the past three months. Can you cue the local running app? In the local running app, you’ll meet two characters: the Adventures of Mr. Chips, where we’ll run through our adventures with Chip from Modern Space and his cat, Cuddy.
00:22:04.920 Each adventure corresponds to a different library, and each has its own story with three objectives; the users will learn, submit code, and do a review. For example, in this story, Mr. Chip's friend, Cuddy, ran ahead and peeked into a well, accidentally falling in. He has a tin can and thinks it can help him. Thus, we have to learn about the Net HTTP Library to make a call for help.
00:23:23.760 As we progress, users receive code snippets, such as using the net HTTP get response method to make a web call to a specific URL. We encourage users to type out the code rather than copy-pasting it to enhance their understanding through repetition.
00:24:14.880 When the code is submitted, users will see a response in the REPL. It works similarly to TryRuby, where they use different libraries, learn about success codes, error codes, and so on. Our goal is for users to work through 10 to 20 libraries, broken down by chapters.
00:25:04.440 Currently, we have about 12 chapters, each containing methods or descriptions of that library. These chapters will be better organized once published, creating an easier way for users to jump in and explore what the Ruby Standard Library has to offer.
00:26:44.880 In the future, we aim to expand our application by adding more adventures, possibly developing different levels for our users, and providing a more accessible format for definitions and examples.
00:27:02.760 Now, let’s touch on what we learned while building this project. For me, I had to deal with fear and doubt throughout the process. Before joining the Rails Girls workshop, I had no prior programming experience. Each day, I struggled with fear, uncertainty, and doubts about my abilities and my team's success.
00:28:11.760 Fortunately, my excellent coaches at Pivotal helped me confront these fears. They taught me to accept my fear, acknowledge its presence, and push through. They reminded me that struggle and failure are critical parts of the learning process.
00:29:07.920 I've come to understand that I am not an idiot. I realized that I had much more knowledge than I gave myself credit for. I’m grateful to have survived this experience alongside my team.
00:29:59.100 Throughout the summer, I learned that programming is about people, not just computers. Sometimes when I write code, I forget to appreciate the human element involved. We should focus on how humans relate to programming.
00:30:40.920 One thing I discovered while working remotely is that there are certain advantages to in-person collaboration. Making eye contact creates a two-way conversation that enriches the experience. While remote communication is still effective, subtle cues are often lost.
00:31:49.320 This summer proved to be a time of unparalleled learning opportunities for me. Believe it or not, most of the lessons I learned weren’t even about code. As programmers, we are used to working solo, and it can be hard to reintegrate when working with a team. Early on, I remained quiet about my ideas, fearing offense, but I learned that my ideas hold value, and I should advocate for them.
00:32:51.720 Additionally, I learned the importance of regularly checking in on my team's health through weekly retrospectives, an aspect I hadn’t considered before joining Pivotal. A well-functioning team is as crucial as well-functioning code. The coaches reminded me that coding is a creative process, something I didn’t fully appreciate until I experienced it firsthand this summer.
00:35:03.840 Now, I feel inspired to return to my artistic roots and consider building more projects, possibly even performing with code in the future. My focus is on building and helping others learn. The experience cemented my confidence in seeking a job, which was one of my main goals this summer.
00:36:16.320 Something strange happened during the summer—the dreams I had began to revolve around code. I now want to turn those ideas into reality. I’m interested in game design and have built a physical prototype. My plans include further exploring programming with Ruby and experimenting with creating Twitter Bots, as well as eventually developing an augmented reality game.
00:37:26.520 As we approached the end of the summer of code, I managed to start my career as a remote Rails developer. I will continue learning about software engineering, whether through formal or informal education.
00:38:03.480 After developing my first Rails app in February, my journey has only progressed, and I’m committed to further developing my skills. I'm focused on mentoring women in the LA community and supporting teachers who want to inspire young girls to code.
00:39:00.480 This project has personal significance for me. One of my main goals is to maintain and enhance it, providing the Ruby community with an enjoyable tool for learning the Ruby standard library. I've put much effort into the project, including creative animations that I hope will keep my coding skills fresh.
00:39:50.880 Our coaches, including Pat Maddox from Pivotal Labs, learned and benefited greatly from fostering underrepresented developers. They've given back to the Ruby community in vital ways. If this experience sounds appealing to you, consider coaching a team next year! Rails Girls Summer of Code offers amazing opportunities for women to learn to code, and I encourage everyone to join us for a fun experience.
00:40:47.280 Lastly, a primary goal for next year includes coaching a paid Rails Girls Summer of Code team together. If anyone in LA is interested, please let us know!
00:41:21.600 Finally, I wish to give credits to Pivotal Labs LA for being integral to our project process, Pat Maddox for mentoring us, and all the coaches and developers who guided us.
00:41:47.760 Thank you for inviting us to Rocky Mountain Ruby, and for your support as we continue on this wonderful journey in the coding community.