Programming Languages

Summarized using AI

Learning Fluency

Sara Simon • November 12, 2016 • Cincinnati, OH

In this talk titled "Learning Fluency," presented by Sara Simon at RubyConf 2016, the focus is on the concept of fluency in both foreign and programming languages, particularly Ruby. Sara explores personal experiences and effective methods for achieving language fluency, emphasizing the discipline, creativity, and structured practice necessary for learning.

Key Points:

- Definition of Fluency: Sara discusses what it truly means to be fluent in a language, drawing parallels between foreign languages and programming languages.

- Personal Journey: Sara shares her background, revealing her struggles with learning languages such as Hebrew, Japanese, Spanish, and Italian. She emphasizes that her path to fluency in programming languages has been unconventional.

- Importance of Technique and Strategy: Drawing from her experience in chess, she highlights the value of technique and strategic thinking, suggesting that fluency in programming also requires anticipating future needs and challenges.

- The Role of Improvisation: Sara discusses lessons learned from theater about improvisation, which is integral to software development. She asserts that both language and coding involve creativity and adaptability.

- Project-Based Learning vs. Structured Learning: Sara contrasts the common belief that "jumping in" through project-based learning is the best way to learn programming with her own experiences in structured environments. She recounts her challenging but effective experience in a language immersion program, emphasizing the need for both structure and discipline in learning.

- Cultural Observations: Sara reflects on gendered perceptions in learning environments, suggesting that societal constructs can influence how individuals engage with learning.

- Conclusion: The talk wraps up by underscoring the importance of balancing hands-on exploration with the structured practice and discipline necessary for mastering a language, emphasizing that true fluency in programming, like in foreign languages, is achievable through consistent effort and strategic learning.

Sara’s insights remind us that learning languages—be they spoken or coded—requires a multifaceted approach that combines creativity, discipline, and an understanding of one’s learning style, ultimately leading to fluency.

Learning Fluency
Sara Simon • November 12, 2016 • Cincinnati, OH

RubyConf 2016 - Learning Fluency by Sara Simon

All languages work in formulaic ways. Cracking these formulas takes discipline, time, creativity, trial and error. But is there an overarching formula to crack these formulas? Is there a designated set of steps we can take to guarantee fluency?

In this talk, you will learn about the methods people use to learn both foreign languages and programming languages. As developers, we often just jump in and start building. Why is this? Does full immersion work best always and for everyone? What is fluency, and is it ever something we can achieve in Ruby? Let’s explore.

RubyConf 2016

00:00:15.879 Alright, let's go ahead and get started. Hi everyone, thank you for coming today. My name is Sara, and it's a total honor to be here. Today, I'm talking about languages. I'm discussing learning different languages, speaking different languages, and using different languages to write code. I'm focusing on programming languages and the ways we can program our brains to learn languages. I'm addressing fluency, what that means, and how to achieve it.
00:00:27.000 What does it mean to be fluent in a programming language? Does it mean the same thing as being fluent in a foreign language? And what does that even mean? Before I get too deep into this talk, I have to confess that it's been a long time since I last touched Ruby. I currently have a Python job. I'm truly apologetic for everyone here about that. I took this Python job for several reasons, not the least of which is that the best way to better understand one language is to learn another.
00:00:54.440 So what I'm trying to say is that before I get too deep into this talk, I have to acknowledge the irony—I am here today telling you all what it means to be fluent in a language I don't know that well. That's the premise. I never know what to say when someone asks me what I do and I say I'm a web developer. They often ask, 'Oh, is that what you studied? Have you always been interested in that?' The easy answer is to say no; it's not even close. I spent six years at an art school where I studied creative writing, and then I went to a liberal arts college where I majored in English.
00:01:29.080 I spent a year and a half writing a 75-page paper about Ernest Hemingway's childhood. In college, I did not take a single computer science class. I did sign up for a calculus class, but after failing the first midterm and having my professor tell me that I was, in his words, really bad at math, and my dean telling me to drop the class like it's a hot potato, I withdrew. When I was little, I went to Hebrew school. This is a photo of me in a Purim parade, surrounded by a sea of Queen Esthers. I stopped studying Hebrew after my bat mitzvah.
00:02:01.640 I started to learn Japanese because I was supposed to be an exchange student in Japan. The trip was all set, but then September 11th happened, and the program canceled all international student exchanges. I also participated in a Spanish immersion program in elementary school and took Spanish again in high school, but I was never any good at it, largely because I didn't put in the effort, but also because it was a public art school and one teacher was dealing with a classroom of more than 30 students who represented four different language levels.
00:02:38.560 Then I took Italian in my first year of college, and much to the chagrin of my mother, who is of Italian heritage, and probably to the dismay of that high school Spanish teacher who had rooted hard for the romance languages, I was pretty bad at Italian too. So, what am I talking about again? Right, I'm discussing languages, fluency, and how to learn languages and achieve fluency. So far, all I've covered is how I've failed at learning languages.
00:03:04.760 Throughout college, I worked in Boston's Chinatown, helping elementary school students who spoke Cantonese or Mandarin, mainly Cantonese at home, with their homework. These kids, aged six to ten, were really struggling with learning English, which is totally legitimate; English is such a hard language to learn—grammar, sentence structure, vocabulary, spelling. They always used to tell me how hard it was for them to learn, and I don't remember how it came up, but one day they joked that I should learn Mandarin. I jokingly agreed, and they looked at me with that fierce curiosity found only in small children. Then they all had a good laugh and said, 'No, Sara, you can't learn Mandarin; it's too hard!' That's how I learned Mandarin.
00:03:36.000 In hindsight, I probably should have taken that same approach with my calculus teacher in college, but I don't know—maybe there's some sweet revenge in proving a group of students wrong that you just don't find when it's merely the teacher you're trying to impress. I also used to be a tournament chess player. This is a photo of me and my brother; he was getting ready for a game, and I was giving him a pep talk. Our parents' house in Oregon is cluttered in the same way that any empty nester house is cluttered after the two adult children of two adults move across the country and leave behind old books, backpacks, a Cocker Spaniel, and a closet full of chess trophies.
00:04:00.760 It's funny—the joke when I was six was that I loved going to chess tournaments because I never had to wait in line for the bathroom. Here I am, two decades later, at a programming language conference. The difference, of course, is that now I would gladly wait in line for it. I also used to be an actor. Call it professional theater or community theater, call it whatever. I did all kinds of weird things, including a summertime production of 'A Midsummer Night's Dream' on the Oregon coast, and a Halloween production of 'Night of the Living Dead' in an old rundown movie theater.
00:04:52.760 I did this show a few years in a row because I played Judy, and for anyone familiar with the movie, spoilers for those who aren't: Judy gets eaten by zombies halfway through and never comes back as a zombie. The show started at midnight; by 12:45, I was dead, and I got to go home. I was also in a production called 'The Apple Tree,' a musical about the fictional account of Adam and Eve. I did a show called 'Columbinus' about the Columbine shootings, and I performed in 'Henry VI,' 'Footloose,' and 'The Importance of Being Earnest.' I reluctantly did 'High School Musical.'
00:05:26.720 All this to say, I never know how to respond when someone asks me what I do, and I say I'm a web developer. They ask, 'Is that what you studied? Have you always been interested in that?' The easy answer is to say no; it's not even close. The better answer is to say yes, entirely. I'm giving this talk because what I learned through chess was the importance of technique and strategy. The importance of knowing how to think ahead two, three, five, even ten moves into the future because in a good game of chess, that's what your opponent is doing. I'm giving this talk because what I learned through theater was the importance of improvisation.
00:06:09.000 The importance of knowing how to make things up when you need to because your scene partner apparently took an extra long smoke break and hasn't yet appeared on stage for your scene. I'm giving this talk because building software is half strategy and half improvisation, and I do think there are ways to train in both. I'm giving this talk because I like learning languages. The more I write object-oriented code, the better I understand Chinese, where each stroke represents one idea. Each character is made up of a collection of strokes, and each collection of strokes represents one meaning.
00:06:51.440 I’m giving this talk because the more I study Chinese, the better I understand English. The better I understand English, the better I write code. The better I understand English, the more concise my methods, the more straightforward my documentation, and the more thorough my tests. I'm giving this talk because the more thorough my tests, the better I think about creative writing. If I expect result A when I run command B, I can learn to expect that character C must have a specific kind of reaction when the plot twists with action D.
00:07:34.400 When I started to learn to code, people told me that the hardest thing I was going to have to get used to was learning how to Google. I just wanted to be like, have you ever tried to write a story? I used to write historical fiction—misname one character, misuse one reference, or throw one refrigerator into the kitchen of a home that's got to have an ice box out back, and you immediately lose your reader. You immediately lose your user. It's all connected—language and how it plays out, how to learn it, how to build upon it, maintain it, master its technique, and how to think about it in the long term.
00:08:11.440 It's about improvisation and how to turn it into something that people want to use. It's a puzzle, and fluency is key. Straight out of college, I took my English degree and moved to Minneapolis, where I got a communications job at a software consultancy. I liked the people, I liked the pace, and I liked the puzzles. At the time, I was the only person on the team with a non-dev, non-design background. I got the job because I said I'd do all the writing that didn't need to be done in code: the contracts, proposals, tweets, emails.
00:08:35.560 The joke was that I programmed in Microsoft Word. So, I was there, and I loved it. They were a fantastic team, but a huge part of my job was to translate what they were talking about. They started talking about things like rakes, cucumbers, capybaras, forks, and somebody named Hubot, and bouncing unicorns, and hating waterfalls. Let's all please pause for a moment and acknowledge the fact that we have ridiculous sounding jobs, woo!
00:09:16.560 I mentioned earlier that I work in Python, which is fine; I'm enjoying it, but don't you dare try to convince me that an egg is a serious name for a serious component in a Python package management system. I quickly realized that I needed to learn this language, and then the more I learned about it, the more I realized that I didn't just want to write about software anymore; I wanted to write it too. I hit Google and searched for the best first programming language to learn, and found Ruby. That sounded great, actually. Back in Oregon, I used to nanny a little girl named Ruby, and she was the sweetest, most perfect handful I've ever met.
00:09:50.720 So, I figured, okay, if that's a good indication of how this will go, I at least understand how to prepare. But hey, I've tried to learn languages before; I can handle another. So, I started to learn Ruby. I was learning my hashes; I was learning my instance variables. I didn't understand why everyone around me was caught up in a heated discussion about which text editor I was supposed to be using because what did I care? Approximately 5,000 people told me that the best way to learn to code was by coming up with a project and jumping right in.
00:10:37.320 They insisted on this; this is how it worked. If you want to learn to code, you simply have to jump on in. I just had to trust them on this, but the jumping in was terrifying for me. That's me in the bottom right corner, by the way. I tried to create an Emoji representation of diversity in the tech industry. It looks bad, right? I mean, I think I nailed it, but it looks bad, and we are way past due to fix it. Anyway, I trusted these people because they were the pros. The pros were all telling me that this was the only way to make it happen.
00:11:24.360 If I wanted to learn to code, I just had to jump on in. And for me, what this meant for my first few months of learning Ruby was that I'd jumped into an environment that praised project-based learning. It was an environment filled with people who knew how to get their hands dirty, as they say—people who learned best by doing, building, and making. Now, don't get me wrong; I like to build things. You definitely want me on your Jenga team. But these people made me feel like I was living in a world where the signs were unreadable, the sound effects were unheard, and the hand gestures were uncomprehensible—a world without structure, a map with no key, a city without sidewalks.
00:12:13.160 I took a step back and thought a bit about the people who had told me that in order to learn Ruby, I, Sarah Simon, simply needed to come up with a project and jump on in. I considered the makeup of our industry; it should be no surprise. The vast majority were men, predominantly white, who had grown up struggling with school because they were bored in the classes they didn’t care about, so they fidgeted and fumbled around until they found code on their own and then taught themselves by coming up with a project and jumping on in.
00:12:53.000 Now, that's cool, right? There's nothing wrong with that. It's just not me. It's not what I need, and chances are it's not what a few other people might need either. Say what you will about the social construct behind me not needing this, and please do say it, because to a certain extent, it's probably quite revealing. We reward young boys when they experiment and try things and jump on in. Young girls tend to be rewarded when they listen and do what's expected of them and follow the rules.
00:13:41.640 I live in Vermont now, home of Middlebury College. Go Panthers! Every summer, Middlebury hosts a full-time language immersion program, isolated on a small campus in a rural town about an hour south of Burlington. I did the Middlebury language program a few years ago, in the summer of 2011. I signed a language pledge one of my first nights on campus and agreed to speak, listen, read, and write only in Mandarin all summer. This was serious—no breaks, no distractions, no going home at the end of the night. We were not supposed to call our friends and family.
00:14:13.960 At Middlebury, classes began every day with a tinga—a dictation quiz. Literally a listen-write. The instructor would stand at the front of the class every morning, recite the daily dictation, and watch as the classroom of students furiously attempted to scribble down what they'd heard. We started with vocabulary words, and as the summer progressed, we moved to sentences and then paragraphs. It was a quick 10-minute routine at the start of class every morning, and the tinga was great because we always knew exactly what to expect at the end of each workday.
00:14:56.760 After hours of class and a daily one-on-one with the instructor, my classmates and I were given a list of words that were all fair game for the next day's quiz. The list grew each week. By the end of summer, I was memorizing 100 words a night. This is Mandarin, remember. So not only did I have to memorize the Chinese pronunciation and the English meaning, but also what the character looked like and how to write it. And again, because this is Mandarin, of those 100 words, the vast majority were composed of two or three characters.
00:15:38.320 For instance, 'Ting,' which means listen, and 'Ting,' which means right, combine to mean dictation. Here's a real photo from one of my old textbooks of important vocabulary words. I came up with a pretty good system. The Chinese school had dinner from 6 PM to 7 PM, which was very strict. The Italian school had the dining hall immediately after us, and they would always give us glares as we passed each other in and out of the building because they knew we had eaten all of the good food. And of course, we had!
00:16:14.920 But they weren't allowed to communicate in anything other than Italian, and we couldn't communicate in anything other than Chinese. At 7 PM, after dinner, I'd find a good spot to sit, and I'd pace myself. I'd focus on one word at a time. I'd memorize its pronunciation and meaning, write the character once while looking at it, and again while looking at it. I'd cover up my cheat sheet and write it once without looking at the character, and when muscle memory took over, I'd move to a new word. I worked in chunks of five; every time I mastered the fifth word, I'd go back and repeat the previous five.
00:17:04.480 At 20, I'd repeat all 20, the same with 40, 60, and so on. I did this five nights a week for eight weeks. The summer was exhausting. It was frustrating. It was the complete opposite of what so many people say is the best way to learn a language. But for me, it worked. There's a certain bond you develop with a group of people when you all have very limited vocabularies. Once, a bee stung my foot while I was walking across campus, and I spent an embarrassing amount of time wondering whether this would violate my language pledge, but I didn't know how to say 'bee sting' in Chinese. This is the natural context: it's being thrown in the deep end and forced to swim to shore.
00:17:42.840 It's popping open IRB when you have no idea if something's going to work, but you're going to try it anyway because you need some place to start. It's hands-on learning; it's incredibly valuable. But in this process, we can't lose the importance of the practiced skill. The practiced skill is the daily tinga, the hours of classes, the weekly exams, the mountains of homework, the extraordinary amount of time and discipline required to succeed in Middlebury's program—the extraordinary amount of time and discipline required to learn a language. I took this picture in a classroom outside of Beijing. The banner says: 'Study hard, study diligently, and every day you'll see improvement.'
Explore all talks recorded at RubyConf 2016
+82