 as a developer for Stitch Fix. In fact, over the last five years and the last three companies I've actually worked remotely from my closet in a suburban house near Austin, Texas. And I've calculated that over that time I've saved between 1,500 and 2,000 hours of travel. Just to give you the scale of that, that's nearly a full-time job for a year, which is kind of mind-blowing. And in that amount of time, I've spent some time with my family, but I've also done something near and dear to Geek's heart and that's developed a bunch of hobbies. Now I know Geeks that are collectors and film buffs and comic enthusiasts. I, in particular, like music and board games and things like that, but I think that there is a classification of hobbies that are distinct and those are crafts. I think a craft is different in the fact that it produces something that other people value. And maybe at first the other people that value it are like your significant other and your mom, but overall I think it's something that as you progress, you are able to produce things that other people value. So I contend that we as developers in this room are crafts people and we take the bits and the bytes and the requirements and the ideas and we combine that with our knowledge and skills and we make apps. And so I think we can learn from other crafts and in case you couldn't tell from the title of the talk, the craft that I've taken up lately and that I'd like to try to learn from is woodworking. Now just to give you a little bit of background for me, I have kind of been roughly interested in woodworking for a long time and didn't even realize that my father and my grandfather were amateur furniture makers for most of my life until well into my 30s. This is a picture of my dad working on my grandfather's shop Smith from the 50s. And I was really excited to learn that he had this that he was a resource for me but he also lives a few hours away from me. So whenever I kind of had this notion of being interested in woodworking I couldn't exactly just pop over to his house and learn from him. So I sat on it for a few years until a friend of mine who I played D&D with posted this, this is the geek chic Sultan. Now this is the Cadillac of board game tables. This thing is absolutely gorgeous. It is a marriage of form and function. It's amazing. They know it too. It's priced like a Cadillac. According to the website it will cost between $25,000 and $30,000. And so that's a little out of my price range for a table. My kids would like to eat and possibly go to college. So out of the cards for me but they had other tables on their website. And so I started looking around and I got interested in this idea of having a board gaming table. And I saw this one. This is the Vanguard. A much simpler table, much more affordable. It's only three or $4,000. Still has a bunch of the same features. It looks like a dining room table. You can put a top on it. Even has this little groove in the side that you can put cup holders kind of hook them into. And when I looked at this I thought, hey that's pretty cool. But three or $4,000 is still a bit much. So I'm gonna spend five or $6,000 making a workshop so I can build it. Build versus buy, right? Yeah. So I bought a bunch of tools, collected them and built a few little things here and there to kind of build up my skills. These are relatively simple pieces. And after I had done this for a little while I kind of had a few skills. I decided all right, it's time to find some plans for a table or come up with something and figure this out. So I wanna build a table. I went to thewoodwhisperer.com and got these plans and I found out that a table is pretty simple. It's as much as there's some complexity in putting it together, it's really just legs, aprons that join the legs together and then a top. And in this particular table the top's a little complicated but it's still just the top. And so I wanna walk you through the process that I took to build this table and some of the lessons that I learned that were really surprising to me from woodworking so that I think we can learn from them as developers. But before we get going I need to say something about safety. I put this first because if you don't pay attention really to anything else I think this is actually pretty valuable. So every of the several hundred hours of YouTube videos that I've watched on woodworking almost all of them at one point or another mention safety or have safety implied. And they talk about two different kinds of safety. They talk about immediate safety which is hey, don't be Frodo. Don't get a piece of wood thrown through your abdomen and protect your eyes. It's been said that you can shake with a wooden hand walk with a wooden leg but you can't see with a wooden eye. So these are important things to protect but there's also long-term safety that's involved and that's stuff like hearing protection and dust collection. And dust collection is actually one of the more insidious safety hazards with woodworking. The dust that's between half a micron and two and a half microns in size is the kind of stuff that gets in your lungs and it's big enough that your lungs can't filter it out and small enough that it can get all the way down. It's a known carcinogen. It's a real problem and it's the stuff you can't see. So if you see all that dust and it's a big mess in your shop, that's fine. That's the stuff you can sweep away. It's the stuff that you can't sweep away that's the real issue. So it actually requires a significant investment to really take care of this dust. Well, this is Jay Bates and he's pointing at his dust collection system that he installed. He probably spent a few thousand dollars on it and it took him a lot of effort to put the piping all the way down right next to each one of the tools in his shop and as a result of this he actually has cleaner air in his shop than he does in his own house. But he spent this money not because a client paid him to and not because he could suddenly build something that he couldn't before. There's no new features here. This is just because he still wants to be woodworking in 30 years. So all of these different safety categories have something that you need to invest in but they also have habits that you need to form. And I kind of put this roughly on a scale. I think it's actually pretty easy for me to remember that I need to keep my fingers away from a blade that's spinning 30,000 times a minute back at me. But I find it way more difficult to figure out that I need to put on my mask for the dust. That said, the habits are what keep me healthy long term. And so the first lesson that I want us to talk about is that it pays to invest in your safety and develop these strong habits. I don't mean this in some weird code way. I mean this in an absolutely direct way. RSI, lower back pain, those are real things. Vision problems are real things. Depression is a real thing. These are all things that actually come with our job based on the habits that a lot of us take. And so it behooves you to be willing to spend money and invest in your safety. To make sure that you're willing to spend a few hundred dollars on an ergonomic keyboard. Whether or not your company will pay for it. By the way, such fix will pay for such things if you're interested. But it behooves you to be willing to buy a really good chair. It's actually a really, really great idea to buy a solid monitor. Those are all good things that help your safety but there's also gotta be good habits. Like you have to sit right in that chair. You need to look away from the screen periodically and you need to go see your therapist or take your medication, draw those things. Those are all things that allow you to still be computing in 20 years. So if you don't hear anything else, please hear at least this. All right, safety lesson over. Let's move on and actually start building. Okay, first thing we're gonna build is the legs. Now these legs are four identical pieces. They're all rotated differently but they're all identical. And what we need to do to make those identical pieces is the age old thing is measure twice cut once. But that's not actually how woodworking typically operates, especially with power tools. We could go and take a piece of wood and measure on it and mark a line and then cut but it wouldn't actually get us the accuracy that we want. We'd get within maybe a 16th of an inch for each of those and we want this much more accurate than that. So the key element to any power tools in woodworking is repeatability. So for each of those three things that we wanna do, we wanna have legs that are the same length. We want them to be a perfect square and we want them to all have tapers on the inside. We're gonna do repeated operations. And the first operation is the length. This is J Bates' miter saw. It's just a saw that cuts across the wood and you place the wood right up against the back there. And this little thing right over here is called a stop block. And so instead of measure twice cut once, you're measuring once and cutting a bunch of times. You place the leg right up against that piece, push it up against the back and then pull down the miter saw and you get four pieces that are exactly the same within a few thousands of an inch at the most. You just can't do that another way. There's not a consistent way and I can do this within a few minutes. It would take me much longer to measure each one and cut them and be really careful about it. So I can do the same thing whenever I'm trying to figure out, hey, how am I gonna do the width? This is the fence on my table saw and that fence just keeps a parallel distance from the blade for whatever I set it at. And I can then place, take my piece and feed it through and cut off up something parallel to one side of the piece. So I set the distance, feed our leg through and then rotate it 90 degrees and feed it through and I get a perfect square. It takes a few minutes at the most. Yet again, I'm getting both speed and consistency. Finally, this is a jig. This is the tapering jig that allow us to cut the tapers the same every time. And all the jig is really something that allows you to do repeated operations quickly. Usually unique operations, things that are distinct. And so this jig took, I don't know, three or four minutes to put together. He made a cut, he put a little piece on the end and that was it. This allows us to make these tapers the same angle and the same length every time. And I love this because whenever we were done we had four identical legs. And so what I learned from that is that repeatability really increases speed and consistency. Now, I think we kind of naturally understand this as developers. We use Rails Nu and it generates us a site way faster than we could normally have and it's completely consistent. We have like a standard kind of way of doing things. That's awesome. That's totally a repeatability thing. When we deploy things, we deploy it and it's one time one action that we're taking and we're able to do it very quickly and repeatedly. But we also have ways that we can apply this on a much smaller scale. Like what if we make a jig the next time we need to replace some or fix some data that's in production? We've had data that got out of sync and we needed to wait a little while before we deploy the bug fix because of how the bug worked. And so we made a rake task and we were able to test that against staging and then we were able to run it. Then a few days later, right after we deployed the fix, we're able to run it again and clean up any problems, right? Totally works. And it increases our speed and consistency versus logging in via the Rails console and just doing it manually every time. So we're done with the legs. Now we're gonna keep working on the aprons. These aprons, whenever I was doing this, I actually went up to my dad's shop and we milled everything, that means we just made it square. And I took these back home and the only thing that was left to cut on them is the little groove that allows you to put in the cup holders. And I was doing the groove a little bit differently than the plans here and I just ended up getting stuck. I was super concerned that the way I was gonna solve this problem wasn't gonna work. And so the longer I waited, the more fears crept in. And I ended up having this fear that I was gonna have this uncorrectable mistake, that I was gonna do something that was gonna mess this piece up permanently and I was never gonna get this table finished. Which is not true. I could always go buy another piece from the lumber yard, right? There's no such thing as this uncorrectable mistake. But there would be this wasted effort, right? That sucks. I don't wanna think about that. And so I ended up having all this fear of wasted effort. But that's probably not true as well. I might have like a little flaw, but in all likelihood, I probably wouldn't ruin a piece. And so I ended up just having this fear of a flawed final product, which I think is also fairly unbounded because all final products are flawed one way or another. And so I finally just psyched myself up and I said, hey, I'm gonna cut this groove and I passed three of my pieces over and on the fourth piece, I heard the router like scream a little bit and crunch something and I turned it off and looked at it and it was split and I did this. Yep. It was pretty bad. I was really upset. And then I took a big deep breath. Okay. Now all those problems, all those worries, everything that I had, those are all gone. The only problem I have right now is a split piece right here. That's all I've got. And so I took a second, I glued it, I clamped it and I sanded it and it looks like this, which if you look really close, you can tell that it's split, but only if you look really close. So the thing that I learned there was that a known problem is a lot better than a bunch of potential ones. It's really, really easy to get caught up in potential problems. It's really, really easy to get paralyzed by potential problems. And this happens a lot, especially as I consider how big some of our production apps are and how much we have to manage. Sometimes it's really scary to deploy, especially a big change. But moving forward lets you get to the real problems as opposed to all the potential ones. Now being concerned is okay. Having some concern is all right. It's the fear that paralyzes you. That's the real problem. All right. So we've got the legs. We've got the aprons. It's time to make the top. We have two problems with the top. I have to both make this flat and I need to join it together really tightly. It's gonna be very visible. And so I wanna make sure that it's really, really, really well joined. And I hadn't milled this stuff up with my dad, so I had rough lumber. And it was time for me to get ready to mill this. And so I had a couple of options. The first thing that I decided to do was, let's see if I can use the small joiner that I bought from my shop. And a jointer, in case you don't know, is basically just, it's got two beds. One of them is just a little bit lower than the other and there's a blade that's spinning really fast right here and as you pass a piece over it nibbles a little bit out. And so if you make enough passes, you end up with a flat board. It takes out all the little waves in the board. And it takes out the big scoops as well. Well, if you have a really long board and a really short jointer and you pass it over, it doesn't really take out the scoop. So this wasn't really the right tool here. So I thought, hey, maybe I can do this with a hand plane. I actually know that it's possible to do this with a hand plane. A hand plane just basically scrapes off things and has a nice flat bed so it keeps things flat. But you have to keep checking it. It's not big enough as well, right? It's not like I have a hand plane that's seven feet long. So I needed a big piece that could tell me, hey, what parts aren't flat yet? And I realized that I was struggling as I was trying to sharpen this, as I was trying to use the hand plane. It wasn't quite sharp enough or I couldn't keep it sharp enough. And then I realized I also had no way of knowing if it was flat because I had nothing in my shop that I could tell if it was flat. And I ended up actually going to a nearby shop using a $4,500 jointer that was really well tuned and getting this done fairly quickly. And I bet every one of you thinks that I'm about to turn over the next slide and as this says, use the right tool for the job, right? Nope. I don't think that's the case because there's two right tools here. I could have used the hand plane or I could have used the big jointer. The difference was I was really fighting the hand plane and the jointer was tuned up correctly. And so what I learned was that if you're fighting your tools, you need to focus on improving them instead. How many times have you fought with your local database? How many times have you pushed rebuild on CircleCI because you have some flaky tests? How many times have you fought with your command line interface or your VMRC, right? These are all things that we fight with sometimes that keep us from doing the real work that we want to do. That's not what we want to be thinking about. But if we maintain some of those things and keep them sharp, it's better. Ben Ornstein talks about how he keeps a file on his computer called sharpening.txt and he has a shortcut that allows him to append to that. And anytime he notices something that feels just a little bit inefficient or isn't working quite right and is getting it his way, somehow he's fighting it, he just makes a little note. And every morning he spends 15 minutes and works through as many items in that file as he can get through in that time to try to sharpen it. And so he's sharpening every day. He's making his environment better. He's improving what he has to work with. Okay, we've got all the four pieces. They're milled, they're ready. Now we need to join them together. So I wanted to make these with miter cuts. These are just like 45 degree joints. And it wanted to look something like this. And you probably can't see it from the back, but this actually has a bit of a gap. This is the cut that I made first that was with a friend's miter saw. It wasn't all that great. It was an inexpensive miter saw. And so I couldn't get it tuned up to the point where it would make a straight up and down cut and where it would make a perfect 45 degree cut. And so I ended up with this gap here. And I started thinking, okay, how can I solve this problem? Cause this is actually a pretty difficult problem to get dead on something so that they really fit together perfectly. And I said, well, I can buy a better miter saw. That's four to $600. You can go all the way up to 1500 if you really want to for the really awesome stuff. On top of that, I'd need to tune it up and build something around it so that I can support these really long pieces. And once I did all that, it would work great, but that's a lot of work to make eight cuts. So I said, is there another way? And I think there might be. So I said, what about a handsaw? This is a $15 handsaw off of Amazon. That is a little piece of scrap wood that's perfectly 90 degrees. I clamped it on. I put it at a dead on 45 degree angle that I was able to gauge with a bevel. And I just cut it. After it was done, I took my plane and I made it to where it was exactly on that bevel line. I knew it was dead on 45 degrees. And when all that was said and done, I got a good joint out of it. Now, what I learned from this was that knowing my tools and my techniques really improved my effectiveness. And I think that this applies to us whether we're dealing with clients and we need to be able to inform them, hey, you actually don't need to do 800 cuts here. You actually don't need to be able to support millions and millions of customers. What you need is this solution that gives you just a few customers. This is all you need. This is a less expensive solution that's just as accurate or maybe even more accurate than that other solution. It just doesn't scale up, but you don't need to scale yet. That's okay. There's also the idea that we need to know our development tools. If you don't know your debugger, if you don't know how to use it, you don't get to use that whenever you need to solve a problem that way. It's just not in your wheelhouse. It's not in your tool chest. You also, like, you may think, hey, I'm just gonna write puts. Well, puts is fine, but if you don't know how to use that really effectively either, that's no good. Tenderlove actually wrote a blog post a couple years ago that says I'm a puts debugger. He talked about how to use that in a really, really, really powerful way. He talked about all the things that are really interesting about even just using puts. Puts feels like a hand tool to me. It's like really, really simple, right? But it can be powerful if you know how to use it. So knowing both of those options is a huge deal. Okay. We're back here. This is at the lumberyard. And when I started, I went here and I grabbed a bunch of boards and they were really, really rough. And I got to turn a bunch of boards into a fine piece of furniture. And I'm really proud of it. Thanks. I'm really proud of it. And I finally kind of feel like a woodworker. Like I was pretty excited about this moment. But I'm not feeling like a woodworker because I wanted to be a woodworker. I feel like a woodworker because I wanted a table. And I got there, right? And so I think having a specific project really facilitates and motivates learning. So if you're really looking to learn something, whatever that is, whether it's a technology or a process or a new language or a new database, it doesn't matter what it is. Having a specific project, I think will really help push you forward. Now, maybe some people can do a class and that's fine. I have no problem if that's the way you do it. But if you're really struggling to get motivated, I find this to be very motivating. All right. Let's review real quick. So first thing, safety matters. Make sure you pay attention to your safety. Invest in it, invest and develop your good habits. Focus on repeatability. Make sure you find ways to use things in a repeatable way. It doesn't just happen by accident. You have to actually look for ways to do it. If you're stuck, focus on finding the known problems rather than just thinking about all the things that are unknown and could go wrong. Improve your tools whenever you're finding them especially rather than just kind of dealing with crappy stuff. Know your options so that you can be more effective and have a specific project so that you can motivate yourself. And then my bonus is the problem solving is a skill that can be developed in any craft. Now, I hope that I've inspired maybe one or two people in here to maybe try woodworking. I think that'd be really cool. But no matter what, I hope that you are able to either observe or participate in a craft that you can learn from because I think that that actually is something we can take back to our day jobs. Thank you very much. My Twitter handle is marxim, you can follow me. I also work at Stitch Fix and we are hiring if you want to have some extra time to develop some of these crafts and work remotely. We hire bright, kind and goal-oriented people and I would love to talk to any of you about that or woodworking or board games or programming. Come find me after. Thanks very much.