Go Time – Episode #95

The importance of representation

with Jamal Yusuf & Yingrong Zhao

All Episodes

Hot off the heels of GopherCon 2019 — Johnny Boursiquot, Jon Calhoun, and special guests Jamal Yusuf, and Yingrong Zhao recap the conference and the importance of representation in the Go community.



LinodeOur cloud server of choice. Deploy a fast, efficient, native SSD cloud server for only $5/month. Get 4 months free using the code changelog2019. Start your server - head to linode.com/changelog

Datadog – Cloud monitoring as a service. See inside any stack, any app, at any scale, anywhere. Datadog is cloud-scale monitoring that tracks your dynamic infrastructure and applications. Plus next-generation APM. Monitor, troubleshoot, and optimize end-to-end application performance. Start your free trial, install the agent, and get a free t-shirt!

X-Team – The world’s most energizing community for developers. We’re looking for Go developers to join the community and get energized. Join us at x-team.com/join

FastlyOur bandwidth partner. Fastly powers fast, secure, and scalable digital experiences. Move beyond your content delivery network to their powerful edge cloud platform. Learn more at fastly.com.

Notes & Links

📝 Edit Notes


📝 Edit Transcript


Play the audio to listen along while you enjoy the transcript. 🎧

Hello, hello, and welcome to the latest episode of Go Time. I am your host, Johnny Boursiquot. My co-host is also available here - Jon, he’s gonna be MC-ing for us as well. Jon, do you wanna say hi to everybody?

Hey, everybody! Letting Johnny take the lead this time, so I can sit back and relax.

Yeah, he’s gonna have me do all the work today. Today’s episode is a special one. This is post GopherCon. GopherCon took place a couple weeks ago in beautiful San Diego; very beautiful weather over there.

What we did prior to actually going to GopherCon is basically have an episode that was focused around how to take advantage of a conference like GopherCon if you’re brand new to a Go conference. Basically, the do’s and don’ts, if you will, and how to take advantage, how to maximize your experience at an event such as GopherCon.

On that show we had Jamal Yusuf, who is back with us on this show today, to talk about his experience… But we also have Yingrong Zhao - hopefully I’m pronouncing her name correctly - who it was also her first time at GopherCon. We’ve invited these folks to give us - perhaps a lot of us who are sort of old hats in the Go community - to get a feel for what new blood, basically what their experience is like when they enter a community like Go and when you attend a conference like GopherCon. Welcome, Jamal. How are you today?

I am good, and good to be back! I had a lot of fun, but we’ll talk about that shortly.

Indeed, indeed. And yourself, Yingrong, how are you?

Good, how are you?

I am doing well. I’m a bit stressed, it’s been a stressful day, but this is the life of a programmer, or I’d say of a professional, in the line of work we do. Every now and then you kind of get a bit of crunch time, they call it. But yeah, other than that, I’m doing well… And what I’d like to do really is start things off by getting a feel for what your overall experience was at GopherCon.

Yingrong, I know this was your very first one, obviously, and you’ve been a member of the Go community for a while now, and you’ve seen how the meetup flow goes, you’ve been part of workshops, you’ve been involved for some time… But GopherCon was probably something on a different level. How would you characterize that experience?

[04:04] I come from the background of JavaScript, so prior to GopherCon I have just been mainly going to JavaScript conferences… And the difference that I feel from the Go community is that it seems like everyone is more experienced. The talks that people are giving are more in-depth in terms of the technical side… But it also surprises me how much GopherCon emphasizes on diversity and inclusion.

To me, Go is a very low-level language, coming from my background, and I was expecting that I wouldn’t understand any talks that people are going to give… And yeah, I was preparing myself to do a lot of homework, but… I really liked every talk, the fact that people always start with defining terms, to help the audience to understand the background of the talks, and then go into the details of the topics that the speakers have chosen.

Surprisingly, I was able to follow with most of the talks that I went to, so it was a very great experience for me for the first time.

So the caliber of talks… Basically, they went a bit deeper, but they were still – if you’re new to Go, they were still very much approachable, right? So you could understand what’s going on. Perhaps that’s a skill of the speaker, maybe it’s a combination with the Go language being what it is - you sort of can follow along, even if you’re just starting out, and kind of get a high-level of what’s going on and be able to take value out of these talks…

It’s interesting to hear that coming from somebody who’s coming from a different language community, and experiencing this for the first time… It’s interesting to hear that. How about yourself, Jamal? What was your initial impression of GopherCon?

It was the summer camp that I wanted to be at. [laughs] It was a lot of fun, Johnny. Coming from a C background and attending C conferences… I was definitely overdressed the first day. I walked in the conference and everybody was in shorts, and T-shirts, and I was like “Okay…” The atmosphere is a lot more relaxed, so automatically I was just like “This is the place I wanted to be at.”

I had a lot of fun; I also felt like the topics that were spoken about were very approachable. The Go tooling team and the Go core team that was there was very approachable. They had a nice little space out there where you could come and ask questions and absorb information. I got so much knowledge just from talking to some of the people on the tooling team, just about how you can do some stuff in Go that – you know, you read a few blog posts, but you really don’t understand it until somebody shows you… And I absorbed so much. I was a sponge that entire conference.

And to also hear some of the bigger companies doing what they are with Go, and how they solve some of these problems… Because none of our problems are unique, in that sense; we’re not the first to do it. And to kind of hear how the same problems are solved at companies that are much larger was beneficial to me, because I got to absorb a lot of that.

And listening to some of the talks, I was just like “This is the smartest answer I’ve ever heard, for this very complex problem. Thank you for saving me a year of work!” So I enjoyed it a lot.

Good. Do you remember a favorite talk of yours, or are you waiting for when the videos come out, so you can go back and watch…?

[07:57] Yes, yes. One talk that absolutely blew my mind was by Chris at Comcast, about a Go 1.11 bug; or not a bug, a scheduler feature in the Go scheduler with trying to get the goroutines to all go to sleep or wake up at the same time. What was really impressive about that is they spent all this manpower trying to stream video (just for the audience who might not know) with Go, for mobile devices. And they ran into a specific problem where they were hitting a whole bunch of CPU usage and they traced it down to the scheduler, and the solution was “We need to get all our goroutines to wake up at the same time.” And they spent a whole bunch of man hours programming this complex solution to try to get their goroutines to go to sleep at the same time, and months later they came up with a solution which was like a one-line edit.

The iteration of that, and just the level they were willing to dig into the Go source code and the standard library, and just isolate that one specific bug was kind of inspiring. I usually give up at the standard library. If something doesn’t work, the standard library is about as far as I dig down. They dug all the way down to the scheduler, and that was just impressive, just to see that level of digging for a bug.

Yeah, it’s kind of a testament to the Go standard library itself; I guess it’s not some sort of hidden part of your world, as a Go developer. You can go in there and peek around and see how the sausage is made, so to speak, and tailor your work accordingly.

Yingrong, I’m interested to hear what you thought was your favorite talk so far?

My favorite talk is from Carolyn, the one about Design Command-Line Tools People Love. That was my favorite one; maybe it’s because I am from a JavaScript background. That’s why I care a lot about user experience. So my impression of Go for a long time was that it’s a back-end language. Those hackers on the movie, they’re working in the background, but Carolyn’s talk shows that with Go you still need to care about user experience and how you use Go – when your user pool is developers, how do you create a great experience for other developers to use your code, and how to make users’ life easier. I think that’s really interesting, and I really like it.

Yeah, I totally agree. The command line interface is probably my favorite way to interact with – especially developer tooling, and whatnot… Interacting with services through Slack is probably my second-favorite one; I’ve built a few tools that react to slack’s /commands in bots and not so those are fun to build.

But yeah, when folks hear “user interface”, they usually think some sort of a rich, graphical sort of thing. But I think on the CLI it’s just as important to think about the experience of the developer who’s gonna be using that tool to get their job done. I think it’s just as important to be thinking about flow and all these things that Carolyn touched on. I think she did an excellent job of conveying these things you need to care about and think about when you’re actually building these tools.

So you talked about the tooling from different sides, you have talked about tooling in Go in general so coming from the language communities from which you’ve come from, do you think there’s a stronger emphasis on just having good developer tooling, whether it be from the language itself, or whether you’re building things for developers? Do you think there’s a stronger focus of that in the Go community, or you haven’t noticed any difference?

[12:07] For me, maybe it’s because I started working with Go about four months ago, so I haven’t played so much with Go tooling in general… But in the JavaScript community there is a huge emphasis on creating better developer tooling, and kind of a helper package for the open source community to use… And yeah, I think my experience with Go tooling is general is very limited.

You know what - the Go tooling team is impressive. I’m blown away. I’m blown away because of so much that’s offered for free. In other low-level languages, when you make an IDE or you make a tool, you charge for it; and what the community is willing to give away for free - it boggles my mind. Because there’s a lot of work that goes into it, and it’s just all for free. There’s so much out there that the community gives out and you don’t have to pay for. I’m still not used to that. I’ll pull some tool down from GitHub and start using it, and I’m like “How is this free again?” [laughs] I’m impressed by that.

The conversations I heard after the talk of Go Please, integrating all of the community tools into something from a single binary - that was just amazing. I remember one of the first things I struggled with when I first got up to speed on Go was that you had to run all these commands individually. You had to do a go fmt, get your source code formatted - there’s all these steps; and just the fact that you just save a file now and all of that happens behind the scenes is just – it’s cool, it’s cool.

I hope we get to the point where our IDEs and our tooling and all that is at the level where we have JavaScript’s like emit type functionality where I type two things and hit tab and it becomes a fully-fledged document… That’d be cool. So I hope we get more Go tooling, but I’m impressed already with what’s offered on the market for free.

Yeah, I definitely agree. There’s certainly a lot of tools out there for developers to take advantage of. Perhaps you’re a developer who likes full-blown IDEs, and maybe Goland is a pretty good one, from the folks who have built JetBrains, who have been in the business for quite a while, so they know what they’re doing when it comes to these kinds of environments… VS Code is probably my favorite development environment to build Go apps now, and shoutout to Ramya for leading that work for the VS Code, for the Go side of that ecosystem. And obviously, all the contributors to that project, as well.

We continue to improve the tooling story around Go all the time. Some of the tools that I think still need to be made perhaps more approachable, especially if you’re new to Go, or still trying to master the ecosystem, is probably the performance tools, things like pprof. If you are new to Go and if you’ve never had to deal with performance optimization… Let’s just start by saying that writing a performant program in Go is already so easy that not a lot of people are running to find these tools to surface bottlenecks in your application.

A lot of times you get so far with a simple program. The performance that you get out of the box is so far beyond what you would have gotten from – well, I don’t wanna name other languages, but out of the box you can get so far that a lot of times developers don’t even bother… It meets their needs. But when you need it, and you usually know when you do - maybe you’re looking for something that’s basically allocating too many allocations, or something. Maybe you’re looking for a goroutine leak somewhere. These kinds of tools like pprof can help you unearth those kinds of things.

[16:11] So I do hope that more and more light gets shed on these kinds of tools, especially if you’re new and you don’t know how to use these things. That’s something I personally want to help expose out there as well, through meetups and talks and whatnot. Hopefully, I might even see Jamal and Yingrong give a talk on pprof one day, right? [laughs]

I do think it’s really cool that – GopherCon seems to also put that emphasis on it. I recall there’s at least a talk on Delve, I think there was one on GoGuru… There’s probably other ones I’m forgetting, but it’s nice to see that tooling get a focus at conferences too, where it’s not just about really technical problems, it’s also about “How can you be more performant as a developer? What can you do to make your life easier?”

Right, absolutely. One of the things that particularly find to be exciting is the approach that the Go team is taking with Go 2. I was very pleased when the news came that we’re sort of giving up on the whole Try thing. I was one of those people who didn’t really see a huge amount of value from hiding some of the things that I’ve come to expect explicitly from error handling in Go… So I was pleased when the Go team decided to retire that proposal for the time being. Who knows, maybe there’s still gonna continue to be ways for the Go community to do the right thing when it comes to error handling. We haven’t given up in terms of addressing some of the core concerns that people validly have.

Some people think that currently what we’re doing is verbose and they’d like a better way to handle it, and that’s fine; that’s totally fine. We just basically don’t want to lose some of the things that we’ve come to value in Go in the process.

I’m totally on board with the way the Go team went with that, but one of the things that I’m really excited about – well, it falls under the Go 2 umbrella, but I think it’s super-relevant today, is the module proxy stuff. To me, I care about reproducible builds quite a bit, so the module proxy definitely helps remove some of the issues that can come up, for whatever reason. Say you can’t pull a package from GitHub today - your entire build [unintelligible 00:18:24.20] doesn’t just stop. You have somewhere where you can download a package, and there’s some assurances around the version that you’re getting. There’s a lot that it takes care of for you that I think is gonna help the Go community quite a bit.

I’m wondering if there’s anything from any of you that you saw from Russ’ talk - which was the first talk of the conference, by the way - that gets you excited.

Just his approach with how he communicates with the community. I’ve always gotten the impression that he’s very approachable. Even after his talk I went and talked to him in person, and just asked him questions. And just his enthusiasm for the Go programming language, and his ability to articulate really complex things, and explain them simply. And the transparency with the whole process. He does a really good job of just explaining what his goals are and how they come to decisions. And when something isn’t a good proposal, why they reject it and what they look for in good proposals, and all that. I really appreciate that.

So his talk on just the Go’s future and what they’re working on in terms of tooling - I appreciate it; that transparency is welcomed.

One of the things that’s always been interesting to me is that you go to GopherCon and you look at all the talks, and it seems like the Go team and a lot of the new proposals are presented and discussed very heavily at these conferences… Whereas a lot of the times it’s easy to think “Oh, a conference is for long-lasting information. I’m gonna learn this and keep it the rest of my life”, but realistically, a lot of these things are topics that in a year, once we’ve decided how to handle something - generics, for example - you’re not really gonna care about that talk about generics as much.

But at the same time, I think - at least I personally believe - that the fact that they do this in such a public form and they try to make sure that the community is involved really helps shape the language. And that’s another thing that I think is a really big benefit to having a GopherCon, is you’re really forcing them to – not forcing, but everybody gets a chance to discuss this altogether. There’s a ton of Go developers all in one place, they can all discuss these ideas, and say what you like about it, what you don’t like about it… I think that’s valuable, because there’s a lot of things you just don’t think about.

And if you’re kind of isolated, reading a proposal, you’re just gonna immediately hate it or like it because you’re not thinking about everything; but if you’re there, talking to other developers, it’s gonna change that perspective and change what you think about it.

So I guess Jamal and Yingrong, how did that feel for yo guys? Did you like hearing about some of the new stuff coming into Go, and being able to talk directly with the team about that stuff while you were at GopherCon?

I think for me this is the first time for a programming language that the Go team has been so publicly gathering information from a community. I didn’t experience this from other programming languages at all… So these are all new to me. And seeing how people exchange information and opinions in proposals, through comments, or directly talking to the Go team - that makes me feel like maybe one day I will be able to give my opinions, and make a little contribution to the programming language. I don’t know, that gives me some hope and excites me, that I can somehow be involved to create a programming language. That’s the feeling that I get from hearing the talk.

[23:44] I personally just appreciate how the whole proposal process happens, and then having a conference where you can discuss it. It makes the language a living language, in the sense that it’s representative of how the overall community wants to use it, not how a select group of people think we should use it.

So being able to just hear about proposals, and then get different opinions, really helped shape my perspective. There were a few proposals that I didn’t really get before I came to GopherCon, but hearing the opinions of developers who’ve been using Go longer, and why it’s a good idea and why it’s not a good idea, and then being able to make an informed personal opinion based on that was helpful.

Having the idea shared at the conference allows for communication that you really can’t get via text. You lose a lot of the nuance that you can get in-person that might not be there.

One of the things is just the cross-cultural language filter. You can write something as a proposal, and then sometimes the language makes it unapproachable to people who speak different languages. But having conferences like GopherCon where you have people from all over the world, and then when you present an idea there, you get a lot more feedback from developers right then and there… And something that might not have been obvious if it was just online might be obvious then; you’ll pick up on that kind of stuff and you can simplify parts of it, you can modify parts of it right then and there to make it more approachable.

For me, I for a long time didn’t understand the whole generics proposal idea in Go. I was like “I don’t want this feature added. It’s gonna add all this unnecessary complex stuff to the language, which is just gonna be confusing for me to learn.” Then Ian gave his talk on generics, and I’m like, man, not only was I able to follow… I was like “When can I get that? When can I start using that?” And it was just so approachable to hear that proposal presented in that way, where I could not only follow along, but after the conference I could go read the full-fledged proposal and the language was not as difficult when it was communicated to me in that way.

It kind of made me feel like “You know what, contributing to this programming language is not just for a super-elite group of geniuses.” A regular person can connect and provide feedback to it, like “Hey, I like this idea. I don’t like this idea”, and maybe my opinion matters a little.

I couldn’t have put it better myself. I think in the early days a lot of us in the community sort of started to get the sense that a lot of folks on the outside looking in were sort of feeling like Go was for an elite group of people, and we knew that was the wrong direction. If we were giving that vibe, then that was something that needed to change.

I hope that for the most part that sentiment has sort of been dispelled, and folks no longer feel like Go is for an elite set of people, and that it is approachable and welcoming for everybody.

But yeah, you’re absolutely right - the Go community right now is at a place where if you have a strong opinion that you can articulate and get eyes on it, the Go team, the Go community, people who have been doing Go for a while, they will listen and they will see the merit in what you have to say. You don’t have to belong to a certain elite group or subgroup to have your words and your thoughts be taken seriously. So I think the Go community definitely welcomes the diversity of thought, the diversity of ideas, of thinking, because obviously, we don’t all think the same, we all are gonna have different ways of solving problems…

A lot of us have knowledge that we can bring from different language communities, from different experiences that we’ve had, we’ve solved many kinds of problems… And all of these things are important. They make Go better. When we talk about these things, they make Go better in the long-run. So it’s highly encouraged for people to step up if they have ideas for how things can be better, absolutely. I think the Go community is absolutely welcoming to this democratic way of actually making the language and the community better.

[28:09] Speaking of diversity and inclusion, I think part of this show is also to touch on what we saw at this year’s GopherCon, in terms of all the different people from all kinds of different backgrounds that were sort of walking around… I don’t know, I personally felt that this GopherCon was the most diverse of the previous GopherCons that I’ve been on, and pretty much I’ve been to all of them. I’ve seen this evolution happen year after year, with GopherCon growing like 10% in attendance every year, year-over-year, to 1,800 people now.

I got a chance to – I’m not gonna spoil my talk, but I got a chance to, prior to my talk, the day before, sort of running around, and Jamal, you were in one of those pictures… I got a chance to walk around and take pictures with a few folks, and actually some of those made it into my slides, and were really part of the message that I wanted to deliver.

Obviously, I have my opinion and how I think and feel about certain things, but I definitely wanna get your take as well, Yingrong, from your perspective - what do you think the Go community is doing well, and maybe even not so well, in terms of making sure that this community is diverse and inclusive and welcoming for everybody.

Yeah, the reason I was even able to go to this year’s GopherCon is because of the diversity scholarship that I got from the GopherCon committee. I really appreciate it. They took care of the traveling, the hotel, the ticket. And Carolyn even - it was the first day of the GopherCon, and she posted in the Slack channel saying that she will have the rainbow flag for the queer community, so that people can have a table to sit together and to meet people who are within the queer community in the GopherCon. I really appreciate that, because being in tech, it’s hard to be a woman of color, to be a queer of color… And seeing that people from the organizers are trying really hard and creating a space for people like me to be able to feel involved and welcome - I think that’s that something that I have never experienced at other conferences… So I really appreciate the effort.

Pretty cool. Jamal, how about yourself?

I was blown away. I was blown just from the planning that went into this conference; no detail was done without thinking about. From the very first moment you walk into the conference, all of the labeling directing you towards a direction. All of the many smiling faces ready to assist you if you have any questions… Even the fact that people like Bill Kennedy were just standing there in the middle of the booth, just talking to everybody all day.

I think I saw Bill and a lot of other people just talking to the community, 9-10 hours just standing… It was insane. Just the willingness to talk to people and communicate, and treat every single person like they’re important.

The effort given to remembering names… I walked up to a few people, and they didn’t even look at my name badge and they knew my first name. That was mind-boggling. Important people, just walking up to you and saying “Hey, Jamal”, and I’m like “What?!” [laughs]

[32:10] So just the fact that whenever I spoke to someone, they gave me their undivided attention, and it wasn’t about where you worked, where you came from, it was just about “I wanna know about you, the person.” And the many, many friendly people I’ve talked to… I learned a lot about diversity at GopherCon, and a lot of the decisions that I was like are nice for Go, but I didn’t really get what they meant, for programmers who speak other languages… One of the biggest things - the fact that Go code is saved as UTF-8. I was like “That’s cool.” The web is UTF-8, so it’s good that it’s saved there. And the fact that you don’t need to put semi-colons on the anythings… It for me was like an a-ha; I write with an American keyboard etc, but if you’re a developer who doesn’t have a semi-colon, like many of the European countries, their semi-colon is somewhere up on the number keys, having to put a semi-colon at the end of every sentence or statement is impossible; you can’t do it. So the consideration of that, to automatically insert that, was huge.

The other thing I observed was looking at some of the developers who came from Japan, when they were completing their challenges - the importance of having UTF-8 support for your source code allowed them to write comments in their native language, and to name stuff in characters that they understand.

I never really understood the language barrier towards learning programming, until I went to GopherCon. It’s not until you see international developers using Go that you get an “A-ha! This is why it’s important.” This is why documentation is important. Their ability to just automatically translate it in just their workflow - all of that was very important for me to observe and see that.

Even this small attention to detail was included into the language specification, to allow many developers yet to come, and other countries to hop on the language and have the best experience programming… As opposed to having to hack around and get around all of this because file type has to be in ASCII format, or something. You’re fine, you can write in whatever language you want. You can put emojis symbols and all that if you want. It gives you this creative freedom, that –

Don’t do it… [laughter] Don’t put emojis in your code, please, Jamal… [laughs]

I might put one or two, you know… But in terms of diversity, just walking throughout the conference… I think I spent the first day just kind of observing and trying to pick up the pattern of people… Like “Let me kind of walk around and get a feel for the conference”, and very quickly I was approached by people and integrated into the community.

I went there not knowing anybody, and by the time I left, I was going to lunch with people, exploring the city, hanging out… I had a group of people I just was walking throughout the conference with… It was very inclusive, in my sense; I felt included into it.

Johnny, I don’t know if I can talk about your talk. I don’t know if [unintelligible 00:35:20.19]

Yeah, yeah. Just don’t give it all away. [laughter]

I think your talk was really important… And I remember towards the middle of it you could drop a pen in the conference hall and you’d hear it. It was quiet. It was moving, and it was a call-to-action. It even made me, Johnny, think “There are things I can improve on.” Even as a person of color, there are things I can do to make it more welcoming to women. There’s a lot of things I didn’t notice in tech that women have to deal with… So I learned a lot from that talk. One is like “You have to do. You can’t just take.” And the more you give, the more you receive. So I felt a personal call-to-action, being there… I was like “I have to get involved in some way, and I’ve gotta give back.”

[36:17] Because I was there at the conference as a result of the GoBridge, you, Bill, everybody else who contributes your free time, and donates, and all the other people in the community. That’s the only reason I was able to come to this conference.

I’ve been given a spark, and I need to now nurture that spark and grow it into something more. I have a responsibility to make the path for the next person even easier than it was for me. And I don’t wanna give out the details of your talk, but it was very powerful… And the fact that you were able to incorporate something that was so impromptu - randomly taking pictures of all of us - into your talk… [laughter] That talk was beautiful, and just to see everybody in the audience nodding along with you… It was a talk that came from a place of love, and I think everybody liked that. And to hear your background - I never knew about your background; to hear about your background and where you are today, it kind of reminds us that we have to open up pathways for other people to make it to the same place, because there’s so many opportunities I didn’t know existed until I got there.

Just alone talking to developers who worked at big companies - I wouldn’t say that there’s a huge skill gap between them, but if you know one person at one company, you get past second and third-party recruitment companies. There is an advantage to being there. You do get a pathway to opportunities that wouldn’t exist elsewhere. And what you also get is you get a pulse of what’s happening in these communities, what skills you can learn now that give you the most return, like what technologies can you pick that are adjacent to Golang.

What works, what are employers looking for, what are the big companies using them for, what are people studying, and what are people’s opinions on things. That you can’t read in the comments section. This is all just the talks that happen in-between the stages. Stuff like that that once you know, you leave the next year and now you’re not questioning what you’re gonna work on. You know “Okay, this is the new thing. I’ve gotta go play with that.” And because you have that advantage of knowing where the horizon is, and just what’s beyond that a little bit, you know how to walk the path.

So I appreciated being at the conference, and I’ve learned a lot… But then I also understood that there is a lot more people that could have been there, that had they been there, it would have also opened an opportunity to them.

I wanted to also just touch on the importance of diversity. Sometimes diversity is framed as an obligation, and people don’t understand what benefits come from it… And one of the benefits that I’ve seen just working on many teams is just that everybody has a geography of thought - how they view the world, how they think about problems and how they figure out solutions to things; the path-finding through their mental topography… And certain perspectives allow solving certain problems in a different way.

I always find that - whenever I’m in a room with diverse programmers, we can work on a problem together and the intersection of all of our experiences and how we all grew up allows us to come up with a better solution than any individual would have come up with. I think the myth of the star programmer died in the ’90s when the dotcom bust happened. The star programmer generates a bunch of complex code that nobody can understand, yet the group can come up with a really simple, inspired idea that anybody can understand…

[40:06] So diversity is an economic asset. With more people from different backgrounds… It’s not just a thing we do because we think it’s an emotional thing; there’s an economic boom to it when you have diverse minds come together, you have different mental topologies coming together to solve problems in unique ways that weren’t possible before. I think that’s important, especially for a language like Go. If it’s going to remain competitive and it’s going to continue to solve the problems of tomorrow, it needs to have sharp minds from different backgrounds and different communities and cultures come together and be representative in the community. I don’t wanna go too much into your talk, but it inspired me… It inspired me.

I’m glad. And really, you’ve hit the nail right on the head there, with regards to diversity. What I don’t want to happen is for people to experience a diversity fatigue. For you to keep hearing about “Oh, diversity this, inclusion that”, and then to be like “Ugh…” At some point you start rolling your eyes in the back of your head, you’re like “Ugh, more of this stuff…” There’s so much more to it.

I always say that if you want a business to change, if you want a community - be it a language community or a business community - to change, especially when it comes to economics, tie dollars to it. I don’t wanna stand on a soapbox, but there’s two sides to the same coin - you get the economic benefits of having a diverse group of people solving a problem; they’re gonna bring different perspectives, as you’ve put it. I couldn’t have said it better myself. But on the other side of that too is you have an obligation to say “Hey, let me do this, because it is the right thing to do.” Obviously, different people are gonna feel differently about this, but overall I think we would all like to believe - I’d like to believe - that most people want to open doors for people that are gonna come through behind them.

For me, in giving that talk - it was sort of a call to action to say “Hey, you know what - you got here. You made it here. If you’re in this room, you have some degree of privilege, you have some degree of means that other people who couldn’t be here – by virtue of you being here, they couldn’t. That means there’s some things you can do. So let’s not just sit back and relax and wait for all the benefits that diversity and inclusion bring. Let’s be part of the solution, let’s be part of what makes this community even better than what it is.”

Honestly, I think we’re just getting started. There’s so much more… When I think about the potential that we have in the Go community to be probably the world’s most diverse programming language community - literally, I dream about this stuff. I’m like “Wow, wouldn’t it be awesome? Wouldn’t it be awesome if we could get that title, and every day work to make it and keep it as diverse and welcoming as possible?”

We’re already doing a lot of good work in that area, and I think there’s still more to do. There’s always more to do. I think we can always use more hands. So when you say that sparks something in you to try and get more involved and do something, that’s really music to my ears. But I don’t want it just to be a spark, I want it to also be action.

It’s one thing to think “Hey, I’m fired up, I’m excited. I’m gonna do something”, and then a few weeks go by and nothing happens. It’s very easy to fall back. That’s just human nature - it’s very easy to fall back into the routine, and sort of saying “I’ll get to it. I’ll get to it later.” But I think if you start - people don’t understand the power of just starting; if you just start something…

Go to GoBridge.org. If you don’t know where to start, go to GoBridge.org, file an issue to put together a workshop, or something. Maybe you don’t wanna organize, maybe you wanna teach, maybe you’re on TA - whatever the case may be; just being involved, at any level… Being part of such an experience will open your eyes and really propel you forward.

Yingrong can speak to that. Yingrong was part of a workshop that we had in Atlanta a few months ago… I’m curious, Yingrong, how you got into wanting to help as part of that organizing team for that workshop, and I’m interested in hearing if you’ve got something planned coming up soon, because I’d like to see more activity in the Atlanta area.

Yes, so when I first started learning about Go as a programming language, because I was interested in back-end development, I started googling if there is an existing organization in Atlanta that I could maybe go to their talks or their meetups. I think at that moment, when I googled “Golang in Atlanta”, not really much came up. So I just started googling “go” and I think your GoBridge GitHub repo came up. I saw that you could request a workshop.

[47:54] When I first started, I didn’t know that it meant to organize. I thought that I was just making a request, so that I could have a workshop, and then I could learn about Go. So I started it, and then it turns out – so I think I created an issue and you messaged me about “Okay, do you want to organize it?” And I thought about it, I was like “Oh, so I need to organize this…!” [laughter] It’s not just I submit a request and then someone can come.

It’s just somebody ships it to you. [laughs] It just shows up.

At that moment I was involved – me and a couple other friends were talking about starting a Women Who Go meetup in Atlanta, so we thought this might be something that we could do as an event for Women Who Go. We didn’t know at the time that Women Who Go was related to GoBridge already, so we thought “Okay, if I want to learn Go, and I am interested in this workshop, there has to be someone else who also can benefit from this workshop. So if I can put it together, not only I can learn, but other people can learn, too.” It’s just one or two days on the weekends, it’s not that much of work. There are plenty of tech companies in Atlanta that we could contact and ask for sponsorship… So we kind of just decided “Yeah, let’s do it, so not only us can learn from it, but other people could, too.” So that’s how we decided to start organizing the workshop.

It turned out great. Johnny, you flew to Atlanta, we got Fullstory to sponsor the workshop… There were about 10-15 people who came, and a lot of people said that was actually their first class learning how to program. That’s a shock… I didn’t know that it would open the door for someone who is just interested to learn how to program in general. To me, that’s how you can introduce more people into tech, how you can hold the door open for the newcomers and help them have this resource that usually is hard for someone new to find.

I think that’s the amazing thing about the GoBridge and the Go community in general - everyone who joins the community also helps to hold the door open for the people who are coming later to join the community.

Yeah, absolutely. I always tell folks that trying to organize a workshop – and it doesn’t always have to be a workshop. That’s one of the most impactful ways of doing this work, but it doesn’t have to be a workshop. If you can’t find a workshop in your local area to maybe be a TA at, a teacher at, even help organize something, you can carry the same mission with you into your local meetup. If there’s no local meetup in your area, guess what - you can start one.

A lot of times too, you along with a few other people who are also contemplating the idea, may – the only thing you need is the push; somebody to create a meetup group. This is something the Go Developer Network, the partnership between GoBridge and Google to provide meetup accounts for Go user group managers/organizers - that’s not even an issue anymore. You don’t have to worry about paying for the meetup account. So that’s a barrier that has been removed now.

[51:56] So even starting the meetup group, you’ll find that other people start popping up, saying “Hey! Yeah, I’m wondering if maybe you need help putting together the first meeting, or something. If you find out what the audience looks like - maybe we have a bunch of people who are interested in Go, don’t know a lot about Go, so maybe we have introductory talks, maybe we have hack nights, or something… Basically, get people to come in and learn Go a little bit…”

So you don’t have to start out at level 10. You can start very small and just get people in the door, and have a focus on having a diverse crew. Obviously, you’re not gonna turn people away, but you definitely wanna encourage people that “Hey, if you know somebody in your community who is under-represented - maybe it’s at your job, maybe it’s in your local other communities you go to - invite them to come in and check out this group as well.”

There’s lots of ways we can do this work, and having a user group, building community around you is one of the easiest ways that you can have this impact that we’re looking to have.

And for those who are wondering what GoBridge is, just go to GoBridge.org, and from there you’ll find lots of resources for how to get something started. But really, once you take a step to actually put together a workshop… And you mentioned that a lot of people are coming to these workshops and they’re being exposed to programming for the first time - those are my favorite kinds of workshops.

I’ve seen time and again how somebody’s eyes just light up when they’re able to accomplish a programming task. Their eyes just light up, and you can see this manifestation of joy and excitement in their face, like “Oh my god, I can do this too!” It’s a form of empowerment. You’re basically saying “Hey, look, you just need to practice a little bit more, and then you too can do this. This is not something that is reserved for a specific class of people. You can do this too, you just need the opportunity to come in and learn and practice. So these tend to be my favorite kind of workshops.

Obviously, if you’re coming from a different language community too you’re gonna find value, and you just wanna learn how Go works - you’re gonna get a lot of value from these workshops as well.

I’m harp about the workshops quite a bit, because that’s where I’ve seen the most bang for the buck, if you will. But whatever ways you can get engaged… If you don’t know how to, or if you’re too timid, or if your impostor syndrome has got you down, don’t worry about it. Just raise a hand, say “Hey, I’d like to help. I don’t know how to help.” Somebody, somewhere in your local community is gonna reach out and really help you be part of the community.

Again, like Jamal was saying from the talk, when you give, you get so much more in return. This community doesn’t give, it gives back. So put yourself out there, give to the community, and you’re gonna find that the rewards for that effort are gonna keep coming back to you manifold.

[55:11] I think both our recap and really this lens, this look at what diversity means for us in the Go community has been a pretty good one. I’m happy that we were able to do this show… Again, both of these – you can’t have community without unity. You need people to come together, to want to make this a great community, and I’m happy that Yingrong, you were able to make it to the show. I’m happy you both were able to make it to GopherCon as sort of GopherCon newbies, for the first time…

Jamal, I’m happy you were able to come back onto the show and give us your post-GopherCon take, and hopefully all the stuff we told you prior to you going to GopherCon held true… What do you think?

Yeah, all the advice was amazing. One of the things was attending talks with less people… There was one talk I attended at GopherCon by Yusuke Miyake, from the Japanese gophers at Fukuoka, and it was about optimizing for a number of goroutines using feedback control. And I think at the same time as his talk was the Dave Cheney talk, so everybody was at that one… But because I chose to go to a smaller talk, I learned something new. I learned something that directly helped me this week at work. That advice was amazing.

Also knowing that you can approach people and talk to them helped me a lot… So all the advice was taken to heart and I appreciated it. It was cheat codes.

Awesome, awesome. Well, it’s been great, I really enjoyed this show, this episode. Thanks to Jon Calhoun for MC-ing this behind the scenes, making sure everything goes off without a hitch - managing the channels, managing the live feed… And if you’re listening to this through your regular podcasting application, we do record live on every Tuesday. Today is Tuesday, right? Yeah, it is. The days are just rolling into each other for me right now.

We do record live on Tuesdays, usually at 3 PM Eastern, so you can tune in next time. We’re also in the Gopher Slack, the #GoTimeFM channel. Usually, you can pop in there and ask questions. A lot of times we take some of our questions from the live audience as well, because that usually ads a layer of fun to it.

With that said, Yingrong, I’m very glad you were able to make it; Jamal, same. Thanks, Jon, and thanks to the rest of the GoTime team and crew behind the scenes that helped to make all this happen. Thank you very much, and this is it for us.

Thank you. Bye!


Our transcripts are open source on GitHub. Improvements are welcome. 💚

Player art
  0:00 / 0:00