[00:00:00] SY: If you haven’t yet gotten your tickets for Codeland, you totally should. It’s our annual conference about all the wonderful things you can do with code. And besides great food, great talks, and great people, this year we’re offering complimentary on-site childcare. So bring your babies with you and see you there. For tickets, go to codelandconf.com.
[00:00:29] (Music) Welcome to the CodeNewbie Podcast where we talk to people on their coding journey in hopes of helping you on yours. I’m your host, Saron, and today, we’re talking about G Suite. If you’ve used Google Docs, Google Sheets, Gmail, Google Calendar then you’ve used G Suite. It’s a suite of tools used to help you be more productive, but did you know that you could code in G Suite?
[00:00:53] JS: Hi, I’m Joanna Smith and I’m a Developer Advocate for Google specifically focusing on G Suite.
[00:00:59] SY: I’ve been using those tools for years and it wasn’t until recently that I realized you can code in them, actually code. You can write scripts to connect, say, your calendar to your email. So when one thing happens, then this other thing happens. In fact, Joanna’s whole job as a developer advocate is helping you realize all the coding stuff you can do within G Suite and if you’re new to code and looking for a friendly way to get started or if you’re super productive and want to be even more productive, coding in G Suite might be the thing for you. Joanna tells us what it looks like and what kinds of things you can build after this.
[00:01:43] Actualize Online Live is an online bootcamp created and taught by expert educators. What’s unique about this program is that it’s 100% live. They use video conferencing, so you get to actually see and talk to your instructors and classmates in real time. That means you have live interaction and feedback not just during instruction, but during all your exercises and projects as well. You get the experience of an in-person course while learning from wherever you are. Learn more at actualize.co/codenewbie.
[00:02:20] If you’ve got a personal project, a small business or a big business with lots of data, Linode offers you secure hosting for all your infrastructure needs. They are a Linux Cloud hosting provider where you can get a new server up and running in under a minute. Plans start at one gigabytes of RAM for just five bucks a month. And with the promo code CodeNewbie2019, you can get a $20 credit. So go to linode.com/codenewbie and give it a try. Also, they’re hiring. Check out their jobs at linode.com/careers. Links are in your show notes.
[00:02:55] As you know, I’m a podcaster and I love talking to people and hearing their stories and I love it so much I actually host another podcast called Command Line Heroes. It’s produced by Red Hat and in that show, I get to talk to tons of people doing incredible work in open source, but besides awesome interviews, it’s also got sound effects, background music, you know, creative audio stuff. So if you’re looking for some more awesome tech podcasts to fill your feed, check out Command Line Heroes. Go to redhat.com/commandlineheroes.
[00:03:30] One of the best parts of being a coder is finally being able to bring your passions to life. You have the skills to design, to code, to create the thing you’re excited about and share that passion with the world. And Hover can help you with that first step of sharing your passion with the world, getting your domain name. They’ve got a really beautiful and easy to use interface where you can find and register your new domain name in just a few steps. And to give you full control, they separate your domain name from your hosting so you’re never stuck with one service. They keep your domain name safe while giving you the flexibility to use whatever hosting service is best for you. They also give you free Whois privacy so your personal information is safe too. To get started, go over to hover.com/newbie to save 10% off your first purchase. Link is in your show notes.
[00:04:24] SY: So developer advocates, I think we’ve had a couple of developer advocates on the show before, but tell me about what you do as a developer advocate. Do you get to code a bunch? What are you advocating for? Tell me a little more about that role.
[00:04:38] JS: Yeah, so it comes by a lot of names from different companies, like you hear evangelism and it gets conflated a lot with marketing. We take it very seriously. We are all engineers. We write all of our own code, but the idea is that instead of writing code that’s supposed to be super secure and run and never fail, like Search does, we write code that someone else could read and learn from, so it’s copy-paste-able. It’s usually a demo and then to explain that code or let people find it, we’ll go to conferences. I make YouTube videos, write blog posts. We’re just out there trying to help people figure out what’s even possible with Google platforms and then inspire them to do cool things.
[00:05:15] SY: So when I think about coding or developing on the Google platform, I’m trying to think what does that mean? What’s your specialty? What do you focus on among the many different things that Google does?
[00:05:25] JS: Well, I’ve actually worked on five different products now.
[00:05:27] SY: Oh, wow!
[00:05:28] JS: So for a while, I worked on Android and this is the best example I can give for my job, which is Google creates the Android operating system, but if somebody wants to make an app, it’s not Google making the app, right? Let’s say a bank wants to support mobile deposit. Somebody building an application for a bank needs to know how to turn the camera on and possibly how to do things like zoom or flip the camera to the front, right? So I would make an app that’s like Camera Example and it would have four ugly buttons in it, one of them would turn the camera on, and one of them would flip it around, one of it would zoom in or out. And then I would put that on GitHub, make a blog post or YouTube video, and just leave it out there for people to discover and eventually, just let me know when it breaks.
[00:06:08] Right now, I’m working on G Suite and I’ve landed here because I really want to do something to help everyone else make their day better and a lot of people don’t realize that things like Drive or Google Docs or even Gmail could be extended to be custom solutions and automations.
[00:06:25] SY: Tell me a little bit more about G Suite. What’s included in the suite?
[00:06:29] JS: Gmail, Calendar, Google Drive, Docs, Sheets, Slides, Forms.
[00:06:35] SY: Oh, so like everything.
[00:06:36] JS: Yeah, like basically the whole enterprise product. There are things like admin controls. Oh my gosh, please don’t quiz me on this, but no, it’s everything that helps you get your job done and keep your business running.
[00:06:46] SY: So being a developer advocate for G Suite, you talked about how people don’t realize that it can be extended. What I’m trying to think about is my use of Gmail and Drive, and I’ve used a bunch of the tools that you’ve mentioned. I don’t think I’ve ever for a second thought “Maybe I can do code with this.” This has never crossed my mind. What kinds of things can I possibly do with, let’s say, email? What could I do to make my Gmail more extensible?
[00:07:13] JS: My tech lead is the best example for this. He has these super cute kids. They go to daycare and their daycare takes a photo of them every day and there’s the system the daycare has where it emails the photo out to the parents, but the problem is these photos, they’re not in the email. You have to click a link and then the links are only up for a day or two because it’s a daycare. They don’t have infinite storage. So he wrote a script that looks for the subject line or the sender from the daycare, opens the link, downloads the image from that link, and then saves it into a folder in his Google Drive.
[00:07:46] SY: Oh, that’s really useful.
[00:07:49] JS: Right? This is the kind of thing I’m talking about. Most people don’t even think about the possibility. They don’t even know where to start or that they could start, so I’m on this campaign right now for “Did you know?” Did you know you could save your daycare photos?
[00:08:02] SY: I have an idea for a script. I’m so excited. You have no idea. Okay, so I tag things as follow-up all the time in my Gmail.
[00:08:12] JS: Oh, my God, I do that, too. You made a label called “Follow-up”?
[00:08:15] SY: Yes.
[00:08:15] JS: Oh, my gosh, me too.
[00:08:16] SY: I have a tasks tag and a follow-up tag. Those are my two labels in Gmail that I probably use the most often. What I’m thinking is could I do something that says for all the emails that are labeled “Follow up on Monday”, I want you to either send me an email with a link to those emails or pop those emails back up to the top? You know what I mean? Something to call attention so I can have like follow-up Mondays, Mondays will be the day that I do all my follow-up. Can I do something like that?
[00:08:51] JS: Exactly. Yes. Off the top of my head, what I’m picturing here is called a standalone script. So you would go to script.google.com and whatever you wrote would live in Drive, be compiled, and dry-run from Drive. It’s super convenient. No set-up or environment or Maven installs or anything like that. You would get all the messages from Gmail from your account once you authorized it and so you would get all the emails for that label and then I’m picturing it where you move them back to the inbox, or you could create a draft to it. The other thing I have is like another label that you could create which would be like bright red and would say “Seriously”. And then it would apply the label to “Seriously”. There’s a way to customize which labels appear in which order if you want to sort your inbox into four parts.
[00:09:38] And so you could have a secret hidden part at the top that only appears when there’s a “Seriously” and so every Monday, you’d come to work and there would be like five “Seriously” at the top of your inbox before you even got to the priority and important mail.
[00:09:49] SY: I love the “Seriously”, like no, really. Like a “No, really” label.
[00:09:53] JS: That’s clearly a hypothetical label and not one that’s in my inbox right now or anything.
[00:09:59] SY: Seriously.
[00:10:00] JS: Seriously, I don’t even spell it out. It’s the “SRSLY” like Seriously.
[00:10:07] SY: That is awesome, because more and more, I’m using my calendar more as a task management system, my Google Calendar. It sounds like coding is a way that I can do that. Let’s talk a little bit more about the technical aspects of that. You mentioned something called App Script. What is that?
[00:10:27] JS: I’m going to answer your question, but it’s going to seem like I’m not. First of all, everything about G Suite was designed to be extensible. Meaning, you could build these personal, customized tools. And so there are a lot of features and really clever ways to link things together. You can attach a Google Doc into a calendar event. Everybody at the meeting already knows what the meeting notes are. That kind of thing was just by design for the product. So then App Script was the second layer. Earlier this year, we released macros for sheets and those are just like personal recording things, so you can basically record yourself clicking on all your formatting options and then play it back over for all your other sheets.
[00:11:05] SY: Nice.
[00:11:06] JS: So then the second layer is App Script. App Script is based on JavaScript, but it doesn’t matter if you’re not a JavaScript developer because it’s based on JavaScript from forever ago. It’s a super baby JavaScript, nothing fancy, nothing funny, but dates are still easy to work with. Everything for Google is built-in support as a service. To create a calendar event is literally as simple as like calendar app dot, get the calendar you need, dot create event and you give it a title, a start time and an end time.
[00:11:39] SY: That sounds like English.
[00:11:40] JS: It does and it looks like English and it was designed to be easy, which is why I’m out there trying to make all my siblings and cousins and the two friends I have left learn to code App Script.
[00:11:51] SY: So who is using App Script the most? Is it engineers, the people who want to be engineers? Is it those people who just are obsessed with life hacks? Who’s the target audience for this type of thing?
[00:12:05] JS: So on the developer side, if you call yourself a developer, you’re comfortable with all the languages, you’re really happy, there’s actually a lot of companies that build solutions for other companies. They come up with ideas and solutions so that another company could pay them and manage their entire HR through Sheets and App Script in a database. It can really help them, too, if you’re considering migrating to G Suite from another provider. Having these custom tools help you with the migration, but also afterwards. You don’t have to then go buy another service. Okay, so that’s the developer side.
[00:12:35] And then there’s this whole other category with three other audiences that I think of and this set of the people who can solve problems. What is often called maybe a knowledge worker, meaning somebody who just uses a spreadsheet or a document in their day-to-day life but is sick of having to do the same task over and over again. This is the kind of person who’s going to look for shortcuts, who’s going to figure out what the little paintbrush icon on Google Docs means that I did not notice for like six years of working at this company.
[00:13:03] SY: There’s a paintbrush in Google Docs?
[00:13:04] JS: There’s a paintbrush. It’s like an icon and it’s like the third icon on the toolbar.
[00:13:09] SY: Oh, I just saw it. What does that do?
[00:13:11] JS: Click the paint brush and highlight something else, and it will paint the formatting on to that new thing.
[00:13:16] SY: Oh, wow!
[00:13:18] JS: Right?
[00:13:18] SY: That’s so useful.
[00:13:20] JS: There’s a whole world of people who knew that way before I should have known that before being embarrassed and I’m several years past that point, right?
[00:13:27] SY: I’ve literally never seen that paintbrush in my life.
[00:13:29] JS: So those are my knowledge workers. They are gung-ho, they look at things, they click around, they’re going to figure it out.
[00:13:35] SY: Oh, man.
[00:13:36] JS: Over time, they just acquire all this extra information and they become power users, like the real power users who can write a macro, who maybe figured out a couple of automation stuff on their own because they were searching online on their favorite search engine for how to connect their spreadsheet directly to their calendar, and then they saw an App Script demo and they copied it in and it worked and they figured out enough of it to know what to edit and what to change. And so they’ve done basic automation. A little more experience there, you find yourself being like a citizen developer, somebody who can write a script, read a script but doesn’t call it programming, doesn’t think of themselves as a developer, doesn’t even know that that’s what they’re doing.
[00:14:18] JS: These all funnel toward being experienced enough to want to one day go like, “Oh, yeah. Wait, I am a programmer.”
[00:14:25] SY: Well, that was what I was going to ask you. In the eyes of, I guess, Google and your team, do you see those folks as developers?
[00:14:33] JS: I do but there’s kind of a hot debate going on right now that the word developer might be too intimidating which I also understand so we’re trying to figure out how to refer to our communities. So there’s a lot going on right now about technical practitioner or developer.
[00:14:53] SY: It’s so funny because I feel like developer, at least from my perspective, it feels like it was embraced because engineer felt too intimidating. You know what I mean? And then we went to developer and I personally just say encoder because it feels way more just chill.
[00:15:07] JS: See, I would agree with you except for the fact that I don’t see coding as the work. I see coding as a hammer.
[00:15:14] SY: Interesting.
[00:15:15] JS: Right? Like coding is a tool that we use to solve problems, but our job is to solve problems.
[00:15:21] SY: And you feel like developer is more of the problem solving aspect?
[00:15:24] JS: I mean, yeah, because you’re developing a solution.
[00:15:26] SY: That’s a good point actually.
[00:15:28] JS: But it’s also a matter of how people choose to use the word and what it means to them. So I will just use all the terms based on what everyone tweets me.
[00:15:37] SY: Yeah, yeah.
[00:15:48] We’ve talked about open source a bunch of times on this podcast, but frankly, open source is so big and complex, and fascinating that it needs its own show, and it has one. It’s called Command Line Heroes. It’s produced by Red Hat and it’s hosted by me. That’s right. I’ve got another tech podcast talking to incredible people about all things open source. We talk about the history of open source, the introduction of DevOps and then DevSecOps, and we even do an interview with the CTO of NASA. And that’s just the beginning. We also dig into cloud and serverless and big data, and all those important tech terms you’ve heard of, and we get to explore. If you’re looking for more tech stories to listen to, check it out at redhat.com/commandlineheroes. Link is in your show notes.
[00:16:38] Learning to code is much more than learning new concepts and syntax. It’s a whole new mindset. To help you learn that mindset, Actualize produces a free weekly video called Think Like a Software Engineer. It teaches you things like how to debug code, how to research problems, how to teach yourself new languages, how to read documentation, and lots more. Learning the mindset of the software engineer is the key to getting past the hurdles that can bog you down as you code. Check out the series at actualize.co/codenewbie.
[00:17:14] When I learned to code, I was so excited to finally bring my passions to life. I could build things I really cared about and share them with the world. And the first step in sharing is getting a great domain name. That’s where Hover comes in. They’ve got a really slick, easy-to-use interface. They’ve got awesome domain names to pick from and they separate your domain from your hosting so you have full control and flexibility over your online identity. So go to hover.com/newbie to save 10% off your first purchase. Link is in your show notes.
[00:17:48] Linode is giving you a chance to try their powerful servers built for all your infrastructure needs. They’ve got nine data centers worldwide with new data centers opening up this year in India and Canada. Getting started with a shiny new server takes less than one minute, so you can get up and running in no time. And you can get a $20 credit by using the promo code, CodeNewbie2019. Just go to linode.com/codenewbie for more info. Link is in your show notes.
[00:18:19] One thing that I’m really excited about with your work and with this entire conversation is for folks listening who are hoping to be full-time developers and engineers one day, this feels like a really, really nice introduction to coding because it is using tools that we’ve probably already been using even if it’s just one of them, just Gmail or Calendar or Google Docs. You probably use them in some respect, being in that familiar environment, not having to do any setup and being able to add a little bit more functionality to it feels like a really nice gateway, a really nice entry point to the world of coding versus having to open up terminal. It feels like a really nice pleasant way to get started.
[00:19:06] JS: I completely agree. I think of it as you can’t learn too many things at once. Right now, we removed almost all the variables because the language is very simplistic. There’s no environment setup. This is my favorite thing, you write it in Drive, you run it from Drive, it’s compiled in Drive. You can see your errors in Drive. You can set triggers for like running a script every night at midnight and with a UI, with clicking. And so it removes all of that extra crud. And then the other thing is that all of those Google services, they’re built in. So when you’re ready to try one tricky thing, it’s the only tricky thing, and then you get really good at it. You start to understand it and you can add a rest API call to an outside database. Now all you have to do is make one thing still inside the Apps Script, wrapped up in a URL service, but you only have to put together one thing and all the other pieces still work really cleanly. And then we have a rest API for everything that an Apps Script can do.
[00:20:07] SY: Tell me about that. What’s a rest API?
[00:20:08] JS: All it is, is an interface. It’s a list of methods that you can call and how to call them. So like Java is actually an API. You think you’re writing in the language, but every time you call the math function or the date function or you go to the Java reference docs and you’re calling into an API. It’s just methods that somebody else wrote for you that you can use. Rest is a specific type of how it works on the internet. It really doesn’t matter. The only thing that matters is how you put the call together and what’s available and everybody uses Rest. So just don’t let people intimidate you by talking about all of that.
[00:20:41] SY: That’s right.
[00:20:42] JS: And so we have an API call and then to make it really easy for everyone, we write client libraries so that these API calls are very simple to use, very approachable, and most of the hard work is done for you for the majority of languages. If you’ve learned how Sheets works in Apps Script, and now maybe you’re trying to make some other service that you work without your company that you’re really good at, and you can’t get to the service from the Apps Script, but you can get to Sheets from the service. And you know what these calls are supposed to look like and you know kind of how they work and you already learned how ranges work, and how cell notation works from your Apps Script now one less variable. You just figure out the rest API part.
[00:21:24] SY: I love what you said about this idea of removing the variables because before we can get into the syntax and why isn’t my machine working and why isn’t it running in all these other things? It would be really nice to just understand what a loop does. Why do I need to loop anything? That’s one of the big things that drove me nuts when I was first learning to code as being like, “What am I looping through? For what?” It took a long time for me to understand just the concept of that and so it sounds like by coding on G Suite, you have an opportunity to say, “Oh, well, I have a list of data in my Google Sheets and obviously I want to go through each one and make the background yellow or something. Oh, that’s what you want to use a loop for. You’re able to make the connection and focus on just that one programming concept without having to worry about all the other ecosystem stuff that might distract you and get in your way.”
[00:22:19] So what I’m thinking about how to get started, there are kind of two levels. There’s one, realizing that G Suite probably does a lot more stuff than I know that it does or that I think that it does, like the paintbrush, honestly, just blew me away. And then the second half is going, “Okay, now that I’ve explored the first level of functionality, now let’s be a little bit more creative and figure out how do I create things with these tools and with these things that I’ve discovered and how do I make something even better and bigger and more custom for me?” How do you recommend folks start doing that?
[00:22:58] JS: I think the best place for anyone to start no matter what your situation is, is if you have a Gmail account, the next time you’re doing something that is really annoying like copying a template and filling it all out for the 17th time this month, think about “Wait, there’s got to be a way to automate this.” That’s when you start searching, just the next time you’re on it because I’d say like three hours, you could solve most of the tedious problems that you face. And then when it’s hard and you can’t figure it out, until I can get more resources out there, more blog posts of inspiration, just tweet me.
[00:23:32] SY: I love that. There’s someone I interviewed recently, I was asking him about optimizing his process and his tool set. He talks about as a developer, it’s always a good idea to refresh your tool set and make sure you’re using the things that allow you to do the best work you can do. I asked him his process for that and he said, “Well, every time I get annoyed or something feels tedious or it feels like this is really suck to do,” he’ll write it down and he’ll write a list. He’ll keep a list of things that annoy him and then he’ll make it a practice once a week to go through that list and see if he can cross one thing off and find a solution for that one thing. So I love this idea of saying, “The next time I send an email or do a calendar invite or something in the Google universe, writing down, hey this sucked.”
[00:24:17] JS: And then that’s good practice too because if you’re just getting started and you’re trying to figure out and build your confidence, solve small problems that only you have to deal with.
[00:24:27] SY: I’m curious, how has being a developer advocate and then specifically being one in the G Suite universe, how has that influenced your own perspective, your viewpoints as an engineer yourself?
[00:24:40] JS: It’s really, I think, helping with my patience and my compassion which were not my strong suits. It was fun to work on Android. That’s fun, but that’s a huge community with a lot of support that’s never really going to slow down whereas G Suite, these problems are keeping people from being able to do their actual job.
[00:25:00] SY: Yeah.
[00:25:01] JS: And so when I can do something that helps somebody save 10 minutes off of every day, that makes me feel so proud. I recently showed somebody a setting that they could check inside of Calendar that would email them every morning a daily digest of their calendar for that day so that they could print it out. Now, he gets an email every morning at 6:00 AM with the whole calendar for the day. He prints that out and he uses it because he works at a catering company, and he needs to be able to tell people where to be and when what the time is and that matters. Your phone isn’t always the best use case in those environments. Sometimes physically holding something or taping it to the fridge is the better choice. And one setting changed his whole day. I know!
[00:25:44] SY: I’m going through all the admin that I personally...
[00:25:47] JS: Tasks that you do?
[00:25:48] SY: Yeah.
[00:25:49] JS: To support this awesome podcast.
[00:25:51] SY: And we have two podcasts.
[00:25:52] JS: That’s right. You have Base CS.
[00:25:54] SY: Yeah, I’m going through like, okay, there’s a guest pre-email and there’s a post-email.
[00:25:58] JS: Oh, my gosh, let’s turn those into canned emails that auto-send based on your spreadsheet lineup of your pipeline. Do you see? Like I’m playing a game, a lot of words, but that’s the thing.
[00:26:07] SY: I’m so excited.
[00:26:08] JS: I’ve trained my brain now. I’ve stopped to acknowledge tedious, annoying frustrations in my day. You learn to identify it and then you get much faster, and you start copying from your own work. It just becomes such an easy way to solve problems.
[00:26:25] (Music) Coming up next, Joanna tells us more about her coding journey, how she got started in coding, how she ended up majoring in computer science. Spoiler alert, someone decided for her. She also gives us a really honest answer to the question how important was her computer science degree to her coding journey after this.
[00:26:50] And now it’s time for Tales from the Command Line brought to you by Red Hat. Since we’ve been talking about open source and coding without coding, we’ve brought in Brian Feeney, a content creator at Red Hat who excels, see what I did there? At using open source tools to make their processes as efficient as possible. Hey, Brian.
[00:27:10] BF: Hey.
[00:27:11] SY: So you are very interesting to me because you didn’t start off in coding. You actually started your career as a political reporter. Is that right?
[00:27:18] BF: That’s right.
[00:27:19] SY: How did you get into coding? There were just problems I couldn’t solve any other way. I started out covering the chicken industry. I was the chicken reporter in Northwest Arkansas.
[00:27:28] SY: That is amazing. I’ve never heard of the chicken industry. I guess it makes sense, lots of people eat chicken. There has to be an industry, but I’ve never heard of someone working in the chicken industry. That’s fascinating.
[00:27:36] BF: It’s a lot of fun. We were trying to see how the avian flu was spreading from county to county and from state to state. So I started with just creating a map in Tableau based on counties based on USDA reports. Then that worked pretty well, but the more I got into creating data for journalistic purposes, there were just problems processing the data, there were problems with the data being slightly inaccurate. I couldn’t solve everything using graphical tools in Tableau. I needed to find something more useful.
[00:28:09] SY: So what were some of the things that you could do?
[00:28:12] BF: For me, I really wanted to see how the state was changing over time. It was helpful for me to, say, download the county by county uninsured rate for the state or the whole country, and then compare that year to year in a visualization in Tableau. That was pretty easy to do because it was all in a standard format.
[00:28:31] SY: Was there a particular project or moment where you said, “Okay, this is good. This is helpful, but it’s not quite enough”? Was there a moment when that happened? We were trying to track folks who are on parole, violated their parole but didn’t go back to jail. The state would only give us a PDF file of all of this data. It was a PDF of a couple hundred-page spreadsheet.
[00:28:55] SY: Wow!
[00:28:55] BF: The initial solution was to take about 10 people and manually type in the information over the course of several days to get the data back out of it. It was time consuming, but it also wasn’t entirely accurate because you can’t just type in thousands and thousands of cells and expect it to be exactly right. So I started trying to take apart the PDF, just trying to get it into an Excel file somehow, so I started writing some Java just to try to make it work. Eventually, I did get that hack together. We were able to track it.
[00:29:29] SY: I love your story because you’ve kind of dabbled in two different technical worlds, one where you are actually coding with traditional tools, but also one where you’re doing coding-like things without the tools that are, I think, traditionally considered to be programming languages like Excel, Tableau, that sort of thing. And so when we talk about the not coding side of coding, what are some of the things that you are able to create?
[00:29:55] BF: I mean, I found it really easy to do visualizations, so maps, interactive dashboards, turning to these traditionally not coding tools. That works really well for me in that sphere.
[00:30:08] SY: Yeah, tell me more about some of the things you can build, data visualizations, are we talking about pie charts, graphs, something more complex than that?
[00:30:15] BF: I think really dashboards, so looking at being able to select some subset of data and then getting a pie chart or graph or being able to zoom in on a map. It really helps people understand what’s going on if they can have that sort of graphical interface to information.
[00:30:31] SY: For folks listening who might be interested in integrating some coding without code into their day jobs and do what they do on a regular basis, what are some ways that they can get started?
[00:30:42] BF: Identifying a problem and just working until you find a solution. I think sometimes the best solution is the simplest solution. If you can do something with Excel macros, then by all means do it, get it done. If you find that that doesn’t scale to what you’re trying to do, then just start learning the basics of a programming language, any programming language. If you get to the point where you’re able to ask intelligent questions about what you’re doing to Google, then these problems aren’t so insurmountable.
[00:31:10] SY: What is the one thing that you’ve built that you are most proud of?
[00:31:15] BF: It doesn’t sound that exciting, but just tying together our intake forms to our work management system and then outputting that to a Google sheet that everyone can see because it’s decreased the time that it takes from over a month to just about a week and a half.
[00:31:30] SY: Wow! That’s a big difference.
[00:31:33] BF: I like it because it’s saved everyone so much pain and suffering, and other people are able to build on that and really make things work.
[00:31:42] (Music) And now back to the interview. So you mentioned earlier that you have a computer science degree.
[00:31:48] JS: I do.
[00:31:48] SY: And I love that you have this job that allows you to still use that engineering background, but you’re also being creative with videos and blog posts, and doing a lot of communication and that kind of thing. Tell me about the decision to get a computer science degree. Was being a developer advocate the plan the whole time and that’s why you did it?
[00:32:06] JS: I mean, obviously, this is such a well-known job that everyone aspires to.
[00:32:10] SY: Specifically, to be on this podcast, that was your goal five years ago.
[00:32:14] JS: I’ve achieved my goal. I’m done. I can retire. It’s interesting because I was very lucky. My high school offered several computer science courses. That’s not very common anymore. My father is an electrical engineer. And so we were on Linux I think in middle school.
[00:32:31] SY: That’s hardcore.
[00:32:32] JS: Well, I didn’t know I was on Linux. I just knew that’s how the computer worked and if you wanted to play a particular game, you had to boot into Windows for the game. And then I didn’t realize what I was doing at the time, but he would teach me little tricks, like how to ping a message to another computer on your local network so that I could mess with my brother and make things appear on his screen. My first computer science class, you would think that I would have been excited and planning for it. I actually didn’t even know computer science was offered at my school.
[00:33:00] SY: Interesting.
[00:33:00] JS: I didn’t know computer science was a thing. My brother, you’re learning so much about him. He was turning in both of our class sign-ups for the next year and I guess he thought that my choices were bad choices so he changed some of them and I ended up in surprise classes.
[00:33:17] SY: Wait, wait. Did you realize this?
[00:33:19] JS: No, I didn’t until I got my class schedule for the next year and I was like, “Wait, I don’t think this is what I picked.”
[00:33:26] SY: Wait. What did he not approve of?
[00:33:29] JS: Okay, so he was playing the numbers game. The very first introductory computer science class was already what we called a pre-AP class, so it got a weighted GPA if you got an A in it and multimedia, which all my friends signed up for and I signed up for so I could take classes with my friends was not weighted, and he was like, “You’re a doesn’t count so you should take this other class where your A counts more.”
[00:33:50] SY: That is smart.
[00:33:51] JS: I mean, yeah.
[00:33:52] SY: That’s good brothering.
[00:33:53] JS: He’s a smart guy. I’ll never say otherwise. Sometimes communication can help in these situations and it’s true. So I went to the class and I was like, “Okay, here we go.” And I really liked it. I really enjoyed it. Fast forward a couple years, I’ve taken all the classes now, so it’s time to apply for college and I don’t know what I want to do. I applied I think to 10 schools and just based on the school itself, I applied to various majors. And then I chose the University of Texas and I chose the CS department because I had lunch with the honors director of the department who came to Dallas specifically to have lunch with the seven of us who hadn’t responded to whether we were going to accept.
[00:34:35] SY: You were a hot commodity.
[00:34:37] JS: I mean, I am a woman in computer science.
[00:34:41] SY: Wait, were all the other people also women in computer science?
[00:34:43] JS: No, they weren’t, but that’s just the kind of guy that he was. He would drive three and a half hours to have lunch with seven students who hadn’t said yes or no. I really liked him and I was like, “Okay, I’ll study with you.” That’s how I ended up studying CS. I wasn’t always certain that it was the right choice. I contemplated changing my major multiple times. I think that’s normal. I think that’s just the nature of everything, but yeah, that’s how I ended up with my CS degree, a little bit of a pushy brother and a lot of great support.
[00:35:11] SY: Yeah. Do you remember the moments when you were thinking about dropping out?
[00:35:16] JS: Oh, my gosh, yes. I was in the computer lab. It was something like 3:30 in the morning and I was crying so hard because I couldn’t figure out what was wrong. When you’re a student, the solution at this point is if you can’t figure out what’s wrong, you delete it and you start over, but when you’re that frustrated, you’re not ready for that step. I was so frustrated. I couldn’t even go home. I had to call someone and be like, “I need you to wake up and come here and walk me home,” because I won’t leave. I remember that moment so clearly and I also remember the next day being like, well, that was dramatic.
[00:35:53] SY: I love that you’re that self-aware, though, because it would have taken me a year to come to that conclusion. For the next week, I’d be like, “No, that was going to be the end. It was almost the end.” So when you have those moments of just pure frustration and everything just not working and you’re crying, you’re in a really bad spot, what helps you bounce back? Because it sounds like that wasn’t the only time you hit that wall, but you still kept going. What kept you going?
[00:36:18] JS: You need to find a way to tell your brain to think of it differently because compile errors or coding errors or weird results, these are not obstacles keeping you from programming. This is programming.
[00:36:34] SY: Absolutely.
[00:36:35] JS: You don’t just one day get so good, get a job at Google, and sit down, and everything you type works the first time. Good programmers know how to deal with errors, to debug, to check, to sanity check, to reach for help. Bad programmers are the ones who throw their keyboard across the room and are politely asked to not work here anymore. You’re not keeping yourself from being successful. This is part of the success process.
[00:37:02] SY: That was beautiful.
[00:37:03] JS: I wish you could just flip a switch in your mind, but if I say it enough times, people will start to listen, right?
[00:37:07] SY: Yes. And it helps to hear someone else say that, too, because I think that deep down I think we know that. I think we know when we’re frustrated that it’s not going to be the end of the world, but I think we just need to hear it once in a while from someone else, especially someone like you who made it, you’re on the other side of things. You’ve accepted it.
[00:37:24] JS: But conceivably, this is as good as it gets. I can own up to still getting frustrated. I will never know of its length or size. I will never know. I will always have to search that.
[00:37:37] SY: Now that you’re in this position and it sounds like you’re really happy, do you feel like the CS degree was essential in getting to where you are? What role did that degree specifically play in your journey?
[00:37:52] JS: Nobody’s going to like this answer. I would not have this job without that CS degree, but as somebody who interviews other people for this job, I don’t care if you have a CS degree.
[00:38:03] SY: Interesting.
[00:38:05] JS: So I got this job because I was able to get an internship through my department with Google. That internship converted over to a full-time position at Google, but also, the only reason I found out developer relations is a team that exists is because my recruiter, who handled my intern conversion, road my bus all summer during my internship so we were kind of friends.
[00:38:28] SY: That’s really convenient.
[00:38:29] JS: Right. And then she was like, “Hey, you’re going to apply for this other job.” And I was like, “What is that job? This job description makes no sense. I’d rather just be a software engineer. I know what that is.” She’s like, “Yeah, but no, you’re going to really like this other job.” So I listened to her and I agreed to an interview. I would not be here if I hadn’t gone through all of that. However, you don’t need the CS degree for the majority of programming or developer jobs. A CS degree teaches you how to visualize programming concepts and that can be very valuable, but you can also be taught along the way.
[00:39:10] Okay, think of a data structure, right? You need a way to store data in memory that makes sense for the problem you’re trying to solve and in college, you get the chance to really explore and compare and contrast all of these data structures but also the weird ones. You really learn a lot about understanding a problem space and so there is an advantage. I’m not going to say that there isn’t, but it’s not a necessity. So maybe the person without a CS degree studied something else in school or had other life experiences that help them propose an interesting solution to a problem, and then somebody like me could be like, “Oh, yeah,” and we can support that solution with a try. And everyone else is like, “Don’t you mean tree?” And I’m like, “No, I don’t.”
[00:39:50] SY: What are some things that if I said, “Okay, I want to get to know Joanna, I want her to know how awesome I am and hopefully recommend me for a job at Google where she works in sometime in the next year,” what are some things that I might do or consider when trying to build an authentic relationship with you?
[00:40:07] JS: So number one, get a GitHub account. I call it a public resume. All of the code you work on, if you’re trying, I mentioned the advent of code, which is a December challenge every year and if you’re trying every challenge, then do them all on GitHub because anybody who finds you on Twitter or who you meet at a recruiting fair, you put your GitHub link on your resume and we can all see the kind of code you’ve been writing. This doesn’t mean you have to be ashamed. My JavaScript was not great at the beginning and my GitHub is laughably empty right now because I didn’t know about this until way too late but this is exactly the kind of thing. If you want to do the 30 days of JavaScript challenge, do it on GitHub so that we can all see the kind of work you’re doing or where your interests lie or what kind of programmer you are, how well you write your code, things like these. But also GitHub is collaborative.
[00:41:04] JS: Anyone else that you meet along the way, you can email them six months later and be like, “Hey, when you talked about this project, I went ahead and started it. Do you want to contribute?” and they can create pool requests and now there’s a public collaboration going on. And then someone else who might be friends with that person’s like, “Hey, that’s cool. Can I add?” And you can organically grow just by not having your code live on your local laptop. That definitely is not going to get coffee spilled on it. That’s my best advice is go and get a GitHub account, but also, it’s not fair, I act like it’s so easy to do but talk to people. It’s terrifying. I sound very extroverted. I am not. I can get very shy sometimes, but it’s practice.
[00:41:45] I’m comfortable with the types of things I have conversations about and so long as I know one person in the room, I’m pretty good. So go to rooms where you know one person and make it two, and then go back the next time they meet and maybe it’s four.
[00:41:58] SY: I like that. Yeah.
[00:41:59] JS: Just start having conversations because if I like you as a person, I don’t need to see your work. I’ll probably refer you and just answer the question honestly and be like, “I don’t really know, but they have the right vibe to be here on this team,” and I’ll let the code interview sort the rest out.
[00:42:18] SY: Now at the end of every episode, we ask our guests to fill in the blanks of three very important questions. Joanna, are you ready to fill in the blanks?
[00:42:27] JS: Okay.
[00:42:29] SY: You can do this. Number one, worst advice I’ve ever received is?
[00:42:33] JS: The worst advice I’ve ever received is to “be smart.” My entire childhood, I heard a lot of “Be smart, use your head,” and it’s an important skill, but I forgot how to listen to my gut. And there’s definitely a balance there. The worst situation of my entire life that I ever got myself into was because I ignored my gut. It was screaming at me to not do this thing and I talked myself out of it. I reasoned myself out of it. I was like, “No, this is great,” blah, blah, blah. And I wish I’d been a little less smart and a little more intuitive there.
[00:43:08] SY: I love that. Number two, my first coding project was about?
[00:43:12] JS: My first coding project was in C++. We created a maze. So we wrote a program that used a loop and a random number generating function to lay out pixels and lines and stuff inside of the terminal window. It created a maze and then you could navigate through the maze with your arrow keys because you were like a little person, but you couldn’t overlap an existing pixel or whatever, and it was super hacky because every time you moved, it’s not like you’re actually moving on the terminal, a whole new terminal screen rendered and if you kept scrolling up, you would see your whole maze. But it was a really cool introduction into a lot of different topics without needing to understand how they worked to know that they could do whole things.
[00:43:58] SY: Number three, one thing I wish I knew when I first started to code is?
[00:44:02] JS: So one thing that I wish I knew when I first started to code is that there is no such thing as an intermediate skill level.
[00:44:08] SY: Oh, tell me more about this.
[00:44:10] JS: You feel like a total novice when you’re starting and then one day, someone’s asking a question and you say, “Oh, well you have to do this. No, wait, hold on. Do I know this stuff?” So you go straight from thinking you’re a novice to realizing you’re kind of an expert. There’s no such thing as an intermediate skill level in this job.
[00:44:30] SY: I love that. I think that is a very accurate representation of things because there are things I’m very comfortable with and I’ll see myself one way, and then I’ll talk to someone and they’ll either point out some other thing that I had no idea existed. I’m like, “Wait a minute. Do I really not know what I’m talking about?” or the opposite where I’ll show them something that is really obvious to me that they didn’t think existed. I’m like, “Oh, maybe I’m like a super expert.”
[00:44:55] JS: So you’re both at once. You’re a novice and an expert in the same conversation.
[00:44:58] SY: Yeah, because there really isn’t this idea of moving through. I wish there was, honestly. It would be so much easier.
[00:45:04] JS: It would be so easy if we all just racked up our points and got our grades and then graduated to the next level.
[00:45:08] SY: Yes.
[00:45:09] JS: It’s not a real thing. It contributes to the intimidation factor, but it’s also a ridiculous factor. So at Google, our job titles, it’s an editable field. You can just type in any job title that you want. And on my team, I won’t say who but people on Twitter might be able to figure it out, there’s somebody who is the SVP of keeping it real. He used to be the VP of keeping it real and then got promoted, so we changed it to SVP of keeping it real.
[00:45:38] SY: That is amazing.
[00:45:38] JS: It’s just such a game and that’s why I get so frustrated when people feel beat down because I’m like, “No, who did this to you? It’s a game. You’ve got this.”
[00:45:50] SY: Oh, man, I would love to be SVP of keeping it real.
[00:45:53] JS: Right?
[00:45:54] SY: Wonderful. Well, thank you so much, Joanna, for teaching us all about G Suite and being a G Suite developer and Apps Scripts and all those fun stuff. It’s been real. You kept it real.
[00:46:12] And that’s the end of the show. This episode was edited and mixed by Levi Sharpe and Kristin Schwab. You can reach out to us on Twitter at CodeNewbies or send me an email, hello@codenewbie.org. Join us for our weekly Twitter chats. We’ve got our Wednesday chats at 9 P.M. Eastern Time and our weekly coding check-in every Sunday at 2 P.M. Eastern Time. For more info on the podcast, check out www.codenewbie.org/podcast. Thanks for listening. See you next week.
Copyright © Dev Community Inc.