Talks

Talmudic Gems For Rails Developers

Talmudic Gems For Rails Developers

by Yechiel Kalmenson

In the talk "Talmudic Gems For Rails Developers," speaker Yechiel Kalmenson explores the ethical and moral implications of software development through the lens of Talmudic wisdom. He draws parallels between the challenges faced by programmers today and the ancient debates recorded in the Talmud, emphasizing the responsibility developers have towards their code, their teams, and society at large.

Key Points Discussed:
- Ethical Dilemmas in Tech: Kalmenson introduces ethical dilemmas, like the trolley problem, that programmers face and suggests that these moral questions, much like Talmudic studies, often lead to more questions than answers.
- Importance of Mentorship: He emphasizes finding mentors and companions as crucial for personal growth, highlighting the value of learning from others and the reciprocal nature of mentoring.
- Peer Learning: The talk discusses the significance of peer programming as a method to enhance learning and growth amongst developers, suggesting that working together can sharpen skills effectively.
- Community Engagement: Kalmenson stresses the value of being part of a tech community, whether local or online, as a means to provide support and foster belonging among developers.
- Consistency in Growth: He advocates for consistent practice, referring to the '100 days of code' challenge, to build better coding habits over time.
- Responsibility for Code: Kalmenson addresses the broader impact that software can have on society, arguing that developers must consider the ethical implications of their work beyond just functionality.
- Civic Responsibility: He illustrates this concept with a parable about a ship to illustrate how individual actions can have consequences on the community, stressing that ignoring ethical responsibilities is not an option.

Conclusions and Takeaways:
Kalmenson concludes that while developers cannot solve all the world's problems, they have a unique opportunity to use their skills and code to improve the world. He encourages attendees to actively engage with their responsibilities both to their craft and to their communities, promoting an ethical approach to software development that aligns with Talmudic teachings.

00:00:05.420 Hello everybody, welcome, and thanks for coming to my talk. We will be discussing a topic that implies we will be talking about Talmudic gems for Rails developers—practical advice and applications from the wisdom of the Talmud that we can take for our lives as software developers.
00:00:12.000 In 1977, one of the foremost Hasidic masters of the 20th century suffered a heart attack on the night of the Jewish holiday of Simchat Torah. His followers were devastated and gathered to pray for him. The next night, with hundreds of his followers in the synagogue praying for his recovery, the rabbi wanted to address them, but the doctors wouldn’t allow that.
00:00:24.420 Instead, his followers arranged for an intercom to be set up from his room on the second floor to the synagogue in the basement. Being resourceful, they hooked up that intercom to a bunch of phone lines, enabling connections to many different locations around the world where his followers could listen in—from Los Angeles to Chicago, to Paris, Jerusalem, and all the way to Melbourne. Remember, this is 1977, before Zoom or even the internet was a household name. During his talk, the rabbi noted how what started as an impediment that prevented him from coming down to address his followers in person actually turned out to be an opportunity that allowed more people all around the world to participate and hear the message.
00:00:58.800 Of course, many of us find ourselves in a similar situation. We would all prefer to be crammed together in a ballroom listening to this talk in person, being able to shake hands and hug each other. But we can all realize the silver lining in this situation. In most years, there are many people who would love to be at a tech conference but are unable to attend due to family, personal, or professional obligations. This year, you all have the opportunity to attend from the comfort of your own living rooms, and you're all at RailsConf this year.
00:02:11.099 So while I would have loved to start with some kitschy greetings, like 'Hello Las Vegas' or 'Hello San Diego,' I will start, like many programmers have throughout the years, with 'Hello World.' A little bit about myself: my name is Yechiel Kalmenson, and I'm an engineer at VMware. However, I was not always an engineer. I spent the first few decades of my life studying Talmud, being ordained as a rabbi, and serving as a rabbi and teacher for a few years before eventually transitioning into the world of tech.
00:02:45.980 I learned programming, became a web developer, and now I write code. Interestingly, there is a similarity between rabbis, Talmudic scholars in general, and programmers: what we see as our professional vocation is also often taken as a hobby. We end up studying and practicing in our nights and weekends. Even while I transitioned to tech and became a programmer, I kept up my Talmud study regimen. I still learn today, and throughout this journey, I’ve noticed many parallels between Talmudic study and programming. The lessons I learned while studying the Talmud were very applicable and have helped me in my career.
00:04:07.379 Many of us are familiar with the trolley problem, where a trolley is barreling down the tracks toward five people who will be run over if nothing happens. An operator can pull a lever to divert the trolley to another track, but this will kill one person who is lying on that track. The trolley operator must make a choice: do they do nothing and let five people die, or do they actively kill one person by diverting the trolley? This problem has many versions and arrangements, but such ethical dilemmas do not only affect trolley operators; they affect developers and programmers as well.
00:05:29.580 The work we do often has major moral implications, and navigating these can be tricky. Oftentimes, there are no correct answers, and you may end up with more questions than when you started. This is, in fact, much of what makes Talmudic study engaging; it always leads to more questions. While I will not provide answers in this talk, I hope you will leave with a new appreciation for these questions and a new approach to asking them.
00:06:07.410 So, what is the Talmud? I’m sure many of you have heard the term. In short, the Talmud is the written record of the conversations of the ancient Jewish sages. It serves as the primary repository of the law, legend, and lore of the Jewish people and is the essential focus of rabbinical scholarship.
00:06:15.720 The Talmud is not a dry textbook; it is a living document. It does not merely provide laws or answers. It is a record of actual debates, and when immersing yourself in Talmudic study, you can almost hear the Talmudic sages arguing in the background. You can place yourself right in the study hall amidst these debates. It's almost like a living, breathing conversation.
00:07:01.500 As I said, I’ve been studying the Talmud for over 2000 years now, and upon making the transition into tech, I discovered many parallels between Talmudic study and software engineering. Both involve dealing with abstractions. The Talmud calls this idea of teasing out an understanding from one thing to another "mavindavar mitoch davar." When you take a specific example and abstract it into something that applies to many situations, you are performing a critical task in both Talmudic study and programming.
00:07:11.639 Similarly, both the Talmud and software engineering require analytical skills combined with a substantial amount of creativity. Each field demands intense periods of concentration and maintaining context over long periods. I’m sure we all know the frustration of being in the zone only to be pulled away for a two-minute question, causing us to lose focus completely—something I’ve often experienced during my Talmudic life.
00:07:48.540 While the Talmud is an ancient text compiled over 2000 years ago, the wisdom I’ve learned from it still holds relevance today. I aim to present the wisdom of the ancient sages in new contexts—like old wine in new vessels—hoping to convey their ancient wisdom through modern tools and applications for contemporary life. Throughout this talk, we will explore three parts: using Talmudic wisdom to help ourselves grow, to help our teams grow, and to improve the world around us.
00:08:14.160 Let’s begin with our own growth. As developers, we are always learning and evolving, and the field itself is constantly growing. The Talmud offers an interesting directive to assist us on this journey: "Appoint for yourself a mentor and acquire for yourself a companion." There are two parts to this directive, which we will address one at a time, starting with the first half—the importance of having a mentor. We all recognize the value of mentorship. I believe that the self-taught developer is a myth; we are all influenced by the guidance of others.
00:09:25.919 Whether through books, courses, or mentors, we all rely on others to reach where we are. Finding a mentor—a person with experience who can answer questions and provide a sanity check—is crucial. However, many might wonder, how do you find a mentor? In my experience, most mentor-mentee relationships begin more organically rather than through a formal request. Usually, it arises when you seek help on a problem or advice on code. The rabbi Hillel said, "One who is timid cannot learn." This means you should not be afraid to ask for help; it’s a compliment if someone seeks your advice. In the programming community, people are generally welcoming and eager to assist.
00:10:36.299 Moreover, Hillel also observed, "Nor can an impatient person teach." If you’re approached for help, even if you're busy, respond with empathy and direct them to someone who can assist if you cannot. The mentor-mentee relationship is a powerful motivator for personal growth. The second part of the directive is: "Acquire for yourself a companion." While mentors can guide you, it’s also important to surround yourself with peers who are on the same level as you. Engage in peer programming and collaborative learning.
00:11:51.540 Currently, I am at VMware, but I was originally hired at Pivotal, where peer programming is a significant part of our culture. In Yeshiva, the Jewish learning environment, our primary method of study was not traditional lectures but rather a system called "Havruta." This approach entails two peers studying together, challenging each other, and working through problems collaboratively. The dynamic I encountered at Pivotal felt natural to me; the collaborative nature of peer programming allows both individuals to learn and grow, which is essential for developing new members of a team.
00:13:12.780 The Talmudic sages used the metaphor of iron: just as two iron blades sharpen each other, so too do two scholars sharpens each other. The same applies to peer programming—working with someone on the same code will help you improve together much faster than if you work alone. Another directive that facilitates our growth comes from Hillel’s teaching: "Do not separate yourself from the community." Being part of a community is crucial; today, many tech and programming communities exist worldwide.
00:14:14.159 Regardless of your location, you can almost certainly find a programming community nearby. Online platforms also provide many opportunities for engagement, from Twitter to Slack groups and Discord channels, especially during conferences like this one. Engaging with a community enhances learning, enables networking for mentors and peers, and fosters a sense of belonging.
00:15:28.740 Consistency is vital for our growth as developers. You may have heard of the '100 Days of Code' challenge, which encourages coding daily for 100 days. While I personally think taking breaks is essential to avoid burnout, the key takeaway from such challenges is to build consistency and habits. The number 100 is significant in the Talmud, where it is said that "one who reviews their studies 100 times is not comparable to one who reviews their studies 101 times." Hillel’s point was not centered on the number but rather on the importance of what you learn after repetition.
00:16:57.180 When I did the 100 Days of Code challenge, I noticed my growth was not simply after the 100th day; it was the 101st day when coding became natural for me. By practicing consistently, you form habits, and true growth occurs when these activities become a part of your routine.
00:18:13.860 While focusing on individual growth is important, we must remember that no one is an island; we are part of teams, and each team has its dynamics. Every team comprises senior and junior members, with senior members expected to guide and mentor juniors. We’ve previously discussed the significance of seeking mentorship from the mentee's point of view; now let’s examine it from the mentor’s perspective.
00:18:59.940 Mentoring takes time, resources, and energy—time that could be spent on our projects. However, mentoring is immensely rewarding. The Talmud suggests that, in a mentor-mentee relationship, the main beneficiary isn’t always the mentee. The sage recognized that sometimes mentors learn more from their students than from their teachers or peers. When you teach others, you often gain a new perspective, and just explaining complex topics can deepen your own understanding.
00:20:12.480 Moreover, sometimes a junior scholar who asks questions can help sharpen a senior’s understanding. As engineers, we may sometimes do things out of habit, without questioning why. By being confronted with questions from mentees, we reassess our understanding and become better at what we do. It's essential to note that mentoring isn't limited to seniors; even if you only know a little more than someone else, you can still help them grow.
00:22:09.539 The Talmud teaches, "If you only know Aleph, the first letter of the alphabet, do not wait until you learn the whole Torah. Find someone who doesn't know Aleph and teach them the letter." In my journey, after studying at a boot camp, I liked to help students struggling with labs I had just completed. I found that teaching others helped reinforce my understanding and provided new insights into the material.
00:23:56.340 What if you can’t find a mentee or someone to teach? Going back to the lesson we discussed earlier—acquire for yourself a companion—consider how the Hebrew language allows nuances with its use of vowels. The Hebrew word for acquire, "ukene," can also convey that a pen could be your companion. Writing notes when learning or solving problems can be immensely helpful and reinforces your understanding.
00:25:27.240 In the digital age, starting a blog and sharing your thoughts has never been easier. There are many blogging platforms available for developers to share knowledge. Even if others benefit from your blog posts, the primary advantage comes from the process of organizing and articulating your ideas. This mirrors the growth we find from mentoring others.
00:26:21.540 As we shift focus from ourselves to our teams, we must remember that the code we write isn’t just for ourselves; it’s for the wider world. As developers, we have a unique responsibility regarding how our code is utilized, and we hope it makes a positive impact.
00:27:30.840 A story from the Talmud encapsulates this beautifully: Rabbi Akiva lived during a time when the Romans ruled Israel. The Roman Governor, Turnus Rufus, often challenged the sages with questions. He once asked Rabbi Akiva why God doesn’t directly help the poor. Rabbi Akiva explained that when we see someone suffering, it’s a prompt from God asking us to intervene and make a difference.
00:28:15.480 This conversation highlights the danger of assuming people deserve their plight, and certainly as programmers, we can fall into the trap of saying, 'That’s not my problem.' The Talmud illustrates this point through a parable of people on a ship, one of whom started drilling a hole under their seat. The passengers were alarmed, realizing that the resulting flood would affect everyone on board. In the same way, each of us should recognize that we are part of a larger community, and we cannot ignore the ramifications of our actions.
00:30:39.899 In times where individual actions can impact the collective, neglecting our responsibilities is not an option. The sage Rabbi Tarfon said, "It is not your duty to finish the work, but neither are you at liberty to neglect it." Many grand projects have required collaboration from countless individuals. While each aspect may seem small, the cumulative efforts create meaningful change, and we should be proud to contribute.
00:31:44.160 Thus, as we close, I want to express my gratitude for your attention during my talk. I encourage you to reach out through Discord during the conference or connect through my other channels. If you enjoyed this exploration of the intersection between Torah and technology, feel free to subscribe to my newsletter at torahandtech.dev. Thank you so much for coming; I appreciate each and every one of you.