Talk Notes: "Growing Software From Seed" (railsConf 2021)
Tags: techtalks
Published: 2021-04-15 21:30:42


✨ **What is this post about**: As a part of my professional growth, I make time to watch conference talks on Ruby, Rails, JS, React, tech writing, and tech trivia. Previously, I'd just watch them but now I will take and publish notes for future reference. This talk was a part of RailsConf 2021 that I'm participating in at the time of writing. 

✨ **Talk:** 'Growing Software From Seed' by [Sweta Sanghavi](https://twitter.com/SwetaSanghavi)

✨ **One-paragraph summary**: This talk visits some familiar places, code that should work, or seems unnecessarily complicated, and digs deeper to find what we missed at first glance. Let’s explore how we can learn to hear all our application tells us and cultivate a methodical approach to these sticky places.

✨ **Impression**: 🌱 This talk brings exactly the energy I need in tech and I feel so rejuvenated after this half-hour! 🌱 A lovely analogy between gardening/weeding and coding/debugging! 

---

## Table of contents:

- [Notes](#notes)
- [Side notes](#side-notes)

---

## Notes

- I love the opening anecdote: using veggie analogy to talk about how the unknown or weakest part of the system is not necessarily **the root** of the undesired behavior
- A quote by Pam Pierce (a gardener and an author of "Golden Gate Gardening"):

> Make a conscious effort to look at your garden. Look to spot problems in time to solve them. And look to develop a feel for the plants -- how they grow and how they respond to stress. (...)
> Turn leaves over. Notice what is flying or crawling about. Sit down. Study a plat or a square foot of ground until you've learned something new.

- Debugging process
  1. The unknown or weakest part of the system is not necessarily **the root** of the undesired behavior
  2. Weed out assumptions
  3. Look at the systems holistically (also, as a part of a bigger system)
  4. Observe early, act quickly
- A different way of looking: from scanning for signs of progress to being curious about every change that happens, and the **why** behind it
- Expert gardeners are really just expert observers (observe early to act quickly)
- It's easy to overlook the error we see often!
- It's easy to assume we are at fault!
- "Great software is not built, it is grown" ([Richard Monson-Haefel](https://www.oreilly.com/pub/au/251))
- Sometimes you need to wait to refactor:
  - "Duplication is far cheaper than the wrong abstraction" ([Sandi Metz](https://sandimetz.com/))
  - "wait to see what your seedlings are before you weed"
- Good Code practices from gardening:
  1. **Talk to your plants**: state your assumptions (how you expect your tests to fail, what your hypotheses are, read each error out loud, ask yourself what question you're trying to answer right now)
  2. **Walk in your garden**: adopt the practice of daily diff as a part of your diff process (spend 15-20 mins in the morning to review the commits of the day prior to familiarize yourself and your team with all the changes that are happening in the codebase; notice high-level patterns)
  3. **Weeding**: tend to console noise (logs, deprecation warnings), pay down debt (just daily weed some out)
- "These practices unearth assumptions. Assumptions are the root of most bugs" 🐛

> "Shifting coding dynamics, being open to slow down and holding yourself to strive for the force that goes back to the simplest thing"

---

## Side notes

- I loved how Sweta made her whole talk plant-oriented! It's not only the main anecdote but also the visuals, the slide design, her flat in the background, and her puns! For instance, when talking about adding a new feature to the codebase, she asked: "what's the entry point - where are we going to plant our new code?" 💕
- This talk brings exactly the energy I need in tech and I feel so rejuvenated after this half-hour!