Speaker 2: Everybody on the podcast today we get to talk to Eric Rinkus. Eric study computer science at Michigan Technological University and graduated in 2014. Since graduating. Eric has worked as a software engineer at three different companies picking Wisconsin consensus of subsidiary Target in California, and now YouTube is it to dieruff Google also in California for engineering he's an avid gamer and snowboarder and recently the taken up Mixology at the hobby at home as well. Enjoy doing hobby coding projects at home. It was involved in competitive programming wallet, Michigan Tech. He was lucky enough to even be on Tina qualify for the ICPC World Finals in Russia in 2014 d y c Amber back cyc. Welcome everyone really excited for this podcast today. Thanks for listening. I got Brandon on the line Brennan. How you doing, man?

Speaker 3: I'm doing pretty well holidays are over now. So whenever you're listening to this is like the week after New Year's I'm back at work, which is okay, but it's always nice to be on vacation. Like that's what I would rather be doing most days. But you know,

Speaker 2: I'm back in on the first day and I everence everence chat and then talk about break-ins like the first days of wash because it's hard to get it to be be productive. Like if you're the guy on the day back to work after a holiday that's asking questions trying to schedule meetings and you don't want to be that person

Speaker 3: also like have to follow up on the email you sent like 2 weeks before Christmas that no one answered and they're like a clown I can still didn't answer. So I sent a look at everything that they corresponded to and then respond to all the ones I miss also so I guess

Speaker 2: I'm going to totally ignore everything that happened from the email perspective and just start fresh. I've heard some people do that. Just not respond.

Speaker 3: I'm going to start today.

Speaker 2: Well, anyways, yeah, I'm still on the show today. We have are gringas a friend of mine back in the Michigan Tech days really excited to hear a story and hear everything is got going on. So Eric, maybe let's start biking hearing your story and turns out how you got to where you are today

Speaker 1: so much for having me on the show today. It's really fantastic to get to talk about my experiences. So I started at Michigan Tech started studying computer science there. I was there for four years and when I graduated my first job out of school was with a company called Epic Systems there in Madison Wisconsin, and they work on electronic health records most hospitals around the country actually use their software to manage their patients data. I was there for about a year. Yeah a little over a year and then I went from there. I wanted to move out to San Francisco as a lot of people probably know a lot of the jobs for computer science for software Engineers for Tech in general is out west here in California. And so I came out here in 2015 to start working for a company called consensus and they are a electronic retail companies are owned by Target. They run the electronics department for a lot of Target stores software that runs in there to help sell connected devices and services if you will and then I was there for another year and then landed at my current job at Google. I work on video infrastructure at YouTube.

Speaker 3: That's a lot of different cool stuff. It sounds like just heading right out of college. She's going into that. Have you enjoyed what you been doing? So far

Speaker 1: for sure. Yeah. I'm definitely happiest at my current job. When I was at Epic. I was pretty antsy to get out of there. I always kind of thought of it as the sort of like first step after college and the sort of jumping board, I guess for lack of a better job of a better term to the rest of my career is kind of just a place for me. Start not to knock when I was working there anything like that. It just wasn't the right fit for me, I guess and then moving to consensus. I was pretty happy when I got a chance to come out here. I was around a lot of Michigan Tech friends from the computer science department and it was really nice kind of getting of more traditional Silicon Valley experience, I guess in terms of being in the tech industry. But again, I was still kind of wanted something more out of my career and worked really hard to try to get the job here at Google actually interviewed twice for the job. So I was pretty stoked. I finally got it.

Speaker 3: Yeah, it sounds like being out in Silicon Valley being in San Francisco working for Google account like to dream that a lot of people aspire to at least maybe in what we see if we're kind of around the fringes of computers and codeine in software engineering that they getting out there and working for that to come like the dream position. You kind of feel like that's what it's been

Speaker 1: for. Sure. Yeah, that is definitely how I'm feeling, right? I will save that growing up. I knew I wanted to be a software engineer for very long time. I was an avid gamer mostly video games when I was younger. It's expanded to board games tabletop role-playing games lately. So I've always wanted to design games but I always knew that I was a tough industry to break into as I got older and I started considering more options. What I could do working on computers working on software. I sort of settled my opinion settled on I would love to work a Google someday and it was super cool to finally have that opportunity this early in my career.

Speaker 2: Yeah, that's awesome. And it seems great seems like you're really enjoying it and seems like the company culture is fantastic. I don't I mean there's different mixes and different things but it sounds like the culture is what it typed up to be.

Speaker 1: Yeah for sure. I've been super happy with the team that I landed on their I kind of got thrown into a subject. Area that I'm definitely not familiar with I didn't have any experience with video processing when I was in college or even at either of my to previous jobs. And so I was a little scared when I first came into the job, you know, is this something I'm going to be able to do do I have the right level of expertise to do this sort of thing, but the team has been fantastic and welcoming me on helping me grow and the organization as a whole that I'm working with and is absolutely fantastic and it's been an awesome learning experience being there to being surrounded by lots of Brilliant Minds.

Speaker 2: That's great. Can we maybe dive into that technically a little bit more like you talked about this idea. If you didn't feel like you had the technical knowledge in that domain, can you help me understand? So I mean just being again I kinda is Brandon said like one of these kind of The Fringe computer people help me understand what you mean by the domain that you didn't understand and then I guess how you felt like you were able to learn and develop in that domain

Speaker 1: sure. So I work in the Processing pipeline for YouTube has you all know you might might or might not know when you upload a video to YouTube. You can upload it in a variety of different formats. Typically, we think of a format as being a combination of a container and a Kodak the Kodak being particularly important when we want to figure out how to compress that video so that we can set it over the Internet more effectively. So since we support all of these different video formats that you can upload videos with we also have to be able to support playback format on a variety of different devices different devices have native support for decoding different codex. And so we want to make sure that all of the different devices that you can play YouTube videos back on whether it's an Apple device a laptop a TV and Android device. What have you all of those devices can receive a format of that video from YouTube that is playable on that device. So in general that's kind of the the problems faced that my team and the larger video infrastructure group Works within and some of the other problems that kind of come along with that pipeline to my team in particular works as an interface over this processing engine that does all of that work. So luckily I haven't needed to have the Fine detail expertise and how this is exactly is done going from one format to another and back that sort of thing. Like we call this process transcoding. I just have to worry about how do we design the best interface so that are various clients within Google because we serve more than just YouTube videos can interact with this processing engine in an effective way and how my team can manage their video metadata effectively and serve their needs as best we can

Speaker 2: experience that you didn't have I guess the domain that you hadn't worked in at all before so I can you talk maybe a little bit about how is it different to learn a different technical domain while still having the same fundamentals

Speaker 1: sure, you come into a new domain and you might be right in your code in a language that you're familiar with or even using libraries some libraries that you're familiar with when writing that code but the problem space the algorithms your Signing the just the kind of Base knowledge that you need in order to solve some of these problems you may not be equipped with and so it's definitely intimidating coming into a new domain. Luckily. There's a large number of techniques with in software engineering that are designed to be generally applicable to many different problems faces. So it's definitely helpful to remember to know if you're coming from college, you study computer science for 4 years to pull from some of those pieces of expertise that are likely reuse and different problems faces just may be slightly modified to better suit that problems faced. It also helped me personally coming in to this group knowing that I wasn't being put on the specifically on the transcoding team that these are people that have master's degrees are phds in video processing in image processing. What have you Tumblr domains rather I'm working very closely with a lot of these experts in their field which is fantastic so I can learn from them about this problem space, but the problems that I'm personally working on on my team were a little bit more familiar based on what I've worked on at previous companies or in school and I didn't really know that that was going to be the case when I first came into the job at as I kind of started to settle into the job get over the nerves about being in this new team. It's starting to kind of settle in that. Okay. Yeah. This is definitely something that I can do and I have a fantastic team here to support knee.

Speaker 3: So Eric, I guess there's one thing that you feel like school didn't prepare you for in this role. What would that be? And I think he may be along the lines of you obviously learned a lot of technical subjects of theoretical things to as we all do often when getting a degree, but what are some of the things that maybe you weren't prepared for dinner like much more commonplace in Area of software engineering.

Speaker 1: So I think there are two different directions, I guess for an answer that come to mind on on this particular topic the first being like you said Technical and I think that college tends to focus especially when you're getting a degree in computer science specifically that college focuses a lot on Theory. There are a lot of very math heavy horses that you take and while that's fascinating and awesome and can put a lot of really really good Tools in your tool kit that are going to be foundational for what you're doing a real job. It doesn't really set you up for what it's like to write Enterprise software. So I think a good example of something like that is when it comes to say writing an API, which is an application program interface something along those lines. Basically an API is an interface to a set of functionality. So I'm writing a program that many people might want to use the functionality Pine. Program. So the API defines that interface and how users can interact with the software that I've been writing to get the functionality that there. They're hoping to get out of the software and there's a lot of it's not really so much as a complicated math problem in terms of how you design apis. It's more how do you find ways to remove friction between the code that you're writing and how your clients are interacting with it. How do you make it as easy as possible for your clients to use while the same time providing the most robust functionality that you can to them their number of other considerations that kind of go into this problem faces while but I think that when it comes down to designing an API, that's something that a lot of college courses at least in my experience don't really touch on so much. It's more there's just a problem. Solvent and the input to whatever program your reading for your project is predetermined so you don't really get that freedom that ambiguity of okay while the program generically needs to do these things. But how am I going to expose that functionality to my

Speaker 2: client? Yeah, I can get you something that I see or talking with people is this idea of college teaches me how to be a smart individual but it doesn't allow us to be able to work in the Enterprise may be another great interest example for you is his idea of it teaches me out of work in this language, but there's this whole application in the real world where there's so many inputs and outputs of each person that whether it's in a meeting and actually like making a PowerPoint presentation or literally in your case making a program that has input and output. I think it's really interesting that continues to carry over even in your case. Do you agree with that? Same of that? I college didn't allow you are or have a very good way of allowing you to learn how to interact with a huge team.

Speaker 1: No degree for the most part with that sentiment I do want to put a small astris there and say that to be fair I had at least one class in college was able to work with the team throughout the whole semester on a group project and it was nice because I was lucky enough to be in a particular semester. We got to pick that project. I know from talking to older and younger students about that. Same class. That wasn't always the case. So I think I was also a little Lucky in that respect but that's still one semester out of eight a single class within that semester. So the vast majority of the classes that I'm taking aren't teaching me how to work with a larger team like you said and even beyond the technical issues that come from building out the software the logistic issues of what it's like to not just work with a team but work with a team that's part of a larger organization and your team is interacting with other teams as well. There's Multiple layers that you're working with it. Once you get to the Enterprise level of a software development, especially at a company has large is Google.

Speaker 3: So is that like for you then when I guess in some cases you were switching teams between companies. So you leave College you go work in Epic you're there for a year you go work at consensus there and then go to Google was each of those points along the route to where we are. Now something allowed you to pick up more information. Are you technically about software engineering than also had to work in those teams and maybe in different processes by Imagine each each company does things a little bit different as you're trying to build this kind of overall body of knowledge about how you do your job?

Speaker 1: Yeah. Definitely every single job was its own learning experience and even Beyond I'm just picking up little tidbits of how to handle certain situations within the within the workspace or what it's like to write Enterprise software vs. Atkins. like software I also learned that every company that you're going to work at is very different in its own way. And I think that I was lucky enough to have a trajectory in my career where I worked at three different companies that were all very different from each other versus say somebody starts working at Facebook and then they moved to Apple and then they move to Google. Those are three very different companies, but there's going to be a lot more overlap between those companies versus working at a software company in the midwest like epic that has some of those Silicon Valley tendencies that allow the company's out here try to have in terms of culture, but it's still ran very very differently from a West Coast company then moving to a company like consensus that was originally a small startup and still kind of felt like one but is now absorbed by this larger company so you kind of feel Field at tension between the agility of a start-up versus the safety and bureaucracy of a of a larger Corporation. And then finally Landing in that larger company that admittedly is sort of set the culture standard for a lot of the tech company culture in in the Bay Area and and around the world not so much and lately. I think they're a lot more companies contributing to those to those Tendencies book Google certainly started a lot of the trends.

Speaker 2: It sounds very interesting that the different Dynamics between companies that I think that brought her there for a lot of people. I'm wondering if you can maybe maybe explain that more technically. I think what I'm interested here is something that has someone to go to the peripheries of a programming mean like a self-taught programmer. Have a lot of experience I if I write small programs myself like the okay, maybe I'll write to two things interact with each other whatever its it seems amazing to me that you could have literally Thousands of people working on essentially one body of code and have it all works cuz for me if I write two things interact with each other, I feel like I have to intimately know what both things are doing in order to understand how they're going to actually work effectively together. And so I'm curious maybe if you could just give a little bit of time talking about how do you sit in the bigger picture in terms of you write the code? How does it go through the organization and how does it actually work once all the thousands of people that have written their small bits comes together into one functioning thing.

Speaker 1: Sure. I think that really goes right back to what I was describing earlier about designing an API that is really apis exist into exactly solve these sorts of problems. I have a team of Eight other Engineers that I'm working on right now and the transcoding team has their own set of you know, 10 or so engineer's and then there is another team that writes the framework for that engine that's got another 10 or so engineers and so on and so forth. There's all these different teams that when you look at just their projects Shore maybe you can digest and see how you're able to manage that work among spill 8 to 10 people. But in order to get all of these disparate projects working together to serve one larger purpose, that's where software Engineers write apis and say, okay. Me on the Venom team writing this interface for the processing engine. We have XY and Z entry points into this API to do three different operations that we support So then somebody on YouTube or Team on YouTube that says, okay. I'm the upload steam. I have this video. I now need to get it transported and stored so that we can serve it back to the rest of our clients. I know that you've defined these three operations as a part of your public API. I don't need to worry about what the underlying implementation of those operations are I just need to know what that contract is in terms of how to interface with your system similar lead my team interacts with an API that the Viper team. They're the ones that make the the the processing engine. They have a similar API that they put out and we say okay, we don't need to know the details of how your transcoding these videos so much but we just need to know what your contract is in order to perform this discrete set of operations that that we need to have access to and so then we're able to call into those those various operations as well. There's a variety of different ways. You can Implement an API there a variety of different ways. You can communicate between two different pieces of software in order to send Save requests over to that API and it's really just one of the most challenging parts of working within a large Enterprise organization or even just an organization that maybe is writing software that other companies can plug their software into now you're talkin about cross-company boundaries. The one of the most challenging things is figuring out what that API needs to be because the functionality the core functionality our system is already to find is relatively well-defined. You know what you want the system to do now you have to figure out what's the best way the simplest way the most effective way for our clients to interact with this functionality without overwhelming them with 80 90 hundred different hooks that they can plug into

Speaker 3: are those the kind of decisions then that you would make or is that is that a member of your team or is that going to come down from maybe a larger project manager then with all these decisions that have to be made about how you're making an API how you can interface with medium say outside customers in this case.

Speaker 1: So that's getting into something that's definitely going to be in organizational decision. So for example, when I was working at Epic, I personally did not have that much control over how to say P I was going to be going to get designed it was all Is very different type of system. So the there wasn't as clear-cut of apis being designed within with an epic system when I moved over to consensus. I had a little bit more say in how these apis were gang design But ultimately there is a product manager that was telling me. Hey, we need to be able to do X Y and Z thing. Make your API so that you can support these things. So it was sort of like a 50/50 deal where there's a lot that's being dictated me to me from the from the business side. And then I'm making some decisions on how I can best fit these needs to be

Speaker 2: dictated to largely be the size of your company for a smaller company imagine you have more bandwidth to be able to do what you want. And I mean you have to live with more of the decisions that you make cuz I assume from a software architect position. That's a challenging thing to understand it gif you sent these rules of apis need to be designed like this to know that the battle function as it gets expanded out into whatever it becomes.

Speaker 1: Oh, yeah scalability is always an issue. You know, how do we say? Okay, this is this is the functionality we have right now, but we can Envision all of these other things that we may want to add to the system that can add value for our customers. So right in your code to be what we call extensible. And general use or running your country modular. So it's like really really small easily digestible chunks that you split your coat up into so that you can easily plug in more chunks that bring in more functionality that's always a really big consideration as well in terms of how you design your system and that can have an impact obviously on the API that you're writing because suddenly you may have functionality. That means that you're you're going to need to expose a new way of plugging into that functionality for your clients, but it's also a really big consideration in terms of just how you maintain your system. How do you make your life easier moving into the future so that if you want to add new stuff, you're not going to be hating all of the decisions you made in the past.

Speaker 3: What does all this look like for you than on a day-to-day basis? I think hopefully is society the whole week in somewhat move past the idea that people who are doing software engineering computer programming. Looking for a living that are not just sitting around and hoodies with their hoods up in the headphones on Tony at the world. But what does it look like for you on a daily basis in terms of how much time are you are you writing software? Are you are you stuck in meetings a lot? Just like everyone else. Is there a lot of team collaboration? What would an average day look like

Speaker 1: if I had to give a average number on how much time I spend coding I usually fall back and say around 60 or 70% of my time coding again. That's something that can change from company to company depending on what sort of responsibilities you're going to have and how the company decides that they want to run their software engineering department. But at least a Google that's I think those numbers are roughly accurate and what makes it interesting is that it changes over time. I'm not coming in and doing the same thing every single day, which is what makes the whole job really exciting and really rewarding when I'm starting up a new project. I might not be doing a whole lot of coding right off the bat. There's going to be a lot of design work that needs to Done and one of the things that's really nice about Google is that I get to write my own designs pretty early on in my career here. So when I first came in I might be working on designs or or reading designs that another engineer has been on the team for a while wrote but pretty quickly within within a year. I was writing my own designs. And so I go through that whole process I could take, you know, a few weeks however long however complicated the design is and then I can really start getting into the meat of the coding and so I'm spending most of my time at that point coding up the project getting my tasks done meeting my milestones and then once you get to the launch of the project again that's going to be less coding and a lot more monitoring. So we're starting to roll out whatever software changes that we made for this project and we want to make sure we're monitoring them making sure they're working properly. We want to make sure that we're setting up alerts we have automated alerting systems at Google and there are Plenty of different solutions that other companies use as well for this to tell us if something is breaking within our system. So it's a bit of a cycle in terms of where you're at with your project in terms of meetings. I personally don't find myself in meetings. A lot of meetings frequently. There will be spikes at times where oh, you know this random week. I had a lot of meeting so this random day I was stuck in meetings all day, but it's nice that I feel like I'm relatively free within my job to just get my work done and not be stuck in meetings all the time. But I do know that as I progressed within Google as I start getting promoted and reach higher levels within the engineering ladder that will likely change over time. I'll likely be in more meetings as I'm as I become more influential, I guess in the vision of our software in our project.

Speaker 2: So it sounds like you have this project does it mean that you're also supporting many project meaning like you might be in the mixture? Continues to run stable and project a but you're also developing project be in parallel.

Speaker 1: Definitely you want to make sure that your engineer is always have something to do. It's not not a matter of overworking your engineer, but you don't want that dead time because if you have engineer's that aren't doing any work, they're not going to be happy. You're not going to be happy because you're not getting you know, everything that you can out of them. And so yeah the project starting up will certainly overlap with the end of a project and I might even be running to projects in parallel. It could be that rather than doing one really big project that you know, I'm going to need to focus all of my time on I may be working on two smaller projects in parallel and those projects may not have started at the same time. So I might be managing two different projects read in three different projects at different stages within their life cycle.

Speaker 2: In that balance of keeping people sufficiently busy, but also not putting too much on their plate. So they're talking analysis paralysis of what to do every day cuz they're just got too many things to do

Speaker 1: in lucky to have two phenomenal managers during my time at Google. I've been on the same team since I started a Google but I'm on my second manager now within this team by my first one move to a different team and they both been absolutely fantastic great mentors. And yeah, like you said, it's impressive how they're able to manage all of these different feature requests and bugs and scalability problems. All these different things that need to go into our system or be fixed or worked on with in our system and be able to prioritize those and and assign them effectively

Speaker 3: Eric you mention that further on your career your day today might change your job requirements. Are your responsibilities might change. What does it look like in your position? So it's so I guess maybe two questions. What is the current title of the position you're in and what are the Career paths from here on

Speaker 1: so if I assume that I'm just going to be staying at Google. There's what we call ladders internally and they defined the progression of your career to a certain General sense within your job role. So I would be on the software engineering ladder software Engineers typically come in at what we call Level 3. They're Associated titles for each of the levels that I can't remember offhand what they are. Usually we just speak in terms of what's you know, what number are you on the ladder? So if you're fresh out of college, you got a Bachelor's in computer science of your starting your first job. You're going to start at level three on the engineering ladder usually and then it goes all the way up to say like level 9 or something like that. I think it goes pretty high up. One of the really nice things about Google is that you can And there's not really a ceiling for you. If you're an engineer, they explicitly wanted to design the career progression for an engineer so that if you are an exceptional engineer, you can continue progressing your career indefinitely and continue taking on more challenging problems more ambiguous problems and larger problems that could even impact the company at large as opposed to just your product. So right now I'm a level for working on trying to make my way to level five and many engineer's will end up at level 5 and just kind of stay there that's seems to be from what I can tell the natural progression for many Engineers is going through to 5, but certainly there are plenty that make it Beyond 5 to 6 or 7 or higher.

Speaker 2: Leveling up how fitting do you celebrate? It was like a level up already like this. I just it's funny the way you said it like I'm working on level 5. It seems like you're you're working on, you know, leveling up

Speaker 1: the cracks me up. Its we don't there used to be a culture around, you know, celebrating promos and some of that has kind of gone away I guess but yeah, it's always, you know, it's always really exciting whenever somebody on your team gets promoted. Usually at the very least everyone go out to lunch together and have a little celebration. You don't normally see like a larger organization like celebrating ya hear all the people in our organization that got promoted just to make sure that you know, anybody who may be didn't get promoted that cycle isn't feeling left out

Speaker 2: to go back to your ladder, is that just the technical ladder or is management also included in that same lighter

Speaker 1: that letter is just technical that I was describing. I think the numbers are relatively normalized to be roughly translated oil in terms of you. What experience or expertise you have from ladder to ladder? But there's going to be a different ladder for managers and for say like product managers or project managers or team managers, whatever business people probably have their own ladder to I'm not entirely sure. I'm just familiar with the engineering ladder. What are some of the

Speaker 3: basic requirements for someone to even start getting a job at Google you came there after working it to other companies before is that how it is for most people it's already having industry experience before coming into the company or are there other people getting hired right out of college

Speaker 1: to get hired directly out of college. I'm actually mentoring one of the new team members that just came on to our group and he came straight out of college actually, so it's certainly very common actually stopped like a it's not an outlier situation. Either that you got a job at Google straight out of college. There is spy situations where that happens. So it's really just kind of up to you and what your particular career trajectory. In terms of being ready for getting that job. That's a hard thing for me to kind of say in concrete turns. Obviously. I can't talk. What specific interview questions I'm going to be asking what I interview a candidate, but in general we look for people that has strong problem solving skills have a pretty good bass line in terms of computer science theory it's not a strict requirement. I don't think that you have a degree in computer science, but there is a lot of techniques that you would learn in such a degree that are extremely invaluable throughout any problems faced with in software engineering we like our candidates to to have those skills. And then on top of that just knowing that you already know how to code we don't care if you code in a language that maybe the team you land on doesn't use we just want to make sure that you have coding skills and in general, you know how to Good clean code

Speaker 3: is interesting what you said about not everyone having a computer science degree and being able to work at Google. I think from my perspective. It's I'm an engineer because I have a degree not necessarily because of the work that I do and so I'm interested to hear your take on that in terms of two people value that degree more than others or is it is it just technical chops? If you can show that you are competent and you can form those skills than that's all you need. We don't even care.

Speaker 1: Yeah for sure when I go to interview a candidate a Google I'll take a peek at their resume just out of curiosity see where they have experienced what kind of experience they have. It can sort of help guide maybe some of the questions that I might decide to ask that candidate because I might want to drill into some of that expertise, but I'm not explicitly looking for them to have a computer science degree having one is certainly useful from a practical standpoint because you know to get that degree, there are a lot of things that you have to learn and ski So you'll have to learn that are going to be very useful in the workplace. But I think that's offer engineering specifically is pretty unique in the sense that I can grab a laptop get internet connection pop it open and start learning how to program which is super cool to think about that. You could really become just in your bedroom working on coding projects if you put in that time a fantastic and and very knowledgeable engineer and I may be speaking out of turn here. So I apologize if my my unfamiliarity with other engineering discipline starts to show but what I think of a mechanical engineer and contrast, you know, your what's a designing parts for a tooling company. That's something that's going to be a lot more challenging to do if I'm just grabbing a laptop to a cheap laptop with an internet connection and starting to work. You know, there's you have to grab say CAD software that you want to use to design those parts. You need to know what parts are designing. And then even then you need to get those parts manufactured see how well they perform all that sort of stuff. So I think that software engineering is just if you're not going to college or if you didn't go to college or if you just study something else in college. It's a lot more approachable to the general public to try getting into that particular discipline

Speaker 3: that I can definitely understand that I think in my job specifically, I can't just work from home by Friday. I have to be at work working in vehicles doing stuff on a work computer. So you're not far off in that.

Speaker 2: Are you able to work from home.

Speaker 1: Play funny enough I did today. So I can't it's a Google there is a pretty generous work-from-home policy. So it's not recommended or really encouraged that you have a permanent work from home or a permanent work remote setup within your team. Google typically likes you to be present more often than not. So usually it's just a situation like oh, you know, I have a doctors appointment in the middle of the day. That's much closer to home than it is to the office rather than throwing this big old commute in the middle of the day. That's just going to stop out my work time. I'm just going to work from home pop out for us a 30 minutes for the doctor's appointment. That's 5 minutes from my house come back and finish out the day working from home, or maybe I feel like I might be coming down with a cold or something don't want to get people in the office sick. I might decide to work from home that day but in general I try to be in the office and we really want people to be in the office because you really are more productive when you can be around your teammates and be able to easily communicate with them just on an ad-hoc basis.

Speaker 2: I agree. I really like the work from home for Lassa fever as a way to mitigate obvious Inn efficiencies in work em in your case is different in the commuting out west from what I know is atrocious. So this idea of how can I help prevent my Productive employee from being unproductive for 2 hours a day sitting in their car. And what ways can I help Empower my employees to be more productive. I think it sounds like the way that implemented a Google it's very appropriate in that regard. It say try to be in as much as possible. But if there's a logical situation where you're going to be really unproductive just because about a policy if you have to work in the office, then let's change it up and be smart about it.

Speaker 1: Yeah for sure. That's I think you hit the nail on the head there. What do you do to

Speaker 3: stay any up-to-date in the field? And and maybe I'm thinking you have any side projects to do at home. Are you big into doing your own coding projects for for fun? As a hobby at home is a way to to keep learning or maybe just exercised what you're doing at work and maybe a different aspect or or do you even have to do some more formal education at work on the job type provided training that it allows you to queue up to date because it seems like a landscape is changing. Almost daily in terms of what's popular what people have to learn what new software language comes out and I imagine learning all that can be quite a challenge or or maybe maybe in your case. It's it's less of a change in a company and more of what happens for everyone in the hobby side.

Speaker 1: Yeah. It's definitely a ever-changing landscape in terms of what's popular what's growing in software engineering and if you're an independent coder, maybe you're just learning at home on the side or you're doing independent Contracting work that can be really intimidating to stay on top of especially if you're somebody that works in the front end. So you're you know, designing websites design and user interfaces that people are interacting with JavaScript is really really nouturios for having libraries that change from day-to-day. What's popular must not once you're at a company on the other hand, you know, things are a lot more static. There are standards within the There are chosen libraries that have been approved. So it's not as big of an issue there, but you're right. I do like to try to stay on top of what's kind of changing an industry when I'm at home to at least some degree. And so I will do coding projects at home. I guess I say I do it to stay on top of what's going on in industry, but also a pretty pretty big part is I just enjoy solving problems little tiny coding problems, maybe like really nasty problems that don't have a whole lot of practical application maybe within what I'm working on but they're just fun for me to Sauce like tiny little riddles. And so I'll look for different projects online. Like there is topcoder is one website. We just came out of the holiday season. There is a website called Advent of code that goes up every year that's like a digital Advent calendar where every single day on the calendar is a different coding problem that split up into two parts and I'll use those sorts of projects or websites. To help myself, maybe learn a new language. So I've recently finished this year's Advent of code or last year's I guess and I used as an opportunity to teach myself a language called rust not a language that I'm going to be using at work. My team codes primarily in C plus plus and go but it was just really cool to be able to learn this new Young language that seems to have a lot of really awesome potential within the industry and I I I hope that it continues to grow

Speaker 2: for someone that knows a lot of languages like yourself. How what advice would you give to someone who starting maybe they're feel really good in one language at picking up the second one. Are there some things that you would recommend to that person that would help them as they advance in their career without learned a Nintendo languages.

Speaker 1: So I would say actually not to worry about it too much. A lot of companies will not necessarily expect you to be an expertise in a specific language. There's certainly plenty that are they'll post on the job description. You know, we want somebody that knows p h e or we want somebody that knows Python and obviously then if you really want that job. Yeah, you're going to have to go and learn that language but I wouldn't necessarily make it a point unless it's just something that you really enjoy doing to go out and learn a wide breadth of languages if you learn one language and get really really good at it. Then it makes it a lot easier to learn other programming languages there different paradigms out there different designs. And so some languages can look really really weird if you're coming from a very different language, but at the end of the day, there's a lot of core programming Concepts that are shared that underpin a lot of these languages. So I would say if you're really good at one language in you're looking to expand to another one you can find one that seems to be Use really commonly cplusplus Java python JavaScript. Those are for extremely common languages with an industry pick up one of those and give it a shot and start solving some problems and get familiar with it. Otherwise, if you're perfectly comfortable doing your work your personal projects and whatever language you chosen, I would say do it opportunistically, you know, if you're looking at a job opportunity that really interests you and it appears to require a particular language use that as your impetus, I guess to start learning that new language because you'll pick up on it probably faster than then you would expect to if you're pretty proficient in a different language.

Speaker 2: I love the parallels to language programming language is so perfect but it's very similar to even spoken language. A lot of people say a few pick up one language to pick up another it gets easier and easier because while some things are different a lot of things are the same like and I think that's awesome because then they'll just seems to fit so well to computer programming languages. Well if you know Variable is yeah, maybe you descend taxes different between languages but it's still if what you understand architecture. Then you're just really just figuring out the syntax

Speaker 1: exactly knowing it's really if you know what you want to do in a program. It's really easy to just hop online Google what you're trying to do for your particular language and see either if your language supports or if you maybe need to import a library that allows you to do what you're trying to do or what have you. So the the more important part is knowing what you want to do from a very technical sense. And then it's jumping off to new language becomes just a matter of entering the cycle of Google what I need to do. Implement it start to memorize it move on to the next thing.

Speaker 2: Does a professional in the field of this case where you Google things a lot? Is that the tool meaning, you know as a professional person who was going to go out and figure out how to do things with Google be your tool to try to figure out can I do X in this language

Speaker 1: or I'll usually just throw it into Google and I know I personally know that I'm going to get results from a few different sites that I visit frequently on that particular topic. So if you're talking about the Civic sites that I'm going to stack Overflow is a really common won any software Engineers that might be listening to this episode have probably been stackoverflow countless times for you. No advice on how to solve a programming problem or just to see if somebody else had a similar problem is them read it honestly isn't a bad place to go to sometimes especially for if you're dealing with a young language like rust it could really the language or the even if it's a framework that you're learning this new as well has a really active Community odds are he'll be on Reddit or maybe Formsite run by the people that I designed that language or framework and an even going on to a place like GitHub, which is a service where people can store their coding projects and searching through GitHub for a library that might be useful for what they're trying to do is another good resource, but all of these things are easily accessible if you just kind of Google the problem and you'll start to recognize the different websites that are probably going to get you the best answers

Speaker 3: when you're at Michigan Tech you were actually competing in programming contest. I'm really interested to learn more about that from you in and what that was like,

Speaker 1: yeah. That was that was not something I ever envisioned myself doing until I did it it was it was pretty cool. So the contest that I entered in were part of ICPC, which is the Intercollegiate programming contest. It's a global contest. This contest is put on by the Association of Computing Machinery ACM and the kind of General format of these contests is that you're on a team of three people to strict requirement that you have three people. You can't answer with fewer and you get a set of problems that you need to solve within 3 hours. I think if I'm remembering correctly and you might get anywhere from 8 to 12 problems. It really depends on the contest and the difficulty of the problems that year and so you want to try to solve all of those problems as quickly as you can. So every time you see you solve a problem you send the code you throw the code onto a flash drive or you transmit in some way to a judge they run the inputs for that particular problem for your code. And if you get the correct answers quickly enough, then they consider you as having solved that problem and you get a number of points equal to the number of minutes that have passed since the start of the Test so if you solve a problem say 20 minutes into the contest that problem is worth 20 points you solve the next problem 30 minutes into the contest that problem was worth 30 points to sort of like golf or you want the fewest points possible. And then the rankings are done by first spy who sold the most problems and then broken down by points. You also get penalties if you submit an incorrect solution, so you're always trying to make sure that you know for sure that you're solving the problem correctly before you submit it because if you end up getting it wrong and have to rewrite your solution that your actions not only are you wasting time, but you're also getting a point penalty. If you do ultimately solve that problem

Speaker 3: soon as it's kind of like a des Sports of of computer programming in some ways,

Speaker 1: I guess if you want to think about it that way I did manage to make it to the World Finals one year. I will admit that. I was very lucky to be on the team of one very brilliant computer scientist and one very brilliant mathematician. So I can't really claim a whole lot of credit for getting us to the World Finals. But there were I think a hundred teams or 300 teams at the World Finals of three contestants each and these are from regions all over the world. So, you know, there might have been say Ten teams from the US or something like that. I don't member exactly how many so they're certainly many people around the world many students around the world are doing these programming contest, but I wouldn't necessarily call it as something as big as like football or Esports or basketball or what have you like a traditional sport, but it certainly closer we got

Speaker 2: it sounds like a lot of fun sounds like a cool way to take something that you love and do it in a fun way and have you learned while you do it. I'm sure you learned an incredible amount why you did that is awesome. I think I'd like to transition, you know, we're coming up on time and things but one thing I really want to get from you is this idea? You're a person who's gone through a change in life that I think a lot of people Have thought about whether they can do it or should do it or want to do it. And it's this idea of moving Westward. I mean essentially moving from the Midwest in your case moving West and working for a tech company that idea I think it wasn't in a lot of people's minds and I'm just curious your reflection on that both both of the idea of as you thought about moving West you talked a little bit about you needed to because if that's the software engineering club, but maybe we can talk a little bit about that. But then really more about your reflection of what it's like now that you've been there wasn't what you thought her or anything else.

Speaker 1: So being Outlast is kind of like if you went to school at a Midwestern school then being out west as a software engineer can kind of be this gleaming gem something that you really want to strive towards and that was certainly the case for me and I when I first got out here, I was super excited. I was thinking, you know, I finally made it. This is I'm out working in Silicon Valley. I'm working in San Francisco. That must mean I finally made it as a software engineer and I think the first piece of advice I would give would be the caution people that thinking that you have to make it to the Bay Area to be a successful software engineer cuz that's definitely not the case. You can be a phenomenal software engineer a phenomenally successful software engineer as well in a variety of different places not just around this country, but around the world. It's an exploding industry and the Bay Area is certainly a tech Hub and one of if not the largest tech hubs in the world, but can only expand so far companies are moving to cities like Seattle or Denver. There is plenty of tech opportunities in New York and Boston. So if you're looking at San Francisco is like I have to be there to be a successful engineer, but you don't really want to be out there. You're not sure if it's a place that you want to live then do yourself a favor and Italy look in either your location if you if you're in a place that you like or look at other cities that you may be interested in cuz I think you'll be surprised at how many different opportunities that you can find. Even if you want to work at Google for example, Google has plenty of offices all over the country and all over the globe. So if being in the Bay Area itself if being there as a place to live is not necessarily an attractive thing to you then look at those other locations to and and you might be a lot happier for it for me personally. I was young I'm happy to have moved out here, but it's certainly not as awesome as I think maybe I had originally hiked it up to be in my head. I don't regret coming out here, but I don't think I'm going to be out here long-term necessarily eventually. I'm probably going to be looking at other cities that may be better fit my lifestyle and in my culture that I'll move to to to work out in the future. Yelp any of those cities that that I'd be interested in working in have Google at them to which is makes it easy to transfer

Speaker 3: some really good advice and interesting to hear your story in that you don't necessarily have to go across the country to find something you might just be able to find something in in your own your own Community or at least you're your own state if you're looking for it for sure

Speaker 1: and I don't mean to sound discouraging either, you know, if you really feel that the Bay Area is where you want to be in that's a place that you want to live then Banco Chase it like if that's your dream do it and you know work hard at it and it'll be really rewarding when she once you achieve it.

Speaker 2: I think it's great to have people realize to this idea of move to a place where you want to live. It's fortunate that did that career allows you to do that. If you have an environment that you want to live in go there and you can also do this job at me some some jobs. You can't do that. Sometimes you have to be in this geographic location to do it. And I think the sounds like that's not the case for this which I mean assume based on programming in due to being able to have an internet connection. You pretty pretty much good to go. But I think even with that though, I also felt like I was a similar mentality like you have to move to the West Coast if you want to be serious about computer science in software engineering, but I think it's awesome that that's not the case.

Speaker 1: Yeah, yeah for sure you hit the nail on the head and I think that's something that I wish I had known a little bit better or at least had been told when I was in college and really hyping up this dream of going out west that you know, there are plenty of amazing opportunities and in other cities as well. Like I said, I don't regret it, but I think that's probably one of the best pieces of advice that I can give in terms of where you go with your career if you're looking to get into software engineering

Speaker 3: Awesome. Will Eric before we let you go. Do you have any final advice for someone who might be in college or is just starting out in their career in software engineering. What's that one party piece of wisdom. You are you wish you might have known before you started

Speaker 1: right around test. If your coding right around test, you know, you'll hate doing it, but you'll love that you did it down the road.

Speaker 3: There it is. Alright,

Speaker 2: I appreciate Eric. Have a good day, man. Been another great episode relation to talk to Eric about software engineering. I think you did a great job explaining it to someone who has like that periphery knowledge of programming but to really see how you take that and run with it and make it your career.

Speaker 3: Yeah. Definitely. He did a good job explaining all that and I didn't really know what happens behind the scenes at a lot of these big internet programs were using with its YouTube Google or whatever. So it will be interesting to see how that's working and how it's similar to other things and Engineering of products. We use daily noticed a huge team behind it in there. They're doing all the different jobs. They have to do to make that happen.

Speaker 2: Yeah, I think for me one of the most interesting takeaways is this idea of Enterprise programming is a lot different than solo programming largely built around this API difference, but I think there's a lot of Engineers that probably do some very basic programming frequently, you know building their own basic code and I think it's really helpful to see how you could expand that into more robust through apis and other things, but I think it's also just good for People who are maybe in college or maybe think about career change going into it that it is different. It's a different skill-set being able to program and then to be able to do Enterprise programming and I think it's good to have that big picture and being tenfold by the expression College. I mean the discussion around College may be helping with that a little bit but definitely not the best environment to really really gain a lot of that Enterprise programming expertise that there was a a really

Speaker 3: keypoint. Yeah. I totally agree. I thought his comment on on languages specifically was pretty interesting how it's not necessarily expected for you to know all the languages. You might be using in the job. I think I was thinking about myself when I was trying to learn how to program a code in the side was always searching. Like what is the best programming language to learn to start and you get all these different opinionated post about her something but for people out there doing it, it sounds like it's much more like do you have kind of these basic technical skills and problem-solving skills, and if you have those you can learn a language if you are Understand the basics of it and go from there

Speaker 2: cuz it's hardly seems like it's so daunting like there's so many languages but get good at 1 and then you can transfer those skills as needed for the job.

Speaker 3: Yeah. I don't know so plan on becoming a software engineer anytime soon. But I feel like I have a better idea of what I would need to do

Speaker 2: is coming moving to the West Coast. I thought that was a Michigan thing. It seems that mean maybe it's not the case now, but I feel like 5-10 years ago. It seemed like that was that was the thing move west and that's enlightening and I think positive that his opinion on that nobility that you don't necessarily have to guess you really don't have to you know, pick the place you want to live and there's likely a lot of opportunity there.

Speaker 3: Yeah. I think there's a lot of opportunities that we might not think of initially. I think where I work in automotive is actually a huge number of software Engineers writing it. It may not be the software that we think I've on our laptops around the internet but software is powering the electronics in the control systems behind a lot of things to eat. Everyday and that for someone there might be opportunities in Industries, they weren't thinking about and maybe they can apply their skills to solve solve different problems Beyond just cruising through a web page or making the newest latest greatest app.

Speaker 2: Old Man episode. Thanks for your time. The discussion. Hope you have a great week buddy

Speaker 3: who's episode of engineer your career with Troy Bauman and Brennan Tamarac for more information about the show visit our website at byc podcast.com there you can find show notes for each episode and get in touch with Troy know if you or someone, you know are an engineer with an interesting or even not so interesting career journey, I would like to be on the show go on the website send us a short bio and we made it to invite you to come on and share your story. And finally if you want to show your support, please rate review like or subscribe to the show on your podcast player of choice.