Challenging Every Day Tasks: Andrew Maxwell with GoPro
Today, we have Andrew Maxwell from GoPro! We talk about some of the challenges he had at GoPro and other companies, across the industry. He can give us a little insight in how big companies work and differ, and what the difficulties in the everyday tasks are.
So, once again, thank you for tuning in, and let’s welcome Andrew.
Carlos: Andrew thank you so much for taking the time to the show. How are you doing today?
Andrew: Good. How are you?
Carlos: I’m doing great. I was just telling you earlier by the day that we’re recording this Apple just announced a couple of their new products and a little bit bummed about that but aside of that everything is going well.
Andrew: Yeah, I’m interested in seeing, I like the USB-C stuff that they’re doing so that part I’m interested in but the whole like adding all kind of dangles and stuff that you need to get the app mac working then it’s not that great.
Carlos: Yeah, that’s the thing for me especially if you’re, at least for us as engineers. We want something that’s just simple like… that you can take with you or whatever and then but you want to hook up anything. But anyways, I just want to thank you man for taking the time to come on the show. We’ve been chatting for a couple of weeks to make this happen so I appreciate your patience with some of the changes we had to make.
Andrew: Yeah, no worries. Glad to be able answer questions for you.
Carlos: Alright, so I think the first question just to get people to get to know you a little bit more. Tell me a little bit about your background and how did you end up at GoPro? Tell me that story.
Andrew: Yeah, the story actually goes back 2004. So in college I was actually doing animation, so 3D particle physics and stuff with python. I really liked it. And of the things for Maya is they actually had an interface where you can actually program in HTML and start building some of the tools to control the particle physics and other programming, so I really got into that. Then I had a friend that actually was doing some graphic design around the same time and he asked if I can help him out with the website, and ever since I’ve been doing it. I fell in love with the web especially with front-end portion of it. How it’s constantly changing and I’m kind of like a learning buff. So I love learning, pushing myself to a new technology and font-end web is actually where it’s at.
Carlos: Yeah, I think one of the things that are very cool about our industry is that we can learn as much as we want. It pushes us to learn but at the same time. It’s not like you need a license, right? You don’t need to be a doctor. For example you want to be a doctor. You have to have this license in order to do your job. With this, you don’t need that license. But you’re constantly pushed by yourself or pushed by the departments of your job to learn those new things. So having that sort of mindset is what got you (the job).
Andrew: Yeah, absolutely and I could say a lot of stuff for me is self taught so that the passion I have for the front end and then working with different companies over the years, working on projects, owning my own company. All those things led me to basically work with all of the modern frameworks so Angular, React, Ember, all that familiarity. Then building some of my own frameworks if necessary in terms of propriety frameworks and then now working at GoPro is been able to use that newer stuff, new modern technology and working with media so photos, videos, etcetera.
Carlos: Just before we dive into some of the other questions I have for you. So which of those frameworks? I mean, right now it’s not to me and I ask that from a point of like there’s no one better than the other at least for in general but there is one better for you, right? One that you prefer because of x, y, z. What do you prefer?
Carlos: Right, that makes a lot of sense. I mean some people would argue either way for other stuff but I see where you’re coming from. It makes a lot of sense for the type of work that you’re doing. Do you guys work also in a sort of functional approach? Do you guys adhere to that?
Andrew: Yeah, for most part we actually do and so kind of agree like it took me a long time to have actually fall in love with React. At first I didn’t like the JSX syntax and how it’s actually set up. And then after building the workflow and kind of framework that we have internally. It just made it night and day difference and the team can actually get cranking and building new features in no time.
Carlos: We all know GoPro and whoever doesn’t know what GoPro is just go and google it. But we know GoPro for your products, right? We know that you guys create these awesome products now even you guys got into like drones which I think is super cool. How does software engineering, how does like our type of engineering play a role at GoPro? Also the question is how does engineering impact the growth, the revenue or the organization overall.
Andrew: Yeah, so up until recently we only have different stack work so we have the camera app on your iPhone or Android. We have some of the Desktop app. But until recently, so end of September we actually have a major production release across the board so we had Android apps, iPhone apps, Desktop apps for both Windows and Mac and as well as web software. So pushing GoPro in the next hill if you will and start building more software related to our products so we want to be able to capture your content on your hardware so that the camera that you buy create it. So edit it where you want, make a nice little video and then share it with your friends and family and enjoy it. So that’s our big focus right now. We don’t want the content to live just on your camera and then forget about it. We actually want to be able to make that content available to you at all times and the share it with the people that you care about.
Carlos: Which is your favorite product with all the new things coming out at GoPro? What’s kind of your latest thing that you’re interested in?
Andrew: Yeah, are you talking about hardware or software?
Carlos: I’m talking about like the products that GoPro just released there or that it’s offering now in the market.
Andrew: In terms of hardware, one of the things that I’m really excited about is the drone. Obviously, it’s pretty exciting. But for me the hardware that I use the most of all of our stuff is actually that Session. If it’s in my pocket I would really go where it’s the beach to hangout friends and family and it’s so small I can just grab it, battery last for hours and I use it all the time. I wouldn’t think I would as much as I do.
Carlos: Yeah, I haven’t played around with that one but it just seem like it’s so versatile. Now, one of the questions that I always get is, you know, people tell me to ask. You know, people like you that I have on the show is like, what is somebody like you do at your company. So in your case what does a Software Engineering Manager do at GoPro? What is your mission? How do you for that mission and maybe you can tell me little bit at a high level. But then tell me like in detail how does that translate into sprint to sprint, delivery to delivery, that sort of thing.
Andrew: Yeah, absolutely. My role here at GoPro like you said is Software Engineering Manager. I’m focused on the cloud software so our web applications and web components. What that actually does is we have multiple web applications available today and we just launched them last month. So you can actually with a GoPro+ subscription. You can actually manage your content in the cloud, view it, share it to Facebook or Youtube or even create a hidden share which our private link called that. And that’s another feat of our software where we want to be able to share a burst or a time lapse. Media formats that are GoPro camera stake but other platforms actually don’t support. So one of the cool things that we created on one of my teams is private links, and that allows you to slap a bunch of media whether it’s photos, videos, or burst and share that to your friends and family with an obfuscated link. So Youtube, or Google Drive kind of link.
Carlos: So how does a typical development cycle look, right? Let’s say you’re working on a project. Give me a little bit of an overview of your kind of your cadence and that sort of thing.
Andrew: Yeah, so cadence is what we do is we actually plan out a few months ahead, a few quarters, right. And from there we get a high level idea and then we break it down into a PRD, a Product Requirement Document. And then I work with the product team as well as our core team which is a designer, a product person, an engineering manager such as myself, we have QA and we have dev ops for release. And together we flush out that product requirement document making sure that we know exactly what we want to build how it’s going to be broken down. And then from there we create user stories and tasks to be created. From there I estimate the work from a high level on terms of the complexity of the ticket what it will be and we use Fibonacci sequence. So 1, 3, 5 and 8, and from there I meet with my engineering team and then they look over the tickets. We flush out any additional information that they might need and adjust the priority of the tickets so if it’s a one, or a two, in terms of amount of work that’s going to be done.
Carlos: Got you. Usually in companies, different types of companies, project might flow from top to bottom. In others it might be bottom to top. How does this apply at GoPro?
Andrew: We actually do both so we meet with the team and we do kind of brainstorming so from the bottom up approach. Come up with ideas that we think might be really useful for the product in order to solve a problem. It’s usually solving a problem or filling a need. And so we do the brainstorming from our side from bottom down so some of the engineers, designers and product. As well as we get requirements from our executive team saying this is a high level goal that we want across the GoPro ecosystem. And we bridge those two together and we present it to our stakeholders and from there we actually set a priority top down of saying this feature is more important than this feature etcetera and then we work through that backlog and try to solve it as we can.
Carlos: What variables do you use in, I mean, do you guys use something like ROI for like prioritization of what’s going to come down to the pipeline. And I say ROI but ROI could mean like all we need to pay down to technical debt so that by itself is going to be our return of investment. But what sort of variables does the company usually cares about when it comes down to prioritizing the next set of releases for. Let’s say Q1 of 2017.
Andrew: That actually vary so from sprint of sprint I actually have, our sprint breakdown is 60, 20, 20. So we have 60% product ask, so new features or clean up the userabilty, 20% bugs, so we always want to make sure we’re flushing out bugs and making sure the product is best as we can and then 20% tech debt. In order to make sure that we’re efficient as possible as we sprint. We want to make sure we turn down that tech debt on an on-going basis so that it just doesn’t pile up and we’re stuck with an old monolithic app that can’t move. And so from a company level we actually have an ROI in terms of hey these are the features that get across the boards. So these are the most important. This is for the web team, this is what we want to get you out. Let’s see how that ranked against. What you have and then we’ll present that to our stakeholders and from there we prioritize based on that.
Carlos: I think that 60, 20, 20 is brilliant. We view some of that internally where we comes to clients and say, “Hey, this is what we propose for a given sprint.” Our sprints are shorter, they are 1 week sprints. But there is always a push back when it comes down to, “No, let’s pay the technical debt later.” How do you make case for it? And I know this is a little deviation from our original plan of questions but I think this is really interesting. This is probably something other people in your position can learn about. Like how do you push back and defend to respecting the payback of technical debt on a sprint to sprint basis.
Andrew: Yeah, so it’s actually is hard birth really at first of getting that on the board. It doesn’t add any money, or doesn’t directly impact money. Doesn’t directly impact features that we work on but the way that this is a good for anyone is that you’re always going to want have tech debt whether it’s like you’re rushing to get a feature out or once you build that you have another way of thinking about that new software. If you actually put that inside your sprint every sprint, you’re building something that you’re passionate about, the team is passionate about. So one of the big things for me, I mean, how I managed my team is that features will come and go, they are important, time come and go and due dates. What’s really important is making sure that the engineering is actually happy, right. So my focus is always making sure are you happy. And one of the things I bring as coming from an engineer myself is that what makes me happy is making sure that I can work on things that are easy, that are fun, and the tech debt is what actually will make it not fun and not make it easy. And so when I first approach this about a year and a half ago when I came to GoPro it was kind of a little bit of a wonky sell of how to get it integrated into every sprint. But over time I’ve proven that we’re able to complete features faster, better, more secure and the team is happier so they’re more willing to take on more work when the time is needed.
Carlos: So how about, maybe this is not, I don’t know if this qualifies as technical debt but let’s say you need to, let’s say React 2 comes down and the next version of something comes down. And you say, “You know what we want to implement this because of x” Is that part of that and how do you prioritize that sort of thing that might maybe take up a couple of sprints before you’re back to doing any actual feature work.
Andrew: Yeah, so that’s part of the with the 60, 20, 20 breakdown is that I work with the team and we have a stack sprint of tech debt so the team always comes up and I have them create tickets from engineering side of things that they would like to see. I also meet with them weekly to talk about architecture or design and we have a friend in Friday, we talk about new tools. And so we go through this different stack sprint of items that they want to have. And I prioritize them based on like complexity, can’t be done on one sprint, how to break it up into multiple sprints and we just do it so that constant allows us to focus and to bring in new things like React 2 or etcetera. It needs bigger frameworks because we plan for it. It’s part of our day to day cadence and weekly cadence from there we just know that it’s going to be part of our day to day work. It’s not even impactful if I need a little bit more for getting spring in some of the engineering managers, or like help. They help me beforehand or my product I say, “Hey, I need like 25%, can I do it?” And they are more happy to be flexible with that.
Carlos: Something I should have asked earlier. How many software engineering teams are there at GoPro. And maybe you can give us a bit of an idea of the size of what software engineering looks like.
Andrew: Yeah, so the size within software services were couple of a hundred. We have multiple offices so we focus on cloud computing so that’s what the San Francisco office does. A lot of our APIs, and our Dev Apps, and our Web Based Applications. We got San Diego office or Carlsbad that’s focus more of our desktop and some of our mobile applications. So our capture app. We have offices in France that’s focused on our quick editing and we’re a global company so it’s broken down across the board.
Carlos: Got you. And you managed a team that does primarily the web parts.
Andrew: Yeah, so I actually manage multiple teams. So dedicated to the websites, web applications and web components and so I might focus on the web.
Carlos: Got you, so one thing that stuck to me is, you mentioned that you estimate projects, right? Is that something that you do alone or do you bring in your team for…
Andrew: From a higher level I’ll do it. So I’ve been working with the team now for about a year and a half. And the way that I write every ticket is since I’ve been an engineer myself, I write it to, if I would actually be able to solve it myself. And the reason why I do that is the team we agree upon how many points we can actually get done in a given sprint. And from there we’ll try to work through in some of these tickets and just stack rank them, top-down, we’re going through them. If one of the items become a little bit more complex our goals is still as a team so all the engineers and myself we are one team. So if they can’t get to one of the ticket I’ll just grab it if I have time and I’ll complete it myself. So that way we are always working together to solve the problem.
Carlos: Got you, so I think you’re saving a little bit of that overhead where you do like with planning we’re you bring your entire team, calculate every single story. Is that some overhead you trying to shade down on?
Andrew: Yeah, so my goal for the engineers is actually I want them to code 7Â½ hours a day every day. So in order to make sure that that can actually happen is I’ll give first a high level estimation and 80%-90% I’m correct which has been pretty good. But before the team actually agrees who takes on the work. We walk through every ticket try to make sure we have a flush out details. There’s anything else that might have pop up. And then I actually ask them on every single ticket, does that point value look correct? Do you want it higher, do you want it lower. And we actually do kind of voting system across the whole team. And say, hey this is higher this is lower by doing thumbs up or thumbs down. And from there we actually adjust it on the fly.
Carlos: Got it. What are some of the major challenges you’ve had at GoPro? By challenge by the way, I mean like, what are some of the. And with challenges I don’t mean like negative. I mean like what are some of the things that you had to deal with in terms of like challenges of like you need to do this by certain dates. What is some of the initiatives that you’ve been successful with since you started that are big undertakings?
Andrew: Yeah, I would say there’s a couple. One of them is one when I first came on we had a decent working process in terms of story, product, design, it’s really rough in the edges because GoPro is just really building on our software teams. From there, over the last year and half we actually really flush them out, pretty consistent we have a good cadence with all the different teams. We meet weekly on this core team to flush out all of our requirements making sure that we’re all on top of what we’re working on day to day. So it was actually difficult at first. All the applications that my team has built, we had a couple of legacy one that we’ve rebuilt from scratch as well as having a brand new framework that my team has actually created. And then from there we finally launched multiple applications that are currently in production. And last month one of the big things, bigger challenges is that it was cross multiple team organization release. So we have mobile application desktop. We had the cameras all launched at the same time so it was a tremendous big deal for all of GoPro.
Carlos: Alright, so this has been very cool to get an idea of you as an engineering manager at GoPro on the kind of your priorities and how you execute. So now I have three last questions for you that are more kind of for you. Really not necessarily related to work but what advice would you give your younger less experience self. Let’s say you run into yourself couple of years back. What would you tell yourself?
Andrew: Yeah, I would say I’m definitely proud of where I’m at right now so I would actually tell him, “The hard work definitely pays off. Don’t give up. Some of the tough times it’s totally worth it dude. Always keep putting yourself on learning. Anytime you can, watch a video, grab some websites, push yourself to new tutorials. You’ll never realize when you actually need those tools.”
Carlos: That’s good advice. What’s a book you would recommend? It could be on the subjects we discuss today or any book that you think has impacted you.
Andrew: Yeah, I would say a lot of the stuff that I work on in technology, try to read blogs or articles. They are much more up to date. As soon as the book is published it’s going to be out of date pretty quickly. But one book that actually stands out is Creative Thinkering and what that is it’s basically focused on how to really be creative and change the way that you think about anything so whether it’s designing products. Just be more creative in terms of that and that was amazing for me.
Carlos: I actually have that book. I had a coach who recommended that book to me maybe two years ago. And truth be told I started it and I said, “Oh my god, this is more that read.” This is something like you have to study essentially. It is an amazing kind of exercise of a book. I need to pick it back up and thank you for the reminder actually. I’m going to go get it again. It’s somewhere here in my book shelf. Alright, so are you guys hiring now? Is part of your role at all with team building or any of the sort of thing.
Andrew: Yeah, so within GoPro we’re always looking for hiring the new best talent to help us along with our journey in software. My team are currently interviewing for different engineers so always looking for new candidates.
Carlos: Alright, so yes, so that’s brings me to my last question. How can people find you? Let’s say they want to ask you a question. They’re interested in applying, working with at GoPro. What’s the best way to apply? You know how it is. You want to work at a company and you’re sending that at cold email or a cold resume. What’s the best way to make an impact at GoPro and how can they proceed with that?
Andrew: Yeah, the best way to get hold of me. You can find me on my personal website andrewcmaxwell.com, on Twitter @amaxwell02, and anywhere online. I’m really easy to find and get a hold of. In terms of how to make a big impact for GoPro is, have a good GitHub. Let us see some of the code you’ve done. Not only it will show us some of the task or styling that you actually code with but also it will show us how passionate you are. So the more code you have out there definitely shows how you are interested. Even if it’s the real things like here’s a simple docker image that I set up. Here’s a quick, a loop or something that shows that you’re actively working all the time. So I would say with that and then passion. Show us whether it’s passion with coding, passion with the products at GoPro. One of the questions I have on interview is why GoPro? What has you excited? To be able to have people that are happy and want to push their careers. Want to push themselves into anything that actually shows that you’re actively involved with community. Just big selling points so thumbs up there.
Carlos: Alright, well Andrew man, I want to thank you so much for your time today and by the way everybody whose interested in GoPro get in contact with Andrew. Find him online. I’ll let you do your homework. Just do your homework. Show some passion. But anyways, Andrew, thank you so much. This has been a very cool interview. I want to thank you because again, I know you guys are really busy out there at GoPro and you took your time to come join me. So thank you so much for being on the show.
Andrew: Anytime, it has been great talking with you.
Carlos: Alright, Andrew, thank you so much.
Andrew: Thank you.