« 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 Cutrell. 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 are just completely wrapped around the Rails community. But that's not all they do. They also created up case where you can learn iOS and Haskell and just an incredible amount of information on up case. Out of cases not a sponsor of the show but I personally am subscribed to up case. Just really great resources there but Ben is just one of the kinds people I've ever met. He was kind enough to come on the show and through all of the technical difficulties that I mentioned on the last show and he stuck 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 roc. That's r00k. 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 how up case ended up becoming a thing first of all and then also I like to talk to you a little bit about about trail mix 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 in an exact science and I did an episode in the early part of this podcast called learning about learning because I think we don't spend enough time exploring the subject of learning like educating ourselves because it's 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 fundamentally it's an education platform that you've probably thought a little bit about this. Yeah so I'm going to lash on to one part of that which was how do I 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 ebooks and spending a lot of money on it. And I get to sort of I like to like 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 learning curve what 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 than I kind of like my interest tapers. Sure it falls off a bit. So I've had I think I'm and I like that I think I'm fortunate in that I have this sort of natural tendency of 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 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 been a few exceptions of 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 to like personal coaching. 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. Wow. So suddenly there's this thing this this this fight like looming on my horizon where I'm going to like box someone in front of 1500 people. And so of course my thing is to immediately go into full obsession mode so I've been buying boxing books 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 and I 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's going to be hitting you in the face hitting the face yeah but especially then for sure. But this pattern shows up in all the things that I really care about so like you know with with music I'm I sing and so I've gotten you know many many hours of private voice lessons with coding I have made sure that I have awesome co workers all the time like I'm never like I don't want to be the strongest programmer to 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 sort of like the apprentice model which is you seek out someone who's a master in your craft in a craft and and say hey please teach me I'm I'm your 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, I think I think everybody can learn from that because and in some ways you have become that teacher as well right so once you've obsessed about something long enough you find yourself in the situation where you're in the middle of the day. So 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. Yeah, right. Absolutely and that's a wonderful turning point and it's funny because it happens sooner than you think. 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. So you refer to me as like I think that the ringleader of the VIM education movement and it's funny because in my head like I'm I'm no more close to that right I'm just a guy that's like kind of interested in VIM and I have. I have a dozen VIM blog posts and I've recorded a couple screencasts and things like that and so it's it's it's it could just be like a touch of imposter syndrome at work. 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 and imposter syndrome is something that I will be talking about a lot on this podcast so I'm glad you mentioned it 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 are 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. Hey 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 it's more like a stunning Kruger effect are you familiar with this idea now you might you'll have to explain to me yeah sure so done in Kruger the names of these two people. Who 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 over rate their skill and 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 4 and however because I'm so new to this I don't realize that I'm actually a 2 I don't I don't see how much there is that I don't know yet so I've sort of overestimated my ability right if you if you ask people who are much are very experienced on the other end of the scale they tend to underrate their abilities so they would rate themselves like a 7 when in fact they're a 9 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 that they things they do do already know and so I think this is the way to do it. I think this is sort of in the same vein but a little bit different than imposter syndrome so I think it's it's a little bit more that like I've become aware of how large the VIM surface area is right yeah and so it's like I look at my own knowledge compared to that and say well like I think maybe I've got a handle on like 7 to 8% of the editor and so that's like pretty pathetic but if you take someone who's been only using a couple years you realize they're only like like you know 0.7 or 0.8% of it. Sure and they might estimate their 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 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 like like 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 on science 2020 but it was like this just sliding web page thing where the background all slid behind the 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. Totally. That's awesome. Yeah and so I think of like almost the obsession and the goal focus is being kind of two different things. So like I think I'm lucky and 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 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 is not just it's not like the same thing is I don't know the whole hacking you know hacking your body and getting like a five hour workout or what a no offense to Tim Ferris 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. 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 basically is a school to train to train a 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 a band of. Or 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 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 upcase to 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 this hasn't heard or well I guess if you are listening to this you probably heard me talk about upcase a few few episodes ago but upcase is a training platform that thought bot has created right it is entirely thought bot thing correct it is yeah and Ben is at the kind of the helm of this and it's I mean just a fantastic training resource it's just a fantastic training resource is the best way to do it. So I think that's 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 which I'm interested to hear why and like the cross training kind of concept from you and maybe why you're what you're using Haskell for if anything specifically in production but anyway the cool thing about upcase is there's a lot of cool things but one of the cool things is that it actually like kind of forces you to interact like you can't just sit back and watch the videos I mean you could but you don't really get the full value out of this thing unless you were actually interacting and doing the stuff that you're learning which which I think is incredibly important for the learning process is actually picking up while 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. So I'm there's a bunch there to talk about but so kind of to jump back to to upcase and why it exists sure if you could give me like a 30 second pitch for the reasoning for upcase that be perfect. But 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 upcase 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 I am going to do that. Or a little bit IOS it's that we have resources for you but specifically things for you to try and get feedback from other real humans as an in a code review. Right so it's and it works through get so that's how you do the actual pushing and pulling 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 upcase is the weekly iteration and the most recent one is talking about Haskell. 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 to 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 comment system on our blog is a is Haskell. With a small job script client but the back end is all Haskell and we actually right now in process of looking for a client project that will you will be a good fit for Haskell so I think we're actually looking to soon get paid for writing Haskell to. Yeah as why are we it's a while we're teaching it. 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 thought about that happened because people are passionate about them and there turns out to be a bunch of people at thought about who are really interested in learning Haskell and getting better with it. And so this group of people wants even more thought abouters 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 rubius that are also intrigued by this language so it'll probably have some overlap there as well. Yeah I definitely am 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 this. Actually there is there are closure exercises in progress right now. Oh nice that's awesome. So I'm a big closure fan myself and there is like a small a smaller pocket of closure fans at thought about so some of those are coming out. And so yeah it's kind of like whatever thought abouters interested in weird work kind of hoping fingers crossed that there are other people in the world that want that to. Yeah absolutely and but but so you asked about like is it Haskell because it's just functional or what not I think there are a bunch of 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 there in it because it's Haskell not just because it's like oh it's just not Ruby they 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 yeah so my knowledge of Swift could be spoken in about 30 seconds. I actually built a little toy application with Swift the other well it was over the course of a couple weeks and it's interesting especially as a rubius I'm very much intrigued by some of the ways that they're doing things there. So I wanted to just quickly talk about trail mix and yeah which is like a totally different thing entirely right like not anything related to to learning code or anything similar but tell me why you why you're involved with trail mix. So trail mix started when a company called O life announced they were shutting down OH life and so O life was a service that I had used for years and the basic model was they would send you an email every day and ask you how your day went and you would reply and they would create an entry in a journal for you and as partly a trick to to get you to open the email and keep writing they would send you an old entry at random from the past and I was a it would they were a VC backed company. And 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. And we had just started to happen just purely timing was how it just started like a 10 day stretch and bolder Colorado and we look at 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 you know I want this and I don't want this to go away. There are probably some other people that want to when 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 you know versions 0.1 and launched it and that was trail mix. That's awesome. That's super cool and I haven't used trail mix 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 to die. 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 of 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 carrying about your three year three year from now self. Exactly that's funny. 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 it's so like disconnected from from the physical pictures that you know we we see our grandparents pictures. She was like when when we were kids we would go into our grandparents attic and we would find a picture of them 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 tooth out you know I just think that's such an interesting thing to be able to chronicle my life. And actually care about it you know I think we we've lost a little bit of that trail mix I think is is an interesting piece of chronicling for not just ourselves either I don't think I mean it I guess it can be totally personal to you. Anyway I think it's a cool tool. It's been it's been a really awesome time talking to you this is most likely I haven't edited it 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 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 to well two more things the first one how terrible were you at them when you started out. Terrible of course I mean there's 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 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 them 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 them education he was also terrible at it not long ago. So don't well I don't know how long you've been using them but I'm guessing it hasn't been like a super long time actually it's been a pretty long time I was like 12 years now I'll never mind then well guys just give yourself 12 years and no stick to it is the point right. So this is actually worth bringing up a quick point which is it doesn't take that long to get productive like the 80 20 for them is not that long like after like a couple days a couple if you spend you know a full time 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 Chad Chad actually he started programming after me and he picked up them 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 frustrate like I still have trouble figuring out how to do you know full project search for instance but which I'm sure you 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 them but in in other in other tools as well but try them is what we're saying in a really long winded way yeah. Yeah and finally I 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 is make sure you care if you're not passionate about programming and your tools and all that then maybe tribulling. 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 sounds good bye. Thank you so much to Ben for being on the 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 Pat Developer Teaor you can email me at developertea@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 Tea. Until next time enjoy your tea.