Design Patterns
Crocheting & Coding: they're more similar than you think!

Summarized using AI

Crocheting & Coding: they're more similar than you think!

Tori Machen • November 13, 2022 • Houston, TX

In the video titled 'Crocheting & Coding: they're more similar than you think!', Tori Machin explores the unforeseen connections between crocheting amigurumi and software development during her talk at RubyConf 2022. The presentation aims to inspire tech professionals to recognize and leverage their hobbies to enhance their careers.

Key points discussed include:
- Definitions: An introduction to crochet, amigurumi, and software development ensures a common understanding among the audience. Crochet is defined as a technique using a hook to create fabric from yarn, while amigurumi refers to crocheting small stuffed creatures. Software development encompasses creating, designing, programming, and maintaining software.
- Design Process: Similarities exist in the design phase of both crafts. Tori emphasizes the importance of mock-ups in software development and initial sketches in amigurumi design, highlighting the necessity of visual planning.
- Patterns as Instructions: Tori compares crochet patterns to programming code, noting that both consist of instructions that guide the creator. Both require understanding unique syntax to produce desired results.
- Testing: Just as developers write tests to verify code, crocheters check their stitch counts against expected outcomes to ensure accuracy. Tori explains that both fields incorporate strategies to validate their efforts.
- Refactoring: Both crochet patterns and software code undergo processes of improvement and optimization, with Tori presenting her transition from messy initial drafts to neat final patterns.
- Community and Resources: Tori notes the supportive communities surrounding both hobbies, detailing how social platforms link creators for peer learning. Additionally, she discusses the abundance of free resources accessible to both sorcery crafts and software development.
- Personal Growth: Tori shares how her crochet hobby improved her pattern recognition, stimulating innovative thinking in coding and enhancing her mentorship abilities in both domains. She urges attendees to draw parallels between their interests and technical work.
- Getting Started in Crochet: Finally, Tori encourages viewers interested in crocheting to easily get started with affordable supplies and advises them on online resources for learning amigurumi.

In conclusion, Tori Machin effectively illustrates how engaging in creative hobbies like crocheting can enrich skills and perspectives in software development, urging tech professionals to explore the synergies between their personal interests and their careers.

Crocheting & Coding: they're more similar than you think!
Tori Machen • November 13, 2022 • Houston, TX

Many of us have hobbies that we enjoy outside of our careers in tech. For me, that is amigurumi, the art of crocheting stuffed creatures. What if I told you that amigurumi is extremely similar to software development? Join me in exploring the intersection between crocheting amigurumi and developing software. We’ll look at the key similarities between these two crafts, and I’ll share how crocheting has helped me become a better software developer. You’ll walk away inspired to connect your own hobbies to your role in tech or find a new creative hobby (like crochet)!

RubyConf 2022

00:00:00.000 Ready for takeoff.
00:00:16.920 Hello everyone, thank you so much for coming out here today. I'm so excited for this opportunity to share all my thoughts with you.
00:00:20.039 My name is Tori Machin, and I traveled here from Des Moines, Iowa. A little bit about me: I love bunnies! I have two rabbits at home, I enjoy playing cozy games on my Switch, and my favorite hobby is designing amigurumi.
00:00:29.119 If you're interested in connecting with me after this presentation, you can find me on LinkedIn at Victoria Machin to connect with me professionally. I also have a Twitter account that I don't visit too often, but I'll try to get back to you if you reach out to me there. I share a lot about my crochet hobby on my YouTube and Instagram at Toy Story Creations. I love making new friends, so if you see me roaming around RubyConf, feel free to stop me and say hi!
00:00:51.180 Today, we're going to talk about the similarities between crocheting amigurumi and software development, as well as the importance of making connections between your hobbies and your career in tech.
00:01:04.440 To start, we'll define crochet, amigurumi, and software development to ensure that everyone is on the same page. Then I'll discuss some of the similarities that I've noticed between crocheting and software development. I'll follow that by sharing how my hobby of crochet has influenced my career, and finally, I'll provide some resources for learning crochet if you're interested in picking up a new creative hobby.
00:01:30.720 My hope is that after this talk, it will inspire you to make connections between your hobbies and your career in tech as well.
00:01:58.680 So, what is crochet? Crocheting is a fiber crafting technique that uses a crochet hook to create a series of loops with yarn, thread, or other material in order to make fabric.
00:02:03.119 It's a very versatile craft that can be used to create a variety of different items, like hats, blankets, and cardigans, and the list goes on and on. To get a bit more specific, the style of crocheting that I love is called amigurumi. Amigurumi originated in Japan and is the art of crocheting or knitting small creatures. Typically, when you make amigurumi, you crochet in the round or in a continuous spiral shape, using various crochet stitches with yarn to form three-dimensional pieces that you later stuff with fiberfill stuffing and sew together to create a stuffed animal, a doll, or whatever else your imagination can conjure.
00:02:28.080 In the bottom left photo, we can see the signature spiral technique that amigurumi employs, and if we look at the photos on the right, you'll find various 3D pieces that I've crocheted to create a stuffed animal panda. When I refer to crocheting in the context of this talk, I'm specifically talking about the amigurumi style because that's what I'm most familiar with. However, many of the principles I mention can also apply to other styles of crochet.
00:03:10.080 A little background on my hobby: I've been crocheting on and off since I was about 15 years old and I started designing my own crochet patterns in 2015. All the pictures you've seen in the past couple of slides and throughout the presentation are examples of different amigurumi that I've crocheted. Specifically, the frog picture in the bottom right is the very first amigurumi I ever made. It was supposed to be small, cute, and round, but somehow it ended up oval-shaped.
00:03:52.440 Now that we've defined crocheting and amigurumi, I wanted to take a moment to define software development to make sure we're all on the same page. Software development is a process that programmers use to build computer programs and applications. It involves a range of activities, including creating, designing, programming, testing, deploying, and maintaining software.
00:04:15.120 I started experimenting with code in 2016, shortly after which I attended an online boot camp where I was first introduced to Ruby. I landed my first software development job in 2018, and I'm currently a software engineer at a startup called Free Will, where we're on a mission to raise one trillion dollars for high-impact nonprofits. A handful of years ago, I started learning about software development, and as I immersed myself deeper into my career, I kept noticing the similarities between my crochet hobby and my software development role.
00:05:14.400 You might be sitting in your chair right now thinking, 'But Tori, I'm a software developer. I write code every single day and never have I felt like I was creating one of your crocheted stuffed animals.' So, what could these two activities possibly have in common?
00:05:35.280 The first similarity I want to talk about is design. Before I start working on a new software application or building out a new feature for an existing app, I spend time deciding how the final product should look and feel to the user. Oftentimes, this means creating mock-ups or storyboards that developers use as guidelines for what the application or feature should look like in the end. A similar process happens when I'm designing amigurumi. When I begin a new project, I take the initial time to sketch out what I want my final design to resemble.
00:06:14.880 I contemplate things like what types of animals my audience would like to see, what different pieces I need to crochet to create this new stuffed animal, and the proportions required for each piece. Thinking about visual design is crucial in both software development and amigurumi design. If we don’t take the initial time to mock up our end product, we might end up building something that is not what our users wanted or not aligned with our original vision.
00:06:52.620 Another connection I’ve made between my crochet hobby and software development is that crochet patterns are surprisingly similar to computer programs. This was one of the first similarities I noticed when I began studying computer programming. A crochet pattern, as a snippet of text, is a series of instructions typically read from top to bottom that instruct the crocheter on what steps to follow to create the end result – in amigurumi’s case, a stuffed creature.
00:07:24.540 On the other hand, computer programs are sequences of instructions or operations, usually also read from top to bottom, that tell a computer what actions to perform, generally leading to some sort of outcome. Therefore, both crochet patterns and software programs provide instructions to produce something, whether it’s the cute body of a chick stuffed animal or the friendly 'Hello, World!' message for the user. They also both feature syntax.
00:07:56.520 In software development, we use programming languages to write our programs, like Ruby. These programming languages have their own syntax, a set of rules that determine the meanings of words and symbols, and how we can use those to tell the computer what to do. For example, some syntax elements we see in Ruby are 'def' and 'end,' which define the start and end of a method.
00:08:33.600 Here I present a snippet of a crochet pattern on the right. If you take a closer look at this pattern, would you be able to understand it? If you're not familiar with crocheting, this might seem like a foreign language to you. That’s because crochet patterns have their own unique syntax, or shared language, across the crocheting community, filled with various abbreviations and terms that together form instructions for the crocheter.
00:09:02.280 For instance, 'SC' stands for single crochet in crochet terminology, referring to a specific stitch the crocheter needs to create using their yarn and hook. These patterns often serve as a coded language: if you dive deeper into the syntax of both crochet and coding, you’ll find even more similarities. For example, they both utilize loops.
00:09:55.620 When I'm writing a program, I use a loop for a series of instructions that need to be repeated until a particular condition is met. In this example, I have a simple loop that will print 'hello' a total of five times. Crochet patterns also incorporate loops. Let’s examine our crochet pattern example again and focus on one of our rows, Row 3.
00:10:22.440 In Row 3 of our pattern, we're instructed to alternate between single crocheting and increasing a total of six times. A single crochet and an increase are both types of stitches that can be used when crocheting. Instead of writing out all of the steps, like we see at the top right of our slide, we can utilize square brackets and an ‘X’ to denote repeatable instructions. Anything inside the brackets indicates actions that need to be repeated, while the number to the right describes how many times those actions should occur.
00:10:50.520 Thus, we can rewrite Row 3 on the top side of our slide to utilize our loop syntax. We can take what we've learned so far and translate a snippet of our crochet pattern into simple code. If we examine the highlighted line in this pattern, it states that for Row 5, we'll increase for the first five stitches, and then perform a single crochet for the following two stitches. After completing that row, we should have a total of twelve stitches.
00:11:21.600 On the right, I've started writing a method to create a tail for my amigurumi project. For Row 5, we need to produce a total of twelve stitches. Oops, I meant seven stitches for this row. We iterate through the range from one to our total stitch count and call either an increase method or a single crochet method based on the result of our conditional, which is the stitch we are currently on. Therefore, fundamentally, a crochet pattern essentially functions as a program.
00:11:44.640 Another significant similarity involves testing. For software developers, testing is a critical step in creating reliable software. Developers write and run tests to ensure that specific sections of their applications are behaving as intended. Consider this snippet of code for a calculator with a method for summing two numbers together. When the method is called with those two numbers, they are added together, and it returns the resulting summed value.
00:12:16.080 A developer can write a unit test to verify that the sum method is correctly adding the provided numbers. On the right, I have a basic test that creates our calculator, calls the sum method with the numbers one and two, and confirms that the outcome is three. Just as software developers write tests during coding, when I follow crochet patterns, I employ similar testing strategies to ensure that I'm crocheting the right result.
00:12:46.920 One of the most frustrating occurrences while crocheting is missing a stitch in my project, resulting in an incorrect stitch count for my row. If I finish a row and compare my actual stitch count with the expected stitch count stated in my pattern and find they don't align, I know I've missed an expectation. This mirrors the experience of failing a unit test.
00:13:12.960 Even without a computer in hand, I can apply testing strategies to my crochet work. When I design patterns, I ensure that I include the expected stitch count at the end of each row, just as one would write a unit test. Additionally, testing in software development encompasses user acceptance testing as well. In the software world, this typically involves a developer handing off the completed code to someone who then runs tests to validate that there are no mistakes, no bugs, and that the software operates as expected.
00:13:54.000 The crochet community has a similar practice. When a pattern designer finishes writing a new pattern, they usually hire pattern testers to follow the pattern instructions before the pattern is published. These testers ensure that the pattern is clear and understandable, verifying that the crocheted piece produced matches their expectations.
00:14:29.220 Another noteworthy similarity is in refactoring. Once we've written functioning code in software development, we typically take time to refactor it. Refactoring involves restructuring code without altering its behavior. We often refactor to eliminate duplication, making our code clearer, easier to understand, and more reusable, with the ultimate goal of achieving clean code.
00:15:05.520 In crochet pattern design, creators also take steps to refactor their patterns. For example, in the image on the left, you'll see the first draft of my amigurumi pattern for a Pikmin. The draft appears quite messy; it's filled with changes, crossed-off lines, duplication, and plenty of comments. Once I've written the pattern and confirmed that I'm satisfied with the final outcome, I take time to retype my pattern neatly, refactoring to remove duplications by utilizing the crochet loop syntax we discussed earlier.
00:15:45.360 One of the most heartwarming similarities between crocheting and coding is the presence of welcoming and supportive communities. When I was first learning to code, my coding boot camp encouraged me to join various platforms like Twitter and LinkedIn to connect with others in tech. It was exhilarating to find communities of individuals learning how to code just like me. Similarly, I've found Instagram to be a fantastic place for aspiring crochet artists to connect and find support.
00:16:48.960 There are countless crochet artists sharing photos and videos of their projects, hosting virtual crochet events, and supporting one another in the comments sections. I've made amazing friends from around the world on that platform, all aiding each other in our amigurumi design journeys. Right now, we're learning, sharing, and networking here at RubyConf, a tech conference linked to the Ruby programming language.
00:17:50.340 Believe it or not, there are also conferences and summits in the crochet community where people gather to learn about crocheting and related topics, such as establishing a crochet business. I've attended a virtual crochet summit, and it was fantastic to see how welcoming and open everyone was, reminding me of the atmosphere at RubyConf.
00:18:09.840 One of my favorite similarities is how generous both communities are regarding free online learning resources. When I was initially learning how to crochet amigurumi, I turned to online blogs and YouTube tutorials to master the techniques and learn how to create specific stuffed animals. These resources lower the barrier for beginners and provide an excellent starting point.
00:18:50.040 Similarly, in the software development community, after I became interested in learning, I sought free resources like Free Code Camp and the Odin Project to grasp programming fundamentals and decide if I wanted to shift my career in that direction. There are numerous developers out there sharing insights and experiences through personal tech blogs.
00:19:38.640 By now, you might be thinking, 'Tori, we see some similarities between software development and crocheting amigurumi, but why should we care?' I've found that making connections between my hobby and my tech career has contributed to me becoming a better software developer.
00:20:11.120 For instance, designing amigurumi has enhanced my ability to recognize patterns. Many of the amigurumi designs I create follow similar structural patterns for forming shapes, such as cones, cubes, and some cylinders. I just need to adjust different structures to fit the specifics of my design, honing my skill in identifying when and where to apply those various patterns. Software development also encompasses a variety of patterns, including design patterns. Since crocheting has bolstered my pattern recognition, I can easily identify when to apply software design patterns and tweak them to fit my use case, thus making me a more efficient developer.
00:21:35.640 Additionally, crocheting has stimulated my creative thinking. When brainstorming ideas for a new amigurumi character, I literally start from a blank page, engaging my creative brain to develop new designs and ideas that I think people will appreciate. After determining what my amigurumi design will entail, I must creatively interpret how to construct the pattern to incorporate the diverse shapes and sizes my design requires. In software development, while some may presume that developers must be strictly logical and adhere to given instructions, great software engineers must be innovative and capable of devising new, original solutions to problems.
00:22:40.480 By exercising my mind creatively with my crochet hobby, I am better equipped to generate new ideas and various solutions to problems I encounter in software development. This is possible because I have trained my brain to think outside the box. Furthermore, crocheting has empowered me to become a better teacher and mentor.
00:23:48.800 I truly enjoy designing crochet patterns, but I also love assisting others in learning how to crochet amigurumi. I’ve accomplished this through various crochet tutorials and mentoring. Both of these processes have taught me how to better explain technical concepts to others. If you think explaining software concepts is difficult, consider the challenge of explaining to someone how to loop a piece of yarn around a small hook in a precise manner to create a crochet stitch, especially through virtual means. This is quite a task! Consequently, I've discovered that I often need different communication approaches to convey various ideas to others, whether it be through written explanations, step-by-step picture tutorials, or brief video recordings.
00:25:04.120 I’ve applied this learning to my software development career, too. When I face the challenge of explaining complex technical issues to my peers, I try to find a variety of resources, such as text blogs, additional documentation, or video tutorials, to reinforce the concepts along with my verbal explanations.
00:25:15.069 So, I encourage you to reflect on your hobbies and activities outside of programming. You might discover similarities between your work and other interests, and perhaps your hobby will enhance your abilities as a developer.
00:25:21.480 If you're considering picking up a new creative hobby like crocheting, it's quite easy to get started! You only need yarn, a crochet hook, and scissors to learn the basics of crochet. If you wish to learn amigurumi, you'll need a few additional items like fiberfill stuffing and a yarn needle. You can find these materials at your local craft store for under $30, depending on how ambitious you get.
00:25:45.000 As I mentioned earlier, there are many free online tutorials and blogs available to teach you how to crochet and create amigurumi. I highly recommend visiting the Lovecraft's blog for excellent resources on crochet basics, including videos and textual explanations about making amigurumi. I also produce video tutorials aimed at beginners interested in amigurumi, so feel free to check those out.
00:27:05.520 Thank you, everyone, for attending my talk. Does anyone have any questions?
00:27:21.480 Yes, in the back.
00:27:28.320 Oh, that's a great question! The question was if I ever create crochet patterns collaboratively with others, similar to coding. I would say that I actually haven't developed a pattern with anyone; I usually work on my designs independently.
00:27:48.360 However, I know that some people do create patterns together, but I personally don’t have experience with that. The time it takes to create an amigurumi can indeed depend on its size. When you’re accustomed to making a pattern repeatedly, it can go by pretty quickly. For example, I can make frogs in about three hours. It sounds like a lot of time, but when designing, it often takes longer—usually 12 to 15 hours overall. There are many mistakes that arise, and ensuring perfection may involve creating it twice to verify that both pieces look the same and the pattern works.
00:28:21.340 Did you have a question? Okay, so he asked about how I create my patterns—whether it's a more exploratory method or if I write a bit and then crochet a bit. It varies depending on the complexity of the design; if it’s a simple shape like a circle, I can often visualize the pattern mentally. I'll write it down and then crochet to ensure it looks as anticipated. However, if I'm crafting something with a more complex shape, like a Pikmin, I’ll often note down what I think and crochet, adjusting as necessary until it aligns with my vision.
00:28:43.540 Any other questions? Awesome! Thank you all for coming to my talk!
Explore all talks recorded at RubyConf 2022
+62