Description
In this episode we talk about Swift and iOS development with Marc Aupont, senior iOS engineer at Nike. Marc talks about transitioning from a career in IT to iOS development, why he prefers iOS development over web development, and how you can start to code in the iOS language Swift without needing to buy expensive Apple products, which can be a huge barrier to entry for many communities.
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 Swift with Marc Aupont, Senior iOS Engineer at Nike.
[00:00:18] MA: Even if everyone’s not always sitting in front of their computer, everyone has one of these phones in their pockets. And so if I could create iPhone apps, then I could have that much more reach and that much more impact.
[00:00:30] SY: Marc talks about transitioning from a career in IT to iOS development, why he prefers iOS development over web development, and how you can start to code in the iOS language Swift without needing to buy expensive Apple products, which can be a huge barrier to entry for many communities after this.
[MUSIC BREAK]
[00:00:59] SY: Thanks so much for being here.
[00:01:00] MA: Thank you for having me.
[00:01:02] SY: So Marc, how did you first get into coding?
[00:01:04] MA: It really started at a young age, not so much in coding, but just creating things. So even till this day at my parents’ home, I have several computers that are in shambles from tinkering around and Frankensteining them, so to speak, to put a working computer together, take the parts from the old, put it with the new, and now I have a new thing. So I used to do that with computers, with bikes. I used to be the neighborhood chop shop guy that would fix old bikes and make new bikes out of old parts and do things like that. So I’ve always been a tinkerer and learning to code was just the aspect of taking the computer aspect one step further and learning how to be able to create based on the applications and games that I was already using on a daily basis.
[00:01:58] SY: Do you recall if there was a particular project you did or maybe a moment in those early tinkering days that made you go, “Oh my goodness, this is so powerful, I can do so much with this”?
[00:02:12] MA: I think for me, when I got my first computer, I think it might’ve been a high school, my mother purchased a Compaq Presario for me and I’m dating myself. It was running Windows ME. And this was back in the day when if you wanted to play a video game, you had to put a CD in the CD-ROM and go down that path. And so there would be these free games that you’d get like in the mail that were like trials. You don’t pay for it, but it’s like the free trial. And I remember like seeing one of the games, I wish I could remember the name, but it went through the process of like letting you kind of create your own path in a way. And the idea of being able to kind of make decisions and have like end users flow through a different part of the game based on like the decisions they would make, I think I found that like really, really interesting and thought, “Well, it’d be cool if I wasn’t just consuming this, but able to actually build something like this from scratch and go from there.” I always had that passion and I carry that passion into college, but that’s where the reality of like what it takes to be a professional software engineer kind of hits you in the face because you’re taking these courses like Java and things that are a little bit less visual. And that’s where the reality for me was kind of like, “Hmm, I like the passion, but I’m not sure I’m so good at this part of it.” It was a bit of a turnoff at that point, but I did eventually kind of make my way back around full circle.
[00:03:52] SY: And when you went to college, did you end up studying computer science there?
[00:03:56] MA: I did not. I started off as an electrical engineering technology major, working with hardware. And eventually after taking a course, I think it was that Java, that Java course messed me up. I think that was one of the first Fs I ever got in college.
[00:04:12] SY: I have not heard good things about Java courses. I don’t think it’s you. I think it’s Java.
[00:04:17] MA: I’m not downplaying the Java lovers out there. More power to you. It’s just not for me and it didn’t work for me. I felt completely dumbfounded. I felt like coding wasn’t for me. And I literally changed my major to focus more on hardware just to get away from any software related course, because I felt defeated and really like it was just not for me. And until later in my career where I found ways to be able to work with things that were a bit more visually appealing and I got that feedback cycle back, and that’s what really got me back into the coding thing.
[00:04:55] SY: So what happened after you got out of college? What happened then?
[00:04:59] MA: So once that piece was kind of done for me, I was really working full time at this company for several years, and I got a chance to work on some software stuff, but never at the development level, more so on the like tweaking things. I would spend a lot of time tweaking settings in order to make a particular product work for end clients. And I did that for a while. And I got to this point where I felt like if I did not make a change in my career, I would be in that same spot for maybe the next 15 years. When I was thinking about this, I was already at year 12 with this company. Right? So you’re already 12 years in. I mean, I might as well just work out the rest of my time, get my watch for 20, 25 years’ anniversary, and call it a day. I needed to pivot. I knew if I didn’t pivot soon, I would just acquiesce into, “You know what? This is it for me. I’m just going to kind of chill here. I already have seniority at the job. I’ve got the benefits. If I go restart, I got to restart all of that over again.”
[00:06:10] SY: Yeah, it’s a risk.
[00:06:12] MA: It’s a risk. And so. I eventually took that risk, but that was a hard risk to take. But that’s what happened for me afterwards is I worked for a little bit and realized that, “You know what? There’s got to be more to life than this and let me go scratch that programming itch that I had back in the day and see where that takes me.”
[00:06:33] SY: What was the more that you were looking for? What was it about that job you had for 12 years that made you go, “This isn’t quite it. I want something more.” What’s the more?
[00:06:46] MA: The more was a challenge. The more was feeling like I could create. I felt like the work that I had, I was not creating, but instead I was changing things. I was modifying what was already created, which meant that it removed all of the creative ability for me to inject…
[00:07:10] SY: The fun part.
[00:07:10] MA: The fun part. Right. And I wanted to be a creator. I wanted to be able to use some of the ideas that I had in my head to say, “Hey, this would be cool if this happened and be able to kind of do that from scratch.” I wasn’t necessarily given the ability because it was a larger company, not necessarily quick to like have the most agile processes of like trying new things. So it was just like, “Get in line. Do what needs to be done.” And that’s that. And I just felt like that was not a sustainable or scalable career path for me.
[00:07:48] SY: Okay. So in that case, you’re looking for the ability to create, to be that creator. I imagine you knew that wasn’t a creator type of job sooner than the 12 years. So why did you stick with it for so long?
[00:08:05] MA: Because through that job, I bought my first house through that job. I got married through that job and my kids were born, like things worked. Like
[00:08:15] SY: Right.
[00:08:16] MA: And so because it worked and I was comfortable, like if it ain’t broke, don’t fix it. And I think for the most part, I just stuck with it because it worked. But at some point in time, I had the realization that when I was starting to plan out, what would my next five years look like? What does my next 10 years look like? I didn’t like what I was seeing when I thought about that and I’ve mapped that out. So for me, it was just like, “Okay, you can either make a change now or you could ride out the rest of this ship. And so I chose to make a change.
[00:08:53] SY: And what made you comfortable doing that? Because as you mentioned, you got a lot of great things happened in those 12 years, right? A lot of great life things happen, career things happen, you were comfortable, you were doing well, you were moving up. So what was it that made you go, “You know what I mean? I’m going to put all this to the side, I’m going to start over, I’m going to take this risk”? What made you feel comfortable doing that?
[00:09:14] MA: A thousand percent my wife. It’s one thing to take risk, but it’s another when you have a supportive person that is willing to support the vision and say, “You know what? If you’re down, I’m down.”
[00:09:27] SY: Absolutely.
[00:09:28] MA: And so being able to be in a position where I know that there’s a little bit of a backup as far as like I’m not necessarily out there on my own because I think maybe it might’ve changed my calculations a little bit because it’s like you don’t necessarily have as much fallback. But knowing that I had someone that was willing to just trust the process and kind of help pick up the pieces if things did not go as planned. It gave me the confidence necessary to say, “You know what? I’m just going to go for it and see what happens.” And I also had a pretty good support system as far as like friends and family around that saw the work that I was doing and affirmed it as well as supporting it. Just go for it and see what happens. And I just did that and I went for it.
[00:10:26] SY: So 12 years you decide to take the plunge, take that leap, do something different. What was the first step in that pivot for you?
[00:10:35] MA: The first step was learning. I wanted to pivot into software, but I needed to learn software.
[00:10:42] SY: Right.
[00:10:42] MA: In learning, I went to Udemy and I bought my first course on Udemy, which was the complete Web Developer Bootcamp by Rob Percival. And at the time, my oldest kid was about a year old. And so I would do nights and weekends of just studying, learning content after work. I would just learn and learn and learn and I would implement, implement, implement, learn, learn, learn, and just kind of repeat that cycle until I felt comfortable. And that was one of the first courses that I completed from start to finish, got my certificate and everything, framed it because I felt so good.
[00:11:23] SY: Really?
[00:11:24] MA: A hundred percent completion.
[00:11:24] SY: Oh, that’s wonderful.
[00:11:27] MA: Because that was a hard thing. You watch these tutorials. You go from tutorial one to tutorial two, and it’s always halfway done. But that course, I took from start to finish. I did all the projects, all the assignments, and I completed and I felt good. And as soon as I did that, I think that’s where the bug bit me the most. Because it was like, “I get this. I like it and I’m sticking to it.” So the fact that I had all of those things in play, it was like, “All right, let’s see what else there is out there for this.”
[00:12:00] SY: So at the time that you signed up for that web development course, did you have a job in mind? Were you thinking I’m going to be a web developer specifically? Or how did you even decide which course to start with?
[00:12:13] MA: I wasn’t necessarily thinking about a specific job at the moment because as I stated before, I was fairly comfortable with the job that I had, but I needed to start working on a plan to learn the skill. So it gave me less anxiety because I could study at a pace that made sense. I wasn’t trying to get a job tomorrow. But I knew I needed a job eventually. I was living in Orlando, Florida at the time. And I was running a business where I was doing like PC repair and IT-type solutions for folks. And I figured, “Well, if I can learn to build websites and do things like that, I had a lot of friends that were like entrepreneurs and starting businesses. I could build their websites for them. That way I could learn the client interaction process.” Because when you’re doing these things online, you’re following whatever the person teaching is doing. All right, create this app. Do this thing. Right? And so that eventually teaches you the skills. But can you take those skills and translate it to someone who says, “I need an app that does this, this, and this, where you don’t have a tutorial to go off of.” You don’t have a starting point. It’s like a new sort of thing. And so I did that. I took on projects from friends and would be like, “Hey, I’ll charge you like 100 bucks, 200 bucks.” The money wasn’t a goal. The goal was to take a project, challenge myself to fulfill the requirements, complete the project, and then kind of build a portfolio piece and keep doing that. That way I could add it as another service to the business that I was running where it’s like now it’s not just like fix your computer, now I can also build a website for you as well and manage that. It was the path of least resistance. At the time, I had a PC and then eventually I created a Hackintosh, which was just the PC with the Mac software or whatnot. It was the quickest way that I could kind of get Mac without having the funds at the time. And so that was my path. I did that until I was comfortable with it.
[00:14:29] SY: So you started with web development, but now you’re in iOS, you’re an iOS engineer. What made you make that transition? How did you go from web dev to iOS?
[00:14:38] MA: So when I started to do the web development, one of the things that I did not like is I felt like no matter how much I learned it was never enough. You’d learn this JS, and then the next JS thing came out, and then there was the next JS. “Oh, you got Ember.js.” Now there’s this JS instead and then there’s React.js and then there’s that JS. And I just felt like the world of frameworks was this never ending pool of just… it was like the world was too wide for me. And I wanted to go a little bit deeper and it was hard to get deep because there were just too many options on the horizontal front. And so I decided, luckily based on a course recommendation, I decided, “Well, the same instructor had an iOS course. I have an iPhone. I think that would be even cooler to create an iPhone app, because even if everyone’s not always sitting in front of their computer, everyone has one of these phones in their pockets. And so if I could create iPhone apps, then I could have that much more reach and that much more impact.” And so I decided to take that course and then I went down the rabbit hole of iOS courses. Once I decided, “Okay, this thing looks cool. Now let’s go find some other courses to take, and I just kind of went from there.
[00:16:04] SY: And how long did it take you to go from doing these courses and then actually switching your jobs, switching your career to a full-time development position?
[00:16:14] MA: I’d say it was about two years, but I felt fairly confident. I think probably by the six-month mark for me, I knew enough to build basic things. I could build projects for folks that weren’t too involved and I could kind of do that process, I think probably six months afterwards, because I did have a little bit, like I took the course in college and I used to tinker around. I feel like a lot of us that grew up in the MySpace days, everybody that grew up in MySpace is a web developer. It was already creating websites before you even knew it.
[00:16:52] SY: Right. Right. Yeah.
[00:16:54] MA: And I remember doing all the custom backgrounds and loading music on my page and doing all these sort of things and messing around with HTML. So I felt like I had a little bit of knowledge. I just needed the information that would let me glue it all together. That’s what I was missing is the glue to say, “All right, well, if you have HTML and you have this, how do you connect it with the JavaScript and how do you do actions based on that?” And that’s kind of what I spent a lot of my time figuring out is the glue because there’s a lot of tutorials out there, but not everything you need to build you’ll find a tutorial for. Well, then what do you do then?
[00:17:35] SY: Right. A moment of panic.
[00:17:38] MA: The moment of panic.
[00:17:41] SY: No one has tried to do this before. What? You know tutorials?
[00:17:43] MA: Exactly. So I focused on trying to learn the glue. How do I connect things together so that I can leverage all of the various tutorials to make a complete thing?
[00:17:55] SY: So how did you land that first full-time development position? Was it still within the same company? Did you have to move jobs? How did that work?
[00:18:04] MA: When I finally decided that I had a good understanding of iOS development, unfortunately at the time living in Orlando, there weren’t as many opportunities, especially for what I know would be a junior role because I had never worked in iOS development before. So I knew I was going to kind of come in as a junior, which was another pill to swallow because I was already kind of a senior in the world. So it’s like going from senior to junior type of thing.
[00:18:29] SY: Right. Right.
[00:18:30] MA: And so I decided at that time that when I was learning iOS development, one of the things that I did was I created a meetup and I created the meetup because I needed a community of folks to kind of really help support what I was doing. And after a while, I could not. I was doing more teaching than I was learning. And so I decided the only way I’m going to grow is I need to move my network or I need to change my environment. So I packed up the family, sold the house and moved to New York.
[00:19:02] SY: Whoa! Oh my goodness! Big changes.
[00:19:05] MA: Yeah, but I knew at that point that what I needed, I needed community. I would spend all this time learning online and it was cool, but like there wasn’t a community of folks to be able to like share information with and like rub elbows with. And I remember I would just come to New York. And I mean, there would be a gazillion meetups every day.
[00:19:31] SY: So many meetups. Yup. Yup.
[00:19:33] MA: So many meetups.
[00:19:33] SY: Back when we went to meetups. Right?
[00:19:35] MA: Right.
[00:19:36] SY: Back in the day.
[00:19:37] MA: Back in the day. And so I decided that if I really wanted to be able to scale the skills, I needed to come to New York. And so I was already somewhat working remote at my current gig.
[00:19:49] SY: Oh, great!
[00:19:49] MA: And so that gave me the flexibility of keeping my income and support system while I transition and start looking for work. And I was able to eventually land a role at a startup once I moved and that was like my first foray into like full-time development.
[00:20:10] SY: And has the switch to being a developer, is it everything you hoped it would be in terms of creating and being able to go back to your tinkering days and making stuff? Has that proved to be true?
[00:20:24] MA: Absolutely, a thousand fold. I think it was one of the best decisions I could have ever made for myself and my family because of the opportunity that it’s provided, as well as the other intangible things that it’s been able to kind of do by giving me a skill that I can use to work at a company or I could use as an entrepreneur, or I can use as a founder. I could use it in so many different ways. It really is something that I’ve grown to enjoy and it’s given me a little bit more of a ladder, career ladder and things like that, that I could kind of look forward to versus what I was doing before where I somewhat felt like I was at the top of the ladder already, and I still had plenty of time to work. So it was way too early to be at the top of the ladder, if that makes sense.
[MUSIC BREAK]
[00:21:33] SY: So now let’s get into Swift, the coding language for iOS development. What are some of the differences between coding in Swift as opposed to languages that you might use for web development like JavaScript? Besides the application of mobile versus web, what are some other differences between those types of languages?
[00:21:53] MA: From a perspective, when I first started coding, I was using Atom and VS Code, and I don’t know if it was just me or my settings, but trying to get compiled time help when you’re like writing code to figure out, “I wonder what methods exist on this particular API and what functions and properties.” And I felt like when I was doing web development, I had to know all that stuff off the top of my head. Hats off to the folks who don’t have the sort of help that I feel like a tool like Xcode gives you. I could literally start creating an API, hit dot and just list all of the various… like I don’t necessarily need to memorize everything. I could just focus on getting the thing that I want built without having to go back to memorization of certain things. And I think that’s one thing that I enjoyed a lot from a tooling perspective. I enjoy the type safety of being able to work within very well-structured types where I know like this thing is of type this and it will always be of type this.
[00:22:57] SY: When does that get you in trouble, different types? When does that come into play?
[00:23:02] MA: So for me, I think when you’re working with projects, especially where you’re, let’s say, building something and you are consuming data from a particular API and you have different sort of model types that you’re working with. I think for me, when I was working in the world of JavaScript and kind of going down this road of like promises and dealing with what’s the type that comes back after I completed this promise and wondering what that API looks like, that used to burn me so much in my early days of learning. And I feel like with Swift, for the most part, when you are dealing with things that are coming back from an API call or dealing with asynchronous code, generally speaking, like the type that you get back, you’ve specified a type for it and you’re always going to know that it’s going to be this and nothing else. And I truly enjoy that for me. It really made the process that much more easier and simple for me at least.
[00:24:04] SY: So just like any coding language or framework, there’s tons of different ways you can learn. There’s tons of courses, bootcamp, books even, things like that. But I know that Apple has its own educational coding game that they developed called Playgrounds to teach people how to use Swift. What do you think of Playgrounds?
[00:24:21] MA: I like Playgrounds. I think it’s a great tool. I have my son use it all the time when he is practicing and tinkering around.
[00:24:28] SY: Oh, neat!
[00:24:29] MA: I think it’s a great tool to introduce folks to the concept of programming. Now I wouldn’t say that Playgrounds like the gaming aspect of it would be the knowledge that you need to actually create an app per se. You learn how to call a function. You learn what a function is, but doesn’t necessarily prepare you for like the actual, like interacting with the API view controller life cycle sort of thing. I don’t necessarily get that out of it. And I feel like you need to know that in order to actually create an app.
[00:25:05] SY: Right.
[00:25:06] MA: But I do think it prepares you for what is programming, what is programming look like in Swift, and how can I give this computer instructions to execute this code, which I think that gets you most of the way there.
[00:25:20] SY: Maybe a good first step, not the last step.
[00:25:23] MA: Right. I don’t necessarily feel like Swift Playgrounds, like you’re done with Playgrounds, now you can go build an app. I never felt that way.
[00:25:30] SY: What helped you learn Swift and iOS development the most? What courses, books? What was your learning journey like over those two years?
[00:25:38] MA: So I will give props to Udemy. That was my platform of choice, but that’s only because I had started there. I wouldn’t say it’s like the only and best platform. It’s just what I started with. Eventually, I would dabble with Coursera, YouTube, subscribing to multiple folks on YouTube and using those resources. I very much believe that in order to properly learn, you have to kind of diversify your portfolio of sources that you learn from. And one of the techniques that I use, I called it the Five Sources Method where no matter what I was learning, let’s say I’m learning how to present a screen in iOS, right? I would try to find five separate sources that taught that same concept and compare them against each other. And in the process of doing so, it provided me with a different perspective to know how to approach a problem in different ways. And it also helped me leverage other content, like if I’d watch another YouTube tutorial doing something different, it wouldn’t completely throw me off because I’ve seen that way before from another piece of content. And so my primary source was video content because I took a learning assessment quiz that essentially told me that my learning style was visual and audio. And so I feel like that’s very important as you go down the journey of learning to code or learning to do anything that you identify what your learning style is. Because otherwise, you’ll go down trying to learn something using the wrong techniques and feel frustrated that you’re not making the progress that you want because you’ve never really identified your learning style. And then once you know your learning style, then go find the content that matches that learning style. So to be specific, I used Udemy, I used Coursera, Pluralsight. Back in the day, there was a company by the name of Devslopes that I remember doing a Kickstarter campaign for, when they were getting going and I used to use their courses for a long time, a lot of hacking with Swift and a lot of those sorts of things in the early days of learning that really kind of helped diversify my portfolio of learning and kind of go from there.
[00:28:11] SY: Tell me about the process of iOS development. What does it look like to build something for mobile?
[00:28:17] MA: I think it’s gotten a lot better than it was before, as of I’d say maybe about a month ago.
[00:28:26] SY: Oh, recently. Okay.
[00:28:28] MA: Okay. It was always good. I’m saying that a month ago they released Swift Playgrounds for, and what that does is it now allows folks to completely create applications or apps on the iPad. So like you can actually build an app, write all of the code on the iPad and ship to the app store without ever having to pick up a Mac.
[00:28:55] SY: Wow!
[00:28:55] MA: Now folks have done it. I don’t think that it’s like the, “Throw your Mac away, you never need your Mac anymore.” Right? It has its rough edges, but I think that process has made it significantly easier for folks to get started in iOS development because now there is no longer the hurdle of, “I need this machine to get started.” Right? And you could just have your iPad pick up the Swift Playgrounds and start coding. So generally speaking, the process of iOS development is going to look like, one, learning Swift, because you need Swift.
[00:29:33] SY: Right.
[00:29:33] MA: And second, learning the iOS APIs and learning things like UI kit, which is a framework used to actually build out your user interface. Or in today’s day and age, folks are very positive on SwiftUI, which is Apple’s latest user interface framework that lets you build your UI in a very declarative sense. And it’s what folks are using now and it’s definitely the future going forward, but UI kit is not going anywhere anytime soon. So I think it helps if you’re trying to potentially get a job to have UI kit knowledge, but if you’re just looking to kind of learn and create an app and just prototype and things like that, SwiftUI is more than capable of being able to do that for you. So that’s what the process looks like. Learning Swift, understanding SwiftUI, having an iPad and you’re good to go.
[00:30:28] SY: So we touched on this briefly, but I want to dig into this a little bit more, the question of what products do you need to learn iOS development. So given the conversation about the iPad, I’m assuming you needed a Mac, some type of Apple laptop or Apple computer to learn iOS development before, which seems like a big barrier to entry.
[00:30:54] MA: Huge.
[00:30:54] SY: That’s thousands of dollars. Is that true to this day? You mentioned that nowadays you can use iPad, although you probably still maybe want to get a computer at some point. But is there any other thing that we can use to learn Swift, to learn iOS? Or do we just need to kind of get that money together and kind of figure that out?
[00:31:14] MA: So one of the things that I ventured off into in order to help make that process easier is learning Swift on embedded devices like the Raspberry Pi. And so that’s one path that if you were wanting to get in and you don’t necessarily have an iPad but wanted to still learn the Swift programming language, or for one, there are still like sites like Replit that allow you to like write Swift code in the browser and kind of get that to execute. But of course, you can’t build a UI that way. Right? You could probably execute functions and see what the syntax looks like. And that’s about it, as far as I know, the last time I checked. So as far as that goes, I find that the Raspberry Pi seems to have like one of those low barriers to entries because it’s a more cost-effective computer that you can in fact run Swift on. And once you get Swift running on that, you may not be writing apps for a mobile phone on it, but you could do things to control the hardware, like control motors or toggle LEDs on or turn on a fan or interact with various other electrical components that essentially give you the feedback, if you’re one of those folks that needs feedback, like as you’re developing to like, “Oh, I did this and there was this sort of reaction to this.” You could get that with running Swift on the Raspberry Pi without having to go down the process of using a Mac. It still doesn’t get you into like creating apps, but it gets you familiar with using the Swift language and controlling stuff with it. And of course, once you go down the path, there’s also Swift on the server. So you could use that to build a website. So maybe you want to build a static posting page for yourself. You could use that. But then again, if you want that, now we’re back at the Mac path where you kind of need a Mac. So essentially, the unfortunate part and the part that I’m least enthusiastic about when it comes to iOS development is the barrier to entry is definitely high because you need a Mac.
[00:33:32] SY: Right.
[00:33:32] MA: However, with the inclusion of now Swift Playgrounds, you have a few options.
[00:33:38] SY: And what is it like to set up Raspberry Pi to work with Swift? What does that entail?
[00:33:43] MA: I actually wrote a blog post on that whole process.
[00:33:46] SY: Oh, great! We’ll put that in the show notes.
[00:33:48] MA: And it’s essentially the process of first downloading the ISO image that you need to load onto your Raspberry Pi to get like either Raspbian. You kind of pick your OS essentially, pick your operating system. Once you’ve picked your operating system, you can download a pre-compiled binary of Swift. The Swift arm group has gone through this process of creating all of these pre-compiled binaries that instead of you like downloading the full Swift binary and kind of compiling it yourself, you can just essentially use a cURL command to point to a particular URL and get Swift installed on your machine or on your Pi. Once you get Swift installed, you’re ready to go. That’s pretty much it. You get the OS on there. You get Swift installed. And then from there, you can start to use various libraries that interact with the hardware. So there’s a library by the name of SwiftyGPIO that allows you to interact with the input and output pins of a Raspberry Pi using Swift code. And so once you have that set up, now you have Swift on the Pi, you have the ability to control the input/output pins, which means you can now do things like turn an LED on or turn it off or turn a motor on or turn a motor off. Because most of those elements work in a very binary way where it’s like zero to turn it off, one to turn it on, and that’s it. So you send a bunch of zeros and ones and you’re up and going.
[00:35:20] SY: So things like Swift aren’t generally taught in universities, but you are a part of a program for HBCUs to help students learn iOS development. Can you talk a little bit about what that program is?
[00:35:31] MA: So my favorite aspect of the work that I do outside of my role at Nike is working with the HBCU C2 Initiative, which is run out of Tennessee State University. And it’s essentially a national teaching and learning initiative that empowers any HBCU to bring coding and creativity experiences to their particular program. And so what I do is I work alongside the initiative to really kind of be the resident iOS developer that can kind of give them the real world experience of what it means to create applications. Because before I kind of joined the team, a lot of the work was kind of based on stuff that you would find. Like for example, everyone can code, everyone can teach, everyone can create initiative that Apple creates, like they have these books that essentially teach you how to code. But they don’t necessarily give you the real world. Like, “All right, well, when you do have to get a project up and going, there’s this thing called GitHub, right?” And you got to get project code pushed up, pull code down, so on and so forth. And so I work alongside the team to kind of give the students a real look into what iOS development looks like day to day. And as part of that, we just recently created an app development team that’s purely based from students from various HBCUs around the nation and I’m working with them to take on certain projects and build out apps and they get a chance to go from zero to hero, essentially from an idea all the way to the App Store and everything in between. We touch on best practices, testing, just all of the things that you would not normally get out of a course that you either see online or things like that, but things that I know that I’ve done on day to day, either at work or I’ve done on other projects that I’ve worked on and go from there.
[00:37:40] SY: Coming up next, Marc talks about what he thinks is the best way for someone to learn Swift and get into iOS development after this.
[MUSIC BREAK]
[00:38:00] SY: Tell me about the role of mentorship in what really learning anything, but specifically in learning something like Swift, where maybe these types of courses aren’t very widely taught or widely available in schools. What is the role? What is the importance of mentorship when learning iOS development?
[00:38:19] MA: I think mentorship is extremely important and not just iOS development, but in a lot of anything that you do because a lot of us, the one thing that we’re limited on in a lot of cases is time. We don’t have the time, right? Because we have work. We have school. We have families. We have so many things going on in our lives that like time can be limited. And if your time is limited, I believe that it’s best spent doing things that somebody else has not already done. Otherwise, you’re better off leveraging the experiences from others to kind of help save you some of that very precious time that we don’t have. And so the role of mentorship to me is being able to find someone that can save you from the inevitable steps that you would have gone through that can allow you to focus that time on something else that’s more beneficial and go from there. That way you can really spend more time exploring and building, but let that be guided because without a mentor, then you’re kind of out there in the Wild Wild West, figuring it out on your own, which for most of us we eventually figured it out, but how much did that time cost us? Right? Because I spent a lot of time doing this. Did I lose out on opportunity because I was not ready at a certain time? Or did I have to do something over because I didn’t know that this particular dependency was required? So I think having a mentor allows us to leverage from their learned experience so that we can focus on improving on the things that actually matter instead of having to try to figure it out on our own.
[00:40:05] SY: How would you recommend people find mentors in iOS development?
[00:40:10] MA: Well, one thing I would say is mentors don’t find you, you find them. And so when it comes to finding a mentor, the thing that worked for me was I realized early on when I was learning to code that a lot of tech people seemed to use Twitter and Twitter seemed to be the watering hole where everyone goes to drink. And so I figured, “All right, well, if that’s where they’re drinking, that’s where I need to be.” And so I leveraged resources like Twitter to build relationships with folks while also just like kind of being aware of what people are working on, right? Engage. I can’t engage unless I have something to share. So pay attention to like things that folks are tweeting and projects that they’re working on. Ask questions. Seek to understand the projects. And in a lot of cases, a lot of folks will be willing to mentor you if they feel as if you are like either serious enough or willing to kind of go that extra mile to learn. I know for myself I’m always willing to mentor anybody and teach them everything I know. I only have two rules that you, A, respect my time, and put some effort into like learning the things that I’m saying, and B, find somebody else and teach them everything I just taught you. So like essentially spread the love. And as long as you’re willing to do that, I’ll teach you anything I know, but respect my time because I am also a father. So the time that I’m spending to mentor and help other folks, that could be time I’m spending with my family and doing other things like that. So if I’m going to take some time out to be able to do some of these things, respect the time. And I feel like that’s probably where a lot of folks miss out. They’ll get a mentor and the person will mentor them, but they don’t necessarily take heat of the advice or implement the advice in such a way that the mentor can see that you’re actually listening, processing and following up on certain things. And so that’s not a very motivating thing to know that you’re helping somebody out. They’re either late when you go to meet with them or they’re not necessarily taking notes or asking interesting questions or things like that and it just doesn’t motivate the mentor. So be engaged as much as you can. And through engagement, I think there are several people in the tech community that would be more than willing to share their knowledge, but it’s not just going to fall off the tree. Right? You got to climb up the tree and go get it.
[00:42:43] SY: When is the right time to look for a mentor? As soon as I say, “I’m going to get into iOS development, I’m going to learn Swift,” is that the right time to look for a mentor? Should I kind of wait until I get a little more comfortable with the language and with that world before I approach someone? What do you think about that?
[00:43:03] MA: I think it depends on what you are looking to get out of a mentor. I think if you are seeking for career advice and want to be able to kind of navigate those waters, I think it helps having done some level of either research or prep work before you start enlisting someone’s help. And that’s just more for the respect piece of things so that you’re getting the most that you possibly can out of that mentor. Because if the mentor says, “I got one hour for you,” you don’t want to spend that one hour going through stuff that like, “Man, you could have done that before time.”
[00:43:42] SY: You could have Googled it. Yeah.
[00:43:44] MA: You could have Googled it and you’re using the one-hour precious time to ask that question. And so that’s not necessarily as much as a value add. Do as much research as you can so that when you finally do meet with your mentor, you have very direct, pointed questions to ask if possible, and that will help, one, show that you’re engaged and that will motivate the mentor to stay on top of their toes. It’s like, “Oh, this person’s probably going to have some interesting questions. Let me make sure I’m ready for them or make sure that I can provide as much as I can.” And so I think when you’re early on learning, get the fundamentals under your belt because there are plenty of resources that will teach you the fundamentals, especially if you’re learning code. Learn the fundamentals. Once you’ve learned the fundamentals, seek a mentor that can help enrich the fundamentals that you’ve learned because now that you know these fundamentals, let me teach you the best practices of how to use them. I think that’s where the secret sauce is.
[00:44:43] SY: So what would you say is the best way for someone to get started learning Swift and doing iOS development?
[00:44:49] MA: The best way is, one, I think one of the simplest resources that’s out there that has a curriculum and proven program, I think Paul Hudson has done a great job with the Hacking with Swift, 100 Days of Swift Challenge that gives you the Day 1, do this, Day 2, do this, Day 3, do that and write in a kind of laid out sort of way. That’s one of the resources I would have in my pocket. I think, like I said, diversify your portfolio. So I would find a course on one of the learning platforms that is interesting to you, right? A lot of these courses, when they’re sold online, they have some sort of an intro video. That’s like a one-minute, two-minute, “Here’s what you’re going to learn in this course.” Right?
[00:45:36] SY: Yep. Yep.
[00:45:37] MA: If that two-minute intro doesn’t do it for you, don’t buy that one because in the learning process, you’re going to come across challenges and you’re going to come across things that don’t work. And if you’re already doing a course that doesn’t necessarily have a carrot that you’re chasing, you’re going to give up. You’re probably going to fall off. And so what I found helps is if the thing that you’re working towards is something you’re really excited about, in those moments where things are not as fun because coding is a journey, that will be the thing that kind of keeps you connected. So like 100 Days of Swift will give you curriculum. A course online will challenge or give you practical use cases of using some of the things you used in 100 Days of Swift. And then once you kind of have those sorts of things, whatever topics that you find on something like 100 Days of Swift, use that as your curriculum of what to Google on YouTube. Right? So let’s just say I’m learning about how functions work, right? Okay. Well, what does Paul on the 100 Days of Swift say about functions? Okay. What does this person X on this Udemy course say about function? What does this person on Coursera or whatever say about functions? And then I could use that to go on Google, “Swift, what is a function?” Right? And then find two or three YouTube videos, what do they say about functions? And if you could do that, I think that’s going to give you a very comprehensive understanding of the concepts from different perspectives taught by different people and that will kind of help keep you going and go from there. So once you kind of have that, stick to it, code every day, if possible. I think coding is one of those things that the more you do it, the more comfortable you are with it and consistency is key. So be sure to code as much as you can and leverage resources like mobile apps that let you practice your coding on the go. So luckily, you don’t always have to sit in front of a computer to learn, but you could use an app like Unwrap, right? That’s an app in the App Store that essentially teaches you Swift, but it’s a mobile app. So like now if I’m at the bus and I’m waiting for my bus to come, I could open up the app, learn about strings, and do that for like 10 minutes. Or if I’m at a restaurant and I’m waiting for my food to come, like leverage those moments to borrow 20 minutes out of the day or 30 minutes here, 20 minutes there, and that will be enough to kind of get you going.
[00:48:31] SY: Now at the end of every episode, we ask our guests to fill in the blanks of some very important questions. Marc, are you ready to fill in the blanks?
[00:48:38] MA: I am.
[00:48:39] SY: Number one, worst advice I’ve ever received is?
[00:48:42] MA: Choose one thing and stick to it.
[00:48:45] SY: Hmm. Interesting. Tell me more.
[00:48:48] MA: Yeah. So I think there’s this concept of like just choosing a thing and sticking to it. Like if you have yet to explore the various facets of what interests you and what drives you, I find that it’s much easier to just give up on things. It’s like trying to fit a square peg through a round hole and being adamant that this square peg must go through this round hole. That may not be the case. If you’re not willing to explore and try different things and be challenged, you’ll never really know if it’s like truly your passion. And so what I have found helps me is that I started off doing web development. I got fairly far in that, completed a course in everything, but that’s not what I do for a day-to-day job. And that’s because I chose to try something else. And I found that that was a passion for me and I ran with that.
[00:49:48] SY: How do you balance that with just this idea of focus? Because I know that one huge problem in our newbie community is people get really overwhelmed by the number of frameworks. They could be learning the languages they maybe should be learning and they get just very overwhelmed and they end up dabbling in a lot of different things at the same time and they make no progress at anything. So how do you kind of manage your experience with this idea of sticking with something long enough to see some results?
[00:50:19] MA: So I think a lot of that has to do with building up a good enough circle around you to have some accountability partners, folks that can at least call you out and say, “Hey, man, what’s going on with that course? Or, “What course are you currently working on? I thought you were working on this instead.” And be able to kind of call you out when you’re doing a little too much because I think it’s very possible to do this tutorial trap of just jumping from one thing to another instead of like finishing out a particular project. I think the point is to find something that you were like really excited about, something that you think about often. Like if you started with web development and you really love the idea of building like mobile web and you find that you’re excited about that and you’re doing more research into that, that’s where I feel like focusing and honing in on that is good, but where things are not good is like where you stick to it because somebody told you, you have to do that. That’s where the job is at. That’s the only place that you’re going to make the income, and you just keep doing it even though you don’t like it. That’s where I feel like there’s a difference between not sticking to something just because somebody else said to do it and you don’t enjoy it and really honing in on something that you actually enjoy and exploring it further.
[00:51:43] SY: Number two, best advice I’ve ever received is?
[00:51:46] MA: It’s okay to hit the reset button. For me, I’m one of these folks that getting into development was something that I did 30 plus. And so it was almost a mid-career shift for me. And it was scary at first because I was just like, “Man, I’ve been working so long already. I’ve been working. Is this the best time to actually hit a reset button and start over again?”
[00:52:14] SY: Is there a best time?
[00:52:17] MA: Right. And it’s like, “Maybe I shouldn’t do this,” but it’s okay because hitting that reset button allowed me to kind of find a passion.
[00:52:29] SY: Number three, my first coding project was about?
[00:52:32] MA: I built a website using Joomla. I don’t even know if Joomla’s still around.
[00:52:36] SY: Okay.
[00:52:37] MA: It was kind of like the WordPress alternative. That was a cool little app. It was kind of like a weather app that let me consume an API and display weather, and I felt really good about that.
[00:52:50] SY: Number four, one thing I wish I knew when I first started to code is?
[00:52:54] MA: It’s okay to not know something as long as you’re willing to acknowledge that you don’t know, but plan to find out.
[00:53:02] SY: I like that. Yeah. Well, thank you so much for joining us, Marc.
[00:53:06] MA: Thank you.
[00:53:13] 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!