Dan Itsara

Panel Discussion

A talk from RubyConfTH 2023, held in Bangkok, Thailand on October 6-7, 2023.
Find out more and register for updates for our next conference at https://rubyconfth.com/

RubyConf TH 2023

00:00:07.879 Okay, we have a variety of topics today. I’ll go ahead and start with the first question, which is really about building community.
00:00:14.240 So, my question is: what are some effective ways to support junior developers in the Ruby community?
00:00:20.039 When I was thinking about this question, I thought maybe we could split this up into two parts. One is how to support junior developers who are already on your team writing Ruby.
00:00:31.720 The second is how do you bring more developers—people who might not yet be in the Ruby community—into the Ruby community as junior developers?
00:00:45.600 Let's see who looks excited to answer. Let’s start with Selena.
00:00:51.800 Sure, no problem! Let’s start with juniors on your team. The best thing you can do for juniors on your team is pair programming.
00:01:02.640 For anyone who was at RubyConf Thailand last year, you’ll know that I’m a huge fan of pair programming. It is the best way to accelerate your juniors.
00:01:09.600 Pair programming helps them grow and learn new skills. I think that is the best thing we can do for them—give them as much time as possible.
00:01:16.799 Thank you! I remember that pair programming talk. I think it’s available on YouTube, and it’s quite interesting to watch, so I definitely recommend it.
00:01:24.280 Ellie, what do you think?
00:01:30.040 To be clear, I’ve run two associate developer programs to upskill junior developers. I agree that pair programming is essential. You also need to set them up for success, which means properly onboarding them.
00:01:44.799 Support their training as they start. This could involve a set of programs you develop or simply having people to pair program with them.
00:01:50.960 Develop some materials that can help bring them on board. Give them tickets that fit their skills, and remember that you don’t need only seniors to support juniors. Mid-level developers are just as capable, as they haven’t been so far removed from being juniors.
00:02:09.959 They still remember what it’s like and can answer questions effectively. Pair them with a buddy who they can approach with problems.
00:02:16.000 Thanks, Ellie. Are there any consistent obstacles you see junior programmers running into when setting them up for success? Are there any consistent problems we should be aware of?
00:02:30.800 Yes, setting expectations is crucial. Juniors often try hard to be valuable and contribute to the team, but it’s important to communicate that they need to focus on their education and learning.
00:02:43.800 Also, if they are blocked, they should be encouraged to ask for help. Many times they get stuck and do not communicate that.
00:02:56.640 Thanks, Jemma. Just to build on that, modeling behavior is something I think about actively. We were all once juniors, new to programming, and, especially, new to Ruby.
00:03:29.360 It’s easy to forget that as you become more experienced. The number one thing I try to model is admitting when I don’t know something and asking questions.
00:03:34.640 Junior developers often feel they need to know everything. The pressure to impress can prevent them from seeking help when they truly need it.
00:03:47.560 Modeling the behavior of asking for help and admitting when you don’t know something can greatly encourage juniors to feel comfortable doing the same.
00:03:54.079 I also believe remote work has created challenges for junior developers. If possible, encourage getting back to the office. While the trend seems permanent, being in the same space allows for serendipity and mentoring.
00:04:22.880 One approach is to ensure junior developers are given manageable tasks. They should have some easy tasks and others that stretch them just beyond their current skills, requiring them to ask for help.
00:04:37.960 Encouraging inter-team communication is key. We often hold Zoom calls with other teams. I encourage juniors to initiate communication and start architectural discussions.
00:04:59.440 If they can articulate their thoughts to others, they will develop better concepts of what they are building.
00:05:23.120 I want to add to what Jemma and Brad said about creating a learning environment. It’s essential to have a space where juniors feel comfortable learning and can be pushed just enough without overwhelming them.
00:05:49.160 Communication is crucial, and supporting juniors in asking questions and understanding the 'why' behind tasks can foster deeper learning.
00:06:07.720 Additionally, implementing code previews can prevent issues. Discussing options before moving forward can help guide juniors to make better decisions.
00:06:22.360 Once they submit a pull request, it’s often too late. If they have a chance to discuss their approach beforehand, revision becomes much smoother.
00:06:47.919 That's a good point! I sometimes get the impression that developers submitting a pull request feel it’s like submitting homework; they’re nervous about being graded.
00:07:07.479 Selena, do you have something to add?
00:07:24.160 Yes, I want to emphasize that fostering a culture of open communication is vital. Juniors need to feel comfortable saying when they're struggling.
00:07:35.680 This goes back to the broader company culture. An environment where vulnerability and asking questions are encouraged is essential. If the culture promotes openness, it'll help in dealing with juniors.
00:08:05.640 I also want to address the paradox of remote work, as you mentioned, Brad. People love working remotely, yet they enjoy being together. I'm curious how you've navigated this in your organizations.
00:08:42.560 I often bug my manager for more off-site meetings so we can all travel and meet up. It’s expensive, and management is hesitant, but being in the same place really helps.
00:09:10.440 At Fresho in Australia, we transitioned to fully remote engineering. Before, we were all in the office. It was enjoyable and provided a lot of interactions.
00:09:34.160 Despite being remote, we have implemented 100% pair programming, allowing for high collaboration. All our engineers work in the same time zone.
00:09:55.279 We’ve leveraged tools that enable remote pairing, ensuring no one feels isolated during sessions. This collaborative environment requires cameras on to facilitate communication.
00:10:19.360 We attempt to gather in person about four times a year, focusing primarily on collaboration, teamwork, and bonding exercises.
00:10:42.680 I think it's important to differentiate between types of work that are best suited for remote and in-person settings. Strategy and brainstorming are better done together physically.
00:11:04.080 Remote work can foster focus on coding tasks or pair programming. In contrast, in-person gatherings are ideal for project planning and big-picture discussions.
00:11:29.760 The in-person interactions foster connections that are hard to establish online. However, accommodating various needs, such as those of families or neurodivergent individuals, must be kept in mind.
00:11:52.160 It is also necessary to create opportunities for remote workers to connect with each other beyond work discussions.
00:12:00.720 Let's move on to the next question. I want to talk about how to bring more developers into the Ruby community. What strategies can we employ?
00:12:27.600 From my experience in the Ruby community in Australia 10-12 years ago, we hosted Rails Camps that raised awareness of inclusivity within the community.
00:13:03.880 At one Rails Camp, I was the only woman among 125 attendees. This led to community discussions on how to bring more women into Ruby.
00:13:20.760 Initiatives such as Dev Bootcamps and Rails Girls workshops helped train women in Ruby. We also worked to establish a community culture that was welcoming to all.
00:13:38.320 Ensuring that we attract a diverse community is critical as we bring more developers into Ruby. This diversity should reflect broader demographics beyond those currently represented.
00:13:56.360 I founded the WRB initiative to improve the retention of developers from diverse backgrounds. Inclusive communities and events play a vital role in encouraging engagement beyond just job involvement.
00:14:17.960 Role models are important. When people see others like them in the community, it makes it easier to engage.
00:14:34.959 Thank you for your insights. Let's move on to our next topic: AI. As we’re in 2023, how do you see generative AI affecting the future of programming, especially in Ruby?
00:14:55.160 AI is already saving us time and money. For example, using GitHub Copilot has increased productivity by 30%. It’s significantly helped our team.
00:15:20.400 Programming, however, still feels too complicated. Many of us waste hours on simple tasks that could be streamlined, indicating AI's potential to make things easier.
00:15:42.000 I'm curious if programming languages will evolve to be more compatible with AI technologies. For example, languages that are more explicit in syntax, like Haskell, may gain popularity over Ruby.
00:16:06.520 We need to consider how to adapt Ruby to ensure it is enticing for AI companies while improving its usability.
00:16:22.000 As developers, can we leverage AI to better organize our programming processes without compromising the learning experience?
00:16:39.680 The ease of using AI tools can lead to a superficial understanding of programming concepts among junior developers.
00:16:57.040 It's essential to ensure that as we embrace AI, we are also fostering foundational knowledge in programming among new developers.
00:17:16.560 As AI evolves and becomes more integral to programming, we have to carefully balance its usage with a solid understanding of coding principles.
00:17:34.480 There are concerns that this reliance on AI may take away from the core skills necessary for deeper programming knowledge.
00:17:47.440 While AI can generate working software, understanding the underlying logic and nuances in programming is critical for effective coding.
00:18:05.000 The future of Ruby could be influenced significantly by advancements in AI technologies and how they can be adapted for use within the Ruby language.
00:18:22.000 With cloud services increasingly shaping our programming environments, we need to consider how Ruby adapts to stay relevant in the evolving landscape.
00:18:42.000 AI can provide a higher level of abstraction, but can we maintain the essence of real programming skills while embracing this high-level approach?
00:19:00.000 While AI can alleviate some burdens from developers, a deeper understanding of systems and architecture remains essential.
00:19:19.760 As we navigate this new landscape, we need to uphold the balance between increased ease from AI tools and the foundational knowledge that underpins effective programming.
00:19:39.760 How can we ensure that the next generation of developers grasps the core principles instead of simply relying on tools to get by?
00:19:56.360 Moving on, we should address the question of burnout among developers, especially as workloads increase and responsibilities expand.
00:20:20.560 To avoid burnout, developers need to maintain a balance. It’s essential to have activities outside of work that allow for relaxation and recreation.
00:20:36.360 Taking part in sports or hobbies can provide a necessary break and refresh the focus for better productivity.
00:20:55.280 With modern expectations, it’s common for developers to feel overwhelmed by the scope of tasks they handle. I advise focusing on one task at a time to avoid this.
00:21:13.760 Communication with management is critical in setting boundaries and prioritizing mental wellbeing.
00:21:27.520 The company culture must support work-life balance; otherwise, the weight of increasing demands can lead to burnout.
00:21:43.120 In remote settings, maintaining clear boundaries between work and personal time is crucial for mental health.
00:22:03.760 Getting into a healthy routine and respecting those boundaries will help sustain a positive work environment.
00:22:18.560 Today’s discussion on burnout aligns with the ongoing need for developers to recognize their own limits and respect their well-being.
00:22:36.560 It’s essential to identify symptoms of burnout early on and proactively address contributing factors.
00:22:56.000 As we wrap up, many attendees are excited about the speakers and engaging with this large conference.
00:23:14.240 For those interested in speaking at Ruby conferences, what tips or advice do you have?
00:23:33.720 I have numerous tips to share. First, start simple. Do smaller talks initially. Consider presenting at local meetups or within your organization as practice.
00:23:51.360 Engage with topics you’re passionate about and emphasize key takeaways. Concentrating on your core message is essential.
00:24:06.360 Practice makes a huge difference—rehearse multiple times. Live demos can be exciting, but be cautious, especially for your first talk.
00:24:20.320 Peer presentations can provide support, so consider collaborating with a fellow speaker to build confidence.
00:24:34.920 If you live in Thailand, be sure to check out the Bangkok Ruby Meetup for chances to practice and speak.
00:24:48.920 When applying for conferences, focus on crafting a strong abstract that clearly outlines your topic and its relevance for both beginners and experts.
00:25:10.600 Articulate your topic succinctly, highlight its novelty, and explain why attendees should join your session. Organizers appreciate clarity.
00:25:27.600 Writing strong proposals can be challenging, so utilize available resources like writing workshops or online guides.
00:25:44.920 Focus on topics you are knowledgeable about or passionate about; share your experiences and ensure they are well communicated.
00:26:03.600 Don't hesitate to apply! Many attendees seek beginner-friendly content. Your insights matter, no matter your experience level.
00:26:17.520 Everyone has something valuable to offer, and being a speaker can be rewarding and empowering for you.
00:26:31.040 One last point: as you prepare to present, know that there will always be someone in the audience who can benefit from what you share.
00:26:54.960 Your knowledge is impactful, so don’t underestimate what you can contribute.
00:27:10.080 Thank you all for your valuable contributions. Let's wrap up this insightful panel discussion.
00:27:33.520 The end.