00:00:00.000
With a PhD in education and seeking something new, Bianca enrolled in a six-month web development boot camp and fell in love with Ruby on Rails, never looking back. The question is: does she also pair program?
00:00:06.540
I heard she does! Pair programming is a fantastic way to learn more about a language, and it provides a great opportunity to share with others the things you love about it.
00:00:28.439
Thank you! Thank you for that introduction. It's fantastic to be here with you all in person today and to talk about Ruby.
00:00:40.020
To share a little about where I'm coming from, I've spent a bit over 17 years working in education. My undergraduate degree was in teaching primary school. I then went on to do a PhD in education and have taught in various ways throughout that time.
00:00:58.260
As I was finishing my PhD, I experienced a bit of burnout and felt the pressure of the 'publish or perish' mentality in academia. I really wanted to do something that genuinely made a difference in the world.
00:01:16.380
I had been playing around with learning to code for a few years by that point, but I kept hitting a wall when trying to learn on my own. Long story short, I found a coding boot camp at a place called Coder Academy and I joined in July 2017.
00:01:31.020
At the boot camp, we learned Ruby, Rails, and a JavaScript stack. I absolutely fell in love with coding, particularly in Ruby. After six months as a boot camp student, I had the opportunity to stay on and teach.
00:01:49.020
I spent a total of five years at Coder Academy, which was an amazing time for me, meeting a diverse range of developers at various stages in their careers. I was part of the journey of hundreds of students coming through, and we also had experienced industry professionals come in to teach.
00:02:07.160
Some of these professionals had just finished boot camps recently, while others had been working with Rails as long as it had existed. This variety created really cool interactions for me.
00:02:20.640
Last year, I transitioned into industry and began working as a full stack Rails developer. While I referred to myself as a Rails developer, my actual role was a mix of Rails and reactive technologies.
00:02:38.660
The topic of my talk is "Ruby Makes My Brain Happy," and I will base it on my experiences coding and observations of developers I've worked with over the past five years.
00:02:51.560
This talk revolves around two main ideas: the awesomeness of Ruby itself and how our brains work differently. As I wrote this talk, I kept returning to the topic of cognitive differences and how those impact our programming preferences.
00:03:11.280
I will share my own experiences, discuss what makes us unique as individuals, touch on some theories around cognitive development, and explore the significance of happiness in our programming. I'll also explain how these concepts can be beneficial in our daily lives.
00:03:28.260
To further illustrate my experiences learning to code, I'll start by mentioning some false starts along the way. I dabbled with C++ and then faced further challenges when my laptop was stolen, and I didn't know about Git yet—an experience that didn’t go well.
00:03:40.320
The first programming language where I genuinely felt I was coding—able to express myself and build applications—was Ruby. I also became reasonably competent in JavaScript and even learned some Python, C, and Bash scripting along the way.
00:03:55.740
However, I always found myself wanting to return to Ruby, especially during the boot camp. While we also learned JavaScript, I consistently felt drawn back to Ruby at every opportunity.
00:04:10.020
In the programming community, there is significant discourse about how JavaScript is the future of web development. While I agree that as web developers it’s essential to know JavaScript, I often felt guilty when focusing on Ruby.
00:04:27.760
Whenever I coded for fun, I would always choose Ruby. This tension of what I should be focusing on while learning was frustrating. One thing I want to advocate today is that it's important to embrace the things you enjoy.
00:04:46.680
I've learned a lot about JavaScript even while coding in Ruby. The more you code, the more you learn about programming concepts as a whole. So, there's significant value in pursuing what you enjoy the most.
00:05:06.240
As one of four siblings, three of us work as developers. I would love to gather data on whether that's a commonality among developers. I really love working in Ruby, while my brother Theo works in Elixir, passionately discussing functional programming as he tries to convert me.
00:05:21.480
My younger brother Logan works in Python and agrees with me that what I do is better than the widespread reliance on JavaScript. Our youngest brother Alex hasn't yet ventured into coding—he's only 19, so I predict it will only be a matter of time.
00:05:38.559
While this is a small and biased sample, it's important to highlight that over the five years working in a coding boot camp, I had the opportunity to work with hundreds of developers, from newbies learning their first programming language to seasoned pros.
00:05:57.420
Most of my talk today is centered around how we are all different in our programming journeys. However, I have noted one common thread that ties developers together: we are all opinionated! Whether it's about the text editors we use, the operating systems we prefer, or the languages we code in, developers tend to be an opinionated bunch.
00:06:23.160
These opinions can sometimes seem intense due to the emotional investment we place in defending our tools. It makes sense because we devote so much time and brain capacity to these languages and environments that we naturally want to work with the ones that fit our thought processes best.
00:06:46.500
Let's dive deeper into what makes us unique. We are all uniquely different, and the concept of neurodiversity is widely accepted today. There were great talks on this topic yesterday that I'm not going to rehash, but I want to remind you that neurodiversity is a real aspect of our identities.
00:07:05.460
You've likely heard of nature versus nurture—the idea that our individual traits come from a mix of genetics and experiences throughout our lives. While we might be born with predispositions, it is also agreed that our perspectives shift over time.
00:07:23.880
Additionally, when we think about learning styles or preferences, there’s a bit of controversy in education surrounding these terms. Nonetheless, the core idea—that we all think differently and absorb information in various ways—is largely accepted.
00:07:36.660
Consider how you and others you know prefer to learn. Some might excel with reading, while others prefer watching videos or listening to audiobooks. However, technology learning often combines these preferences.
00:07:51.420
What's great today is the internet offers diverse options for learning, allowing us to discover methods that are effective for us. Just as various programming languages exist, we have many frameworks and tools to choose from.
00:08:08.280
Let's take a moment to discuss some theories on brain function and educational psychology without diving too deep. Piaget is a founding father of cognitive development theories, focusing on how we adapt to new knowledge.
00:08:22.260
He discussed concepts of assimilation and accommodation—ideas that explain how we process new information. Essentially, we have a container of existing knowledge, and when we encounter a new idea, we try to fit it into this container.
00:08:39.120
Imagine a child who has a pet dog; they see a horse for the first time and confidently call it a dog because it's the closest category they know. They enter a state of disequilibrium, realizing it doesn't quite fit. Fortunately, if an adult corrects them, they can accommodate the new information, restructuring their understanding.
00:08:59.520
Once they redefine their knowledge, they return to equilibrium. Piaget called this concept 'schemas,' which resonates with how we, as developers, continually adjust schemas to fit new information.
00:09:17.520
Like database schemas, our understanding evolves as we learn new structures and adapt to changes. We need to accommodate this new information as we encounter it.
00:09:30.840
As lifelong learners, developers are constantly problem-solving, learning new technologies, and adapting to new codebases. While I emphasize doing things that make our brains happy, it's equally important to push ourselves outside our comfort zones.
00:09:48.780
By understanding what brings us happiness and comfort, we can push boundaries in ways that bolster our learning.
00:10:06.600
Regarding happiness and the essence behind my talk, "Ruby Makes My Brain Happy," let's delve into what that actually means. Before discussing Ruby, I want to address the question: what is happiness? It might not have a single definition.
00:10:16.620
For each of us, happiness varies depending on individual differences and experiences. Referring back to what I mean when I say Ruby makes my brain happy, there are several key aspects.
00:10:32.460
First, Ruby is genuinely fun. I fully acknowledge that this is a biased opinion, but Ruby provides a more enjoyable development experience than other languages. Coding for fun or during challenges, my choice is always to use Ruby, as it brings a sense of joy.
00:10:57.240
Secondly, familiarity makes our brains happy. It breeds a sense of comfort and understanding. While my familiarity stems from experience, I also notice distinct differences between working in Ruby and JavaScript—Ruby feels like home.
00:11:10.560
Another important aspect is that happiness doesn't have to be an active state. It can also manifest as a comfortable sense of contentment, which reflects how our brains feel about our working environments.
00:11:27.120
Finding a state of flow is crucial. When coding in Ruby, I find it easier to enter and maintain this state compared to other programming languages, partly due to familiarity with Ruby.
00:11:42.840
Lastly, trust plays a significant role. It may sound odd to discuss trust in relation to programming languages, but when I work with Ruby, I trust that it will make sense in the end—even when I face challenges or bugs.
00:11:59.700
This trust fosters my ability to keep going, knowing I can seek help if needed, and aids in my overall progress. Our brains work best when they get what they need.
00:12:10.560
Sometimes our brains are a bit vague about their needs, leading to preferences—like specific coding tools or even food choices—while navigating our environment.
00:12:24.060
Understanding our preferences for coding languages and approaches can greatly enhance our development experiences and decision-making.
00:12:37.440
Though preferences can stem from a place of laziness, it's crucial to balance doing things our brains enjoy and challenging ourselves to grow. As we adapt our internal schemas with new information, we enhance our cognitive development.
00:12:50.820
Pushing our brains to learn constructs a positive feedback loop, where growth feeds back into general happiness.
00:13:03.840
Our environments—computers, text editors, and programming languages—should feel like extensions of ourselves. They should enable a natural flow where we can focus on the right tasks.
00:13:19.620
The more we align our work methods with our preferences, the more productive we will be.
00:13:35.640
For me, coding in Ruby feels like having a great conversation—it's intuitive, engaging, and yields wonderful results.
00:13:57.020
Let's talk specifically about what makes Ruby special. To quote Matt, the creator of the Ruby programming language: "I believe that the purpose of life is at least in part to be happy. Based on this belief, Ruby is designed to make programming not only easy but also fun."
00:14:10.560
Ruby enables developers to focus on creativity with less stress, prioritizing programmer happiness through simple, natural language and clean syntax.
00:14:21.540
With a focus on simplicity and productivity, Ruby facilitates the rapid development of applications and encourages writing clean, understandable code.
00:14:39.300
I believe that the points I've mentioned echo throughout the conversations we've had during RubyConf, showing a shared understanding of Ruby's benefits.
00:14:55.920
Another quote reinforces this sentiment.
00:15:07.500
An important aspect of Ruby's specialness is its creator's understanding that not every language works for everyone. He aimed to develop a language that brought him joy in coding.
00:15:20.160
This focus on personal happiness fosters a language that resonates with many, yet it may not suit everyone.
00:15:34.920
Ruby makes my brain happy, and I recognize that this may resonate with many here today, but I also welcome discussion on varying opinions.
00:15:52.260
Now, how can we apply what I've discussed today? While it's great that I can share my experiences, the takeaway should be useful for you.
00:16:05.400
Gaining insights into what brings us joy allows us to navigate better pathways in our coding journey. For example, understanding my preference for Ruby compared to JavaScript equips me to manage my learning better.
00:16:19.680
As I struggle with JavaScript, informing myself about my preferences makes me more self-aware and ultimately allows me to make better decisions.
00:16:33.720
Our brains carry valuable information, and recognizing when we are comfortable or uncomfortable aids in determining growth opportunities.
00:16:47.460
As we collaborate with others in our workplace, it's crucial to remember everyone is different. I believe this understanding fosters better dialogue and enriches our interactions.
00:17:00.300
Recognizing that others have different frameworks informing their opinions helps cultivate empathy and teamwork. For instance, my strong affinity for Ruby doesn't diminish the value of alternatives.
00:17:15.420
Open-mindedness is essential, especially in encouraging newcomers to coding. Based on my experience, conversations often center on whether JavaScript, Ruby, or Python is the best language to start with.
00:17:28.080
While these debates occur regularly, exposure to various programming languages—whether Ruby, Python, or others—can lead to discovering what genuinely resonates.
00:17:42.900
Offering a variety of languages can make an enormous difference in encouraging burgeoning developers. Inclusivity leads to a broader understanding and fosters interest.
00:17:56.400
Additionally, embracing new concepts allows for cognitive schema development. As we adapt to new frameworks and languages, our critical thinking expands.
00:18:10.440
Lastly, an encouraging community built around a language—like Ruby—imparts safety in experimentation, fostering resilience.
00:18:24.360
Finding balance between growth and happiness is essential at every experience level, ensuring we're both challenged and fulfilled.
00:18:39.420
To conclude, there are multiple lenses through which to view a programming language. We can look at what can be achieved, but it's equally important to consider our feelings while coding.
00:18:53.520
Today, I advocate for doing what aligns with our passions, not just what the industry prescribes. While engaging with trending technologies is exciting, finding fulfillment in coding must also be prioritized.
00:19:07.020
Ultimately, Ruby makes my brain happy, and I believe brain happiness is crucial. It translates to mental health, productivity, and overall fulfillment.
00:19:20.280
When we learn in environments that align with our instincts, we learn better and stave off burnout.