Kyle lee

Kyle Lee

Senior Developer Advocate Amazon Web Services

Kyle Lee is a self-taught iOS Engineer with over five years of software development experience. He is currently a senior developer advocate at Amazon Web Services.

Description

In this episode, we talk about how to build an app from idea to maintenance with Kyle Lee, senior developer advocate at Amazon Web Services. Kyle talks about having some trouble with JavaScript and then diving into mobile development instead, his advice for learning the basics of mobile app development, and where he draws inspiration from.

Show Notes

Transcript

[00:00:05] SY: Welcome to the CodeNewbie Podcast where we talk to people on their coding journey in hopes of helping you on yours. I’m your host, Saron, and today we’re talking about how to build an app from idea to maintenance with Kyle Lee, Senior Developer Advocate at AWS.

[00:00:19] KL: You want to release the MVP, the Minimum Viable Product, the most ugly MVP that you can and get it out there that’s something that’s functional. Because once you do that, you’re going to feel much more accomplished and you’re going to be more motivated to keep pushing forward.

[00:00:34] SY: If you have a question for Kyle after listening, don’t miss the Ask Me Anything Session he’s hosting on the CodeNewbie Community Forum. Just head to community.codenewbie.org, and you’ll find his thread on our homepage and he’ll answer you directly in the comments. That’s community.codenewbie.org. In this episode, Kyle talks about having some trouble with JavaScript and then diving into mobile development instead, his advice for learning the basics of mobile app development and where he draws inspiration after this.

[MUSIC BREAK]

[AD]

[00:01:15] TwilioQuest is a desktop roleplaying game for Mac, Windows, and Linux to teach you real world developer skills. Take up the tools of software development, become an operator, save the cloud. Download and play TwilioQuest for free at twilio.com/quest.

[00:01:32] Ambassador Labs enables developers to ship software faster on Kubernetes. Sponsor of both the Ambassador API Gateway and Telepresence open source projects, Ambassador Labs is used by tens of thousands of developers worldwide. Learn more at getambassador.io.

[00:01:50] RudderStack is the Smart Customer Data Pipeline. Easily build pipelines connecting your whole customer data stack, then make them smarter by ingesting and activating enriched data from your warehouse, enabling identity stitching and advanced use cases like lead scoring and in-app personalization. Start building a smarter customer data pipeline today. Sign up for free at rudderstack.com.

[00:02:15] New Relic helps engineering teams all over the world visualize, analyze, and troubleshoot their software. Discover why some of the most influential companies trust the New Relic One observability platform for better uptime and performance, greater scale, faster time to market, and more perfect software at developer.newrelic.com.

[AD ENDS]

[00:02:41] SY: Thank you so much for being here.

[00:02:42] KL: Thanks for having me, Saron.

[00:02:44] SY: So we’re really excited to talk to you today about app development. But first, let’s get into your coding background. How did it all start for you?

[00:02:51] KL: It started about six years ago in 2014. And I kind of started off by dabbling in web development. I was jumping around from job to job. Well, second job, I was jumping around and my primary job, I was working at a restaurant and I wanted to get out of the restaurant because I really didn’t like it there. So I started looking into web development and I learned HTML, CSS. And then when it got to JavaScript, I couldn’t figure out what the keyword, this meant.

[00:03:23] SY: That’s a big one. Yeah.

[00:03:25] KL: It was, and I couldn’t understand it, so I just completely dropped it. So then I started looking into mobile development, iOS specifically since I was an iOS fanboy. And this was right before Swift was released, the Swift Programming Language. So I was trying to learn Objective-C and didn’t realize that you have to know a framework and a language together in order to build apps. So I was struggling with that. But then Swift came out and I kind of started learning that, but I was kind of doing it just on the side, not taking it too seriously. And then about a year and a half later, in 2015, I started taking it a little bit more seriously, learned how to create an app, and I put an app out there and that’s kind of what kicked off my journey into iOS development.

[00:04:12] KL: And how did you like iOS development now that you’re into it? Is it better than what you were doing before? Well, I don’t want to get anybody angry.

[00:04:19] SY: Fair. Fair.

[00:04:19] KL: But I definitely enjoy, personally enjoy iOS development much more than web development. Swift is still my favorite language to work in.

[00:04:29] SY: So what did your self-teaching look like? Let’s dig into that a little bit more. What resources did you use? How did you schedule your time? How long did it take?

[00:04:38] KL: My self-teaching was mostly of what I could find online. So like blog articles and YouTube videos, which there were far fewer of YouTube videos back then, and online courses. So I would take maybe like the cheap online courses that you could find anywhere from $10 to $20. I didn’t have a whole lot of money. And I would take some of those and then any online resources that I could find for free. So it was like learning on a budget because I didn’t have a whole lot of money to spend. I couldn’t go to a bootcamp and I wasn’t going to continue down the school route. And my schedule was I would work mostly during the day, even though depending on when you’re talking about, I had two jobs and I would usually work during the day and then usually during the late nights. I would stay up late and I would code and learn in the evenings when my now wife was asleep. So that’s kind of how I went about it.

[00:05:36] SY: Yeah. Wow! Good for you. I know finding those pockets of time to study when you’re taking care of family, going to your regular job is really tough. So good for you.

[00:05:45] KL: Yeah. I was lucky enough to work at a restaurant where there were slow days. So I would actually take my laptop into work and I’d be learning during the slow hours.

[00:05:54] SY: So what did you find to be most useful and least useful when it came to teaching yourself how to code?

[00:06:00] KL: This is when I really understood my learning techniques, which is the fact that I am an auditory learner. So I did much better when I was able to watch a video and hear somebody talking about it as opposed to just reading a blog article. So that’s why I tended to focus on picking up courses, the online courses that I could get access to, and the YouTube videos that I could find. And those ones were the ones that helped me out the most as opposed to an article where I have poor reading comprehension and just couldn’t really consume the information that it was trying to convey.

[00:06:40] SY: So you mentioned that you love Swift and you love mobile development. What was it about mobile development that clicked with you in a way that JavaScript and web development did not?

[00:06:50] KL: Well, I think it was mostly the fact that I had already been in the mindset that I didn’t think that websites were that cool, showing somebody a website on a computer. I just didn’t think it was like anything too interesting because websites had been around for a while. I had technically started coding, if you want to call it coding before this, like with the MySpace days modifying my profile. But yeah, I wasn’t really impressed with web development and the fact that you could code something and put it on a phone and show that, just pull out your phone and show that to somebody. I thought that was much more interesting. And I like to have my work move around with me and I could actually build a tool that would be right there in my pocket.

[00:07:35] SY: So let’s dig into getting that first job a little bit more. What was your process into getting that first job? What are your thoughts on just job hunt processes in general?

[00:07:45] KL: Yeah. So it was around December of 2015 that I was able to put out two really simple apps into the App Store for iOS. The first was like a note-taking app and then the second was just a large text app. You’d just be able to type something in and show a large text. And I knew that having apps in the App Store was going to be important for me to find a job to kind of show that I know what I’m doing, at least in some regards, showing that I have some work to show. I have a small portfolio, but I do have a portfolio, and just to be able to get that out there and add that to my resume. So after I was able to put those two apps out, that’s when I started to go and do online applications to get hired, but those never really panned out. And the other way that I found was much more effective was by actually going to the in-person meetups, which back in 2015, 2016 was okay. There wasn’t toxic. So you can go out and you can meet people. A lot of the time, there would be people that were looking to hire a developer. They were intentionally going to these meetups to find somebody that can help them solve this problem and they would probably hire them. So I spoke to a number of people. A lot of them didn’t usually pan out just because the expectations weren’t there or they weren’t in the right stage of the process to actually get ready to hire somebody or they didn’t realize how expensive it was to hire somebody to build an app. And eventually, what happened was I was browsing the Meetup.com Forums, I guess they were forums or billboards or something. And I saw that somebody had posted that they were looking for an iOS developer. I replied in an email or something like that, whatever they left their contact information. We got into contact. We had two phone calls. Then they had me meet them at a Starbucks out in El Segundo, California, because it was just a really, really small startup. And we had a chat and everything worked out. And that’s how I got my first paying job as an iOS developer.

[00:09:52] SY: Wow! That’s really exciting. Good for you. Congrats.

[00:09:55] KL: Thanks.

[00:09:56] SY: So I really want and get into the nitty-gritty of your process of app development all the way from just the concept, the idea, all the way to maintenance. So let’s begin at the first step, the ground floor and get really basic here. Let’s talk about what the tools and resources are that somebody would need to build their first mobile app. Where would they start?

[00:10:15] KL: Well, it really kind of depends on which route you want to go. And I would say that you’re either going to go with iOS or Android for the most part. And you also have to determine if you’re going to do native or cross platform. Now the way that I would kind of break this down is if you already have a preference, just go with that preference and stop thinking about it because a lot of people end up just taking too much time doing research. “Should I learn this? Should I learn that?” If you already have a preference that you’re looking for information or you’re looking for to get that confirmation bias, like somebody to affirm what you want is the right thing to go and follow, just do that thing. But the way that I would break it down is if you’re a fanboy of Apple or Android, I would say maybe do native. If you’re specifically looking for a job and that’s all you really are interested in and you’re not really passionate about either platform, then maybe consider cross-platform. Once you determine which way you want to go, then you know which language and framework you’re going to be essentially working with. So now you have the language and framework selected. Now you need to make sure that you have the machine that can support that for iOS development. You almost absolutely need a Mac computer or you need to have some type of Hackintosh.

[00:11:33] SY: What’s a Hackintosh?

[00:11:34] KL: A Hackintosh is like a PC that was built to run like macOS. So they call them Hackintosh because you could theoretically build a Mac for like half the price, but you have to do it yourself and then you have to deal with all the bugs that come along with doing that. But yeah.

[00:11:50] SY: I was going to say, I feel like Apple probably doesn’t want you to do that.

[00:11:53] KL: No, they definitely don’t.

[00:11:55] SY: Okay.

[00:11:56] KL: But you can do it and I can understand being in a financial situation to where it makes sense to do that because they are expensive. But for Android, you can have almost any computer. So you have your framework, you have your language, you have your hardware. Now I would say start either doing tutorials or looking at blog posts and try to start building something extremely small, the smallest thing that you could think of that would be useful or cool to you and just build that one thing out. And once you do that, I would say try to release it on the App Store and get it published. You want to release the MVP, the Minimum Viable Product, the most ugly MVP that you can and get it out there that’s something that’s functional. Because once you do that, you’re going to feel much more accomplished and you’re going to be more motivated to keep pushing forward.

[MUSIC BREAK]

[AD]

[00:13:07] Want to learn more about Kubernetes, but don’t know where to start? The Kubernetes Initializer lets you build your own application right in Kubernetes’ playground in just a few clicks. Automatically configure Ingress, a continuous integration pipeline, authentication and more. Try it for free at getambassador.io/codenewbie.

[00:13:27] RudderStack Smart Customer Data Pipeline is warehouse first. It builds your customer data warehouse and your identity graph on your data warehouse with support for Snowflake, Google BigQuery, Amazon Redshift, and more. Their SDKs and plugins make events streaming easy, and their integrations with cloud applications like Salesforce and Zendesk help you go beyond event stream. With RudderStack, you can use all of your customer data to answer more difficult questions, and then send those insights to your whole customer data stack. Sign up for free at rudderstack.com.

[AD ENDS]

[00:14:06] SY: When it comes to the steps of building out the app, is there much of a difference in the process between building an iOS app versus an Android versus a web app?

[00:14:15] KL: Steps in the process I would say no. It just depends on how structured you want your process to be. When I build out an app, when I do something just for fun, I’ll probably start coding it out and I’ll just try to get some functionality working just for me and then I’ll maybe make it look a little bit prettier or something like that. And if I decide to go further and make it publicly available, that’s when I’ll go back and clean it up and polish it and put it on the App Store. However, if you’re looking to do this as a professional and you want to have like a professional workflow, then the right way to do it will, theoretically, be to design out all the screens, know all the use cases of your app, make sure that it’s still an MVP, then you would code it. So you would design, then you would code it, and then you would test it and then you would release it to the App Store. So that’s theoretically the right way to do it. But from a practical standpoint, if you’re limited on time, if you’re just a one-man team, you might want to just build something out that you think is cool and then get back to the polish later.

[00:15:22] SY: So what is your advice for folks who want to start learning the basics of mobile app development? Where should they begin?

[00:15:28] KL: Well, I think it depends on the person. I think you would have to determine, “Is coding something that you generally are passionate about? Or is it something that you just find as being a means to an end of getting paid?” Either way is fine. Unfortunately, the interview processes may not make it seem that way, but either way is fine. If you’re passionate about the code, I would say try to find some other thing that you’re also interested in, or something that you are interested in building, make sure that it’s something small and doable. And just try to build that one thing out and try to focus all your energy on that and don’t try to build out too many things at once. If you’re not passionate about code, but you just want to get into the field because it pays really well, then I would say find something that you are passionate about and build an app around that passion so that you’re encouraged to finish that app and get through the roadblocks because app development is hard. You will run into a problem or a roadblock that is going to stop you from moving forward as fast as you would like. And you want to make sure that you’re going to have the fire, you’re going to have the motivation to continue and push through that roadblock and get it finished.

[00:16:44] SY: Now let’s talk about ideas. Where do you get your inspiration for your app ideas?

[00:16:50] KL: Well, I don’t build out a whole lot of apps in production and I don’t release those apps really. So what I usually do is I have a YouTube channel where I cover coding tutorials and things like that, essentially providing a resource that I wish that I had when I was starting out. And when it comes to the ideas that I cover, it’s usually something that comes up in the comments that somebody is looking to have covered and then I’ll just kind of see if I could throw a twist on that and see if there’s something that I think would be fun to just accomplish in that time covering that topic. So for example, I actually made a TikTok clone a couple months ago, and I was just kind of curious to see if I could do it in 24 hours. It was really cool because I was able to accomplish that and it was something that I just thought would be cool. It was an app that was popular at the time. I mean, It’s still popular, but it was on my mind and I just went after it. It was just something that I thought would be fun to do.

[00:17:53] SY: So let’s talk about some of the very first apps that you made. Give us a step-by-step process of how you built them.

[00:18:00] KL: The step-by-step process is first you have to come up with an idea. So you have to know exactly what your app is supposed to do, what is the MVP of the app, and what problem are you trying to solve. Because what’s going to happen is you’re going to go down this road and there’s going to be feature creep, which means that there’s going to be this other cool thing that you could do and this other cool thing that you can add to it to make it even better. But you want to make sure that your MVP is on point. You want to make sure that the functionality is really tight and it does exactly what it’s supposed to do. So once you figure out the MVP, I would recommend that you have some type of UI designed out for it, at least you could do something just written on a napkin and you can design the flow of it. It doesn’t have to be pretty, but just know the flow of your app. Once you know the flow of your app, then that’s when you start thinking about the use cases that you can go through each step in that flow, what buttons are on there and where can it go, because then that’s going to help you think through what is your app capable of doing and what use cases do you need to be aware of. Once you have the flow all figured out, now you can start coding it. Now I would recommend that you just go feature by feature at a time. So usually the app kind of starts off with a login page. So I’d say just focus on the login page first. After you’re done with login and authentication, then move on to probably the main focus of the app. And that’s going to usually be the thing that accomplishes what your app is supposed to do and solves that problem. Once that is done, you’re going to do whatever other features you need to add in there, but more specifically, you need to go back and polish that, make sure that it looks good, make sure that you have a good theme for it, make sure that there’s animations if need be. And once the app is done and polished, that’s when you’re going to send it up to test flight or just try to get some testing done. So you can ask friends and family to test your app if you don’t have outside resources that are able to do it for you. And once the app is tested, that’s when you’re going to submit it for a review to the Play Store or to the Apple App Store. And hopefully, they won’t come back and say, “You need to fix X or Y,” and you’ll be able to launch your app.

[00:20:21] SY: Is there a big difference between what you would do when you’re launching, kind of a toy app, an app just for you, for your own project versus what you would do for a production app, a more professional app? What are the differences and the steps you would take between those two?

[00:20:35] KL: So for a toy app, I think these are going to be more of the things that I do. The toy apps are generally going to be less polished. You’re not going to necessarily need to spend so much time on building out the UI animations. You also may not have everything looks so pretty. So you just are specifically focused on the functionality. And the example I like to give here is like Craigslist. Craigslist was the ugliest website you could think of, but it was a way that people were able to sell and buy goods from one another and it did its job really well, but it was really ugly. So that’s kind of what I would consider a toy app, even though Craigslist is obviously a production ready app or whatever. But essentially, you’re not going to focus on all the things that are going to help entice multiple users to come and you’re also probably going to cut some corners in regards to best coding practices in the code. So you may not try to make everything so modular and follow all these best practices, having everything just shoved into one file. And as long as it works, then that’s fine for you. Whereas a production app, especially if you plan on that app to grow and have a team work with the app, you’re going to want to follow best practices. You’re going to want to make sure that there’s consistency in your code and that you’re probably following those clean principles or whatever other principles you want to follow that are going to help make it usable and readable down the road.

[00:22:13] SY: Coming up next, Kyle talks about the hardest part of building out an app and what you need to know well about maintaining it after this.

[MUSIC BREAK]

[AD]

[00:22:33] Explore the Mysteries of the Pythonic Temple, the OSS ElePHPant, and The Flame of Open Source all while learning the tools of software development with TwilioQuest. Become an operator, save the cloud. Download and play TwilioQuest for free at twilio.com/quest.

[00:22:52] New Relic knows that the planet needs our help. That’s why they’ve partnered up with our team at DEV to host Hack the Planet. From now through February 28th, you can take advantage of their free tools to build a climate change monitoring app with the power of software observability. It’s a great chance to win cash, community bragging rights, swag from New Relic and DEV, a tree planted in your name, and other prizes, too. Learn more about the Hack the Planet Contest on New Relic’s dedicated community hub, therelicans.com. The Relicans is your place to connect with other developers. Meet the team behind New Relic’s software monitoring platform and show off the app you built for Hack the Planet. That’s therelicans.com. Happy coding.

[AD ENDS]

[00:23:42] SY: What would you say is the hardest, the most challenging part about building an app?

[00:23:47] KL: I think the hardest part about building an app is when you hit a roadblock and this roadblock could be any type of thing. It’s usually code related and it’s usually something that you haven’t implemented before. And you might be thinking about it from a perspective where it’s like you don’t know how to even ask the question to overcome this roadblock. So you might not even be able to find the answers on Stack Overflow or something like that because you’re not even sure which questions you’re asking. And I think that this is really the hardest part of app development, because like I said, if you’re not passionate about the app that you’re building or you’re not incentivized, like you’re not being paid to build this app, then you’re probably not going to be able to finish the app. And that’s the most important thing is making sure that this app gets out there to the world. So if you run into this roadblock and you’re not motivated to push through the roadblock and find the answers and get through that block, then your app never makes it to see the light of day and it just becomes one of those projects that just ends up on your GitHub that is never touched or finished.

[00:24:58] SY: So let’s talk about maintenance, which I hear is the most fun part about building an app and building out a product. How should we think about maintenance when it comes to mobile apps? What are your, I guess, responsibilities as a developer after it launches?

[00:25:13] KL: Well, if this is like the individual that’s releasing the app and it’s just a one -man team, then unfortunately the maintenance is going to take up a lot of your time and it’s actually going to keep you from building multiple apps. So you have to make sure that you’re able to support your users with the app that you put out there if you want that app to continue to grow. Your users will find use cases where your app is crashing or you might release an update that breaks an area of the app and you might have an outage. And these things are definitely stressful, especially depending on how important the app is to the user. And if you’re dealing with sensitive information, I think it’s even more stressful. So maintenance is something that it can’t be avoided if you want the app to continue to grow and actually be used by users. Because if you neglect the maintenance, then your users will just go somewhere else and they’ll find an app that can do whatever your app is doing that doesn’t have so many bugs.

[00:26:21] SY: Now at the end of every episode, we ask our guests to fill in the blanks of some very important questions. Kyle, are you ready to fill in the blanks?

[00:26:28] KL: Yes.

[00:26:29] SY: Number one, worst advice I’ve ever received is?

[00:26:32] KL: Unfortunately, it’s a little bit controversial, but it’s to go to college right after completing high school.

[00:26:39] SY: Oh, interesting. Tell me about that.

[00:26:41] KL: The reason I say that is because you’re around the 18 mark and you’re too young to know what it is that you want to do with the rest of your life. But there’s so much pressure for you to go to college right away after having just completed high school and there’s a lot of reasons behind that, but it’s just a standard here in the States. And I think that it’s kind of bad advice because what you end up doing is you end up going to college and putting yourself in debt. You try to follow this path, which, I mean, you couldn’t possibly know if it’s the thing that you want to do for the rest of your life. Yet, you’re supposed to go to school for four more years, build up this debt and then go down this path and potentially end up in a job that is not right for you because you actually don’t have any life experience with that job. So what I would say is you can still go to school and maybe major in something that’s more generic. But what I would say is better is to actually try to do that job without a degree, if possible. And programming and app development are one of those fields where you don’t need a degree to do it and you can try it out before you go down this long path of building up debt and building the foundations and find out if you actually like this and if you want to do it for the rest of your life before you actually decide to go to college for it.

[00:28:06] SY: Number two, best advice I’ve ever received is?

[00:28:10] KL: To just take action, to just do it. And I think a lot of the YouTube influencers or people that, a name that comes to mind is like Gary V. There are people that are just saying that you need to just take action, and I couldn’t agree with that more. If you don’t take action, then you’re not going to ever see anything come from just sitting around thinking about doing something. So the biggest thing for me is you just need to take action and not always say this to anybody that’s continuously complaining about a problem. Either you hate something enough to do something about it or you just want to sit there and complain and that’s kind of how I feel about it. Either take action or don’t complain about it, but don’t do both.

[00:28:57] SY: Yeah. Yeah. Number three, my first coding project was about?

[00:29:01] KL: My first coding project was about the one that actually made it onto the App Store. It’s called Brain Dump. It’s a note-taking app. And I actually left it up on the App Store. It’s still in version 1.0, it’s the Apple App Store. You can download it if you would like, and I leave it up there just so that you can see how little skill you need, how little effort you need in order to put an app onto the App Store. And it goes to show that even though I’ve been in this field for a couple of years, this is where I started it. And if you could build that, then there’s nothing stopping you from being in this field and doing really well.

[00:29:41] SY: Number four, one thing I wish I knew when I first started to code is?

[00:29:46] KL: The difference between a computer programming language and a framework. Just not knowing the difference between those two causes a lot of confusion and learning a programming language isn’t going to really help you do anything if you don’t know how to use it with a framework.

[00:30:04] SY: So tell me more about the differences between the languages and frameworks you were looking at.

[00:30:09] KL: Yeah. So the differences are pretty wide. So a programming language is what you’re actually typing when you’re coding, right? It’s a set of rules that need to be followed when you’re working with a specific language and the framework is kind of the thing that makes everything possible, so whatever it is that you’re trying to accomplish. So specifically when I ran into this problem, it was with Objective-C and UIkit. So UIkit is the framework that Apple provides so that you’re able to use different pieces of their framework to build out screens on the iPhone. So I would be writing Objective-C, but I needed to access the code inside of the framework and use that to build out views onto the screen. And when I was learning web development, I didn’t actually fully understand that. And when I started learning Objective-C, I really didn’t understand that I was just trying to learn Objective-C, the language, and I didn’t really understand this whole UIkit thing and how it played a role into actually getting this code and turning it into an app.

[00:31:22] SY: Well, thank you so much for joining us, Kyle.

[00:31:25] KL: Thank you so much for having me on.

[00:31:33] SY: This show is produced and mixed by Levi Sharpe. You can reach out to us on Twitter at CodeNewbies or send me an email, hello@codenewbie.org. Join us for our weekly Twitter chats. We’ve got our Wednesday chats at 9 P.M. Eastern Time and our weekly coding check-in every Sunday at 2 P.M. Eastern Time. For more info on the podcast, check out www.codenewbie.org/podcast. Thanks for listening. See you next week.

Thank you to these sponsors for supporting the show!

Thank you to these sponsors for supporting the show!