00:00:08.549
So I just got here because I've had a cold, and I still have a cold. I'm feeling half groggy from the cold and half from the drugs I took so I could do this. Luckily, I'm talking about vulnerability and related topics, so it's probably appropriate. I didn't expect to be sick, and I'm not allowed to cover the mic or turn it off when I cough, so be warned.
00:00:21.689
So what shall we talk about? Rainbows, unicorns, farting rainbows? That's what people expect me to talk about most of the time. Marty suggested that I come and discuss love and software, and I thought, 'Can you even do that? Is that allowed?' But I will tell you there's a presentation later on with a little bit of code.
00:01:01.980
The topic is love, and to me, it's kind of uncomfortable to talk about. I talk about it all the time—that's what I do. I imagine you all find it even more uncomfortable, but it feels a bit presumptuous for me to state what love is or what kind of love software needs. I don't want to dictate what love means for you, so take what resonates and leave what doesn’t.
00:01:39.869
Soft skills—there's one conference that says, 'No fluff, no soft skills.' And I wonder, why are you scared when the quietest person on the team speaks up, even though they're terrified and trembling because they know something bad will happen if they don’t? That doesn’t feel soft; it feels kind of badass actually. How many of us avoid speaking up during scary moments? For instance, when a parent holds their child's hand during a painful medical treatment—that’s not soft. It’s tough stuff, and it takes courage to face.
00:02:22.660
So I'm going to talk about what they call soft skills and hopefully won't make them seem too soft. When I talk about love, I'm referring to something that's almost a technical term for me. If you think of someone you care about—a child or a pet—take a moment to picture them in your mind. You feel something in your heart, right? That's a spark, and it’s a clue about what brings us joy.
00:03:01.530
When I discuss 'heart smile,' I'm referring to that feeling you have about what brings you joy. Different psychologists have discussed universal human needs, like Maslow’s hierarchy. They have explored what people need to thrive, which can illuminate our sense of love. Some of those elements include creativity, care for others, and learning. When I think about learning—like discovering quantum physics—it sparks joy in me. We all like having choice as it signifies what it means to be human.
00:03:40.560
There’s also a concept called progress toward a goal, which I learned from my friend and mentor, Cheapo Hill. It's about forward movement. The opposite occurs when a project isn't going anywhere, you don't know which features are valuable, or your code never gets implemented or deployed. When we make progress, we are moving forward with what matters to us, and all these aspects lead to what I refer to as 'geek joy.' Think about what made you become a programmer. I imagine everyone here remembers their first program.
00:05:02.050
I think this might have been my first program. You recognize this? I can't really see. It was just the first line that was my program, and more lines came later. It got better. When I wrote that first line, it blew me away to see the computer respond to my input. That’s amazing! It raises the question of how we became programmers. You don’t usually become a programmer just because someone says it’s a good career choice; you have to love it.
00:06:37.600
However, we often end up in complex systems filled with legacy code at companies that dictate what we write. As a result, geek joy starts to diminish, and we wonder why we're doing this. Everyone probably recognizes this quote: Uncle Bob—bless him—loves beautiful code as much as I do. The difference lies in his belief that it's driven by fear, which really breaks my heart. I don't think fear works.
00:07:44.930
Fear is what prevents us from refactoring or from writing clean code. As much as I respect him, I wish he would retire that idea. For me, clean code is about progress. It's about not living in a hell of legacy code and ensuring that I deserve joy in my work. My reasoning includes understanding that being professional or responsible doesn't stem from fear; it emerges from love for the craft.
00:08:09.690
For example, I often wonder, why are there shoes in the refrigerator? I recall learning to code after taking a long break. I was confused by some object's setup, and after multiple questions, I realized some code didn't make sense. It turned out that the code was written out of fear instead of crafting something beautiful and coherent, which we are fully capable of.
00:09:06.840
Nature knows how to deal with complexity, and as we model nature, we learn to embrace emergence. When we adopt test-driven development (TDD), we teach our code tiny bits of knowledge that we want it to learn, allowing it to direct us as we refactor. One of my favorite coaches, JB Rainsberger, emphasizes that if you remove duplication and fix bad names, you'll achieve simpler, cleaner code. This doesn’t come easy; it takes effort.
00:10:22.510
Trying to hold everything in your head often leads to messy results. Our hearts don't smile, and we settle for the first solution that comes to mind, but emergence shows us we can do better than that. It’s crucial to acknowledge the beauty that comes from collaboration and cooperation.
00:11:00.720
Emergence is when something greater than the sum of its parts appears. In pair programming, for instance, when two developers work together, they contribute and communicate until something entirely new emerges—something neither could foresee on their own. If you haven’t pair programmed, I highly encourage you to try it with someone who has had a good experience. It’s transformative.
00:12:25.020
Cooperation involves two people doing their own thing, but collaboration leads to something new. This notion brings us back to geek joy and reinforces that collaboration is an aspect of love. Holding a newborn or standing on a mountain—those moments are also forms of joy, but collaboration fuels the creative spark.
00:12:51.970
Reaching collaboration requires letting go of the need to keep everything in your head. Knowledge grows when it has space to bounce against ideas and change. It’s important to let go of needing to be right and being able to change your mind, especially in pair programming. It involves bringing your own curiosities, confusions, and questions; if you hold back fearing conflict, we won’t achieve those beautiful moments in code.
00:14:41.160
Confident humility is another aspect I discuss, especially in relation to pair programming. This concept means coming in knowing you have something to contribute and being willing to fully engage in the process. It’s crucial to realize that emergence doesn’t occur without your active participation. Many of us feel like noobs at some point, but remember that confidence is about being fully present.
00:15:48.350
Sitting in a corner won’t benefit anyone; instead, you need to contribute your original thoughts and insights. This synergy leads to joyful geekery, which infuses our code with love. And while I apologize for my cold, I'm grateful I showed up. Do you have any comments or questions?
00:17:42.970
I appreciate your stories. It’s essential that we share both our positive and negative experiences in programming. I recall a time when I cried after a difficult encounter while pair programming; I didn’t understand the approach taken. Good experiences matter, and they shape how we adopt pair programming as a norm.
00:18:25.570
I've had both excellent and painful pair programming experiences, leading me to believe that positive sharing is vital. The first time I observed a programming team, I saw participants not genuinely engaging in pairing—just side-by-side coding. That experience taught me that collaboration should mean both partners actively contribute rather than one dominating the process.
00:19:10.710
When you pair with a junior, it’s critical to encourage them and create a balanced dialog. The senior must listen actively to propel the development forward and vice versa. The best outcomes arise from both parties engaging deeply. If you've witnessed positive pair programming experiences, it's crucial to spread that knowledge and advocate for collaborative practices.
00:21:02.120
In summary, confident humility leads us to joyful collaborative practices. Everyone can contribute, and this shared engagement fosters an environment infused with love. Make sure to discuss collaboration and its beauty with those around you.
00:21:40.540
This leads to better experiences in coding and strengthens the community overall. Thank you for all your thoughts and questions today. It’s been great to discuss how we can embrace love and collaboration in our coding practices.