« All Episodes

19: Ben Orenstein from Thoughtbot, Part Two

Published 2/20/2015

I'm excited to be interviewing Ben Orenstein from Thoughtbot. Ben is a brilliant craftsman of a developer, and in this episode we discuss what it takes to be a craftsman. This is the second part of the interview, so be sure to check out the previous episode for the first part!

Ben's personal site and writings can be found here: http://benorenstein.com

Transcript (Generated by OpenAI Whisper)

Hey everyone and welcome to Developer Tea. My name is Jonathan Cottrell. I'm your host and today I'm continuing my interview with Ben Orenstein. Ben is a prolific Rails developer who works at Thoughtbot up in Boston. Thoughtbot has been around for quite a while and they've built so many things that pretty much every Rails developer either uses currently or has used in the past or they know somebody who uses it. They're just completely wrapped around the Rails community but that's not all they do. They also created Upcase where you can learn iOS and Haskell and just an incredible amount of information on Upcase. Upcase is not a sponsor of the show but I personally am subscribed to Upcase. Just really great resources there but Ben is just one of the kindest people to me. He's a great guy. He's a great guy. He's a great guy. He's a great guy. I've ever met. He was kind enough to come on the show through all of the technical difficulties that I mentioned on the last show and he stuck with me through it and just a fantastic person. So I believe you can learn a lot from Ben. Check him out on Twitter at at Rook. That's R-0-0-K. He's also on GitHub and a few other places with that same username. But for now let's get to the second part of the interview with Ben Orenstein. You said, learning is kind of fundamental to growing your dot files for instance but I think it's also fundamental to a lot of other things. I'm interested to know kind of how Upcase ended up becoming a thing first of all and then also I'd like to talk to you a little bit about about Trailmix, your other project or one of your other projects and kind of how that plays a part, how journaling for you plays a part in your day-to-day life and kind of what a day would look like for you in a learning environment. Sure. Where do you want to start? Well first, I mean something I'm always interested to hear is how do other people learn because it's kind of an inexact science and I did an episode in the early part of this podcast called Learning About What's In There. And I think that's a really good question because I think that's a really good question. Because I think we don't spend enough time exploring the subject of learning, like educating ourselves because we just try to consume materials and then on the other end we know more than we did before but we aren't really optimizing that experience. We aren't thinking. And I think that because you're running a fundamentally, it's an education platform that you've probably thought a little bit about this. Hmm. Yeah. So I'm going to, lash onto one part of that which was how do I like to learn things. I like to learn things by getting incredibly obsessed with them. I've had this sort of habit throughout my life where I will become really fascinated by a topic and will read it in depth and practice it in depth and just be kind of obsessed with it for a while, like reading forum posts and blog posts and looking for videos on YouTube and buying e-books and spending a lot of money on it. And I get to sort of, I like to sort of find the 80-20 80-20 leverage, I guess, in learning something. Okay. So like what are the 20% of this topic, what is the 20% of this topic that I can learn that would give me 80% of the value and the ability in it. And when I sort of reach the part in the learning curve where it starts to level off and like each day I can't make sort of noticeable progress and I'm not learning as fast and the gains are coming slower, then I kind of like my interest tapers. Sure. And it falls off a bit. So I've had, I think I'm, and I like that. I think I'm fortunate. I think I'm fortunate in that I have this sort of natural tendency, like when I discover something I like, I kind of almost get like manic about it and I become obsessed with it and dive into it so much, like intensely. And then when I sort of get what I want out of it and like I've had the rush of like the quick learning period, it kind of fades away naturally. There have been a few exceptions to that, like music is one exception, singing, or sorry, coding is another. But other than that, most of my things take that form. As far as specific learning strategies, I'm also sort of addicted. I'm addicted to like personal coaching. Nice. Like a lot of my actions are based around getting more personal coaching. So for instance, I signed up to do a charity boxing match in four months. So I'm going to be boxing someone to raise money for cancer research. And so suddenly there's this thing, this fight like looming on my horizon where I'm going to like box someone in front of 1,500 people. And so of course my thing is to immediately go into full obsession mode. So I've been buying boxing books. Yes. I've been subscribed to the amateur boxing subreddit. I've been going to a boxing gym two or three times a week. I've been getting private coaching with the owner of the gym. I've tried different gyms. I work out in my apartment. I like shadow box in front of a mirror at home at night. Like I just, I kind of go full out into something. But private coaching is kind of like a big thing. Like whenever I'm in like in obsession mode, I desperately want someone who knows what's going on to show me things. Yeah, no kidding. Especially when somebody is going to be. Hitting you in the face. Hitting the face. Yeah. Right. Especially then for sure. But this pattern shows up in all the things that I really care about. So like, you know, with, with, with music, I sing. And so I, I've gotten, you know, many, many hours of private voice lessons with coding. I have made sure that I have awesome coworkers all the time. Like I'm never like, I don't want to ever be the strongest programmer at a company because I want to be able to pair with people better than I am. Right. Wow. Yeah. Which is a good, go ahead. So I guess you could kind of call it like, it's sort of like the apprentice model, which is you seek out someone who's a master in your craft in, in a craft and, and say, Hey, please teach me. I'm, I'm, I, you're humble servant, put myself at your feet. Please show me the way. And that's sort of been my, my approach for a lot of things. Yeah. And I think, I think everybody can learn from that because, uh, and, and in some ways you have become that teacher as well. Right. So once you've obsessed about something long enough, you find yourself. You find yourself in the situation where you're doing it like in a semi public sphere and suddenly somebody's coming to you and be like, dude, I need to learn how to box. And you're like, wait a second. Absolutely. And that's a wonderful turning point. And it's funny because it happens sooner than you think. Um, if you sort of never talk about what you're learning, it doesn't really happen. But if you are public about what you're learning and try to reteach what you've been taught, you quickly, people quickly ascribe to you expert status in that thing. Um, so you refer to me as like, uh, I think he's at the ringleader of the Vim education. And it's funny because in my head, like I'm, I'm nowhere close to that. Right. I'm just a guy that's like kind of interested in Vim and I have a half a dozen Vim blog posts and I've recorded a couple of screencasts and things like that. And so it's, it's, it could just be like, like a touch of imposter syndrome at work. But I actually think it's more that if you just teach what you've learned, even if what you've learned is not incredibly far on the like advanced side of the spectrum, people will ascribe to you even more expertise than you actually have. Sure. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Because I think it's particularly for developers. I think it's such a, like a rampant thing. And I think part of the reason for that is because number one, we aren't, it's kind of difficult to see where we are in this weird industry because it hasn't been around for a super long time. So it's hard to judge yourself based on like the history of the industry. Like it's been around long enough that we should be able to, to some extent, but there's not like a, I don't know, there's not like a, hey, you remember like back in 1830 when this guy did that thing? You're the next that, you know? Like the closest thing that I can compare myself to is like a local maximum, which is, you know, because there's just not a long history in this. So I said imposter syndrome, but honestly, I think it's more like Dunning-Kruger effect. Are you familiar with this idea? No, you'll have to explain it to me. Yeah, sure. So Dunning-Kruger are the names of these two people who studied, who discovered this phenomenon, which is if you ask a group of people to rate their skill on something, the people that are beginners will tend to overrate their skill. And the hypothesis there is that they actually don't know what they don't know. So they think, oh yeah, on a scale of one to 10 when it comes to writing Rails apps, let's say, I think I'm about a four. And however, because I'm so new to this, I don't realize that I'm actually a two. I don't see how much there is that I don't know yet. So I've sort of overestimated my ability. If you ask people who are very experienced on the other end of the scale, they tend to underrate their abilities. So they would rate themselves like a seven when in fact they're a nine. And the hypothesis being there that they're more aware that there are lots of things they don't know. And so they tend to discount the stuff, the things they do already know. And so I think this is sort of in the same vein but a little bit different than imposter syndrome. So I think it's a little bit more that I've become aware of how large the Vim surface area is. And so I look at my own knowledge compared to that and I say, well, I think maybe I've got a handle on seven to eight percent of the editor. And so that's pretty pathetic. But if you take someone who's been only using it a couple of years, you realize they're only at 0.7 or 0.8 percent of it. And they might estimate they're higher. That's interesting. Yeah. I actually was. I was familiar with that concept. I just didn't know those names. Sure. Yeah. And it's shown true so many times. And I'm sure that's true for you, too, in all the different things that you become obsessed about. I actually realized recently that that's kind of how pretty much, well, most of the people that I know who have gotten into specifically into web development, they got obsessed with needing to get this particular thing. Done. So which is a little bit different than the mastery kind of obsession that you were talking about. But a similar like drive. Right. So like it's like I'm not really going to stop until I reach this particular point. Like I have this thing in mind that I want to do. And, you know, I remember when I first started out, I was very young in development, didn't know what I was doing. But I really wanted to get this one effect. Like it was like a slide. I don't know. Horrible. At this point, I can look back and be like, man, that was, of course, hindsight's 2020. But it was like this just sliding web page thing where the background all slid behind. And I wanted to do that so bad. And I just needed to find out. Like I was obsessed with finding out how do I make that happen on my web page? You know? And I think that a lot of people go through similar. Similar experiences. So like I see somebody else using them. Right. At my workplace. And I'm like, man, I absolutely have to learn how to delete 20 lines in a few keystrokes, you know, or whatever. And that like that little bit of obsession leads you to learning. That totally makes sense and resounds with me. Mm hmm. Totally. That's awesome. Yeah. And so I think of like almost the obsession and the goal focus as being. Kind of two different things. So like I think I'm lucky in that sometimes I'll just get obsessed with something without even having a goal. But I do. I also have like the boxing thing is sort of, I think, more goal based. And like your like background sliding thing is our great examples of like sometimes you like to say I have to accomplish this thing. And therefore I will throw myself into the learning until I have made that thing happen. Yeah. Yeah. And I think having those two different types of obsessions are they're both equally important. In a lot of ways. Because, you know, I'm obsessed now with them. But it's not just like I don't want to just become fluent. I want to become fluent and like really good at it, you know, and to be good at something. It's not just it's not like the same thing as I don't know, the whole hacking, you know, hacking your body and getting like a five hour workout or whatever. No offense to Tim Ferriss or anybody who subscribes to that kind of thing. But, you know, this is like I want to be good at this 40 hours a week, you know, like that's that's my mind. And maybe not 40. But that's my mindset is I want to be like a master in the sense that somebody looks at the work that I'm doing and I come across as a tradesman, you know, or as like like you said, a craftsman. Mm hmm. Sure. Rather than just somebody who figured out how to do it. Right. Definitely. Someone that cared. Right. Yeah. Yeah. And cared enough to to invest. You know, I think that's kind of actually that. So I've been as I mentioned, I've been at this at this the touring school where it basically is a school to train to train Ruby and Rails developers. And it's a seven month program. And I've gotten to interact with about 60 students. And there is, of course, a like band of a range of quality of people. And I feel like the distinguishing characteristic of the people that I would put at the top of that band is like just the amount of caring. The amount of like, I want to do this better than yesterday. Right. Yeah. Yeah. And I think that's the people just to plug. I mean, just to talk about not even just plug, but to talk about up case. I think that's the kind of people who are subscribing to up case, too. You can probably fill me in a little bit better on if that's true or not. But which. So if anybody who's listening to this hasn't heard or well, I guess if you are listening to this, you probably heard me talk about up case. A few a few episodes ago. But up case is a training platform that thought bot has created. Right. It is entirely a thought bot thing. Correct. It is. Yeah. And Ben, is that the kind of the helm of this? And it's I mean, just a fantastic training resource, especially I can I can say this because I've actually been on it, especially if you're wanting to learn how to code clean rails. It's particularly good. For those people. But also there's iOS resources and there's Haskell stuff, which I'm interested to hear why. And like the cross training kind of concept from you and maybe why or what you're using Haskell for, if anything specifically in production. But anyway, the cool thing about up case is there's a lot of cool things. But one of the cool things is that it actually kind of forces you to interact. Right. Like you can't just sit back. You can watch the videos. I mean, you could, but you don't really get the full value out of this thing unless you are actually interacting and doing the stuff that you're learning, which which I think is incredibly important for for the learning process is actually picking up. Well, not picking up, but putting your hands on a computer and making these things happen in front of your face on your screen and then also submitting them for other people to tell you, hey, you did that really well or hey, you did that really terribly. Mm hmm. So I'm I there's a bunch there to talk about, but so kind of to jump back to to up case and why it exists. Sure. If you could give me like a 30 second pitch for for the reasoning for up case, that'd be perfect. Mm hmm. The 30 second pitch is if you care about your craft, you should be practicing it. And one of the best ways. To practice writing code is to tackle challenges and then get feedback from other programmers that are also practicing their skills. And that's basically what up case is. It's a series of trails that have exercises inside them. And for any given topic, like if you want to learn test driven development or you want to learn Haskell or a little bit iOS, it's we have resources for you, but specifically things for you to try and get feedback from other real humans. As an inner code review. Right. So it's and it works through get. So that's how you do the actual pushing and pulling of the code. Which, again, you know, if you've never done it before, it's a perfect opportunity to learn. But another awesome thing that's that is just constantly being delivered through up cases, the weekly iteration and the most recent one is talking about Haskell. Mm hmm. Why? Why are you using Haskell? I know why. I would love to learn Haskell, but I'd like to know kind of why you guys decided to kind of adopt this as something that you're teaching, because I know you you you actually ship something with Haskell, right? Yes, we did. So the the comment system on our blog is Haskell with a small JavaScript client. But the back end is all Haskell. And we actually are right now in the process of looking for a client project that will will be a good fit for Haskell. So I think. We're actually looking to soon get paid for writing Haskell, too. That's awesome. Yeah. As why are we as to why we're teaching it? It's it's kind of interesting. So it's it's almost not even part of a grand plan of like and then we will introduce Haskell on top of Ruby because that's the perfect thing to do. There's actually a fair amount of things inside ThoughtBot that happen because people are passionate about them. And there turns out to be a bunch of people at ThoughtBot who are really interested in learning Haskell and getting better with it. And so this group of people wants even more ThoughtBoters to know it. And so in order to encourage the spread of Haskell knowledge inside the company, they created Haskell exercises on upcase so they could point people at it because we figured, hey, this would be good for us. And there's got to be some other Rubyists that are also intrigued by this language. So it'll probably have some overlap there as well. Yeah, I definitely am. I'm I'm interested to know if it's if it's because it's Haskell or if it's because they're interested in functional. Like is there was there ever a conversation about like, should we also teach Lisp? Actually, there is there are Clojure exercises in progress right now. Oh, nice. That's awesome. So I'm a big Clojure fan myself. There is like a small a smaller pocket of Clojure fans at ThoughtBot. So some of those are coming out. And so, yeah, it's kind of like whatever ThoughtBoters are interested in. We're kind of hoping, fingers crossed, that there are other people in the world that want that, too. Yeah, absolutely. But so you asked about like, is it Haskell because it's just functional or whatnot? I think there are a bunch of fans. There are fans of strong type systems, I guess. It seems to be what it comes down to. People want to take that sort of like whole functional purity and strong type systems to the extreme, which is pretty much what Haskell is. And so I think they're in it because it's Haskell, not just because it's like, oh, it's just not Ruby. They're fans of those features. Right. Yeah. And there's some Swift stuff on there, too, for those of you who really enjoy typed languages. We could talk about Swift for a long time, but we aren't going to. So. So, yeah. My knowledge of Swift could be spoken in about 30 seconds, so that's fine. I actually built a little toy application with Swift the other, well, it was over the course of a couple of weeks. And it's interesting, especially as a Rubyist. I'm very much intrigued by some of the ways that they're doing things there. So I wanted to just quickly talk about Trailmix, which is like a totally different thing entirely, right? Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. Mm-hmm. to get you to open the email and keep writing, they would send you an old entry at random from the past. And they were a VC-backed company that apparently never really worked out for them. And so it was always free. But then one day they just announced, hey, we're shutting down in like a month. So I happen to be on what I call Codecation with a friend of mine, Chris Hunt. We go on these vacations twice a year and just spend a bunch of time doing fun code projects that we don't get to do in our normal lives. That's awesome. And we had just started a code, happened just purely timing-wise, just started like a 10-day stretch in Boulder, Colorado. And we were like a day or two into it and I got this thing and I was like, dude, what do you think of just writing our own replacement for this? Because I want this and I don't want this to go away. There are probably some other people that want it too and we might even be able to charge money for it. So it sticks around. And he was game. So in honestly about three or four days, we cranked out version 0.1. and launched it and that was Trailmix. That's awesome. That's super cool. And I haven't used Trailmix so I can't speak for it, but I would imagine, so I do want to write more. I think that's like a pretty common thing. And I would imagine that the prompt is probably pretty effective. It is pretty effective. It's actually, I mean, personally, it's the only thing, it's the only journal I've ever stuck with. And that was partly why I didn't want it to die. And nothing else has ever made me respond regularly like that particular blend of a daily email plus here's an old entry that you can read for fun. And because what happens is I'll read an old entry and be like, oh, that was cool to like take myself back to that time like three years ago because I have entries that are like three years old now. And since that was fun, I should make sure to record what happened today so I can look back on this three years from now. Yeah, so you're caring about your three year from now self. Mm-hmm, exactly. That's funny. So my wife actually recently, made an interesting statement. She's like, you know, we take all these pictures with our phones and it's like a way of journaling our lives, but we don't really think about it that way because it's so like disconnected from the physical pictures that, you know, we see our grandparents' pictures. She was like, when we were kids, we would go into our grandparents' attic and we would find a picture of them and be like, wow, this was grandpa back when he was my age, right? Like, but what is that going to be like for my grandkids? You know, like how are they going to, what is the moment where they go into my attic and say, wow, this was, you know, grandpa Jonathan back in, you know, the early 2000s. You know, I just think that's such an interesting thing to be able to chronicle your life and actually care about it. You know, I think we've lost a little bit of that and trail mix, I think, is an interesting piece of chronicling for not just, not just ourselves either, I don't think. I mean, I guess it can be totally personal too. Anyway, I think it's a cool tool. Well, Ben, it's been a really awesome time talking to you. This is most likely, I haven't edited this yet for listeners who are hearing me right now, but this is probably going to end up being a three-part interview just because there's just so much good content here and I don't want you to miss out on any of it. Ben, I need you to tell me one thing, well, two more things. The first one, how terrible were you at VIM when you started out? Terrible, of course. I mean, everyone has the beginner phase of everything you attempt. I think that's just one of the, being able to push yourself through that discomfort of being bad with something is kind of essential to growth and learning new things. I think. So, bad, very bad. If you were bad when you start, that's fine. That's what's supposed to happen. I wanted you to say that. I knew you would. But I wanted our listeners to hear it because they are, whoever is starting out in VIM right now, I know you are terrible at it and I know it's frustrating. And just be encouraged that, as we've said, the ringleader of VIM education, he was also terrible at it. Not long ago, so don't, well, I don't know how long you've been using VIM, but I'm guessing it hasn't been like a super long time. Actually, it's been a pretty long time. It's been like probably 12 years now. Oh, nevermind. Then, well, guys, just give yourself 12 years. Yeah, there you go. No, stick to it is the point, right? So, that's actually worth bringing up a quick point, which is it doesn't take that long to get productive. There you go. The 80-20 for VIM is not that long. Like after like a couple days, if you spend, you know, a full time, a full time work week on it, you will be productive by the end of the week. Yeah. So, the guy who actually got me turned on to it, he works at Whiteboard with me. His name's Chad. Chad actually, he started programming after me and he picked up VIM this year and he is very productive in it. It's incredible to watch, actually. And so, he inspired me enough that I picked it up just like, I guess it was probably a month and a half, two months ago. And now I'm productive in it. So, I won't say that I'm like, you know, just flying through things. There's still some frustration. Like, I still have trouble figuring out how to do, you know, full project search, for instance. But, which I'm sure you'd have a pretty quick answer to that. But, in any case, stick with it. And, you will quickly find that there are some incredible things, not only in VIM, but in other tools as well. But, try VIM is what we're saying in a really long time. In a really long-winded way. Yeah. And finally, the last thing I wanted to hear from you, if you had just 30 seconds to talk to a young developer, which I guess you've actually been doing recently, just 30 seconds of advice, not only young developers, but also experienced developers, what would that 30 seconds be? I don't think there's anything that can replace or be more important than really caring about what you're doing. I think, a passion, I think the passionate developer will crush the, you know, loosely interested, but highly talented developer over the medium to long term every time. And so, the most important thing you can do is make sure you care. If you're not passionate about programming and your tools and all that, then, maybe try bowling. Oh, that's perfect. Ben, thank you so much for being on the show. My pleasure. It was fun. We'll talk to you soon. Talk to you soon. Sounds good. Bye. Bye. Thank you so much to Ben for being on this show. And thank you for listening to this show. I know you hear it from me every time, but I couldn't be happier about the people who are taking the time out of their day to listen to this show. You are the reason that the show exists. If I didn't have listeners, I wouldn't be sitting in front of a mic. So, thank you sincerely for listening. If you are enjoying the show, or if you're not enjoying the show, you can get in contact with me on Twitter at at developer T, or you can email me at developer T at gmail.com. I would love to hear your suggestions, any questions that you have about development, or even about this podcast. I'd be happy to answer any of them. Again, thank you so much for listening. If you haven't left a review in iTunes, please do so. It is the best way to help other developers just like you find developer T. Until next time, enjoy your tea.