DAVID:
Avdi, you have actually made it impossible for me to write my own freaking name. [Laughter]
DAVID:
I probably, 20% of the time when I’m typing, I will sign my emails as ‘Davdi’ instead of ‘David’. [Laughter]
CHUCK:
It’s okay, we love you, Davdi.
[This episode is sponsored by Rackspace. Are you looking for a place to host your latest creation? Want terrific support, high performance all backed by the largest open source cloud? What if you could try it for free? Try out Rackspace at RubyRogues.com/Rackspace and get a $300 credit over six months. That’s $50 per month at RubyRogues.com/Rackspace.]
[Snap is a hosted CI and continuous delivery services that goes far beyond letting you do continuous deployment. Snap’s first class support for deployment pipelines lets you push any healthy build to multiple environments automatically and on demand. This means with Snap, you can deploy your staging environment today. Verify it works and later deploy the exact same build to production. Snap deploys your application to cloud services like Heroku, Digital Ocean, AWS, and many, many more. You can also use Snap to push your gems to RubyGems. Best of all, setting up your build is simple and intuitive. Try Snap free for 30 days. Sign up at SnapCI.com/RubyRogues.]
CHUCK:
Hey everybody and welcome to episode 159 of the Ruby Rogues Podcast. This week on our panel, we have James Edward Gray.
JAMES:
[Chuckles] Are you sure?
CHUCK:
Avdi Grimm.
AVDI:
Good morning.
CHUCK:
David Brady.
DAVID:
My Impostor Syndrome is so confident that it is now subject to the Dunning-Kruger Effect.
CHUCK:
I’m Charles Max Wood from DevChat.TV. And this week we have a special guest and that’s Saron Yitbarek.
SARON:
Yeah, that was close enough. [Laughter]
CHUCK:
Do you want to introduce yourself for folks who don’t know who you are?
SARON:
Sure. So, my name is Saron Yitbarek. I’m a graduate from The Flatiron School and now I’m a developer at the New York Tech Meetup in New York.
JAMES:
That was interesting. You said that in your RailsConf Talk. And so, to jump right into it, you are a developer for the New York Meetup. Talk to us about that. That sounds cool.
SARON:
Yes. So, first of all this is a real job. I do get paid to do this. It’s 40 hours a week. It’s legit. But yeah, we are the largest meetup organization in the world. I think at this point we have almost 39,000 members. We’ve been going on for about 10 years. And when they brought myself and another developer on, we are called the hackers in residence. And so, the idea is we’re here for about six month through the end of July to build out a really robust community platform for our members.
And so yeah, that’s what we’re doing right now.
CHUCK:
Man, I wish I could get paid for meetup.
DAVID:
Cool. I just wish I could get paid to program. [Laughter]
SARON:
That part is fun. It’s great. I think every day, Vinnie and I, he’s the other developer here, we walked in and we say, “I can’t believe we get paid to do this.” I feel like it’s a big trick we’re playing on everyone else.
DAVID:
Yeah.
SARON:
That they’re paying us. It’s just so awesome.
DAVID:
That’s the sweet spot of programming. Never let that go, because when you feel like you’re getting paid to play, you’re getting paid to goof…
SARON:
Yeah.
DAVID:
It’s like I get paid to solve puzzles all day.
SARON:
Yeah. That’s exactly what it is. And it’s great, because we don’t have a design team. It’s literally just us two. And we have another developer that checks in on us once in a while. And so, we’re doing the design. We’re doing the UX. We’re doing the whole thing. So, we really get to just figure out how to do all this stuff. And then people get to use it. So, it’s been amazing.
CHUCK:
Yeah, I can identify with that.
DAVID:
That’s awesome.
CHUCK:
My current client who incidentally is also James’ client, James is probably wondering why he hasn’t seen much code from me and it’s because I keep working on the pet projects for our client.
SARON:
[Chuckles]
CHUCK:
And it’s fun because it’s like, “So, can you do something with this?” and I’m like, “Well, I’d have to explore that.” And it’s just that adventure through code. It’s like, “Okay, how do I do this? How do I make this awesome thing happen?” And yeah, you get that, I don’t know what it is. For me, it’s the exploration and then just having the win at the end where it works.
SARON:
Yes.
CHUCK:
It’s way cool. I love it. And I’m glad that you’re having that kind of experience, because sometimes I feel like people, I don’t know how recent a graduate you are, but I feel like people get through the education part and then they get into some job where they’re doing the mind-numbing regular stuff and they don’t have those kinds of experiences. And it makes me sad.
SARON:
You know, that’s honestly what I was worried about at first, too, when we graduated, because I
graduated December, so pretty recently. And I was really worried that I would be at a company where because I’m a beginner, I wouldn’t have that many responsibilities and I’d be doing minor things. And to be in a place where they trust us this much and we’re given so much responsibility, that’s just the best way to grow and learn. So, it’s been great.
CHUCK:
So, somebody said something about hacking education. And I’m wondering which college you broke into. [Laughter]
SARON:
That makes me sound so much cooler than I really am. So, I’m going to stick with it. I think that’s my new bio, is just hacking education everywhere.
JAMES:
[Chuckles] So, where did you go to school?
SARON:
I went to school at the Univesity of Maryland. I actually got a double degree in English and Psychology because those were the most useful degrees to get a real job.
CHUCK:
Absolutely.
SARON:
Definitely, definitely. But I was actually planning to go to med school. I was pre-med for most of the time. I think I studied for the MCATs for about a month. And then I realized that I didn’t really want to be a doctor. I just really liked science. And I really liked how hard and challenging science was. And so, I was trying to figure out what to do next. And along that journey, I’d done journalism and written for a really long time and so ended up working at NPR briefly. But I felt like writing wasn’t exactly challenging enough in the way that programming is and that it wasn’t problem solving. It wasn’t as analytical as I want it to be. And so, around that time I ended up reading the ‘Steve Jobs’ book and that was the first time I ever considered technology. That was the first time that anything along the lines of computer science and engineering and any of that stuff, which I always thought was just never for me, that’s when that became an option. And so, I said, “What is this world? What is this thing that no one told me I could ever do?” And so, I ended up working at a tech startup doing business-y things. And I was always jealous of the programmers. And I said, “What they are doing is so much cooler than what I can do.” And that’s when I started getting into programming.
JAMES:
That is the coolest background story ever.
CHUCK:
No kidding.
JAMES:
That’s awesome.
SARON:
[Laughs]
DAVID:
Awesome.
SARON:
Thanks.
JAMES:
So, wow. So, study for the MCAT, Psychology and English. My wife actually has a similar training and did some programming as well. So, that’s interesting.
SARON:
Oh, that’s awesome. At The Flatiron School, I think we had a fair amount of liberal arts degrees. And that just made me feel so much more validated to know that it wasn’t just me. So, it was great.
DAVID:
Programming used to be this really hard science thing. And it had all the trappings of STEM and all the problems of it, with sexism and boys at better at math and all those other crap fallacies and that sort of thing. And your path into programming really just sounds like you’re a liberal arts major who settled. [Laughter]
JAMES:
You know what? I wrote about the math relationship recently while I was on vacation. I wrote a blog article. And it used to bother me when people said that programming is related to the math. And I think the reason that bothered me is it gave the impression that you had to know trig or calculus or something to build a webpage, which is just ridiculous. And that always bothered me. But recently, I was talking to Katrina while I was out in Denver. We were discussing programming education. And one of the things we think that’s key in programming education is in addition to teaching language syntax and stuff like that, which is arguably an easy part of programming, you have to teach how to solve problems. And that part definitely at least shares a lot in common with math, how to break something down and work out a series of steps to be able to work through it. So, I think that’s an interesting comparison between the math and the programming.
SARON:
Yeah. I think that what happened for me was that the two worlds really came together and I didn’t think that they could. I always thought that I would either have to be very math-y and analytical and that and then I could never really be creative and draw and write stories and do that stuff. And I
always thought that I had to pick between one or the other. And I think that what I took away from the ‘Steve Jobs’ book was that here is this guy who is very liberal arts-y and paid attention to a lot of things that I cared about but was also leveraging the power of technology. And so, to me programming was a way to combine the two things that I always wanted to combine that I never thought was possible. And so far, it’s proven to be true. So, hopefully my career validates that.
DAVID:
That’s awesome.
CHUCK:
So, what does hacking education really mean?
JAMES:
I made it up. [Laughter]
JAMES:
So, I’ll tell you why I made it up though. I’ve been talking to Saron in emails and stuff and we were just having a conversation about various things she had done, and we’ll touch on these. We’ve already hit some but we’ll hit the others. And it occurred to me that a lot of the things you’ve done, in my opinion, are education hacks. Even your, let’s talk about your RailsConf talk real quick, because I just watched that last night. And it’s a great talk on code reading. You want to give us just a quick two-minute summary?
SARON:
Yeah, sure. So, when I graduated Flatiron, I felt like I learned a ton and I was really proud and excited with everything I’d done. But I was also very painfully aware of how much more there was to do and how much more there was to learn. And so, I asked people in my community and senior developers and I said, “What is the fastest way I can get from being a novice to an expert? What can I do to accelerate that path?” And they all said, “You should read code.” And so, I got a few Flatiron grads together and then I said, “Hey, why don’t we make this a thing? We’ll call it Code Club,” because every awesome group has to have an awesome name. And we said every Sunday morning at 11 o’clock just for one hour, we’re going to pick a codebase and we’re going to read it. And we’re going to try to understand what’s going on and how it works. And so, we did. And it was a huge learning experience. Just figuring out how to read the code was a thing in and of itself, figuring out how to then apply it to what you’re learning, what you’re doing on the job. But it’s been a really great exercise. And so, that is definitely an education hack. It’s creating our own curriculum out of what’s already existing. So, that’s what we do.
JAMES:
This is a great talk. Everybody should go watch it. They hit on some great insights like limiting the amount of code in whatever they looked at. And that came about because initially you had thought, “Let’s look into Sinatra. It’s something we know, we’re familiar with.” But the problem is, wherever you jumped in there was all these layers of abstraction that you had to get your head around before that. And so, I think you picked a hundred lines of code trying to pick projects that were below that. And I think some of us may think, “Ah, hundred lines of code. Can you even find projects like that?” But when you put a list of them up, there were names I recognized that were pretty close to that.
So, I thought that was a great trick for keeping it manageable and something you could adjust and stuff.
SARON:
Yeah. I think the hundred lines is totally crucial. And also, if you think about, the real value in it really isn’t the reading. It’s the conversation that comes from it. So, it’s reading one line and saying, “I haven’t seen this before. What does this look like?” And then you do a little bit of research, you open up Pry and you try a couple of things out, that’s really when the learning happens. But it’s been hard, keeping it at a hundred lines of code. We’ve wavered on that a little bit. But the smaller the better, especially as a novice, because the other I think important thing to remember that I wonder if more experienced developers are familiar with this is it’s really intimidating. Being a new person in tech is very, very terrifying most of the time. And so, even being able to finish a codebase and say, “I did it. I read it. I learned,” these three things, that is a huge boost of confidence. And so, that’s just as important as the actual learning that happens from the reading as well.
CHUCK:
So, one thing that I’m curious about is how do we get people to that point as members of the community? Because those wins, like you said, are really important. But I get those wins myself on certain things but I don’t know how to encourage new people to get that all the time.
SARON:
Yeah. So, one thing that I also do is I do a weekly Twitter chat called Code Newbie. And so, if you’re interested, it’s just follow the hashtag #CodeNewbie every Wednesday at 9 PM Eastern Time. And the point of that was I feel like I get a lot of win just from my community. And that was honestly the best part of going through the Flatiron boot camp, was going through this really hard academic endeavor with 40 other people with me who understand exactly how freaked out I am every step of the way. And so, we created the Code Newbie chat to say that you don’t have to be part of a boot camp to have this community. We’re here for you and we can encourage you. And so, one thing that we’re actually do come June is we’re going to launch a campaign that we’re going to call The Commit. And the idea is every single day you’re going to make one commit to some side project. It can be the smallest commit. It can be the biggest commit. But the idea is to code every single day. And I think that if you create a community and you create these little small win opportunities and you allow people to easily engage and easily jump in and experience that, I think that’s how you do it. Because the thing is, a win doesn’t have to be good to feel really good. The first time I did CSS and I made a background yellow, it changed my world. [Chuckles] And that alone is huge. And so, I personally try to do it on Twitter. Whenever I see someone who I know is new accomplish something or is about to be in a hackathon or just something, I’ll tweet about them and I’ll say, “Congratulations. Good luck.” And I think it’s really what a lot of the encouragement comes from, everyone else noticing and doing the encouraging.
CHUCK:
I want to toot Dave’s horn a little bit because I know he’s done something like this and maybe he has some insight that he can add.
DAVID:
I’m all for this. Go ahead.
JAMES:
[Laughs]
CHUCK:
No, I just remember you talking about the lessons that you’ve learned and things like that. I know that you did a commit a day for a while.
DAVID:
I gave a lightning talk at Mountain West where I did an experiment a few years ago where my new year’s resolution was to ship code every single day. So, it had to be, my only requirement was that it had to be shippable. So, it had to be complete, done, whatever. And there were lessons that I learned. I’ll put a link to the talk, if I can find it online. And yeah, basically for so-called experienced developers, the biggest trap that they fall into is the same trap that junior developers that fall into, and that is trying to do too much, trying to write 10,000 lines of code before you ship something. And yeah, I had a day where I spent 8 hours writing this big, huge program and at 11:55 PM I realized I’m not going to finish in time to ship what I need to do. And so, I opened up a different project, found a three-line method that needed to be refactored, changed it into two three-line methods. I extracted the method out of it and shipped it, and then threw away the eight hours of code and went to bed. And it was, like Saron just said, it was like a CSS tweak or it was something really simple. And at the end of the day I realized, “Man, I poured all this energy into this thing and it was frustrating. And then I made this one-line change and I shipped it and it felt awesome.”
SARON:
Yup.
JAMES:
I’ve been doing a similar trick recently. Just before I went on vacation I wrote a library in one day. And so, I went through the entire process from empty GitHub repo to working code to documentation to ship a gem, publish a gem, all these things, through the process in just one day. And it was great. I felt super great about it. I took something that I’ve been wanting to play around with and something I wanted to make it easier for me to use in my projects. And what was really cool about this that both Saron and David are hitting on in this discussion is obviously I didn’t write very much. I didn’t have time. So, all total, it’s about 50 lines of code. It’s a simple little library. It qualifies for the under a hundred lines of code review it task. And it’s great. I love it. I think these little wins can be really great and can lead to bigger things. And beginning the habit of doing this, you can build up this ecosystem of stuff that you’re creating and playing with. And I think that leads to bigger ones.
SARON:
Exactly. And I think that one other thing is managing your own expectations. I feel like I have extremely high expectations for myself all the time, which means I’m almost always disappointed. But one thing that I remember, one of my really good friends, Stephanie, said when we were in school was, she said that her goal was to make sure she progressed every day, that every day she was moving forward, whatever that means. And so, I think that one thing I’m seeing with a lot of people who are new to programming is they’ll say, “I need to understand everything about Ruby in two weeks,” and that’d obviously impossible. And instead modifying that and saying, “I need to learn one new thing a day,” is just, there’s your win right there. And it’s something that you can measure yourself. And it’s accomplishable and it’s doable. So, I think that just managing expectations and understanding what your limits are is a huge, huge part of not being overwhelmed and not being as intimidated as you [inaudible] it to be.
CHUCK:
Now, is this something that they encourage at the boot camps? I know you only have experience with the one. But is this something that they encourage there that’s built into the process or the curriculum? Or is this something that you figured out as you went?
SARON:
I think it’s a little bit of both. Obviously, I can’t speak to all boot camps. I can only speak to my own. And even then, I can only speak to my own experience. And so, from that perspective, I think that we’re all very frustrated with how much there was to learn and we always felt a little bit behind. And one thing that Avi, he’s the dean and founder of Flatiron School, one thing that I always remember is he said, “It’s going to seem really hard right now because you don’t know it. But as soon as you know it, it’s going to be really easy.” And that’s one thing that we all had to internalize and say, “Okay, this thing that we’re really frustrated that we don’t get, once we get it everything will be fine. And it’s going to seem easy from now on.” And so, I think this idea of just being patient with ourselves was a huge theme throughout the whole thing. And it’s been something I’ve been trying to tell myself as well.
JAMES:
You’ve talked a lot about, in several different contexts, how intimidating the tech industry could be. I think that’s pretty insightful. I have some ideas in my head about why that might be. So, I’m interested in hearing your take on what is so intimidating about getting into programming.
SARON:
I think that there’s always been the wall between most people and technology. Technology is something that, for non-tech people, is something that’s to be consumed. And you’re not supposed to break it and you’re not supposed to mess with it. And you’re just supposed to take it in and appreciate it. And so, the idea that I can dare break it open and do stuff with it is just like, it’s just [inaudible] I’m not supposed to do that. I’m not supposed to open up my phone. I’m not supposed to undo things and figure things out. I’m supposed to just sit here and consume it. So, I think that when you’re, and really any sense, I think that when you’re moving, when you’re trying to transition from being a consumer to being a creator, I think your whole mindset changes. And you’re essentially saying that I have the audacity to know enough about this thing to make it into the thing that I want. And if you’re not used to thinking in those terms, which I honestly don’t think we’re, in our [inaudible] system, I don’t think that we’re trained to think in the creator perspective, that journey is just terrifying.
AVDI:
One of my favorite quotes is Larry Wall talking about the three virtues of a programmer, which are laziness, impatience, and hubris. [Chuckles]
AVDI:
And you were reminding me of the last one, hubris, which is the idea that if something works poorly, you actually think that you can make it better.
SARON:
Yes.
JAMES:
Right.
DAVID:
Or that you can take something you don’t understand and just go, “Eh, why not? I can do something with this.”
AVDI:
Yes.
SARON:
Yes.
DAVID:
Of course I can. I’m me. [Chuckles]
JAMES:
It is kind of a power thing to sit down and think, “What do I want to make this computer do today?” [Chuckles]
SARON:
Exactly. That’s what it is. It’s a power thing. And if you think about the fact that you have to go through four years of school before you have a degree in something and then you have to be in a low-level position until you move up, there’s this whole system of you have to train forever until you’re kind of, sort of qualified to do this thing. So, the idea that I took a three-month boot camp and now I’m building websites, that’s just insane. That just doesn’t make any sense. That’s not how I’m trained. And so, this idea of being an expert to some degree and going through some kind of an official process that’s been approved by society I think is also a huge part of the hacker mentality that needs to be broken down before you can just be a programmer.
DAVID:
I want to touch on that for a second a little more. Do you feel like you needed permission?
SARON:
Hmm. I think that’s a big part of it. And it’s interesting because I know that I don’t and I love that I know that I don’t, but I still feel like I do. It’s a disconnect between what you know and how you feel. And it’s like I know that I don’t need permission. I was working on an app specifically for Code Club and I was freaking myself out this weekend because I’m thinking, “I know I don’t need to ask anybody to build this up. I know I can just do it and put it up,” but I’m really going to do it and put it up? [Chuckles] There’s this conflict between my heart and my head. And so, I’m hoping and I’m trusting that if I just do it and just shut up and get over it, then eventually it will go away. And it’s interesting because I went through this whole personal thing when I submitted my talk for RailsConf actually. And I wrote a blog post about it called ‘Demons and CFPs’. And I call my impostor syndrome my demons, because that’s what they are. And when I think of a speaker, I think of someone who’s an expert. I think of someone who’s really experienced, who’s been doing it for years, who has all this wisdom and knowledge and depth to share with the world. And so, I
think it was Avi who posed the idea of submitting a CFP, I was like, “Of course not. That’s insane.” I’m in no position at all to be speaking to anybody about anything. I graduated two months ago. And so, I ended up having coffee with Vanessa Hurst who did Girl Develop It and few other things. And I told her my idea for Code Club and she was like, “Yeah, you should totally do it.” And I said, “Well, if Vanessa Hurst says that I should, then I must.” And so, I did. And I submitted, I think, five minutes before it was due. And the whole time, I was just beating myself up. And the whole time, I was in tears and my poor fiancé is staring at me looking crazy. And I’m just thinking, “Who am I?” you know what I mean? Like, who am I to submit this thing? And I have no idea what I’m talking about and no one wants to hear about reading code. That’s ridiculous. And just all these really evil thoughts and it just all goes back to permission. I needed permission. I needed someone to tell me that I was good enough, whether that meant through a position, through a degree, whatever that was. But I trusted that if I just did it and I submitted it, even if I didn’t get it, and I definitely did not expect to have my talk picked, I trusted that that was an important exercise in just seeing something you’re terrified of and doing it anyway. And the next time that I really needed to do it, it would come in handy and by a lot easier.
DAVID:
That is so awesome. So, I want to hammer on just a little bit more on this, for the sake of other people out there that are in the same position.
JAMES:
Now he knows our dirty little secret about presenters, right? [Laughter]
DAVID:
Yes, exactly. Exactly. So, what I really want to ask is, how did you feel once you got it submitted? And I’m guessing, you know what, I won’t put words in your mouth. How did you feel once you got it submitted? And then after you got accepted, how did you feel? And then how did you feel about how you felt after you submitted? Does that make sense?
SARON:
That makes a lot of sense.
DAVID:
Was there a change?
SARON:
I’m going to take you through my RailsConf feeling journey. It’s going to be great. So, when I first submitted, I was relieved. I was really proud of myself that I had done it. I had absolutely no expectations that it would be picked. But I was just really glad that I saw something that I wanted that I was afraid of and I did it anyway. And honestly I forgot about it. And I think it was maybe a month later that they started telling the speakers. And I saw the email and I saw just the subject that says, “Your talk for RailsConf was accepted.” And I was on the train on my way home. And I was sitting across these two little old ladies. And when I saw it, I shouted, “What?” and then I cried.
And then I started laughing hysterically.
DAVID:
[Laughs]
SARON:
And I think they looked so afraid of me. So, that was my reaction. And then I told everyone. And then once I did the talk and it was over, I was really, really surprised honestly. I was really surprised that so many people seemed to enjoy it. I was really surprised by the response and people saying that they wanted to start their own code clubs. And they wanted to read code as well. And I was just really surprised and overwhelmed and just really humbled by the response, which I wasn’t expecting at all. And to me, it was just a really big win, but it was also just a reminder that you don’t get the things that you want. You get the things that you go after. And so, for me it was just the next time you want something and you’re afraid of it, you just have to do it and hope that it ends well.
So, it was great. It was a great experience.
DAVID:
That’s awesome. Thank you.
JAMES:
Yeah.
SARON:
[Chuckles] You’re welcome.
JAMES:
That’s really cool. I watched the talk and it was great. It made me want to do a code club. I read lots of code for various reasons but it had never occurred to me to do it as a group before, to have like a book club around it. And I think that’s a really cool idea. I love what you said about speaking and doing it and stuff. This is a long time, I think, myth and problem in our culture, is that we seem to think that those who give talks are these super experts. But talking about how tech can be intimidating, one of the reasons it intimidates me is that every rock I pick up has a giant Alice in Wonderland style rabbit hole under it. It’s like, “Oh, what’s HTTP?” and if I want, I could spend days and days learning what that is. Or, I could just learn the basics well. It has some simple verbs and some requests and stuff like that. But I almost have to choose to ignore a lot of those rabbit holes so that I can keep something manageable about my learning in tech. And I have to trust that some others, they know that stuff better than me and they’re handling those parts and things like that, which is why the conference talk is not really that intimidating. First of all, you’re speaking for typically 30 minutes to an hour. That may seem like a lifetime when you’re up there. But really, it’s nothing. Teaching someone a concept in 30 minutes to an hour is very quick. So, you don’t have to have this ridiculously deep level of knowledge. And then two, you’ve mentioned things like the Dreyfus model of skill acquisition. Somebody closer to you on the Dreyfus scale is better for teaching you.
DAVID:
Yeah.
JAMES:
Than someone who’s considerably higher. So, it all turns out to be a dirty little secret, that, “Oh, only the experts get up there and give talks.” It just isn’t true. Or it shouldn’t be true. It would be much better if that wasn’t the case.
SARON:
Yeah. I completely agree with that, especially the part where I think that someone slightly ahead of you is probably a much better teacher than someone who’s an expert. When I was in school actually, when I was pre-med, I taught organic chemistry because I took a class. I thought it was extremely difficult for no good reason and I wanted to do a better job of teaching it. And a lot of the students preferred me over the graduate students and the professors because I understood that gap, that gap of how you think it works and then how it actually does work, and being able to bridge that. And I think that people who are a lot further along than you are, I think that gap is hard to remember where that is and how that feels. And I feel like that was probably the most frustrating part of me before. So, before the Flatiron School, I quit my job and for three months I taught myself how to code mostly through [treehouse codes], all those kind of resources. And I was really, really frustrated because I felt like it really wasn’t made for someone with no idea what they were doing. It was really made for someone who already had a context. And I feel like that’s probably the biggest missing thing in education, is the context. It’s not, “Do you want to learn Ruby?” but it’s more of, “Wait, but why Ruby? And why Ruby on Rails? And what does it do?” And giving me an idea of the direction of where we’re going with this and how it can be applied is what’s missing. And I feel like most people just straight into, “This is what a variable is,” and that doesn’t mean anything to me until I know the bigger picture of it. And I feel like someone who’s a little bit beginner understands that frustration and could probably do a better job teaching.
JAMES:
That’s exactly… I agree with you completely. That’s what Katrina and I were talking about in Denver, about how teaching language syntax, what does that mean? Oh, so you say store variables and do if statements. Now, what do I do?
SARON:
Exactly.
JAMES:
That doesn’t [inaudible] anything. So, you have this blog where you draw lots of cartoons to explain concepts. And I found that interesting as I was looking at them in the past. And then after watching your RailsConf talk, yeah all of your slides were actually this cartoon story that you told on stage.
And it was really cool. Where does the cartooning come from? Because it’s interesting.
SARON:
Yeah. So, when I was really little, I taught myself how to draw because my dad was a really good, he wasn’t a professional artist but he always doodles. And I thought what he did was amazing. And I wanted to be like him. And I actually have his book called ‘How to Draw Real People’ and it was a book about how to draw faces. And I remember in the beginning, there was that page with testimonials saying, “Before I read this book, this is how I drew. And then afterwards, this is how I draw now.” And learning, going through that book was so painful and so hard. But what kept me going was one of the testimonials was one from a nine-year-old girl. And I was eight at the time. And I would look at her and look at her beautiful picture and I’d be like, “I am not letting this girl beat me. There’s no way.”
DAVID:
[Laughs]
SARON:
“I’m so beating her.” And so, I have to thank her for getting me through that, because that’s how I learned to draw. But I didn’t really see anything to do with that. I had no plans to be an artist or anything like that. And I think last year, I started reading a lot of The Oatmeal again. And I just love his work. And he’s amazing. And so, when I was applying to the Flatiron School, I went through their application process and it was typical questions like, “Why do you want to program? Tell me about a problem you solved.” And when I read through my application, I felt like it didn’t really capture who I was as a person. And so, I thought about it and I said, “I want them to know I’m creative. I want them to know that I can tell a story. How can I best do that?” And I thought back to The Oatmeal comics that he does. And so, I said, “I’m going to do a cartoon.” And so, I opened up my Photoshop. I think I spent a week on that cartoon. And that was the first time that I actually tried to tell a story out of something that I drew. Usually I just doodle. And it got a huge response. I still get tweets and emails about it now and it’s been almost a year. And so, that’s where that came from. And what surprised me was that the response that I got was that people who I didn’t write the cartoon for told me that they could relate to it and that they were able to connect with the story. And so, that made me feel like, “Well, I guess this whole cartooning thing is something that you could do a lot with,” and you can tell a story with and you can teach with. And so, that’s where that came from.
JAMES:
To me, it’s awesome. It’s another medium to getting a point across. I’ll put a link in the show notes, but you have this one where you explain how web apps work with pictures of frogs. [Chuckles] It’s so cool. You just read through it and you’re like, “Oh, here’s all these pictures of frogs.” And it’s engaging. And it makes it easier to swallow these often crazy concepts that computer people deal with all the time. And like your slides in your RailsConf talk. I just got sucked into them because there were these people and they were doing things in the slides, instead of your typical boring, “Here’s a chunk of code,” kind of thing. And I found it really engaging.
SARON:
Exactly. And specifically with the cartoon concept stuff, the goal was, I prioritize the narrative of the concept before the jargon. And I feel like that’s probably the biggest difference that I’ve seen, is a lot of people I think start with the jargon and then work backwards to the concept which just doesn’t make sense to me. And so, specifically one cartoon that I made, ‘How Web Apps Work’, that one I literally drew the cartoon that I wish someone had drawn for me. This is how I would have wanted to learn it. And so, that’s where that came from. But yeah, it’s incredible. I think that the world would be a better place if there were just more cartoons in it. CHUCK: [Chuckles] Can’t argue with that.
SARON:
[Chuckles]
JAMES:
Yes, we approve [chuckles].
DAVID:
Well, and that’s a good education hack as well. They talk about what should I write a blog post about? I don’t know, write the blog post that you wish you had had access to last week.
SARON:
Exactly.
DAVID:
As you were struggling through some concept, yeah.
JAMES:
Very good point.
SARON:
Yes, yes, because they emphasize blogging a lot at the Flatiron School. And that was always really hard for me because I don’t really write and I don’t really enjoy writing highly technical things because those aren’t the things that I would enjoy reading about, unless I’m looking to solve that specific problem. I wouldn’t just for fun read really technical blog posts. And so, the easiest way for me to blog and keep telling stories was to write the blog post that I wish existed. And those were usually about concepts and less about how to do this thing.
DAVID:
Yes. So, I love this thought that you have about not being super thrilled about the highly technical stuff, but finding yourself fascinated by concepts. So, as you approach this through drawing and through sketching, what are some things that you see that maybe somebody who’s at a similar skill level to you but coming from a technical background isn’t going to see? What are some of the things that you have a unique perspective on?
SARON:
I think it’s really just the ability to tell a story. And I think that to me, a story is, I have a problem, I have a solution, and there’s a journey of how I get there. And so, in anything that I write or draw, that’s what I try to go after. It’s, what is the big conflict here? And how do I make it interesting and engaging, but how do I tell the story of resolving that conflict? And I think it’s that narrative arc that I see is largely missing in most educational tools.
DAVID:
Do you find that affecting the way you write code?
SARON:
Ooh, that’s a really good question. One thing that I realized after talking to a few people about the work that I do at New York Tech Meetup is that we don’t just code. We’re developing a product. And so, I think that it influences the way we develop the product as a whole. And so, when we pick a feature and decide what to work on and what to do, I think that the idea of focusing it around a story comes a lot easier and is a lot more natural. And so, in that sense, yes definitely. And then streamlining that down to how do I code this specific thing and what am I actually trying to do and how does that get resolved, definitely feeds into it.
JAMES:
That’s a good point, again de-emphasizing the code aspect. I think some of us have that problem. I know I’m definitely guilty of it. I get so interested in the code and the code tricks and forget that what’s really important is that we’re adding some feature to an app or whatever, and that’s the actual narrative as you put it, of what we’re doing.
SARON:
Exactly, exactly. And I think in the first few months, that was really hard for me to appreciate, too, because I really wanted to write good code. That was the whole thing. I was like, “I want to write really beautiful, clean code and everyone’s going to be so jealous of the cleanness in my code.”
DAVID:
[Chuckles]
SARON:
And I had to be reminded that the goal is really not that at all. The goal is to write something that’s useable. And useable and shippable and on time and that works. And so, I had to reframe the way I thought about my work and my day-to-day from the context of, is this actually useful? How important is this? How many people will be affected by this? Is there a solution that already exists?
And asking those user-focused questions was really important.
JAMES:
Yeah, that’s a great point. A lot of times, we have the tendency to over-engineer something because like you say, we know that it would be perfect if it was designed this way. But working beats perfect. [Chuckles]
DAVID:
Yup.
SARON:
Yup, exactly.
DAVID:
And your idea of clean code will change over the years. I can remember 15 years ago before unit testing and before people were writing a lot of particularly descriptive code, I think clean code for me meant that all the tab stops were lined up correctly and every method had a descriptive comment. And then came along this heretical idea of code shouldn’t have comments. The code should be clear enough to not need the comment. And that doesn’t mean just take comments out of your code. It means write better code. And now, I find myself looking at gnarly, twisted masses of code and going, “Oh wow, they broke those two dependencies apart so that you can plug them one into the other and test them in isolation. That’s really elegant.” And I’m looking at this gnarly, ugly mass of code that 15-year-ago would have gone, “Oh, what is this mess?”
SARON:
Yeah.
DAVID:
And I look at it and I go, this is so clean at the architecture level.
JAMES:
For sure. So, one of the things you told me in our emails when we were talking about Flatiron School that I found very interesting was you said you felt Flatiron School gave you permission to call yourself a programmer. Can you talk about that? Because I think it’s neat.
SARON:
Yeah. I think I wrote a blog post on that, too, how for me the hardest part about going through the journey was being able to call myself a programmer. And I feel like I could officially say it once I got a job, because I’m getting paid to do it now. And the first few times I said it, it felt very awkward and very uncomfortable. And then now, I’m really proud of it and it’s awesome. But yeah, it just goes back to this gap between your heart and your mind. And when I think about a programmer, I don’t think about someone who looks like me or has my background in any way. I’m an Ethiopian black woman immigrant English major. I went to a [inaudible] focusing on writing and media production. There’s nothing about me that I see in tech as a whole. And so, for me to dare label myself as one of your guys is just, it was a huge emotional, mental leap that I had to make. And what I found really interesting is a lot of my personal struggles with that have to do with my race and my gender and my background. But what I realized at the Flatiron School was that a lot of other people felt the same way for very different reasons. For a lot of people, or not a lot, but for other people it was things like I didn’t go to the right school and so clearly I’m not smart enough, or I went to the best school, why is this so hard? Or my family is a family of engineers but I am so different from them. I’m the black sheep of the family. Everyone had their own reasons for not feeling like they belonged. And when you get a group of impostors together, we feel a lot better about ourselves. And it made the journey a lot, a lot easier. And it was great knowing that I wasn’t alone in my struggle, that even though my situation was unique and my reasons were unique, we all had our own reasons.
CHUCK:
I find that so heartening, just that I think in a lot of ways, we find things that hold us apart from the community or whatever. And when it comes right down to it, this is an audio podcast. So, the only reason that anyone would know that you’re any of those things except maybe a woman, because you sound like a woman…
SARON:
[Chuckles]
CHUCK:
Is because you said it. And the only reason that any of it matters is because it doesn’t. And it’s just because you get on and you talk about what you know about, it’s important stuff for everybody, and it’s funny how we put ourselves in those positions and then at the same time how we can get together with other people and how it can change our outlook on things.
DAVID:
Yeah.
AVDI:
I totally think there should be a superhero troop called The Impostors. [Laughter]
DAVID:
Should we go save the day? I don’t know if we’re good enough. [Laughter]
AVDI:
But when you get them all together, they’re good enough.
SARON:
There you go, there you go.
JAMES:
That’s right. Katrina talked about, when she was on the show she would talk about how a lot of us have stories about, oh I started programming at age 3 on my toaster. And so, because she didn’t start learning ‘til age 30 she felt that, oh well that means she’s 30 years behind us. And she can’t be a great programmer or whatever, which of course is silly. But yeah, I see where those things push you, whereas to me, I have friends who are much more mild programmers than I am and they’ll show me something that they built that a simple hack, a simple automation, a simple home trick or something that meets their needs and speeds something up, makes something easier. And to me, that’s a total win. And you get to call yourself a programmer at that very point.
DAVID:
Yes.
JAMES:
No matter how much you know about how to roll a binary search algorithm or whatever. Who cares? [Chuckles]
CHUCK:
Well, the other thing that I see there too is that in a lot of cases, the more veteran programmers are pretty comfortable in the way that they do things. And it’s the new people who are struggling with some of the more basic things. They’re the ones that are really innovating. They come up with solutions to these problems that we don’t even think about. And in a lot of cases, those turn into solutions to problems that, oh well that would save me ten minutes every time I do this thing. But I don’t think about it because it feels so high-level, so beginner-ish sometimes. But at the same time, they make some very important contributions to people’s workflows and to the community in general just because they’re innovating to cover up some of the things that they just haven’t quite gotten the practice on yet.
DAVID:
Mmhmm.
JAMES:
Yeah, there was actually a great talk while I was in Denver. I went up and hit the Boulder Ruby Group. And Ara T. Howard dropped in and gave a talk that night based off of this blog post he wrote called ‘Static is The New Black’. And he was talking about his experiences in building static websites and turning a lot of what we do into static websites instead of the more dynamic things we tend to build. And what I thought was very interesting about that is how many problems it glossed over. So, for example if you build a dynamic page that’s dynamically building up the content every time somebody hits that endpoint, and you have an n+1 query problem, the dreaded n+1 query, then it’s a big deal because every time you hit that endpoint, you got to pull all these records. It’s sloppy. It wastes a bunch of time and it makes the site slow. And Ara was talking about as we’re doing this, they still have model layers and all that. It’s just that when the thing is run, it ends up rendering out the final content that then will just be shown forever. And he said, now I don’t care if I have an n+50 query problem.
DAVID:
[Chuckles]
JAMES:
Who cares? It runs once on some developer’s box. If it works on my machine, then the thing that gets rendered up, boom. That’s it. Done. Who cares? And I thought that was very interesting, that that turns out not to be a problem anymore in those scenarios because that’s not what they’re after. And that means that they can let less experienced programmers write certain things and do those because that’s no longer a barrier that they’re going to run into. And I think that’s a neat way to arrange things. We should try to find more ways to do that.
CHUCK:
Well, are there any other non-standard ways to learn things that we haven’t talked about yet? By the way, I’m looking at this cartoon. It’s pretty awesome. [Chuckles]
JAMES:
You should check out the one on the very front of her page that explains how to pronounce her name. [Chuckles]
AVDI:
It is pretty [helpful].
DAVID:
I was going to throw that as a joke and then I realized that it’s like when people come up and make Brady Bunch jokes at me. I’m like, “Oh, Sir Ron.” Yeah, I bet you’ve never heard that joke before, ever. [Chuckles]
SARON:
Yes, I try to be very helpful on my blog, yes.
DAVID:
Yup. It actually was interesting that part of the reason I was hammering on about permission earlier and then you mentioned that you’re in, in privileged terms, you’ve got some intersectionality working against you, right? You’re not a white… are you native English speaking?
SARON:
English is actually my third language.
DAVID:
Wow. Okay, so I think we can say that that’s…
JAMES:
Then why is your English better than my first language? [Laughter]
DAVID:
I think we can dispense with native English as a disadvantage for you, because you’re clearly quite fluent. But if we take white American men, they have certain invisible doors that just open for them. In fact, they open automatically and silently and they don’t know they’re there. And I didn’t want to use the p-word privilege. I wanted to use the p-word permission earlier because as I’m working on ‘The Job Replacement Guide’, I’m talking with a lot of people that are going through job turnover. And I’m finding middle-aged white American men who are not giving themselves permission to be a programmer, or to trying to thread a needle here now because now I have actually comingled privilege with permission. But ignore that for a minute because everybody knows that I’m an idiot and socially awkward and all that good stuff.
SARON:
[Chuckles] DAVID: But the point is that all of us quite frequently, our impostor syndrome just rears its ugly head or heads. It’s like a seven-headed hydra sometimes. And basically says, “Why even try this? You can’t do this.” And it’s not confined, I’m confident that it is exacerbated by privilege but it is not confined to axes of privilege, that there are people that are at the top of the, shall we say privilege food chain that have these same problems as well, that have to say, “Okay, I have to give myself permission to move forward or I’m going to sit here in a cage of my own making and life will continue to pass me by.”
SARON:
Yeah. For me, I think that my biggest secret weapon is how my parents raised me, which is they never told me that I was smart. They never told me I was talented. They never told me I was gifted.
They told me that I had the potential.
DAVID:
Nice.
SARON:
And that’s been the message that they’ve always beat into me, is that I have the potential to do anything. And if I don’t reach that potential, that’s on me. And if I do, it’s also on me. And so, I think that my biggest secret weapon against my impostor syndrome is just going back to that and going back to this belief. And I really do believe that everything is in my control. And even if it’s not, thinking that it is, is really helpful.
JAMES:
[Chuckles] Exactly.
DAVID:
Yeah.
SARON:
And so, for me I know that this is hard. I know that I feel really lonely right now and I know that my demons are getting really loud. But mom always said that you have the potential.
DAVID:
[Chuckles]
SARON:
and if you just work really hard and just focus on the thing that you want to do, then you can break those barriers. And I hesitate to say that anyone, “Anywhere can break all barriers.” I think that’s a little too naïve of me. But in my situation, that’s always been how I dealt with it. And I don’t really believe in this idea of people being smart or people being a genius. I believe that people work hard. And yes, luck has to do with it, privilege has to do with it, but I really, really believe that if I work hard and if I do what I need to do, I am in control of my own destiny. And that’s gotten me very, very far.
DAVID:
I came from almost exactly the opposite background. I was raised being told I was special, gifted, smart, whatever. And yeah, I had ADHD so you take those things and roll them up into a ball and what you get is a white boy who has lots of privilege and can skate by and can do wonderful on tests, scores 95, 98 percent on all of the tests and looks great on the ACT (that’s the SAT for us westerners). And yeah, I had a C+ GPA. I guess it was a B-. I finally got it up to a B- by the time I graduated. And I literally had to go through years of therapy to get to a point where I realized that that kind of upbringing was actually toxic. Because if your life goes out of control, you get fired or you get laid off or something bad happens to you, if you’re special and you’re gifted, that should not happen to you. Life should not do that to you. Last week, I picked the just world hypothesis or the just world fallacy as one of my picks and this is straight out of that fallacy, that if you are special and privileged these bad things can’t happen to you. But it’s even more pernicious than that, which is that if life isn’t giving you what you want, you have all this entitlement to things that you should be getting. And so, not only do you not give yourself permission to go get them but you almost do the opposite. Instead of failing to give yourself permission, you actively forbid yourself to go pursue something because you feel that you’re entitled to it. Doggone it, it’s the ready, set, deserve mentality.
AVDI:
The mountain should come to me.
DAVID:
The mountain should come to me. The mountain should already be here, doggone it.
SARON:
[Chuckles]
DAVID:
And it was so enlightening to have somebody basically say any day of your life that you choose to, you can wake up and give yourself permission to work and to go after things that you want. And that was a game changer for my entire life. And I still battle bad habits from thinking that I’m clever, thinking that I’m funny, thinking that I’m cute, thinking that I’m the center of everyone’s attention. And okay, that attitude goes hand in hand with ADD and everybody loves me for it, I hope. Don’t anybody answer that.
AVDI:
[Laughs]
SARON:
[Chuckles]
DAVID:
But when you wake up and say, “I can give myself permission to start working on this problem,” you can set the entitlement aside. You can stop worrying about where the mountain is and just pick up your shovel and move one load of dirt. And like you said, I also hesitate to say anybody has the potential to become anything because yeah, not too many people in the third-world, in the slave culture, in the bottom of their culture, are going to become first-world astronauts, like literal astronauts. That career path is probably just implicitly closed to them. Everybody can pick up a shovel and move one shovel full of dirt. And we’re going beyond hacking education and getting into hacking life itself, which I think is awesome.
SARON:
Yeah. And it’s interesting, because I definitely know that I’m privileged. And I don’t think that that really occurred to me until I was talking to someone on Twitter and we were talking about boot camps. And she was saying how she really wanted to learn code and she wanted to be a programmer but she just couldn’t. And I said, “Well, why not? You can just code whenever you want. There are lots of free resources and you can just pick up a book and just learn. Go do it.”
DAVID:
Yeah.
SARON:
And she said to me, “Well, I’m working a minimum wage job and I have a family to take care of. And I’m working all the time. I just don’t have the time to do that.” And even if I did, it would take a lot longer than it took me. And it took me six months at most, including the time I took off. And that was the first time I realized, in my situation, that money had a huge role in it. I was really privileged that I had saved and I could afford to not work for six months and pay thousands of dollars of tuition. And so, that to me is one of the most, I’m not really sure what to do with that. [Chuckles] I don’t really have a work hard and you can overcome it solution for that one. So yeah, I definitely acknowledge my role that luck has to do with it, privilege has to do with it, but I find that my energy and my time is better spent thinking about the things that I can control and trying to make sure that I optimize for that. And in general, that’s been pretty helpful.
DAVID:
I love that somebody who, we have somebody on the podcast right now who is at four of five levels of intersectionality, has just claimed to be privileged. [Laughter]
DAVID:
I’m sorry. You have just taught me a lot about the concept of privilege right there. Thank you. That was awesome.
SARON:
[Chuckles]
DAVID:
To be clear to anybody listening, it’s all about gratitude and it’s all about recognizing what you have. I wasn’t trying to make a snide comment there. I was trying to make a sincerely grateful comment, because that’s awesome.
SARON:
Yeah.
AVDI:
I have a question which is kind of turning the conversation back a bit, if you don’t mind, because we were talking about reading code earlier. And I think we had a reading code episode a while back. But I’m curious. Yeah, I’m curious, from your perspective as someone relatively new to the field, are there any tips that you came across for effectively reading code as you were putting this together?
SARON:
I did a little bit of research, but most of what I learned just happened, just from doing it. And so, most of the tips that I use, keeping it to a hundred lines of code, just came from us trying to do bigger things and realizing it wasn’t going to work. But I think most of the things that I’d seen about it were more reading code on your own. And what we decided to do was read code as a group. And I think that honestly, a really big part and the running theme of hacking education is really about doing things together, because what I realized from the Code Club was that it wasn’t just me getting information from this codebase. It’s me getting information from Dan and Stephanie and Ian and David, and us leveraging our own different experiences and things that we had learned on our own jobs, on our own side projects, and being able to share that, and having the codebase be the excuse to bring all of that out. And it’s interesting, because before programming, I was not really a team person. I really like doing things on my own and having full control of every situation as much as possible. And I learned through programming and through pairing and through the school and again during Code Club and Code Newbie Twitter chats that we really do go further together. And that when we are comfortable saying that we don’t know how to do this and look to someone else for help and guidance, that’s where the magic happens.
AVDI:
So, when reading code, you recommend doing it with company.
SARON:
Yes, definitely. And it’s a lot easier to get unstuck too. If there’s something that you don’t know or you don’t understand, I think it’s a lot easier to say, “Ugh, I don’t want to do this anymore. This sucks,” and then just to never pick it up again. But when you have a group, you’re going to be more accountable to doing it consistently.
JAMES:
I think it’s interesting about how we’re talking about how programming is a social sport, which I definitely agree with. In your talk, you had a point where one of the people you were reading code with, I think it was Dan, you saw some method and then he was like, “Well, why does it have to be that way?” or something. He generated a question about this method and how it could be better and how that lead to this tangent of you all learning. For me, that always happens. I see some code and I’m like, “Puh. I could write that in 10 lines,” or whatever. And then I’d try and then have a whole better appreciation for what that code was actually doing rather than what I thought it was doing.
SARON:
Exactly. [Chuckles]
SARON:
Yes, yes. And that’s probably… I think after that when we realized that we could do that, that we could point to something and say, “That’s not right. Let’s see what we can do about and see how we would do it,” that made it a lot more interesting, because now we have this interactive point and this excuse to work with the code and do something ourselves. So yeah, that definitely made it a lot more interesting.
CHUCK:
Within these group settings, is there a structure that you follow?
SARON:
I think a structure came into place. So, I think during the week before, we’ll each submit a codebase and say, “This is what I want to read. This is how long it is. This is why I want to read it.” And then at 11 o’clock we’ll pick one. And generally, we just start from the top and we’ll just go straight down and pause every few lines and say if they have any questions. What do you guys think about this? Is everything making sense? Does anyone want to research anything? But I think we already know each other. We’re friends. And so, we’re very comfortable in that we don’t need much of a structure to make it productive. So, I think everyone in our group is comfortable saying, “Wait, stop. That didn’t make sense. Let’s read that again.” So, we have a loose structure, but nothing too formal.
JAMES:
That’s awesome.
CHUCK:
So, if somebody wants to organize this kind of a code reading group out in their area, wherever they are, what recommendations do you have?
SARON:
I think one person who actually has started on after the talk, I think he’s had at least one session so far, he ended up putting up just a Google Plus page that he sent out and tweeted out and said, “This is what I’m looking for,” which gave me the idea to build a little app that just allows you to have a little page that says, “I’m looking to have a code club, looking for five people who want to join. These are the dates. And tell me if you’re interested.” So, I’m working on that now. And I’d love to share it with you guys once it’s up. But other than that, [I started] a Twitter handle, it’s called @ReadingCodeGood. And so, I’m happy to promote that and help you find your group. But apart from that, I think that there are a lot of community organizations to reach out to, to find people. Because that was really the big question, was how do I find other people? And so, Rails Girls in New York, there’s Code Crew, there’s Hacker Hours. So, I think if you find the community organizers and the community organizations who are interested in promoting, especially for beginner level coders, I think that’s a good place to start finding people. And meetups also is a really, really good one to find people who are interested. But it’s really about, I really, really believe in small groups. We have a cap at five people. And so, I think that if you find a few people to meet with and you’re consistent, that’s really all you need to get started.
JAMES:
So, you had an implicit requirement in there that you think it’s probably a good idea to have a group that’s at close to the same level you are, right?
SARON:
I think that anything over five gets too crowded and I think there’s a higher chance that people will be more quiet and not be as comfortable speaking out and saying, “I don’t understand this. And can we stop here?” And to me, those tangents are really the value of it. And I think that if you have less than three, I think that you lose the sense of accountability. So, I recommend three to five being the nice balance.
JAMES:
I was actually referring to skill level there, actually, that it’s probably valuable if you’re all within one or two levels of each other on the Dreyfus scale, probably.
SARON:
I think so. But to be fair, I haven’t tried it any other way. And actually, it’s interesting. I think we’re going to have a new addition to your team who’s someone who’s been coding a lot longer. So, I’ll be able to let you know how that goes, in a few. But I think that it’s helpful to have people around the same skill level. But I think it’s more important to have people who are willing to learn and be curious and interested and be supportive. Because if you’re a more experienced person and you overtake the conversation, that’s not helpful. And so, I think the attitude is probably more important than experience.
JAMES:
Really good point, yeah. This is all awesome. I think it’s so cool, the way you’ve figured out so many of these useful education tricks. I’m learning a ton just from the things you’re doing. So, as an experienced programmer I feel like you have a secret insight…
DAVID:
Yes.
JAMES:
Into how to figure these things out that I’m jealous of.
SARON:
[Chuckles] Wow.
JAMES:
That’s great.
SARON:
Awesome.
CHUCK:
Yeah, you’ve got a superpower there.
SARON:
[Chuckles] There we go. That’s why I made my superpower impostor team.
JAMES:
[Chuckles] That’s right.
CHUCK:
[Laughs]
DAVID:
That’s awesome. It’s awesome. Now, it harkens back, the Dreyfus model gap, where yeah, you’re describing things and I’m like, “I remember covering that ground and I remember forgetting it.”
SARON:
[Laughs] Yes.
JAMES:
[Chuckles] Exactly.
DAVID:
And it wasn’t useless knowledge that I could just discard. It was something that I forgot that I shouldn’t have.
SARON:
Yes. That happens all the time. It’s very painful. [Chuckles]
JAMES:
I love it when I go to google some programming thing and it’s my own blog that comes up. [Laughter]
JAMES:
Oh yeah, I knew this once upon a time.
SARON:
[Laughs] Yeah.
CHUCK:
Well, I actually, if I run into a particular error or something, I’ll put a blog post out that’s basically, “Here’s how you solve it.” And yeah, I expect to see my blog [chuckles] come up.
JAMES:
Writing a note to future me.
CHUCK:
That’s right.
SARON:
Right.
DAVID:
A few of those, yeah. I’ve got a blog post on how to set up SimpleCov to run when you run your spec suite because I only do it once per project and I always forget in between. And so yeah, I just wrote a blog post where I said, “This blog post is just for me,” so that Google will index it so that I can find it again later. And yeah, I had a reply going, “Okay?” [Laughter]
DAVID:
And I’m like, “Sorry.”
SARON:
That’s a really good idea.
DAVID:
Sorry, I’m sticking something into Google’s memory [chuckles] on purpose.
JAMES:
Yeah.
CHUCK:
Yeah.
SARON:
I’m going to do that. That’s a really good idea. It’s just notes to myself.
DAVID:
Yeah.
JAMES:
I use a similar hack. If you’re an Evernote user, you can install the plugin in your browser and whenever you do a search in Google for some term, it will also show in the sidebar notes in your Evernote that match that search.
AVDI:
Yeah, but that doesn’t benefit other people.
JAMES:
Right, good point. Good point. Yeah, that’s for me only.
AVDI:
What are you hiding from us? [Laughter]
AVDI:
What are you keeping back from the world in your Evernote stash?
JAMES:
I’m such a secret person.
DAVID:
He’s got a folder on Avdi. He’s got a folder on Chuck. He’s got an entire separate hard drive for Dave Brady.
AVDI:
Now that you’ve got your blog working again, you just need to write a script to dump everything from Evernote into it.
JAMES:
Dump it all up there. Here’s my last ten years of my brain.
AVDI:
You won’t need that plugin anymore.
JAMES:
Right, good point. [Chuckles]
AVDI:
But seriously, one of the blog posts that I wrote that was literally just like, “Okay, I keep making the same stupid mistake with new projects. And so, I’m just going to write down the database cleaner configuration that actually works.” And that, I think, is my most popular blog post ever.
SARON:
That’s a really, really good idea.
AVDI:
[Chuckles] Because I just, it’s the one blog post that years later people pop in and say, “Hey, thanks for this. I just spent three hours banging my head against this then I found your blog post.”
DAVID:
[Chuckles]
AVDI:
Over and over and over again. So, not any of the big idea blog posts but just the database [inaudible].
SARON:
Oh my god. You know what’s funny? I definitely used that blog post when we were configuring the
New…
[Laughter]
JAMES:
Dang it, now another dirty little secret’s out. We’re not writing our blogs for you. We’re writing them for us. [Chuckles]
SARON:
Yeah.
AVDI:
Yup.
CHUCK:
So, I have one more thing that I want to bring up. And this came to light a little bit while we were talking before. Somebody mentioned a narrative arc. And then looking at your little different cartoons and this is very much how The Oatmeal does its thing. How easy do you find it to break down these code or web development concepts into these stories or narratives that you put together in these cartoons?
SARON:
It’s funny. It’s actually the part that I enjoy the most. I really like that exercise of taking something complex and intimidating and being forced to break it down and tell a story around it. But I find that it’s easier to do as soon as I’ve learned the concept because I still remember that gap. I still remember what was hard about it and I remember what I had to fix in my thinking to understand the right way to do it. So, I find that… So for example, right now, if I had to recreate the blog post on how web apps work, I think I’d have a lot harder of a time now than I did when I drew it immediately after I understood it. So, I love the process. But I think that it gets harder the further removed you are from the problem that you’re trying to explain.
CHUCK:
Interesting. Especially on the Freelancers’ Show, they keep telling me for my email marketing and things like that, just tell a story. Tell a story, tell a story, tell a story. People relate to stories. And I’m so bad at that. [Chuckles]
SARON:
So, what makes it hard for you?
CHUCK:
I don’t know, because I just understand it as a concept. And so, creating a good story around it… sometimes there are examples where I struggled with it or something and I can tell that story. But a lot of times it’s just this concept. And I understand the concept but I can’t really, I have trouble creating a story or a narrative where people really come to understand it.
SARON:
Okay. So, I’m going to tell you three tricks. Are you ready?
CHUCK:
Yes.
JAMES:
Awesome.
SARON:
Okay. So, trick number one. I always write the opener first, no matter what. If I don’t have a really awesome first sentence, that lead sentence, everything else is a lot harder. So, I think it’s a lot easier if you can think of that very first sentence and just work on making that sentence just the strongest most interesting lead that you can. That’s the first one. The second one is I think in headlines. So, every single time I write a post or cartoon or anything, I think of what the title is going to be and I work on that. And I base everything else off of that title. And so, if you can’t tell the story in just the title, the actual writing of the story is probably going to be a lot harder. And then the third thing is when you’re actually telling the story, when I did ‘How Web Apps Work’, that was based on what is it that I wanted to learn the most about web apps. And for me, the thing that I wanted to understand back when I didn’t know what Rails was and how it worked was I wanted to understand how all the pieces fit together. That was always a thing that just burned inside me, was how are all the pieces coming together to see what I’m seeing? That was the big mystery. And so, if you’re thinking about what story you want to write, I would ask myself, “What is the mystery?” What is the huge question that this concept is solving? In every concept of course, the goal is to explain a mystery. There’s this concept of X, Y, Z and the goal is to explain this thing that no one understood until they understood the concept. So, understanding what that mystery is, what that big burning question is, and writing to explain what the question is and then how to answer it, and then why answering it is important, I think that’s how you write a story.
JAMES:
Your point number two about how you think in headlines, I recently used that one to pretty good effect. I have a project list I always keep where as I have ideas I’ll go dump them in there as a work on this someday. And I used to write these detailed things basically just whatever I could think up about a given project, I would dump in there. So, it got to a point where my project list was so huge and convoluted that I found it intimidating. So, I just quit opening it. [Laughter]
JAMES:
But it turns out to be not that useful in a project list. And so, recently I redid it where I went through and I only allow myself a single line, basically the headline like you say, for a project. And I can only put in that, I allow one level of nesting, but only for the cases like this thing is a series and here would be the individual parts in it, or this thing is huge. Here’s how I would break it down into manageable chunks [inaudible]. And I never allow myself to nest more than one deep. And again, everything is just one line. And now, I love my project list. And I go in it all the time and I’m like, “I’ll do this today,” or whatever, because it’s so less intimidating.
SARON:
Yup.
CHUCK:
Awesome. Well, this has been a terrific discussion, but I think we probably better get to the picks.
JAMES:
Let’s do it.
CHUCK:
Alright. David, do you want to start us with picks?
DAVID:
Sure. I’ve just got quick one today. And that is the CompSciFact account on Twitter. That’s @CompSciFact. It’s just a fun, we talked earlier at the top of the show about how math and programming seem to be inextricably related. And I started following CompSciFact just because they tweeted a really interesting concept which is that programmers in computer science really should stop worrying about formal mathematical concepts like groups and rings and total orders and should instead concentrate on posets and monoids. And I didn’t know what a poset or a monoid was, at least by those names. And I went up and spent several hours on Wikipedia just researching what those things were. And I was like, “Wow.” A poset is a partially ordered set. And it’s where two things in the set have no sorting relationship to each other. You cannot sort because they’re just… one’s are apples and one’s oranges. You just can’t organize them. And we deal with them all the time. And we habitually turn them into total order, or tosets, or totally ordered sets just as conveniences to make them fit our mathematical way of thinking. But if we can drop back and think about them in posets, then it’s much more valuable. And that was a long digression onto one tweet from CompSciFact. There are lots of other fun things in there. Weird history facts like the fact that Haskell didn’t actually like the name Haskell, and that sort of thing. Didn’t like his own name particularly much, that sort of stuff. So, CompSciFact. It’s an account on Twitter. You should follow it and you’ll learn something. It’ll be fun. That’s my pick.
JAMES:
It looks like Avdi looked it up while you were talking about it too, because he retweeted something they just said.
AVDI:
Total coincidence. [Laughter]
CHUCK:
And a monoid is something you can get on Amazon, right?
DAVID:
You know what? I’ve already made a mono joke on the show.
CHUCK:
[Laughs] Jeez. Alright James, what are your picks?
JAMES:
I’ve got two. For a tech pick, there is a great blog post by Mat Sadler called ‘Ruby 2.1 in Detail’. And it covers all the changes in Ruby 2.1 which is great. Some of them I knew and some of them I didn’t know. So, if you want to know everything that’s new in Ruby 2.1, this is one stop shopping to pick all that up, which is great. And then for a fun thing, my wife and I recently watched the first season of Orphan Black. And I thought it was just a great show. It’s free on Amazon Prime right now, so a good way to pick it up. If you liked Dollhouse at all, I was a fan of Dollhouse, I would maybe even argue this is Dollhouse done better in that the lead character…
DAVID:
Wow.
JAMES:
Is playing all these different roles and the lead character is playing other characters playing other different roles.
SARON:
[Chuckles]
JAMES:
It’s surprisingly evolved.
DAVID:
Wow.
JAMES:
And she does it really well. She’s got great range, so definitely worth checking out.
SARON:
Yeah, I’ve heard great things about that show but I haven’t actually seen it yet.
JAMES:
Worth it.
CHUCK:
Awesome. Avdi, what are your picks?
AVDI:
Alrighty. Well, I thought I’d start out with a coding pick. And this is one of those libraries that I’ve used to good effect for a long time and it’s just one of those things that’s always there for me and so I didn’t even think about it to pick it. But Nick Gauthier has a library called domino. And it’s basically a helper for tests that use capybara. And it gives you a way to very quickly and easily define little classes that represent the things on the page. And so, you can then interact. You can then basically, if I have a list of episodes on a page, I can write an episode summary class and I can then do a find all, find all episode summaries, and then I can poke them for their attributes. And I can very easily write, here’s how you find the title of an episode. And then I can make that an attribute of the class just using CSS selectors. And so, it basically, it’s a great way to organize all the millions of little capybara helper methods that I might otherwise write into a more of a sane setup. I’ve been using it for a long time and thought I should probably give some credit there. Because I don’t think that it’s very well known. If it is, great. If not, I hope it becomes more known. So, that’s one. Another quick technical pick, I realize I needed a nice big network-attached storage device recently because I was running out space in my drives with all the video work that I do now. And so, I asked the good folks on Parley. And they gave me some great advice. And I wound up going with a Synology DS214+ which is a dual-bay home office, network-attached storage and got a pair of 2 terabyte Western Digital Reds to go in it. And so far, I’m quite impressed with it. I’m a little reticent to fully pick something that I just started using. But it certainly seemed to be the crowd favorite, at least that brand. And I’ve been really impressed with the setup and the software that they put on it. Very, very easy to use and set up, so hopefully that will take care of my storage needs for a long time. And if it turns out to be a bad pick, I’ll let you know. But I have high hopes. On the not so coding front, I recently got to the point with running that I decided that I could maybe start doing a little running with the younger children. So, I got a jogging stroller, a dual jogging stroller. And just took it out yesterday, took the two little girls out in it yesterday and just jogged around the neighborhood to get used to it. Pulled back up to the house and as soon as I stopped, the toddler, our toddler burst into tears and fought me and would not let me unbuckle her from the jogging stroller. [Laughter]
AVDI:
And apparently, this morning, my wife tells me, this morning she was trying to unfold it and get herself into it. So yeah, that definitely went over well. It’s definitely going be, it’s going to take some getting used to, jogging while pushing two other people. But it seems like it’s totally worth it. For the record, the model that I got based on a lot of recommendations was a BOB Revolution Pro Duallie stroller. Yeah, so I guess the main pick there is just jogging with your kids. [Chuckles]
SARON:
Nice. Wait, how is a jogging stroller different from a regular stroller?
AVDI:
I don’t know all the details, but the most obvious thing is that it has big wheels. SARON: Ah.
AVDI:
It also has a lockable front wheel. So, it’s a three-wheel stroller, two big wheels in the back, one big wheel on the front. And the front wheel is lockable. So, when you’re jogging, you just lock it straight ahead. It doesn’t swivel. There are a few other little things. It’s got a suspension to it. This model actually has a squeeze break for when you’re going downhill. So, it’s not pulling away from you, stuff like that.
SARON:
Cool.
AVDI:
Mainly the big wheels.
DAVID:
Nice.
JAMES:
Big wheels turn out to be the key. Anybody in a wheelchair can tell you, because if you don’t have those big wheels and you’re moving at speed and then you hit just a big enough bump, you just go from whatever speed you’re moving to zero instantly.
DAVID:
[Chuckles]
JAMES:
Not good. [Chuckles]
CHUCK:
Well, and depending on how you’re attached to your chair, you might wind up going from whatever speed you’re going to flying through the air.
DAVID:
Yeah.
JAMES:
I’ve done that. Oh yeah. [Chuckles]
DAVID:
So Avdi, I can’t take credit for this joke, but one of the most fun things you can do with that stroller is put one child in it and then sprint frantically around the neighborhood. [Chuckles]
DAVID:
And just watch everyone’s reaction.
AVDI:
Wait, what? I missed something there.
DAVID:
Leave one seat empty and then sprint around the neighborhood like you’re looking for the lost child. [Laughter]
AVDI:
Alright, that’s it for me.
CHUCK:
Alright. Well, I’ve got a couple of picks here. The first one is Avdi’s pick for the Synology thing reminded me. I just have a little Iomega hard drive connected to the network here. And I’d forgotten that I’d put all my wife’s pictures on there. And when I was setting up another machine for her, I wound up blowing away the only machine that actually had her pictures on it besides that.
DAVID:
Oh.
CHUCK:
And so, I was frantically looking everywhere to see if I had another copy. And yeah, so I’m not going to die. I’ll just let everybody know. I found them there on that network drive in six different places. I think I was pretty paranoid when I put them on there. But anyway, so I guess that’s not really a pick other than not dying. I’ve started watching a show on Netflix called Warehouse 13. It’s on the SyFy channel.
DAVID:
Oh, yeah.
CHUCK:
It’s kind of a fun show. It’s not my most favorite a show I’ve ever seen. But I’ve been enjoying it. So, I’ve watched the first season and one or two in the second season. And it’s kind of fun. So, I’m going to pick that. And Saron, what are your picks?
SARON:
Sure. I have a few. They’re all books. And I don’t think that any of them are programming-related.
So, sorry about that part. But one is a book called ‘The Path Redefined’ and it’s the story of this incredible, incredible entrepreneur, Lauren Maillian bias. And she started a winery when she was 19 and sold it. And then she started this marketing firm. And then she has a fund and she’s an angel investor investing in tech startups now. And she’s 28 and a single mom. So, she’s my new hero. And so, I really, really love the book. I’m a huge fan of business profiles and business books. And I feel like this is one of the few where the entrepreneur actually writes it well, because most books are not well written. But then, she also has really applicable advice to you and your life and how you can be a better business person. And even if you’re not, how to be a better advocate for yourself. So, I thought it was surprisingly applicable in terms of improving your own life. So, that’s my first one. A second one that I just finished reading, that actually my fiancé made me read this book. I didn’t want to read it. But I’m glad that I did. It’s called ‘The Millionaire Next Door’. It’s a little bit older. I think it was written in 1995. But it was incredible. It was this hugely data-driven book about who the millionaires in America are and how they’re not the flashy, high-consumption people that you probably think. They don’t all drive incredibly fancy vehicles. And they’re actually very, very price-sensitive. They budget a lot. And it just gave me a new perspective on money and savings and all that. So yeah, I highly recommend that. And then my last one, which is more of, it’s a book that I read but in general, this weekend I went to Barnes & Nobles and I rediscovered the awesomeness of optical illusions. And so, I think I got three books of just all kinds of optical illusions. And now, I’m obsessed with drawing the Penrose triangle which I actually realized is The Verge’s logo. So, my notebooks look like I’m in love with The Verge.
DAVID:
Nice.
SARON:
[Chuckles] Yeah. But yeah, they’re just so much fun. And seeing what you can do with art and how it can totally screw with your head is just awesome. So, I recommend everyone go to Barnes & Nobles this weekend and just look at optical illusion books.
CHUCK:
Very nice. I read ‘The Millionaire Mind’, which is another book by Thomas Stanley. And it was also really good.
SARON:
Yeah.
CHUCK:
Alright. Well, thanks for coming. We really appreciate you coming and blowing our minds.
DAVID:
Yes. [Chuckles]
SARON:
No problem. Anytime you need your minds blown, just let me know.
CHUCK:
Alright.
DAVID:
Awesome. Thank you, Saron.
JAMES:
Thanks, Saron.
SARON:
No problem.
AVDI:
Thank you very much.
SARON:
Thank you so much for having me. It was a lot of fun.
CHUCK:
Alright. Well, real quick, we have a couple of reminders. We are reading ‘Refactoring: Ruby Edition’ for our book club book. So, keep an eye out for that episode. Start reading the book now. The other one is if you want the tickets to Midwest, what is it, Midwest.io?
AVDI:
Yes.
CHUCK:
Then make sure that you’re getting those tweets out there. You need to put your favorite Ruby Rogues episode in there, the hashtag RRMidwest. And just tell them thanks for giving away a ticket on the show. And we’ll get that announced here within the next few weeks, the winner. So, other than that, I don’t think we have anything else. So, thanks for listening. We’ll catch you all next week.
[This episode is sponsored by Codeship. Codeship is a hosted continuous deployment service that just works. Set up continuous integration in a few steps and automatically deploy when all your tests have passed. Codeship has great support for a lot of languages and test frameworks. It integrates with GitHub and Bitbucket and lets you deploy cloud services like Heroku, AWS, Nodejitsu, Google App Engine, or your own servers. Start with their free plan. Setup only takes three minutes. Codeship, continuous deployment made simple.]
[A special thanks to Honeybadger.io for sponsoring Ruby Rogues. They do exception monitoring, uptime, and performance metrics and are an active part of the Ruby community.]
[Hosting and bandwidth provided by the Blue Box Group. Check them out at Bluebox.net.]
[Bandwidth for this segment is provided by CacheFly, the world’s fastest CDN. Deliver your content fast with CacheFly. Visit CacheFly.com to learn more.]
[Would you like to join a conversation with the Rogues and their guests? Want to support the show? We have a forum that allows you to join the conversation and support the show at the same time. You can sign up at RubyRogues.com/Parley.]