Tom McHenry didn't begin his career as a software engineer. In fact, after completing post graduate degrees in english literature, and fiction, and working as a journalist and web editor, it wasn't until a life changing event, that Tom entered a bootcamp to pursue a career in tech.
Outside of working as an engineer, Tom is an accomplished cartoonist, video game designer, marathon runner, weightlifter, husband, and now guest of the show.
We had such a fantastic conversation, that Tom's session has been broken down into two parts. On this episode, Tom and I walk through his entrance into tech, the benefits of unconventional approaches to learning, and systematic tactics for breaking down problems, and achieving abstract goals.
Kevin Lesht: Welcome to the Day as a Dev podcast. I am your host Kevin Lesht, and my guest on this episode is Tom McHenry. I have been looking forward to this one. Tom is a good friend of mine, and someone I've had frequent conversations with on everything this show is about. He didn't being his career, as a software engineer, in fact, after completing post graduate degrees in english literature, and fiction, and working as a journalist and web editor, it wasn't until a life changing event, that Tom entered a bootcamp to pursue a career in tech. Outside of working as an engineer, Tom is an accomplished cartoonist, video game designer, marathon runner, weightlifter, husband, and now guest of the show. We had such a fantastic conversation, that Tom's session is coming to you in two parts. Today, in part one, Tom and I walk through his entrance into tech, the benefits of unconventional approaches to learning, and systematic tactics for breaking down problems, and achieving abstract goals. Now, my conversation with Tom McHenry.
Kevin Lesht: Chicago, Illinois for this one, 13 degrees, snow in the streets. Tom McHenry is my guest. Tom winter is setting in and you go for a run every morning. Do you keep that up with weather like this out there?
Tom McHenry: Yeah, I usually do. I've been on and off my pretty consistent routine here and there, but I famously one time went for a run in Chicago along the lake and it was so cold that my glasses shattered.
Kevin Lesht: Really?
Tom McHenry: So that's the kind of madman I am when it comes to trying to keep to some sort of consistent routine when it comes to yeah, my physical regimen.
Kevin Lesht: Yes. That is a fantastic level of ambition. The glasses shattered and you are still out there-
Tom McHenry: It was a very foolish move because I was five miles south from my apartment, and it was complete pitch black out and I could not see.
Kevin Lesht: Holy cow.
Tom McHenry: So I had to make my way back just sort of guessing where the road was.
Kevin Lesht: That is great. I guess on the topic of gear there too, I suppose a follow up question would be, I know that you run in sandals and you ... or a special kind of sandal, right? And you've run many Chicago marathons all the way through in these sandals. Maybe could you explain what those are and I guess I'd be curious, do you keep that up in the winter too? Are you out there in these things?
Tom McHenry: Yes. So I run in running sandals that are made by this company called Luna. They're modeled after a traditional style called a huarache, I believe is how it's pronounced. All my Spanish has gotten rusty since high school. They are thing that I first read about probably about a decade ago now. There's a book called Born To Run by Christopher McDougall, that is all about ultra runners and trying to learn from like from indigenous populations who run just massive amount of mileage day in, day out, year after year. And they do it with extremely minimalist footwear. And why that would be and why they show almost no incidents of the same kind of injuries that we see in runners all the time. I read that book, I bought it on a whim on my birthday, like I said about a decade ago. And read it and completely changed my running life, which by changing my running life and making running something fun that I enjoyed and wanted to do and was able to do without any kind of regular injury anymore, has just sort of changed my overall life life.
Tom McHenry: So it's really one of those little things that felt like, that wound up completely changing the shape of some things. And yeah, that book is somewhat controversial now. The minimalists footwear thing is less controversial, but there are still definitely partisans who think everyone who does this is crazy. I just sort of plug along and keep doing it and keep not having any of the kinds of injuries I used to have. And I love it. To your question about whether or not I do it in this weather, I do. You just wear toe socks and if it's wet or super snowy and icy on the ground, you can wrap those in like they make these kind of, it looks like a mitten, but for your foot that is waterproof.
Tom McHenry: And so I have a toe sock, that waterproof thing, and then in these same sandals that I'm still wearing the pair that I ran the marathon this year in. Yeah, when I tried to run in the snow and I honestly, I used to have way worse problems when I was running in more on traditional shoes. I got chilblains on my feet one year when I ran in traditional shoes because I stepped in some ice that was actually a puddle and my foot got wet and I was still had like three or four miles to go. So my foot was wet at like negative five degrees for another half hour. And yeah, it gets real nasty.
Kevin Lesht: Interesting. Yeah, I don't, full candor, I don't know if I'm going to try that anytime soon, but-
Tom McHenry: I don't necessarily recommend living the way that I live. It just works for me.
Kevin Lesht: That does make me think though, there's this book out there, stop me if you've read it. It's called, The Way of The Iceman and it's by this guy named Wim Hof, and he's legendary in the fact that he's a cold weather perforomist I would say. And he climbed I think up to like 23,000 feet on Mount Everest. Didn't summit but did all of that in just boots and shorts and nothing else. He's run marathons, I know in below zero weather in just shorts. And the book offers actionable lessons for withstanding the cold. And I think he practiced very similar concepts, like minimalist lifestyle.
Kevin Lesht: But yeah, I read that a few years ago to try and convince myself to do Chicago's Polar Plunge, which if you're not familiar, it's this yearly event where they open up Lake Michigan in February, the middle of winter, and anyone out there can dive in and I suppose have some fun out there. Right. But anyways, read the book, did not do the Polar Plunge, but on the topic of taking a plunge, you didn't start out as a software engineer as I ... do you enjoy that segue? Do you like that segue?
Tom McHenry: That's a great segue.
Kevin Lesht: As I understand it, your earlier career was based around the web, but as an editor and I wonder if you could set up for us your background and what prompted you towards a career change into tech.
Tom McHenry: Yeah, so it's kind of a long rumbly story, but I actually wind up learning anything at all about HTML because my dad, it was just something that he was casually interested in. His job, he was a steel worker, not at all in a tech field or whatever, but he was kind of playing around. We got the internet in my house when I was like 16, and he was just messing around with like making little websites and he was like, "Hey, check out this thing that you can do." And so I knew a little HTML and knowing a little HTML, when I went off to college meant that I was making little websites there and all through college I worked ... all through college and a little after I worked as a journalist.
Tom McHenry: And basically I got my first like adult grownup job where I didn't stand behind a register or not that being like ... I was at a journalist in an independent paper. So it was like kind of like a real job, but the first job out of any kind of college situation where I had to be there at 9:00 and leave at 5:00. I basically got hired because I knew a little HTML and I was super fluent in the associated press style book and had some facility with writing and editing. Right.
Tom McHenry: So I was hired to basically work for a nonprofit association, essentially taking their press releases, wrapping the tags that were required and putting them into a CMS, hitting send or submit and they would show up on a page. And they figured out pretty quick that I was a quick study and that there's actually not that much to do with just taking a press release that's already formatted and making sure that the bold parts have a strong tag, although I think it might've even been a B tag back then still. And I was quasi bored, so I started learning a little CSS so that I could kind of tinker with making pages look a little better because they were still using the stock CMS that they had built out for them like five years before I got there.
Tom McHenry: And one of our cats bolted out the back door of our apartment and bolts out the back door and down a bunch of staircases and then hides in this weird hole in the wall that we'd never seen before. And I run down after him to try to get to him before anybody opens that back door and he bolts out into the city and he's just gone for good, right? Reach into this hole, this weird dark hole, fumble around, I'm able to grab them in this, he's super freaked out now. And as I pick him up and carry him up the stairs, I'm trying to hurry as much as I can to get him into the house where he's safe and we can keep him back under lockdown. And that whole way running up three flights of stairs, he's clawing and biting at my hands and I'm grabbing him just tighter and tighter. So I burst through the door and sort of fling him across the room to just have him out of my hands. So that he'll stop hurting me. There's blood everywhere.
Kevin Lesht: From you or the cat?
Tom McHenry: From me. Not from him. He's fine. He's freaked out still right? He kind of hits the ground and stumbles and slides into the water bowl and the Kibble bowl. So there's blood and water and Kibble all over the floor. And it's just like there's a huge mess and seems like kind of not that bad. Like I'm laughing at how crazy this has gotten and bandage up my hands. It seems like not that big of a deal. I just have to wear like six or seven bandaids. And over the next day or two, my hands become super duper infected from these cat bites and scratches and such that I go to the doctor about it. They're kind of red and itchy that first day.
Tom McHenry: And I go to the doctor. I'm like, "This is kind of weird." And he's like, "Oh no. Animal bites. Well, take the super-strong antibiotic and if it isn't better within a couple of hours, you need to go directly to the hospital." And sure enough it wasn't and my hands just swelled and swelled and swelled until I couldn't bend them. And it was excruciatingly painful. I couldn't sleep. And it was kind of dicey about whether I would have to have my hands amputated.
Kevin Lesht: Really?
Tom McHenry: When I arrived at the hospital, they had to ... they x-rayed it and they were like, "We can just pump it full of even stronger antibiotics and hopefully that will cut back the infection." But you could see it was like it was slowly pulling on like long red gloves. You could see it slowly creeping up my arms and they're like, "If this gets to your heart, you're dead."
Kevin Lesht: Holy cow.
Tom McHenry: So you might lose one if not both of these hands. And basically I spent a week in the hospital.
Kevin Lesht: If I could stop you there for a second, I have to dig into that.
Tom McHenry: Sure. What do you got?
Kevin Lesht: I guess I'm just curious too, what did that conversation even look like? How was that broken to you that you are in a position where they might have to take your hands away?
Tom McHenry: So that luckily that's only the very, very beginning of it. It starts responding to the antibiotics and very quickly, but they do have ... like when the x-ray it, they're like, "We have to see, because sometimes an animal's tooth when bit like this will come off and so it could be a tooth isn't there causing the ... or a claw." But yeah, essentially you need to understand that this could culminate in like the worst case scenario here is you could have to lose one or both of your hands. And like that's really upsetting to hear.
Tom McHenry: But luckily I was in such pain, I was on a ton of morphine. They'd pumped me ... I'd never had morphine before in my life. I haven't had it since, highly recommend it. Completely helped me to understand the opioid epidemic in a way I never would have before where like, oh, it just feels great. Your whole body feels warm and great for a second you arrive and you're in pain and you've just been in pain for so long. And then they go like, "Sometimes people feel a little nausea." And you're like, "As long as I feel anything that isn't this, that'll be ..." And then it's just like, ah-
Kevin Lesht: I guess, yeah, that sort of mutes to your ability to just process you might be losing your hands at this point.
Kevin Lesht: Yeah, those are important appendages that anyone would-
Tom McHenry: Right, right. It turns out-
Kevin Lesht: Be at a loss.
Tom McHenry: Useful all sorts of places. And I can't even use my phone to read Twitter because I can't, my hands are bandaged. My hands are both wound up in bandages. So all I really do is watch television and television gets really boring really late at night when you're in a hospital and there's only a handful of channels. So I wound up spending that time just taking a good hard look at my life and realizing that I've not been happy at my job and I'm not really being challenged anymore. And so that leads us to the question of like, what do I like about this job?
Tom McHenry: And so basically I got the use of my hands back. I had to do physical therapy for six weeks or something, but I was getting my hands back and pretty much as soon as I'm able to type with any kind of ability, I went and I applied to a dev bootcamp.
Kevin Lesht: That is an incredible story. I feel like it's unfortunate that you had to land in that kind of position, go through that pain obviously, but I guess do you look back on it fondly in the sense that not many I think have that opportunity of deep self reflection that it seemed you were able to, despite what led you there, come away from that situation with?
Tom McHenry: Yeah. I mean I am very grateful that it happened. Like all told, I got off pretty easy. Like there are tiny scars on both my hands. You couldn't see them-
Kevin Lesht: But you've been through the wars, a good war story.
Tom McHenry: I've got a good war story.
Kevin Lesht: To come away from.
Tom McHenry: My one hand does still kind of swell up a little weird on like when the weather changes, which is a thing they said will probably go away in a couple of years-
Kevin Lesht: But just never, never did.
Tom McHenry: It hasn't fully. Like it gets a little hard to flex in bend my right hand a little bit. But so if that's the worst of it, then that's the worst of it. But it took something, it took a really dramatic thing happening to shake me, to wake me up, to shake me out of the thing I was in, to make me ask those questions because I was actively avoiding asking myself the question of is this what I want to be? The place I worked and sort of the association world in general I found in my experience was populated by a lot of lifers.
Tom McHenry: You'd get a job at an association and you'd just hang and you'd hang and you'd hang and maybe you would work your way up to the ... like in the industries, there's kind of like farm league, and then minor leagues and major leagues versions and maybe you work your way up to the major league version of the specialty or the NGO group that you're in. But it's a place you can just kind of coast. And I had been coasting for a long time and I was terrified about not coasting because I didn't believe that I had the strength or the ability to do anything but coast, because I'd gotten so used to it.
Kevin Lesht: I think that's what's interesting about programming and I'm sure this presents itself in other knowledge based fields, engaging fields as well. But what I have found at least is that if you are passionate about all that comes with a software engineering career, you almost, the coasting in a sense is something that you avoid just because you are so engaged that when if you find yourself reaching that point, it just becomes boring in such a way that you want to find new challenges and with so many opportunities out there in the software engineering field, you're able to pursue those by other avenues. Yeah.
Tom McHenry: Yeah. And you know, kind of like I said a little earlier, I was so grateful when a project would come that was hard, that was hard for me. It stretched me past my limits and it passed a certain point too I was like making my own stuff on the side. Looking back now, knowing as much code as I do and the ability to do things that I have, I sometimes have the fantasy of going back to that job in automating 90% of-
Kevin Lesht: Everything that you did before. Yeah.
Tom McHenry: Which when you consider the amount to which I had already automated stuff or basically treated myself like a robot who just ... like my job was to go and be at a desk between a certain set time period. And in that time period I had we'll say maybe three hours of work someday. But I had to be there, butt in seat to prove productivity from 9:00 to 5:00. And that means like I'm aware at some point that I'm a pretty quick study on some stuff and that I've done all these things so many times they're like just well-oiled grooves. So yeah, I'm sitting all day and reading every RSS feed in my RSS reader, which the Google reader days, like I had so many subscriptions to things and I would read everything. I would read every article on the AV Club. And I would every article on MetaFilter that came, as it posted just to like ... and then be like, "Oh, we're about two, three hours in the end of the day. I guess I should work now." And then crank out the work I needed to do and-
Kevin Lesht: Still get it done.
Tom McHenry: Still get it done and look like one of the most healthily productive people in the office because like how is he ... this guy turns this stuff around so quick because there's like the magic miasma of tech around it and like who knows how any of this works? And nobody, I'm the only person in the office who knew computer stuff at all. So for all they knew when I needed a couple more days on something, because of me procrastinating because of any of these other things, for all anybody knew it was like, boy-
Kevin Lesht: It's a really tough problem.
Tom McHenry: Yeah. He's really, he's working on cracking this getting this CSS to make this sidebar hover right or whatever.
Kevin Lesht: Get the drop shadow in there. That's right.
Tom McHenry: That's what I was just trying to say. Yeah, get the drop shadow to float right to the sidebar.
Kevin Lesht: Yeah. Hey, are they still out there? You're talking about automating maybe you build it now and sell it on back to them, you know make it a little side coin there.
Tom McHenry: I sometimes think about it. Yeah. Just if I just tooled around and being like my one condition is I work from home. And so that I just find ways to ... find these like mid level jobs where you could just automate everything and just turn them into like coin farms for yourself.
Kevin Lesht: Oh yeah, absolutely. Yeah. But oh gosh, I mean so much to even dig into there, but I suppose you mention, so this event in your life, it brought you to towards applying to dev boot camp. You get into dev bootcamp. I wonder if we could ... I think a lot of our listeners out there, they're interested in boot camps. As advertised, they tend to at least sell that they do place people into jobs, at least some of them pretty effectively too. I wonder if you could speak towards what the atmosphere, the curriculum. I know dev bootcamp, unfortunate that it has closed down. As you know the developers that I've spoken with that came out of that program, super talented and all speak super highly of it. Certainly I hope this didn't just bias your opinion, although-
Tom McHenry: No, no, I was great.
Kevin Lesht: I don't think that it would. But yeah, we'd love to hear your take on it. The atmosphere, the curriculum, what you saw as the most helpful things coming out of the bootcamp, setting you up for the real world.
Tom McHenry: Yeah. So I have done an inordinate amount of school in my life. I have so 18 years in your public education system, four years college, two years for one master's degree, two years for another master's degree. I've been in a lot of classroom settings. I have been, I've written a lot of essays. I've done a lot of labs, like all of the stuff, right.
Kevin Lesht: A lot of letters on paper and after your name as well.
Tom McHenry: Yeah. Yeah. And they're silly and they mean very little both in the job market and practically. Like there's a part of me that does not super respect the degrees I have because I see them as like a magic trick or something. I know how they were made. So it doesn't trick me, but sometimes it tricks people. They're like, "Oh, letters after the name." It's just a ton of debt that I bought. But so the thing that, one of the most striking things that it's difficult to get across about dev boot camp, that is also difficult to know if other places run like this is the inverted structure of a lot of the learning process.
Tom McHenry: So they would throw us a problem that was harder than we were ready for and let us spend the day beating our heads against the wall. And then you'd go in the next day and they'd be like, "All right, what was hard about yesterday? What didn't you get about yesterday?" And you'd be like, "I didn't get this, this, or this. Like I have zero idea how recursion work." And they'd be like, "All right." And they would build and they'd be like, "Alright, in an hour and a half, we're going to have a little sit down in this other room." And they would write the day's lectures essentially off of the stuff that people couldn't figure out the day before.
Kevin Lesht: Oh, that's a cool approach, huh?
Tom McHenry: Yeah. So you've already chewed on a thing and are certain that there is zero way that the concept of recursion works and then you go in a room and Matt Baker is like, "Here's how recursion works." And you're like, "Oh, of course you have to return if the value is nil. I didn't understand."
Kevin Lesht: I feel like that is such a great approach because with any programming problem, I think that any individual might fall or have difficulty with different components. And other elements may be, just totally easy and something that you can breeze through. So like calibrating your lessons against what those challenges are, that's a phenomenal way to look at it.
Tom McHenry: Yeah. And so you've got that element of it, right. But then you also have the element of everyone pairs every day for the whole day. Well from 9:00 til 5:00. After 5:00, you're free to work on your own. But that means that you are teaching each other. That means, so that thing that you're describing where people struggle with different things, absolutely true. But that also means that you're going to explain to like, I understand this, we might not understand how to solve the problem of taking an integer and turning it into Roman numerals in a string. But I remember how Roman numerals work from school and you're pretty good at ... you're the first person in the class to like really have mastered the enumerables and like that we can for each over, that we can turn this, we can take these integers, we can turn them into a string and we can split them.
Tom McHenry: And in between the two of us, we can arrive ... we're trying to convince each other of a solution. And so it's that great thing that comes out of pairing where it's both like a chess game and also you're arguing a position, but you need to also be empathetic and hear the ways in which you are wrong. So you're already in a spot where you're wrong all the time. The problems are too hard for you because you are a dumb baby.
Kevin Lesht: You're forced into that position. Yeah.
Tom McHenry: Yeah. And so you as a dumb baby have to be like, "Okay, well I at least know this piece." And if I can convince Kevin across the table that maybe this is the way that we ... that maybe it looks like this join function might be able to pull this all back together in one string, and it forces you both to be super humble. And the people who can't get humble and who can't be present and be an active listener and all that stuff, they're the people who can't hang.
Kevin Lesht: I love the idea that that is exposed to individuals so early on too, because I think that's training for just so many elements of what is a career in software engineering. You think about like even something as wrote as, or what can become as wrote as like a PR review, right? Like you think about this thing that happens every day, all day. But where you might be hammered from all different angles with different perspectives, different feedback. And if you're not receptive to that, you're very quickly, I think going to not fit into any organization. Certainly you need to be able to express, defend and challenge others, but at the same time you also need to have an open mind and understand that there are other opinions of value out there. So I think being exposed to that early is super helpful.
Kevin Lesht: I also liked the idea too, I suppose that if you are in the setting of a bootcamp, you're very early in your career, everyone if it is an engaging atmosphere is going to be asking questions. And I think this is one of the reasons I love pairing with more junior developers so much, is because of those questions that really a more senior developer if you reach a place where maybe you never took a deep dive on something, you took it for granted, you took magic, a lot of magic out there certainly in the world of frameworks, you never explore these things. But I'm remembering back to a situation where working through a ticket with a junior developer and the question was asked, I think we were writing a statement where I called like .map or something like that.
Kevin Lesht: Very like what you would maybe at surface level call a simple explanatory method, right? And then the junior developer I was working with was wait, "Well how does that work right there?" And then it's like, well shoot, how does map actually work? What is going on under the hood there? Let's dig in and let's find out. Yeah, I feel like an atmosphere like that just sounds like a fantastic experience.
Tom McHenry: Yeah, I mean, and if I had my druthers, there would be no deadlines on any projects and we could all be really digging in on map. Right? We can go down all the tangents.
Kevin Lesht: I'm sure the product managers listening out there love this framing. Yeah, yeah.
Tom McHenry: Yeah. But like it does all help. It does all flow but don't worry, it does all flow back into the business value. Profit is still generated eventually.
Kevin Lesht: The long tail benefits [crosstalk 00:30:16].
Tom McHenry: The long tail benefits. Yeah. But yeah, like the ... and when everyone is new, when it's juniors teaching juniors that's so magic, right? Because there's weird cargo culting that happens when people are like, "I'm pretty sure this is how, like I think this how this works, because I saw an example in Stack Overflow, so I think this is just the main way people do this." And then the other person's like, "Cool. I didn't see that but I'll just go with it." And so we have developed the understanding that like this is how active record works. It's-
Kevin Lesht: Industry standard.
Tom McHenry: Yeah. This is the main way to do active record and then you're wrong, and you don't find out that you're wrong until later. But that will work. You will be able to run off that cliff for kind of a while.
Kevin Lesht: Yeah. Longer than I think many realize.
Tom McHenry: Yeah. And So much of the mid to senior career path, right, is just accepting that you are never out of that cycle. You are never out of the part where you are bluffing a little bit and also relying on old things that you can trust. You're like, you've got the things you know really backward and forward and you can trust. You've got the little bits that you are bluffing a little bit because you're like, "Well, that's just how map works." Like I've written so many map functions and so I'm like, "I get it. Like I don't need to look at Ruby's specific implementation." But maybe you do.
Kevin Lesht: Yeah. I think the valuable attribute to always uphold there that you hit on a minute ago is just having that humility. You know when you are challenged or questioned a little bit against one of these paradigms that maybe you have taken as truth for your entire career and just as the way things are done or something. Being able to dissect that and to explore that in a way that promotes betterment for both sides I think just sets everyone up for success said and learning there.
Tom McHenry: Yeah. It's the classic thing where the teacher learns more from the student.
Kevin Lesht: Yeah, absolutely. Yeah.
Tom McHenry: Than the student does. Like the student's actually on the short end of the bargain. I'm like, yeah, which is that same thing like the weird inverted dev bootcamp style of teaching that I was so fell in love with, right, where having some ... you still have the authority of a teacher who gives a lecture, but it comes after you've built up a lot of illusions. Maybe you did solve a problem and you're like, "This is how things work. I coasted through today and I was done. I was done with all today's problems by 3:30 and I just kind of kicked back." And then you see how yeah-
Kevin Lesht: Teacher comes back, here's five edge cases and 10 ways where it breaks down or something like that.
Tom McHenry: And they don't tear apart your specific solution. They just say it like, "Okay, this is how this thing actually works." Or like, "Here's an implementation." I'll give you an example. So the very first, the legendary first group project, how dev bootcamp worked, at least when I went. I can only speak to a very specific cohort, a very specific time in one specific location. But how it worked was, every Friday was a group project. So you'd work in pairs, Monday through Thursday, and then you'd be put on a team of four for Fridays group projects, which you'd have all day Friday to work on and the weekend. And then Monday you essentially handed it in. So the very first week where you are learning basic Ruby, the Friday group project is four of you have to write a Sudoku solver. And it literally starts with them showing you what a Sudoku puzzle is because some people haven't encountered it at all.
Kevin Lesht: Sure.
Tom McHenry: And they're like, "Here's 16 Sudoku puzzles. Write a thing that will solve all of them. Go." And that's at 9:00 AM and-
Kevin Lesht: This is, have you at this point in dev boot camp, is there any exposure to Ruby or whatever the programming language stack is or?
Tom McHenry: There's exposure. You've had four days of paring on Ruby-
Kevin Lesht: Four days. Okay.
Tom McHenry: And before that, like before you arrive off of the onsite portion, you've done like not a Coursera set, but like a Code Academy, like a free basic-
Kevin Lesht: Some prerequisites to get you up to speed.
Tom McHenry: Ruby ... Yeah, yeah, yeah. So you know, you've got like some real general stuff and you've got your copy of like whatever that Ruby book is with the red cover and the lady on it.
Kevin Lesht: Poodr? Sandi Metz's Poodr?
Tom McHenry: You have Poodr, but Poodr doesn't really come into play until like the next week when you start to really learn about class structure and stuff.
Kevin Lesht: You've got Design Patterns in Ruby.
Tom McHenry: No.
Kevin Lesht: I don't know.
Tom McHenry: That's not super important to the story. You have a book that you can look at, but it's not going to be super helpful to you maybe. And then you have what you've learned over the course of the week where you've written a lot of like those Ruby toppers was kind of solutions. Take a string and flip all the letters to a different corresponding letter in the alphabet, like a route 13 set up or turn integers into their expression in a string. So make 57 turn into fifty seven the string, a lot of those things. And now solve Sudoku. Now write thing that will solve Sudoku. And you can work all weekend on it if you want to.
Tom McHenry: You can come in on Saturday and on Sunday and people did. And my team I was on, we had a real hell of a time. We worked super hard and we got one that would solve a lot of Sudokus. Like a lot of real basic to mid level Sudokus. But it wouldn't solve all of them. Some of them just freaks out and couldn't handle the algorithm that we thought of and implemented. So we went on Monday morning and everybody's like, "How far did yours get?" And basically everybody's got to about the same place. And then we went into a lecture room where one of the instructors was like, "Okay, let's, like it sounds like everybody kind of struggled to get it all the way through, but let's just take the things that we know and try to write one together in the room, like all of us together. And I'm just going to show you kind of my thought process." And in maybe maybe 35 minutes, he wrote a solution that solved all of them.
Kevin Lesht: That's great. Just codes it out live-
Tom McHenry: Just coded it out live. Just like, I think this is how this will work. Oh yeah. And like the defeat but not, like sometimes I tell that story and I think people hear it wrong and they think it was a like a flex move on this guy's part. Like check it out idiots. Here's how you write it for real. But it was more like, it was the humbling thing. It was like kind of onspiring and like, oh I could think that way soon. Like I could get to the point where I thought like that. And also like just like at this point, you've already been through three months of prep work before you go onsite and you've been through a week of onsite and it's been hard. It's hard all the time and you go home and you just immediately fall asleep while you're eating dinner. And then you see something like that and you're like, "Wow, this stuff is so cool."
Kevin Lesht: Like if I invest the time I can get there myself.
Tom McHenry: I can get there. And it's not like at no point in the process did he go like, "I know magic." Like it's just a thinking through of the problem in a systemic, solve tiny problems. Like it's all of the stuff that they tell you to do that's part of this job over and over again, which is like don't solve the big problem all at once. Find smallest problems, solve those small problems, solve them like in that way where, I mean he's doing it because he's just skilled at it. But use direct solutions. Ruby lets you write things that read like sentences, lets you write and like don't write these ... I remember having this whiteboard that was filled with so much of like us trying to out the code to make to solve like diagonals or something.
Tom McHenry: And don't think of it that way. Think about writing the like little tidy three to five line methods that are well named. And so you look at what the ultimate thing that he's written and it's like, yeah, it's a tiny like 25 line solution. It's like maybe four or five methods. It just recurses through it all and produces a solution. Like it was completely, completely wild to see like, oh, you thought you knew these principles, but you have to apply them even harder. And if you keep applying them harder and harder and harder, you'll get to a point where you just are solving this next step in front of you and you do that and you do that, and sure enough, you arrive at a thing that for pretty smart people spending an entire weekend covering whiteboard after whiteboard with text, we couldn't get there. And yeah, he's probably done this demonstration before maybe, but he didn't have access to secret knowledge. He didn't know secret methods. There isn't a secret like, oh, you can add the Sudoku module and then just call .solve if you give it to 60-
Kevin Lesht: Sure. Yeah. Built in method to the Ruby library-
Tom McHenry: Like it was there this whole time. There's no secrets. It was in fact a lot of it, he could have optimized a lot of it. He chose not to. He chose to like, I'm going to explicitly write, hard code out a couple of things. Yeah. And it was ... it taught me so much and was so inspiring for like, while being absolutely devastating by just crushing any sliver of confidence that you'd built. Like, oh yeah, no, like this is what I'm here to do.
Kevin Lesht: But at the same time, it sounds like at least demonstrating that you invest the time, you invest the effort, oh, you too could get to this place.
Tom McHenry: Oh yeah. I sometimes think about just trying it. Like seeing like, okay, I'm now ... I just figured out, I think I got accepted into dev boot camp like four years and a week ago or something. It's like we're just past like an anniversary.
Kevin Lesht: Happy anniversary.
Tom McHenry: Yeah. Thank you. I'm still here and they're not, and that's a shame. But I sometimes thought when things like the anniversary or whatever roll around, I think like what if I tried to do that now? Because I bet I probably could. I probably-
Kevin Lesht: Solve the problem or be a boot camp instructor?
Tom McHenry: Solve the Sudoku. Oh, solve this specifically in the very, very short term. I wonder if I could sit and solve the Sudoku problem. Maybe not in like under an hour, but maybe. I kind of remember the gist of what you're actually doing and how the thing that you actually need to do is you don't want to step through an iteratively, you want to do it recursively because you need to look at all the possible network of possible solutions and then lop off the ones that don't arrive anywhere. But that's terrifying to do when you barely know any code at all.
Kevin Lesht: What recursion even is.
Tom McHenry: Yeah. Yeah. Like you've been exposed to recursion two days ago. So yeah, everyone's too timid to try that approach. And so no one can get all the way to solving this entire range of easy problems to difficult problems.
Kevin Lesht: Yeah. It sounds like though too, even outside of the one problem that was this Sudoku exercise, just so many good takeaways there. I think that, I mean the one you hit on that resonates super deeply with me was the idea of just breaking things down into smaller components. And I think programming, it's said often, but I think it really does just change your mindset for how you solve and dissect problems in general. I think it transcends any programming language but just-
Tom McHenry: Oh sure.
Kevin Lesht: The idea of breaking things down and also the idea of stubbing out data or even returns of entire methods, entire segments of whatever your problem set might be. Setting them aside or demoing out, stubbing out an example data return so that you can at least work with that component of the puzzle, but focus on some other set. Those kinds of things that you hit on there I think are just valuable to have in your problem solving tool set regardless of language. That's such a cool way to formulate a program like that. Yeah.
Tom McHenry: Yeah. And I think to your point on that, thinking about once you start getting that real, like the power juice engineering mindset of taking a giant problem and splitting it into smaller problems and then splitting those into even smaller problems until you can do a tiny thing, you start seeing that kind of thinking everywhere. And you start ... and if you approach other problems in your life that way, I have a lot of problems when people try to engineer people. Like people aren't code, right. And I think a lot of times we try to do things like write process to code people to work the way that we expect them to work. And it never fully works and then we look at the process and we're like, "Well, I guess we just need more process."
Tom McHenry: But setting all that aside. Setting aside my real problems with it, I think the things that have been very useful to me personally are looking at abstract goals that I might have in my life and trying to go ... and going like, okay, well if this were a ticket, I would go back to my PM and be like, "This is not a workable piece, right." I can't do, be fluent in French. Like what is that? This doesn't mean anything. And so how would it be? How would I want this framed in a default user story? As a Tom McHenry, I would like to be able to read this book in French. This is an Epic. Okay, so what do I need to get there?
Kevin Lesht: How can I incrementally work towards accomplishing that Epic, if you will?
Tom McHenry: Yeah. Yeah. So splitting that up into two teeny, teeny, teeny tiny bits and going like, "Okay, so my actual ticket is like learn the French pronouns and that's my ticket for this week." You know you can approach these things that way and then-
Kevin Lesht: And that is a dependency of being able to formulate some sentence in this language.
Tom McHenry: Right. Right. Exactly.
Kevin Lesht: Yeah. And it all bubbles up-
Tom McHenry: It all bubbles up-
Kevin Lesht: To you being able to read this book-
Tom McHenry: Eventually. Yeah. You get through the Epic. I am super interested in systemized personal productivity stuff. I think a ton of it is people selling a thing that isn't real and there's a lot of hype out there and there's a lot of stuff that's just bad out there. It's you applying too much capitalism to your brain and driving yourself crazy. But I think if you also, what is also true is if you look at things like habit research. Like there are these books like The Power of Habit or like Atomic Habits, that James Clear book and stuff. They're telling you these same things over and over, which is like start with the smallest piece and do the smallest piece.
Tom McHenry: And you know, you asked earlier about like I run every day, well I run every day, I'm on a streak of running every day for eight days as of right now. And I'm tracking that streak because that helps me encourage me to like, I want to keep that streak number going. So that's one of those tips that I swiped from one of those books. What's also true is what I count as a run has to be like a mile or more. Now most days I run a 5K. But some days I'm not really feeling it and I run a ... What's that? That's solving the smallest unit of what counts as a run to me, which is a mile.
Kevin Lesht: Interesting. Yeah, I guess you could define that any way that is going to allow you to keep chaining the links in that habit building. Right. I think I've read something, you know, I've read so many of those peak performance books and I definitely agree with your statements that I feel like a similar concept comes out of one of them somewhere where it was speaking to the effect of yes, define a goal with a very low bar just so that you can accomplish it and start building towards raising the bar and getting to sort of that next level in whatever it is that you're trying to achieve. With habit stacking too, or not even habit stacking, but just focusing on like one habit, I like what I always, a quote I enjoyed from Arnold Schwarzenegger was he's talking about how I think he was able to achieve at least in the bodybuilding, weightlifting world, all that he was able to accomplish.
Kevin Lesht: And he's got some quote that he says something to the effect of when you're trying to build a habit, in his case, going to the gym, weightlifting, if you miss a day, you can miss two and if you miss two days, it's all over. It's gone. And so the whole takeaway of that is don't even miss one day. Keep the chain. Keep the streak alive.
Tom McHenry: Yeah. I have found in my life that I am really good at like enduring a lot of stupidity in order to keep a streak alive. So for example, before my cat attacked my hands and I stopped being able to use my hands, I had made a rule for myself that every day I was going to fill one page in my sketchbook. It could be with a giant X and be like, no. It never was, but my rule was it just has to, there just has to be some ink.
Kevin Lesht: Just put pen to page and get started.
Tom McHenry: Yeah. Once a day. At least once a day. And I kept that streak alive for seven years, seven and a half years about, and that's when my cat attack my hands and then-
Kevin Lesht: That's incredible.
Tom McHenry: And so and that includes like the day of my wedding, that includes like being sick, that includes like so many different things happened to me in that seven and a half year span, but I still like it was proving me to me that it, number one, it doesn't actually take very much time to put some ink on a page. And if this was a thing that I was serious about and it was, and it is to this day, then I could and should set a hard boundary around five to 10 minutes of my day. Like you really need to have something like I cannot move, I cannot use my hands before you can start being like, I do not have five to 10 minutes to give to this. Now sometimes am I drawing, like is it 2:30 in the morning and I've been out with friends and drinking and I'm like, "I'm so exhausted, I can barely keep my eyes open?" Yes, that happened. But I still put some ink on a page, which in some ways is like a footprint of the fact that I was alive on that day.
Kevin Lesht: That is great. I know that that sounds similar to a good friend of ours, and I'm not just saying that because he's our boss, Dave Giunta, no fantastic guy, but he also practices a similar, I don't know if you'd call it exercise has some fun where he takes a photo every single day. I don't know if the underlying goal there was to better at photography. But the thought that triggered his work there is that you mentioned, it's getting late in the day and maybe you got to draw something. I've definitely seen him take some pictures and post them and it's like 11:58 and I'm just imagining him being like, "Oh shoot. Like, I got to get this photo done for the day." But I think it's a cool exercise and it does, it keeps your momentum alive and I think it also to your point, just builds those reps towards whatever skillset you are trying to better yourself against.
Kevin Lesht: As far as reaching those goals too, I wanted to circle way back to something I was super interested in that you hit on a few minutes ago, which was your process for, it sounded like drawing from the world of agile, of process design in software engineering where we've got epics, we've got tickets that are working towards those epics and there are steps in between dependencies. You mentioned that you might set some abstract goal, like I want to learn French and then you've got more finite, more narrowly defined goals, building up towards that.
Kevin Lesht: I'd be curious at even a more abstract level outside of that, could you take us through how you design a given week or even maybe here, how about this, could you play into the show here? What does a day in the life look like for you? You know we've already hit on so many things. You're employed as a software engineer. You're a cartoonist, which I think we're going to talk about deeply in a bit here. But if we could, yeah, use the opportunity now, you're practicing all these things. You're a runner, you're a weightlifter, you're a cartoonist, you are a software engineer. What does it all look like? Give us a day as a, with so many things there, I think all I can say is give us a day as a Tom McHenry.
Kevin Lesht: That’s next time, in part two of this episode.
Kevin Lesht: For show notes and more on this episode. Head on up to the site. That's dayasadev.com. While you're there, check out our release notes. This is a short newsletter that we send out about once a week. It includes updates along with all sorts of other goodies packaged up for your inbox. Thanks for listening. For the Day as a Dev Podcast. I'm Kevin Lesht.