058 - React Native development with Jennifer Robison

December 08, 2020

Jeremy speaks with Jennifer Robison (Director Of Engineering at Echobind) about React Native, Agile, and career development.

If you enjoy this episode, please consider leaving a review on Apple Podcasts or wherever you listen.

Please send any questions or comments to podcast@pluralsight.com.



Jennifer Robison is the director of engineering at Echobind. She's spent decades in IT and development, and went from an administrative assistant, to a developer, to director of engineering. She's a React Native developer and has spoken at many conferences about React Native development and testing. So let's welcome Jennifer Robison.



So how are you today, Jennifer?



I'm doing great. How are you, Jeremy?



I'm doing well. So tell a little bit about yourself and what you do?



So I am director of engineering. I've spent most of my career as a software developer. However, I kind of got into that through luck and a lot of learning on my side and then a degree after the fact. My mom was a programmer, and it was just something that kind of interested me.



Nice, so, yeah, you do have an interesting story where you started out at a certain job for a long time and then kind of decided you wanted to be into tech. What kind of spawned that decision?



So I started as an administrative assistant, and I enjoyed working on our department websites. And then just wanted to keep solving the problems and make it easier for the people on the team. Got into a little bit of business analyst work, and through that I just started diving deeper and deeper into understanding the database and the code structure, and just kind of took off from there. 



So what made you decide to go up on stage? I know recently you've done some pretty big shows and stuff. What spawned that?



I actually had a manager about, oh gosh, probably like 8 years ago, 9 years ago now, how kind of voluntold us that we needed to submit abstracts to conferences, whether that was internal conferences or external. And it really intimidated me at first. I didn't think that I really had a lot to share. And the first couple times I did it, the first time I did a workshop as a co-author with another person on my team, and it was when TypeScript was new. And you start to understand people that are coming to these, they have less experience than you do because you're obviously sharing something with them. And even if you don't know everything, they still look to you like an expert. And so that kind of got things going. And then I submitted an abstract to share my career journey back in 2015 at the Society of Women Engineers conference, and that one I think was life-changing for me just because I felt like I was able to inspire other women, that it didn't have to be the traditional path. You just have to have a goal and keep going after it.



Yeah, that's excellent. So what does code quality mean to you?



Code quality to me is knowing that what we write is going to execute in the manner that it's intended. We can write use cases and acceptance criteria. Things are written in a manner that my future self and anybody that comes after me can understand what it's supposed to be doing. So it had good naming conventions, self-documented, there's no question when you open a file of what it's supposed to be doing. There's all sorts of---you can go even further of DRY and single responsibility and all of those things, but I think some of the keys are just that self-documenting, people, even yourself 3 months down the road can go back into that code and say, oh, yeah, I remember what this is doing.



Yeah, that makes sense. So you've worked in both waterfall and agile development environments, probably kind of equally. What would you say the transition is like going from a bunch of waterfall projects into agile?



Yeah, I definitely prefer agile, short iterations. What you're working in waterfall, usually by the time you've defined all your requirements and you really start to get into that, something's already changed, especially in the industry anymore. Things are changing so rapidly that if you're not making small iterations, you're missing the mark. So for me the transition I felt like was pretty natural because I was having regular conversations anyways about what are the requirements, is this still valid? and making sure that we are going to meet the needs of the end user. I think it can be challenging for people to think about breaking them down into smaller chippable pieces of code. And at times there are, you have to hold a release for a certain set of features, but it still makes sense of like, I could push this into the main branch without everything else happening first. 



Yeah, that makes sense. So what kind of technologies have you worked with in your career, and which one is your favorite? 



I spent over 15 years really in a pure Microsoft .NET stack, so C#, SQL, and all of that, before I got into more of the BA framework. And I spent several years with Angular when it was brand new, but I can definitely tell you my favorite has been over the last 3 years with React Native. The ability to have one code base and be able to ship to both iOS and Android devices is really awesome. 



Yeah. What are some of the exciting things that are going on in the React Native world right now?



I think some of the most exciting things is seeing Microsoft actually using React Native for the Xbox store and just seeing how you can, again, have one set of code and be able to deploy to all of these definitely environments. I have been ready to dive into even working on a Mac app with React Native, just the power in having a common code base.



Yeah, and not having to focus on all those small details probably makes it pretty nice. Now I know you did a presentation about this. What can you tell us about Bitrise and Appetize.io?



Yeah, so Bitrise a continuous integration platform that is focused on mobile. So you have lots of continuous integration services. Bitrise just happens to be one that focuses on mobile specific versus web. Appetize is a really interesting, in my opinion, software as a service where you can upload your executable files for both iOS and Android. You can use them for demonstrations, you can use them for testing. But it allows you a way to send basically a URL, or you can, if you're familiar with Expo, they have a lot of like snacks, they call them, so it's like bitesize pieces. And it's like having a device, I can tell I want it to be a certain level of operating system, different dimensions, and I can start to play around and do all of my testing there. 



Oh, wow, so you're able to develop a feature and just kind of ship it off to somebody without them putting it on a device or anything? Just ship it off?



Yeah, so personally I have an Android device. I have an iOS device for testing specifically, but I don't typically use an iPhone. So if I wanted to test an application, if somebody put it up on Appetize.io and sent me the URL, I can load up the phone emulator and click on it as if it's a real device. It's pretty powerful.



Wow, so that's pretty cool. So what advice would you give to someone who wants to get started with React Native and mobile development?



Yeah, so React Native I think is a great, it has such a low barrier entry into mobile development. You can choose whether or not you want to go React Native with their CLI, or you can use some managed code through Expo, which is becoming more and more popular. They have services where you can do over-the-air updates and all sorts of things. But I think the key is really understanding some of the core JavaScript fundamentals, ES6 modules and how you can write components. There are some differences if you're coming from a web developer background. The way you write your tags might be a little different, a view instead of a div. But for the most part, it's a pretty easy transition. There's some really great tutorials out there, templates that get you started with different levels of features, and just start playing around with it.



Yeah, so I guess that would be another question. I probably should've asked this first. But for the people watching, what is the difference between React Native and React, as far as web framework?



Yeah, so React Native is built on top of the React core. React is the engine that powers a lot of the views and the DOM elements. So a lot of people are familiar with using React for doing websites and web applications, but React Native just adds another layer on top of that, which has bridging libraries that tie into the native features of iOS and Android. So it allows you to interact with the cameras and locations and all of those things.



Nice. And is it pretty much a write-once type of thing, like one set of software for all of the platforms, or are there still differences?



I have not personally done the write once and done it all, but you are supposed to be able to. I haven't had that opportunity, but there are definitely people that are working in that space, so writing components that work on both web and mobile and Windows and Mac now. So it's definitely a write-once type of scenario.



Nice, and do you know of any cool things coming down the pipe with React Native that our listeners should know about?



Hmmm, can't think of anything off the top of my head. I kind of already gave that preview. But just seeing what Microsoft, especially, is doing to have a whole team of developers that are now actually focused with React Native. I think a few years ago people got a little bit scared when Airbnb, who was so big into React Native, kind of pulled back. And now people are super excited seeing Microsoft heavily invest in this space and saying, wow, the store on Xbox is so much faster and the UI is great. So I just think that it's just going to continue to grow and gain popularity. I'm seeing more and more people say, wow, I should've tried React Native sooner.



Yeah, absolutely. That's pretty cool. So what do you do when you want to learn a new technology? So if something new catches your eye and it's a new language or framework or something, what is your approach to learning that?



Yeah, for me the best way for me to learn is to actually apply whatever the technology is to a problem that I'm currently working on. So for example, I wanted to learn about geofencing with location data a few months back. And so I had a very specific use case that we were going to use for our client, but I wasn't familiar with the technology. So I pulled up the libraries, and I'm like, this is what I'm going to need to do, and I just start working through it and then asking questions. I think that there's so many awesome tutorials out there, and different people have definitely learning styles. But for me, personally, just doing a hello, world application isn't going to cement it for me until I'm actually applying it to some project I want to do. So I think about some problem I want to solve and how can I use this to do?



Yeah, that's great. So you've had a really interesting journey, and we've talked about that. What advice would you give to Jenn the administrative assistant from Jenn the director?



Yeah, I would say, Jenn, don't give up. Don't let people tell you that you're going to be pigeonholed or that you can't do something that you think you're going to. I can honestly say, even 3 years ago, I never would've said, Jenn, you're going to be a director. I just did not see that. I definitely saw the like, you're a senior engineer. So just don't limit yourself, I think, is the key. And know when the right times are for yourself. So just because somebody else thinks it's the right time for you don't mean it's the right time either.



Yeah, that makes perfect sense. And I guess I could have also apply it to if someone else doesn't think it's the time for you to move ahead, and it might still be your time to move ahead.



I completely agree with that, yeah. And that's sometimes the indicator of where it's like, nope, time to move on and find a place where I can continue to challenge myself. 



Yeah, that's awesome. Well, thank you very much for talking with me today.



Yeah, thank you, Jeremy. It's been great.