Gary Bernhardt

★ Transcript Available Jump to transcript
Description: Interview with Gary Bernhardt at Software Craftsmanship North America (SCNA) on talk design, software communication, community dynamics, and sustaining creative work in public.
Duration: 22 min · Published: Nov 26, 2012

Transcript

  • Hi, I’m Mike again with Uketastic. I’m at SCNA. Now I’m sitting down with Gary Bernhardt, who’s created the Destroy All Software screencast series, and he also just recently gave a talk here at SCNA. In previous interviews, I’ve talked, I’ve had Gary’s style of presentation being called, when Gary’s gonna get up and talk, he’s gonna drop some knowledge on you, and he has a unique way of presenting. I wanted to understand a little bit about how you approach your presentations and your speaking engagements, and what influences you.
  • Yeah, the way that I actually create a talk, for one thing, is, I think, very unusual. I don’t, I certainly don’t outline, I don’t write. Usually what happens is I stand up in my apartment, start pacing, and just start talking for about 30 to 45 minutes. And I might stop, and make single word notes on slides, just making slides that are white background, black text, single word. And after that, I go through a very long refinement period, but just standing up and talking creates sort of the backbone of it. The pieces get shuffled, but the core message is usually there. And in a case where I’m proposing a talk, I’ll actually do that before the proposal. So by the time you get my proposal, I already know I can deliver a full length talk, I’m happy with the content. As far as how I come up with topics, I have much less insight into sort of that process. I just sort of come up with them.
  • You’re like, I wanna talk about X.
  • Right. Now sometimes I do, I’ll keep a running wiki page up in my personal wiki that’s just ideas, and I’ll have, I’ll see trends come up in it. So that’s where my talk last year at SCNN came from. This talk was a little more premeditated. I just, I wanted to focus on this idea of boundaries and values being the boundary between options. But yeah, that’s sort of a very high level, overview of what my process looks like.
  • Because last year was expansion and contraction.
  • Right, capability, suitability.
  • And then this year it’s boundaries. Oh, excuse me, yeah.
  • That was another pair of topics, yeah. So last year’s was, it was actually a series of I think seven or eight dichotomies. Expansion, contraction, capability, suitability, and several others I’ve now forgotten.
  • Oh yeah, so I remembered one aspect of it.
  • Right, right, yeah. So those were all related. And then I tried to make a talk out of all of them, found the ones that fit better, together the best, and then just sort of figured out how to turn that into a narrative by putting it in the right order and adding some historical context. But there’s usually a core idea like that. I mean, the core of capability and suitability was three pairs of words, ultimately. The core of boundaries was just boundaries and values. The relationship between the boundary between code and other code, and how that relates to a value passed between code and other code. So there’s always a core–
  • Oh, the value being how you cross boundaries.
  • Yes, the value being the– The boundary itself, the thing that goes between two pieces of code for them to communicate, as opposed to a blocking synchronous message send, a method call. So there’s usually a core sort of idea that’s very simple and can be expressed in just a few words.
  • With your Destroy All Software series, is that a similar methodology that you use to come up with topics for that screencast?
  • Sort of. It’s a little different because Destroy All Software, our screencasts, I can’t come up with things to say and then put images to them. That would be me doing a talk, a practice talk every other week, which I don’t think would be worth $9 a month. Instead, with a screencast, I usually sit down and just silently will go through it. There will be a refactoring that’s the core, that I want to be the core of a screencast. I’ll just do it silently a few times. And if I feel like it’s still interesting to me after doing it a couple times, then I’ll pull out the microphone, start recording and just start doing it. And I just, sometimes the second time I do it, I’m already recording and I just do it all the way through over and over again until I feel good enough about it. I didn’t make any major mistakes. I didn’t have to backtrack. I didn’t stumble over words a lot. So it’s similar in that I don’t do upfront planning. I just start doing it. But the thing I’m doing is different. For a talk, I’m standing up and speaking in the visual secondary.
  • Right. - For a screencast, I’m standing up and speaking in the visual secondary. For a task, the visual is much more prominent, much more important. And I actually start with the visual work being done first and then figure out what to say.
  • I have to ask that, do you do the art for your presentations?
  • The design, the slide design? Yep, I do all that myself. I’m not a good designer. At least I don’t think I am. But I know how to get a color scheme on the internet. I know how to make things either line up or not line up in conspicuous ways. And those are sort of my core.
  • Or maybe it’s the simplicity of them and just having a clean– that gives it a sense of a design.
  • Yeah, I mean, it’s one of the things– I mean, preparing talks has been the mechanism by which I’ve become much better at design. And the main thing I’ve had to learn is that it’s very simple. I have a lot of slides where it’ll be– I did a lightning talk today where I showed some things about how I design slides. And a slide might be four words, but I don’t just put four words. It’s in the middle of the screen that’s black on white. The color choice matters. Probably at least one of those words is going to be a different color for some reason, a semantic reason. And they’re not just going to be in a line. They’re going to be in some kind of– there’s going to be some kind of spatial relationship. It keeps people interested in the content.
  • Did you look at it– what influenced that? Or is it just a taste thing?
  • The main– the point at which I started doing it was when I read a blog post by Zach Holman, who’s at GitHub. I forget the name of the post, but if you Google for Zach Holman’s blog–
  • Oh, I’ll have a link.
  • Yeah, you’ll add a link. And one of the big things he said was line things up or don’t line things up. And that is sort of the core of what I do. It’s really simple. Big fonts, not a lot of stuff on a slide. Line things up or don’t line things up.
  • OK.
  • Yeah.
  • Some simple guidelines.
  • Yeah.
  • With the software, you have taken– I remember when you came to Optiva and the GeekFest, you were talking about, I think you were just at the point of launching, you were preparing to launch, where you had just done a few–
  • That was last– yeah, that was last summer, so I was a couple months in.
  • Yeah, and you were open to suggestions, and you did apply some of those. And I thought that was very impressive that it wasn’t a, I’m going to create this thing, and I know it, and I’m just going to push it out the way I see fits. You were open to feedback, and a few years on, watching the interactions you have. I just wonder, is that something that’s been a double-edged sword with interacting with the community?
  • As far as the software, I would say no. I get a fair bit of email to the support address, a few emails a day. Not a huge amount, but enough that I have to check it regularly. And I don’t know that I’ve ever gotten a question I thought was just a dumb question. I’ll call a dumb question a dumb question. I really think it’s dumb. But no, people are very deeply engaged, and the questions they ask are usually very deep, meaningful questions. They really understood what I was trying to say. That is not true in general on Twitter, for example, where people are going to– people may lack context about me. They might have followed me because they saw me do some silly four-minute lightning talk, and they lack the context for my relationship to software. And so that colors your perception of what a person either believes or is saying. So they’re very different worlds. The Destroy All Software subscribers have a lot of context for what I think about programming, and they very rarely misattribute ideas to me or misunderstand what I’m saying. So–
  • But on Twitter, different story.
  • On Twitter, different story. On Twitter, it’s much more frustrating for me because people will explain very basic computer science concepts to me, for example, and I’m like, I know that already. I don’t need that explained to me. And it’s very frustrating when 20 people explain to you what, like, some basic data structure is or something.
  • Yeah.
  • At least for me. I’m very frustrated by that. I feel sort of attacked. I feel like–it feels like people are saying–calling me stupid, even though I know that’s not what’s happening. The emotional response I have is sort of defensive, like I’m being attacked.
  • OK. Yeah. So it’s–because it’s–I was kind of saying before we started the interview that it’s a lossy–it’s a very lossy–Twitter, I should say, is a very lossy platform. It’s a lossy medium that sometimes–even the written word in long form is hard to convey intent. That’s why even I tweeted a joke back at you today and I’m like, I don’t know how this is going to be received. I tried to couch it as much as I could in that this is a joke.
  • Right.
  • And that–but some people are very literal and they see a question, they’re like, oh, I’m surprised that you didn’t know that.
  • Right. Right.
  • So–but is that something that’s having become a–becoming a success–success sometimes can be a double-edged sword and that’s really what I was kind of going with with the Shorrell Software is you become more known and more–having more people being aware of you and it’s the demi-fame of our profession.
  • Right.
  • It’s–you’ve started to progress beyond just being–
  • Right.
  • One of the people in the crowd to being somebody that is a focal point.
  • Right.
  • And that people start to, you know, kind of like with Uncle Bob, he’s–he’s a personality and people come to him, you know, for better or for worse. And it’s not that–it’s not a side of him, it’s what people’s motivations are for going to that person. Are they going because that person’s famous or because they’ve seen some kind of value from what that person had to say?
  • Right. And–
  • What’s interesting.
  • That’s an interesting dichotomy you raise. Because in the early days, it’s–it’s got to be the latter, right? It’s got to be they’re going to that person because they said something that they found useful.
  • Right.
  • But when you’re–when you become properly famous, and I wouldn’t consider myself a properly famous programmer, but–
  • It’s–it’s relative to our industry and–
  • Right.
  • And the circles.
  • But–but once you become well-known enough, people–people come to you because of your name or they might dislike–they might assume that you’re wrong because of your name.
  • Right.
  • There’s some people who are–who view the idea of–who view anyone who–who is–who’s–who’s–who’s more famous than you.
  • Right.
  • And–who has notoriety as either doing it–extracting money from people by unfair means or detached from reality. There–there are a lot of people who think that some of the core Agile guys just don’t program, which is–
  • Right.
  • –just not true.
  • Right.
  • Those guys are all hackers. They all hack all the time. So it–and I’ve–I’ve had a little bit of that. Certainly not as much as, you know, people have been–
  • Right.
  • –well-known for a long time. But–but that is also that it has been very frustrating for me. And I’m actually–I’m planning on reducing my public visibility for exactly this reason. I don’t want to–I don’t want to turn into more of a curmudgeon than I am naturally because I feel sort of beaten down.
  • Yeah. I–and I wonder if that’s–I mean, I don’t have the opportunity to ask. Maybe someday I will. But what happened with Y is that he–overall, most people have a very positive, but I have to wonder what his actual interactions with the community really were. And were–were people–was there enough negative coming at him that it ultimately drove him away?
  • I–I certainly know people in the Ruby community, prominent people, and–and more than one of them who think that that is exactly what happened. If you go back to some of Y’s posts and read the comments–I mean, the posts are always self-contained, right?
  • Right.
  • You read the comments where he’s interacting with people, he has a very sort of–he has a sort of sarcastic wit that he’s–that he’s speaking in. I mean, if–if I were Y watching me say this, I would be so mad at myself.
  • Right.
  • But I think that to some extent, he’s sort of–he’s sort of–might have been masking this discontent behind–behind his–his very dry style of speaking. So I don’t know, I don’t want to guess at what was going on in Y’s head. Poor guy probably just wants us to never say his name again.
  • Yeah. That–but it’s–it’s relevant to this conversation, though, in that–looking at somebody who’s, um–and–and it’s one of the things, talking to many of the people here that are speakers, they’re prolific speakers, or authors, or even, uh, free and open source site, I have a friend who–who creates a–a code in for Java, and sometimes people are just like, “Do this.” You know, like–like he owes them something.
  • Oh, oh, I see.
  • You know, and–and that it’s–it’s the same thing for speakers and for authors that, uh, they assume that because you’ve created this thing, you’re somehow obligated–and, I mean, I think it’s–there is a social contract, but some people take it too far.
  • Yup. I–I–yeah. Uh, to relate this back to my Destroy All Software interactions versus just public Twitter interactions, it is very rare for a Destroy All Software subscriber to demand anything from me.
  • Right.
  • Uh, there are a couple things that people seem to want, like an iTunes feed, which I will do someday.
  • Yes.
  • Um, but as far as sort of demanding me–demanding for me to do anything for them, it’s very rare.
  • Mm-hmm.
  • Uh, on public Twitter, uh, people tweet– like, tweet me a link to a gist of 100 lines of code, including specs, and be like, “What’s wrong with this? Why is–why–is this good or not?” I’m just like, I can’t read and deeply analyze 100 lines of code at a whim, you know, it’ll take me half an hour, and I don’t–I’m not gonna take the time to do that.
  • Yeah.
  • Um, so it puts you in the very unfortunate position of having to tell someone, “No, I’m not going to help you with that,” and, uh, and they may not realize the–the level of demand that’s on you, right?
  • Yeah.
  • And so, yeah.
  • That makes me–
  • As you can tell, I have lots of feelings.
  • Yeah.
  • Bound up in this.
  • Well, you just brought something to mind. A few years ago, there was, um, it’s not so much anymore, but there was a very, very, very popular, uh, ASP, uh, pre-ASP.NET, um, website called, uh, Four Guys From Rolla.
  • Okay.
  • And one of the guys on there, he would get so many questions that finally he would just respond with a link to a page that explained how to hire him. Uh, so if you asked him a question, he said, “I’m, you know, I have the–the website. You can look at it. It has lots of answers.”
  • Right.
  • “There’s lots of answers on there. But if you need some personal help, my rate is $75 an hour and it’s a minimum of an hour.”
  • That’s a lot of rates.
  • Yeah. Well, that–this is years ago.
  • Okay.
  • Um, but, um, and it was also strictly for answering questions.
  • Yeah.
  • So he had a–he had his question answered.
  • Oh, okay. I see. Yeah.
  • Um, or even with Avdi’s Grims, uh, you can hire him. How to hire Avdi.
  • Mm-hmm.
  • You know, so maybe that might be a way to turn these random requests into, uh, a few extra bucks.
  • Yeah. I mean, there–there is always that. Um, I don’t think I’ve ever responded to one of these requests in that way and that’s partly because I don’t want to seem like a jerk.
  • Yeah.
  • Um, there’s–there–there are many kinds of jerk and I don’t ever want to be the kind–seem like the kind of jerk who’s trying to take money from you.
  • Yeah. Well, I–but–
  • I will say I–I was aware of this guy’s context when he did that.
  • Yes. Yes.
  • He was getting thousands of requests.
  • Yes. Right.
  • And he ultimately had the pushback.
  • And–and if I were getting that many, maybe I–I probably would just stop using Twitter requests honestly.
  • Yeah.
  • But, um, um, I lost my train of thought. Uh, so, right. The other thing is I don’t want to be doing that. I don’t want to spend my day answering the same questions I’ve answered before. I don’t want to, uh, analyze code for the same mistakes that I’ve found before, right? I want to be figuring out how to do–how to do new things that are genuinely interesting to me. It’s not that I think that doing those other things is bad, it’s just that I get–I–I get bored very quickly and I don’t want to be doing repetitive work. So, um, so unfortunately that’s–that’s not a solution for me.
  • No, that’s fine.
  • That’s why I don’t think.
  • And I–I just–just curious, uh, you had said that you had run a–a user group before. You had run a Python group in Cleveland.
  • Yup. I didn’t start it. I just ran it for about a year.
  • Okay. Okay. Have you done much speaking or engagement with, uh, user groups?
  • Um, not really actually. I mean, I did a few talks there. The first talks I ever did were there, um, long before I ever did a conference talk. Um, mostly short ones. I don’t think I’ve ever done a full-length talk at a user group after I started speaking at conferences for the first time, which was ‘08. So it kind of–kind of just switched completely over.
  • Okay. Because we were–we were having a brief conversation and you alluded to having, uh, an opinion.
  • Yeah.
  • And I’m not exactly sure how to couch the question, so I’ll just bluntly come on and say, uh, what–what was your thoughts that you were–you were thinking of?
  • Um, well, so my opinion about user groups is not–is not why I stopped speaking at that.
  • Mm-hmm.
  • Um, so there’s two pieces to this. One is that, uh, doing a talk like the one I did here is extremely expensive in time for me. Um, it’s probably–nowadays it’s maybe 20 to 30 hours of prep. Uh, when I started doing high-quality talks like this, it was more like 40 to 60 hours of prep. It was a lot of work.
  • Right.
  • And I didn’t want to be doing that to give it to an audience of 20 people.
  • Right.
  • Because it’s just–there is–I mean, doing a talk at SCNA has monetary value for me.
  • Right.
  • It’s how I make my living indirectly. It’s how I make my money through Destroy All Software. And–and unfortunately, that is an aspect. Um, there’s also just, you know, you don’t want to do a ton of work to reach a very small audience. You want to reach as big an audience as you can. Um, the other side is that I’ve been to a lot of user groups. I ran a user group for a year. And I think that they–that their–their isolated nature has some negative effects. Um, most notably, you can get into this–this weird situation where the user group forms itself or certain ideas become prominent and they’re reinforced through people talking to each other in casual conversation at the user group and through presentation of these ideas. Um, I think this happened to a small extent in–in the Ruby community, uh, when the Ru–uh, the–the Cleveland Ruby community in particular, a very small group of which I was an early and frequent member. Um, we–we just, uh, we got into certain ideas that turned–that I–in retrospect, I think that we–we–we weren’t validating them against–against the user group. Um, we just–we just sort of got excited about them internally and they were the right thing, and–and we didn’t really think enough. So, it was–you–you see, the way you described it was the insular bubble of–and–and not enough cross-pollination. Sure. Yeah. Because that’s–that’s interesting. Some of the conversations I’ve had over the last couple days have focused on the, uh, idea of–of getting beyond your–your small group. Mm-hmm. And it–it sounds like they were coming at the same problem that it was–you don’t want to just become a, um, a, uh, um, I can’t think of the word, but you don’t want to just become a–a hive mind where you–everybody just agrees and nods at each other and says, “Yes, yes, we’re also smart.” Mm-hmm. Um, but goes out to a different group. So, I–do you think maybe the answer to avoiding that insular group is spreading out and going to different groups and trying–go to the closure group, go to the, uh, .NET group, go to see, um, uh, something that you’ve not done before? Right. It could be. I mean, I can’t, um–my knowledge is limited to my own experience. Mm-hmm. Um, so I can’t–I can’t–I don’t want to speculate too much. I–I think that–that could probably help, but there are always going to be things that are specific to a group. Like, um, in 2000–when did we start that group? ‘07, probably, we started the Ruby group in Cleveland. Um, and in 2007 in Cleveland, you had the Ruby group, Python group, and then a whole bunch of more like Java, C# kind of things. Right. There was very little counterpoint, uh, to–to–to Ruby because Python is not a cultural counterpoint. Well, it’s a very different culture to Ruby, but–but the things you talk about in Ruby have no analog, usually, in the Python community. Okay. So there’s very little–there’s no counterpoint to RSpec. You know, the counterpoint is X unit– Right. –in Python, basically. So, um, that may be better now. It depends on where you live, et cetera, et cetera. Um, but I could certainly–I could certainly see it helping. What–what–what is it that Python has? The doc units? The– Doc test. Doc test. Yeah. I mean, but it’s just a very different–but that’s one of the things I think would be healthy if a Ruby developer who’s enamored with RSpec went to a Python group and learned about doc tests and saw, wow, that’s an interesting way– I think that would be wonderful. Every Ruby programmer should learn about doc tests, for sure. Right. And–but it’s just a different way of thinking, and that’s–I think that’s ultimately what I’ve kind of inferred from the conversations I’ve had over the last several days is, um, or the last several interviews, is spend– those cross-pollination, and it–it seems to fit in with what you described as becoming too much of a closed group, closed system, and not getting exposed to those new ideas. Yeah. And seeing, oh, that’s really different than the way we do it. Right. Yeah. It’s–that’s–it’s certainly very valuable, um, to do that. Every opportunity–well, maybe not every opportunity. There’s value to focusing down on something. Yeah. But you need to come up, for sure. Okay. Well, thank you very much for taking the time to staff me. Appreciate it. No problem.