Refactoring

Summarized using AI

Your Team, as Saga

Betsy Haibel • November 08, 2022 • Denver, CO

In her talk titled "Your Team, as Saga," presented at RubyConf 2021, Betsy Haibel discusses the use of narrative structures in software teams, proposing that storytelling techniques from fiction can improve team dynamics and software engineering practices.

Haibel begins by emphasizing the role of narrative in helping humans make sense of their experiences, particularly in chaotic environments like software development. She explains how the stories team members tell themselves can shape their perspectives on code quality, testing, and team morale, creating feedback loops that either encourage a healthy team dynamic or lead to detrimental behaviors.

Key Points Discussed:

- Team Narratives: Haibel illustrates how team narratives influence behavior, using the metaphor of a "bug smash" to highlight how a failure to maintain reliable tests can lead to a culture of distrust and tech debt. If the narrative is positive, teams feel capable of fixing problems, while a negative narrative can paralyze them.

- Feedback Loops: She stresses the importance of establishing constructive feedback loops to shift the team’s momentum positively. Teams need to understand capabilities beyond just delivering features, focusing on enhancing their skill to meet current and future user needs.

- World-Building in Development: Drawing parallels to fiction, Haibel argues that proper world-building in software involves envisioning the bigger picture rather than merely constructing tasks without context. Engaging developers in creating comprehensive narratives helps in building a coherent product vision.
- Conflict in Projects: The concept of conflict, particularly "person versus environment" (the coding challenges teams face), is explored through the 'MICE' system (Milieu, Inquiry, Character, Event), offering a framework to classify the various conflicts that arise during software development and how to resolve them.

- Character Development: Unlike individualistic models, Haibel proposes viewing team dynamics more similarly to character development in romance novels, where collective growth and knowledge sharing take precedence over individual accolades.

- Editing and Refinement: The final section of her talk focuses on the need for consistent editing—ensuring that every project advances the team’s capacity in multiple ways, akin to enhancing a narrative structure in writing.

Haibel concludes by stating that fostering an environment where team capacity is always growing leads to overall improvement, regardless of individual team member backgrounds. The ultimate takeaway is that effective narratives can transform both team operations and outcomes in software development, ultimately creating a thriving and collaborative work environment.

Your Team, as Saga
Betsy Haibel • November 08, 2022 • Denver, CO

Your Team, as Saga by Betsy Haibel

Software systems are made of code, and the people who work on them. But most of all, they're made of the stories those people tell. Heroic legends of shipping to deadline, spooky ghost stories of refactors gone bad... and a lot of sci-fi, projecting out into a utopian (or dystopian) future. How can you edit this story to make it go right? In this talk, we'll apply fiction-writing tricks to the art of engineering roadmapping. We'll learn how to build narratives, develop our characters, and world-build our way to healthier teams and healthier code.

RubyConf 2021

00:00:10.719 Today, I'm going to be talking about the narrative structures that underpin software teams.
00:00:12.000 We'll explore how we can use metaphorically repurposed fiction writing techniques to reshape our team's narrative structures.
00:00:23.680 Narrative is how humans make sense of the world. We use stories to fit the chaos of our everyday experiences into a pattern that is memorable and meaningful. Crucially, it feels alterable.
00:00:38.000 Everyone on our teams tells themselves stories, and these stories aggregate, often in response to that flickering test suite that just won't die.
00:00:47.680 As people compare notes, a consensus slowly starts to form. The team begins to believe that the test suite is flaky and unreliable. Subsequently, the team's coding practices will shape themselves around that narrative.
00:01:07.200 This situation can unfold in a few different ways. It could go positively, where the team decides to spend time fixing the problems in the test suite to restore reliability. But it could also take another direction.
00:01:16.720 The team might conclude that the tests won't provide reliable feedback, leading them to abandon writing tests altogether or to adopt defensive coding practices because they can't trust anything in the codebase.
00:01:35.360 At that point, we move from a situation where the team shapes the code to one where the code shapes the team. The team that successfully streamlined their testing will feel confident in their code and their ability to address issues.
00:01:54.159 This establishes a self-reinforcing cycle: they identify problems, solve them, and become confident in their abilities. In contrast, the less fortunate team, gripped by distrust, suffers from growing technical debt and feeling of incapability, ultimately leading to paralysis.
00:02:03.200 We find ourselves stuck in cycles where the feedback loops of narratives and teams interact constantly. A system that has feedback loops like this will accelerate in a certain direction. Hence, the critical question becomes: How do we establish the right feedback loops?
00:02:22.800 If the team's momentum is in the wrong direction, how do we change it? This talk seeks to explore how we can apply narrative as a lever in this endeavor.
00:02:28.240 Let’s first look at a common narrative in software development: the predictable delivery of new features, which is often perceived as the core of our work. There's no denying that estimations are essential; marketing needs to coordinate media buys, for instance.
00:02:41.919 However, I contend that the assumption that specific features are our most crucial deliverables is flawed. Software development is unique in that we construct towers out of Legos, while simultaneously creating the Legos themselves.
00:02:52.800 Determining which Lego pieces we need can often be challenging, as we regularly misjudge what’s necessary. This has implications for our teams and the code they develop.
00:03:05.680 The key to sorting out what's necessary is evaluating whether a task enhances the team or codebase, or better yet, both. Capability isn't merely about meeting current user needs; it's equally about preparing for their future needs.
00:03:11.360 When a project increases our capability for the next endeavor, it creates a positive feedback loop; if not, it inevitably leads to a negative one. This raises an essential checklist for fiction writing that we can apply to our own work.
00:03:20.880 Let's discuss how world-building, plot, character development, and editing can inform our roadmap planning in a way that allows our teams to become more capable and healthier.
00:03:38.480 When we consider world-building, we often visualize epic projects akin to 'The Lord of the Rings,' imagining a singular genius crafting a meticulous environment with detailed histories and languages. However, world construction and storytelling differ subtly.
00:03:51.760 In this programming conference filled with nerds, let's see how many of you have read 'The Hobbit.' Now, those who read 'The Silmarillion' - keep your hands up. I've noticed many hands have gone down!
00:04:04.880 For those unacquainted, 'The Silmarillion' is essentially Tolkien's encyclopedia of all the world-building details that didn't make it into the primary books. It's not an easy read, and many have tried and given up, myself included.
00:04:20.800 To grasp world-building's context in storytelling, let's reference Samuel Delany, a science fiction grand master known for his classics 'Babel-17' and 'Dahlgren.' Delany has engaged with how language patterns in science fiction differ from those in conventional literary fiction.
00:04:36.840 In his essay, Delany discusses how the underlying assumptions of a given narrative, much like in our development teams, can impact the directions we take. This brings us to examine our own assumptions and tell a different story.
00:04:50.880 The way we communicate about these narratives ultimately shapes our day-to-day work and our approach to managing projects. We often fall into patterns of rushing through the final phases of development, creating pressure beside ourselves to deliver while skipping necessary processes.
00:07:16.080 As a result, we might miss critical resolutions in our narratives. Just as in storytelling, where we need to address and resolve conflicts, we must likewise pay attention to conflicts that arise in our software projects and use them wisely.
00:07:39.680 Successful storytelling requires tension to engage audiences. By integrating creative storytelling techniques, we can transform our team dynamics and encourage a culture of collaborative growth where each voice matters.
00:07:55.040 The conflict that shifts us toward resolution requires constant attention. In our efforts, we face not only computer-related issues but also deep interpersonal challenges that interact within our sociotechnical systems.
00:08:10.960 Using a structured model like the MICE system can assist us in categorizing these conflicts - Milieu, Inquiry, Character, and Event. Organizing our thoughts and amounts of tension introduced will allow us to mitigate stagnation in our projects.
00:08:27.520 Conflict arises from unmet needs or broken aspects of our pipeline that need resolution. Just like in literature, where features need to be fleshed out, our engineering projects demand similar attention.
00:08:51.360 A stretched narrative means everyone level is allowed to be a part of the growth of the entire team. When we cultivate this generosity of spirit, we foster a community that encourages the collective growth of knowledge and innovation.
00:09:06.640 As we engage in stretch projects, it's essential we also initiate the practice of pairing; it allows for greater collaboration and shared learning rather than impeding it due the pressure of individual performance.
00:09:28.000 Stretch projects shouldn't be solely about the individual; they should encourage the growth of the team as a collective. This also includes the added element of time haziness that often emerges from feature delivery.
00:09:36.760 The pace of progress is not uniform. Borrowing from successful examples in storytelling, we must focus on gradual transformations that lead to cohesive character arcs that resonate with audiences.
00:09:48.080 Likewise, in teams, it's important that stretch projects bring lovely and meaningful growth. Allow for gradual foundations for skills to take root so that the team can flourish in their craft.
00:10:08.560 Throughout these interventions, storytelling remains at the forefront; by capturing various pieces of knowledge, we can help shape our team dynamics and ensure they remain supportive and welcoming environments.
00:10:26.201 At the same time, we must treat stories within our portfolio of projects as active narratives that allow all team members to capitalize on their potential.
00:10:38.319 As we engage with our technical work, we must remain vigilant of our internal motivations and perspectives. Developing a flexible architecture based on reciprocity ultimately transforms the way we connect with our tasks.
00:11:04.320 In storytelling, the audience's experience is only as enriching as the author allows for in terms of creativity and engagement—much like how we should approach our coding processes.
00:11:23.760 Cascading effects of team dynamics and narratives form the basis of our collective experiences. Likewise, fostering an open environment on our teams breeds successful experiences and encourages creativity.
00:11:44.600 Constructing narratives not only helps define team dynamics, but it also highlights the importance of formalizing roles within the shared construct of teamwork. Thus, all voices must participate, and equitable collaboration should lead opportunities for all.
00:12:23.120 Every project roadmap must consider the narrative elements at play that can lead to beneficial collective growth. This way, we cultivate not just narrative intelligence, but also a mindful team ethos that enhances everyone.
00:12:40.560 As we learn, the importance of continuous growth highlights the value of capacity in software development. So, remember that nurturing your team encourages good practices for everyone involved.
00:12:57.760 A collective narrative helps create an environment where everyone feels the potential for their growth while contributing to innovative projects. The key is supporting each other as we engage in our shared experiences.
00:13:06.039 By promoting open collaboration within our teams, facilitating the sharing of knowledge and perspectives will ultimately support differentiation rather than an overly competitive culture.
00:13:14.720 Creating a narrative that celebrates team capacities encourages attentive practices that foster understanding and empathy as well as inspire optimal solutions to complex problems.
00:13:28.799 As we engage in every project, let’s strive to build stories that invite openness, creativity, and growth. In the end, remember, each journey in software development is a collaborative story worth telling.
00:13:42.039 When this shift occurs, our role not only as coders but as team members becomes increasingly significant. Continuous storytelling builds resilience that leads to a vibrant and dynamic coding environment.
00:14:00.440 Efforts to develop more cohesive narratives require reflection and vulnerability in our interactions, ensuring each colleague feels supported in their journey.
00:14:21.440 In doing so, we lay the groundwork for storytelling that goes beyond mere problems but emphasizes the importance of solutions that arise collaboratively.
00:14:43.440 This collective storytelling informs our experiences and shapes our expectations, creating narratives anchored in resilience and optimism. We must focus on nurturing teams that maximize everyone's growth.
00:15:02.760 To summarize, each project should involve all voices participating in shared narratives, actively engaging every team member during their learning journey.
00:15:20.680 When teams develop a collaborative mindset, everyone can excel regardless of their initial abilities. Our collective success hinges on our capacity to build narratives that foster shared growth.
00:15:36.880 By promoting teamwork that embraces each individual's journey, we can shape a culture that uplifts everyone and ultimately drives both personal and professional success.
00:15:54.000 Collective narratives within our software teams help identify potential risks and enable informed decisions that ultimately shape the future of our shared projects.
00:16:11.040 Let's take this opportunity to recognize the value of every team member's contribution and frame our experiences as narratives filled with potential, excitement, and collaboration.
00:16:29.680 Acknowledge that our realities involve interplay between various individuals, thoughts, and projects—together building a cohesive effort to thrive and succeed. By supporting each other, we can tell compelling stories that resonate with audiences.
00:16:48.360 We must diligently craft our narratives and employ them toward achieving synergy in all we do. Likewise, we can inspire others to take on challenges bravely.
00:17:04.240 The work we undertake together in coding can inspire great stories that not only bring us fulfillment but can also help sustain entire communities in tech.
00:17:15.600 As we share our experiences and enact thoughtful practices into our routines, we contribute positively to not only our teams, but to the greater tech landscape.
00:17:35.920 To conclude: embrace the power of storytelling within your tech teams, focus on collaboration and development, and build a supportive culture where everyone thrives.
00:17:53.040 This needs to be a constant theme in our software teams as cultivating and enhancing our narratives remains at the heart of everything we undertake.
00:18:11.200 As these narratives take shape, they will redefine our realities and establish new paths toward vibrant growth. Ultimately, it leads us to enrich our understanding of software development as a community.
00:18:25.920 Making these connections—both through our technical work and personal experiences—allows us to evolve our craft and gain transformative insights.
00:18:38.000 Consider that these narratives empower individuals to contribute actively and foster supportive environments where creativity flourishes. Together, we can share our experiences and expand our collective stories.
00:18:54.600 Embracing enhancements resulting from various narratives results in a more engaged community. The intertwining of each story emphasizes the significance of opportunities to learn, adapt, and grow together.
00:19:11.120 You are all valued within this community. Embrace your narratives, foster growth, and remember that trust and collaboration lead us toward transformative journeys.
00:19:27.040 In moving ahead, let’s aim for a framework that nourishes collaboration, curiosity, and limitless possibilities for everyone involved.
00:19:43.960 As we reflect on this collective potential energizes us all, it’s essential to acknowledge the changes we spark in one another. The beauty of narrative lies in every person’s unique contribution to the overarching story.
00:20:02.760 Take this forward in your tech projects. Turn challenges into narratives full of resilience and celebrate the development journey in tandem with each voice and effort.
00:20:22.640 This creates a path towards the evolution of innovative ideas, encouraging meaningful growth through every collaborative venture. Together, let’s build tighter connections and a space where everyone thrives.
00:20:40.280 So, as we gather here, I hope you each feel empowered to contribute to the narratives that shape your teams. Thank you all for being a part of today's discussion.
00:21:01.680 Now, I'd like to encourage each of you to reflect on your work, to share openly, and let’s cultivate environments that allow us to flourish as contributing members of this community.
00:21:15.840 Thank you for your time. I hope we can all find opportunities to engage meaningfully in our areas of expertise.
00:21:26.960 Please feel free to approach me afterward if you have any questions or thoughts to share, but I absolutely don’t want to keep you away from dessert.
00:21:40.000 Thank you all once again for your participation today. I hope this talk has inspired some fresh thoughts about our practices and the power of narratives in software engineering.
Explore all talks recorded at RubyConf 2021
+95