- Episode #12
- May 5, 2019
iOS Developer Interviews with Alex Bush
iOS Developer Interviews with Alex Bush
- 37m podcast at transistor.fm
- 37m video at youtube.com
On Twitter @alex_v_bush
iOS Interview Guide
Inside iOS Dev Podcast
Episode 8 - Cloud and Backend Services For Apps
What makes interviewing iOS Developers special?
- Apple Design Patterns
- Special Background and Knowledge in Frameworks: UIKit, HealthKit, AVFoundation, WatchKit, etc...
Common mistakes employers make interviewing iOS candidates
- Not understanding their own app
- Hiring a consultant to help estimate and understand what iOS knowledge is nessecary
- Not understanding the phase their app and whether general iOS developers are needed as opposed to iOS developers with specialties
- Algorithms and Optimization Interview Questions
Interview Questions about building a UI in iOS
- Finding out whether the applicant understands the pros and cons of various methods: Storyboards, Coding, etc...
- Make sure they are willing to work with the team
Common mistakes iOS developer applicants and candidates make
- Not having broad knowledge of various solutions an app may need: Data Storage, Networking, UI...
- Some Backend Knowledge
Leo Dion (Host): Hey Alex
[00:00:01] Alex Bush (Guest): Hey Leo
[00:00:01] Leo Dion (Host): how are you doing, sir?
[00:00:02] Alex Bush (Guest): Great. How are you doing?
[00:00:04] Leo Dion (Host): Fantastic glad to have Alex Bush on from IOS interview guide and inside iOS Dev podcast. If you are interested in iOS development, you should definitely check his podcast out. Alex, what are you up to right now?
[00:00:21] Alex Bush (Guest): I am sort of getting up to speed after Microconf and vacation.
[00:00:27] Leo Dion (Host): I hear you. I'm in the same boat microconf and peers and vacation and starting a new contract. So I know where you're coming from.
[00:00:35] Alex Bush (Guest): Right and yeah, and I'm Contracting as well iOS so doing that getting up to speed on that
[00:00:42] Leo Dion (Host): Who are you working with right now?
[00:00:43] Alex Bush (Guest): Currently with Uber. Yeah, Silicon Valley, you know all the companies, around probably be looking for another gig soon enough.
[00:00:53] Leo Dion (Host): Yeah. If you are interested in architecture, definitely check Alex's podcast out like your specialty really is in helping iOS developers get jobs and specifically the interview process, correct.
[00:01:11] Alex Bush (Guest): Yes, that's sort of been my aim my focus lately last couple of years. Yeah, I wrote a book as you mentioned on the topic helping iOS developers get jobs right prep for interviews.
[00:01:26] Leo Dion (Host): Okay. So if you're like a company hiring iOS developers, what are some things that make interviewing a potential iOS Developer different from - I guess the biggest thing is web developers, right? So what makes it different from hiring your standard web developer.
[00:01:45] Alex Bush (Guest): That's a good question and it's sort of how the whole book thing and helping iOS devs interview started. I was at the time at a different consultancy helping them hire people for their iOS project. And as I was interviewing sort of same things will come up and I would kind of jot some notes take some notes on what to ask what to remember you get to ask and probe as I interview people and in general sort of when you interview, let's say a web developer or just a software developer right you go for a broader software topics, right?
[00:02:30] Roughly speaking algorithms and then design patterns and architectures, right but overall for software not specific for iOS and I think that's what's different when you're interviewing and hiring iOS people. The one thing is to in the sort of web world and specifically backend world in my opinion.
[00:02:52] You can hire a generalist and they can adapt. Quick enough I guess but in the iOS world it's very crucial to for for developers to really know very well the the frameworks that they work with and I think that's the main biggest difference when you're interviewing iOS people to sort of aim at that and assess their knowledge not just overall software development knowledge, but specifically iOS development.
[00:03:23] Leo Dion (Host): But I guess like you like it comes to mind because it drives almost everything maybe we'll particulars about UI kit are you thinking people should really know about
[00:03:34] Alex Bush (Guest): it also depends right? Like if you're hiring for just I guess you don't have a heavy UI animation or performance concerns for your project or your app.
[00:03:46] Then you don't really need a specialist. Who knows. Low-level details some of that right but sometimes for example social networking apps or apps that have social networking aspect of some kind they struggle with scrolling performance. Right? Let's say you have a some sort of a Instagram like feed with pictures infinitives feed that you can scroll and it's dynamically size, right if that's a crucial part of your app.
[00:04:14] It's important to make the performance buttery smooth right and not every developer. Like this is what in regards of UIKit what you want to dig and assess more in that case
[00:04:26] Leo Dion (Host): Okay,
[00:04:27] Alex Bush (Guest): rather than just overall. You know, what is MVC? Right right.
[00:04:32] Leo Dion (Host): So maybe we should clarify the audience like UI kit is the basic framework for the user interface on iOS. So if you're going to do any. Simple menus tables with navigation UI kit is the bread and butter of that and then like Apple kind of they teach an MVC pattern or model view controller, which I think correct me if I'm wrong like every developer who does iOS development should know that in an interview correct.
[00:05:00] Alex Bush (Guest): That is correct. Although I would say these days that's a prerequisite to Simply develop for iOS, but to be sort of hired for position. You should know more than that. At least be aware. Right?
[00:05:16] Leo Dion (Host): I agree. I think that's the very basics what are some other things you should know about
[00:05:20] Alex Bush (Guest): what comes to mind the core apple design patterns, like key-value observation, delegation, Singleton, protocol oriented programming as they call it.
[00:05:31] Leo Dion (Host): Yes. Yeah,
[00:05:32] Alex Bush (Guest): which is basically coding for interfaces.
[00:05:35] Leo Dion (Host): Yes, essentially.
[00:05:37] Alex Bush (Guest): So yeah those things. And I think on top of it you need to know the most common components and tools that you would use such as networking. Right? How does an NSURLSession work? Yes and how you would not block the main thread as you perform in a networking requests so that the UI doesn't freeze things like that.
[00:06:01] Leo Dion (Host): Yeah. So let's break some of those down so like protocol oriented programming. Why would an employer care that a developer knows protocol oriented programming.
[00:06:12] Alex Bush (Guest): So in this specific thing is, you know, a typical developer answer right or developer or consultant answer depends like of course, but let's say if you're building something more than just an MVP one of throw away MVP to just validate your idea. Then what you're building needs to live through multiple iterations of development, right and protocol oriented programming is let's just say an approach to development coding that would facilitate extracting abstractions in your code and then later for other developers to build on top of and use
[00:06:56] Leo Dion (Host): I think it is like, you know, they toss to use the word protocol. The word interface is used in a lot of other programming languages, but the way I think about it is a protocol is like a contract. It says that this object will do these things and it agrees upon it and that just allows a lot of developers to know - okay, I need to like these are the requirements that it needs. This is what I'm testing for that this object actually will do that to me is like one of the benefits of that and if a developer you hire knows that. They may not know the term protocol oriented programming especially if they're from another language, but the idea of like this interface first. This protocol first design just introduces so much more convenience has and makes it easier for testing for architecture and things like that. I think that's kind of what you're getting at, right?
[00:07:47] Alex Bush (Guest): Yeah. That's a way better way to put it - contract essentially and that will help you structure your code in a way that its building blocks right as an example of that. You could if you don't do protocol oriented or interface oriented to few will development approach you and let's say your app needs to have some offline mode right where you store data offline and when there is network connection it still displays something to the user you could in a naive approach without protocol oriented programming would be to just hard code that and save that in memory- let's say in your view controller, right. But then later when the next developer comes to iterate on that and make some changes to persist that actually to disk so that the app displays that data even after its killed not just in offline mode then if you don't do protocol oriented programming then for the next developers it's harder to figure out how it was originally done but if you do protocol oriented, you have a clear interface and let's say a storage interface or protocol and then the next developer clearly sees - oh, okay. So I just adopt the storage protocol for my new thing that not just saves in memory, but also saves to disk the data I want to have offline something like that.
[00:09:15] Leo Dion (Host): Yeah totally makes sense. Because if you allow that agility of any developer coming in and changing how something is done, but the important thing is that that object does what it says it does. And then like yeah, I think your point about like URL sessions, networking ,and understanding how that works with the UI is so important because then you get into like some threading stuff, background threads ,and Global thread, the main thread and all that as well. Because the last thing you want in an app is a crappy UI that freezes on your because it's trying to pull data from the internet.
[00:09:48] Alex Bush (Guest): Right? I would say if we're talking about interviewing iOS developers right for your project or your company the advice I would give - sometimes you need Specialists, right? So what we talked about is sort of general overall what every iOS Developer is supposed to know but sometimes you need a specialist. Let's say your app is heavy on video right? Then likely you need AVFoundation expert that would be another framework. AVFoundation is Apple's framework that helps you work with audio and video.
[00:10:26] Leo Dion (Host): Another one I can think of is like HealthKit if you're doing anything in the health or Fitness space like you're going to need to know something like that
[00:10:32] Alex Bush (Guest): or let's say you are app connects to Bluetooth peripherals or devices, right? You need someone with BLEframework experience. So that's not necessarily your typical developer like such as myself. I don't know neither of those things, right? I worked with a AVFoundation maybe twice in my life, but that's not something I'm interested in so I didn't specialize in that. But some other other devs did and they like it. And then again right when you interview I don't know. Let's say you putting together a team of three maybe you need two general iOS devs" but then one specialist in AVFoundation, so keep that in mind, right then we are interview process should be focused more on. Oh do they know AVFoundation? They might be lacking in well roughly speaking is an example knowledge of storage and how to store and persistence that we just talked about. But they're really really really good at doing video stuff. That's what you need maybe.
[00:11:34] Leo Dion (Host): I think it's a really good point because like that's one of the struggles I see with like the iPhone is a lot of apps kind of do the same thing over and over again.
[00:11:43] There's so much potential out there with all the different Frameworks and a lot of businesses don't know how to take advantage of those Frameworks and then they don't know how to find the expertise in that area. Like I've done work with HealthKit, you know going to the Apple watch of worked with WatchKit.
[00:12:02] So I totally understand how those are really really deep Frameworks and there's a lot to know in those areas.
[00:12:11] Alex Bush (Guest): I think that that's the challenge for an employer right [or] for a company if you're not. I think if you're not a developer or a specific iOS developer yourself, it might be hard to define what do I even need? Right? I just want this app to look good and again, maybe show videos, right?
[00:12:31] Probably that's where you would want to hire maybe for a shorter period of time like for a few hours or days more experienced developers, more senior developer, maybe architect would take a look at your project and your idea , your proposal whatever you have and give you a well - I guess list of Frameworks involves potentially.
[00:12:53] Leo Dion (Host): Yeah, it's almost like you need like a consultant to come on and 99% of people don't know about all these Frameworks. They know - I'm going to do video or I want to track people's heart rate. The frameworks are completely outside of people's knowledge and rightfully so. That's where you might - I know I want to target iPhone. Like okay. I need a consult come in and tell me how much work does this involve and what expertise I'm looking for? And I think that would be very helpful to a lot of business owners and a lot of CTOs who are just looking for somebody to come in and kind of give them an idea of what needs to be done.
[00:13:32] Alex Bush (Guest): Yeah, I remember when I was running my small agency, small consultancy. We had usually two people including myself working on projects, but occasionally we would actually get outside help of an iOS expert in a particular framework. I believe our case was BLE, Bluetooth. Neither of us knew how to work with it. It was kind of complex and we were on a crunch time. So we hired someone for I believe like a week to just get us up to speed on how it works. And the pitfalls and then from there we took the prototype code and just improve that.
[00:14:14] Leo Dion (Host): Yeah, you know it makes me think of like when I have work done on the house. Like we had like the basement finished a couple of years ago like we brought somebody to come in.
[00:14:25] They had a specific person that did plumbing, a specific person that did electrical, a specific person that did drywall. And I think like that's something to keep in mind with some of these Frameworks is like, you know you what you need is like some consultant coming in to manage that and be able to like help figure out: okay what you actually need when you interview an iOS Developer.
[00:14:48] Alex Bush (Guest): I think the challenge comes, unlike in the web world, those specialties are clearly defined. I think at least [that's] my impression. And it's easy for example to find a Stripe expert for PHP or something but a bit harder for iOS right like a payment expert Apple Pay or something for iOS. I personally haven't seen many of those.
[00:15:14] Leo Dion (Host): Yeah, yeah.
[00:15:15] Alex Bush (Guest): But again, if you know that if that's what you need at least in your interview process those are the questions you want to be asking: how does that work? Can you walk me through it explained the whole system over. All right, and then maybe minutiae details - something like that.
[00:15:31] Leo Dion (Host): I think the other thing is [and] I think this is with finding [all] developers who can learn because you know, you may not know until you get into it, you know, but okay, there are common patterns. Like you said, the delegation pattern that Apple uses that is used throughout every framework and being able to kind of go with the flow with whatever the team is and being able to learn new things.
[00:15:54] Alex Bush (Guest): Right. Well, yeah, I guess as you said that's a general software developer trait, if you will.
[00:16:01] Leo Dion (Host): Right, it's not necessarily iOS specific.
[00:16:05] Alex Bush (Guest): Right. And that's actually an interesting thing that an observation i've had over the last four years sort of. You want more of that of the general software knowledge and experience down the road as your app grows basically. And by app growth i mean the amount of code and number of people working on it.
[00:16:29] So roughly speaking just to simplify, Uber today doesn't need anyone just a general iOS dev who knows MVC. There is a way more complex architecture there that allows hundreds of people to more than a hundred people working in the same app at the same time.
[00:16:50] That's where it just doesn't cut it anymore. Right? So we need someone more advanced and architecture. For example.
[00:16:58] Leo Dion (Host): Yeah exactly. What are some stories or what are some things you've seen happen during the interview process that companies have completely failed at or the traps they fall into
[00:17:12] Alex Bush (Guest): my personal favorite, although not everyone agrees with me or rather not favored, but the opposite of favorite - companies asking all the algorithmic questions.
[00:17:24] Leo Dion (Host): Mmm
[00:17:25] Alex Bush (Guest): and all the - I mean, I'm joking. No one else did, but all the bubbles sorts of the world, right?
[00:17:32] Leo Dion (Host): Yes.
[00:17:33] Alex Bush (Guest): In the iOS world specifically, that does not make much sense because again unlike with back-end web world to be productive your general software knowledge, I mean it's necessary yes, but it's not as crucial.
[00:17:50] To be more productive you need to know more of iOS rather than more of general software algorithms. because unlike the backend we don't deploy multiple server instances to scale and propagate route balancing all of that stuff right and have a great algorithm for that.
[00:18:10] Leo Dion (Host): Yeah. I think that there's a divide between software that's written for performance and software that's running for maintenance. I think that differentiation is it made sometimes so that during the interview process you're going to ask. How do you write the fastest bubble sort? I think like unless you're doing machine learning or like high intense graphics where you're actually managing memory and CPU and that kind of stuff for the most part you want to write code that is easily maintainable.
[00:18:41] And that's where things like protocol oriented programming becomes important or like knowing the different patterns. And I think that -yeah, I totally agree with you a hundred percent. I've done interviews with like I think I did an interview with Amazon. They'll ask you all sorts of like oh, how do you sort this? How do you do a tree like this blah blah blah? And I like all I wanted to ask was wait. Do I have to relocate to take this position? Because I'm not moving it was like why are you wasting my time asking me these questions when like you haven't even like answered basic questions about whether I'm going to want to take the job if I know how to do it and it was this like, yeah...
[00:19:20] Alex Bush (Guest): Every time I hear those questions on interviews my question and response: oh, is that what I'm going to be doing at work if you actually like offer me the job.
[00:19:30] Leo Dion (Host): Yeah.
[00:19:30] Alex Bush (Guest): But the answer is no, right 99% of the time so
[00:19:34] Leo Dion (Host): You write code for maintenance and then 90 percent of companies, [if] the code is slow they either buy a bunch more CPUs and memory and then you know on top of it like you just want the code to be maintainable because there's already 52 libraries that do bubble sort better than any amount of optimization you can do so I totally agree with you. I'm glad you brought that point up.
[00:19:57] Alex Bush (Guest): Right. Yeah, as you said your code is 10 times more likely to change rather than to be slow on iOS so you optimize for that as you interview the people who can make it easier to change rather than faster.
[00:20:13] Leo Dion (Host): Yeah. I think it's a really really great point. Maintainability [and] testability are much more important than optimizing for speed or the best - what is it? - like O^n or O^n squared algorithm?
[00:20:25] Alex Bush (Guest): Yeah that.
[00:20:26] Leo Dion (Host): So question that I wanted to bring up was - I wanted to go back to this - but developing UI on iOS. There's a lot of people who have a hundred opinions about the best way to maintain a UI in a code base.
[00:20:45] Alex Bush (Guest): I do too by the way.
[00:20:46] Leo Dion (Host): Yeah, I bet you did. So we have like storyboards which is the way xcode and Apple probably wants us to do it. You could write UI by code. In the interview process, what is the best way without getting too opinionated as the interviewee. What is the best way to ask those questions to know whether someone might be a good fit? Does that make sense? Because I don't want to get into like a storyboard versus code your own UI debate.
[00:21:17] But I'm more want to know like if you're interviewing somebody how do you know that they know how to build a good UI and work with your team. Does that make sense?
[00:21:27] Alex Bush (Guest): It does and I think the best way to gauge that is to look at the work they've done already right? Do they have a well-polished UI app in their portfolio, right or list of companies or projects they've worked on. And personally what I would do, right? I don't know if that's the right approach. But if I interview, I would want to know if regardless of what the person prefers or you prefer, right? Do they prefer storyboards or they prefer writing everything in code? I want for them to tell me the pros and cons of each option.
[00:22:08] And when to use each option that way, I will you know, hopefully hear from them that they know taht there are trade-offs for one approaching another. And at some point it breaks down right or in some cases it doesn't make sense. And specifically I'm talking about let's say storyboards don't breakdown on scale when you have I don't know more than 20 people let's get working on that app. But then it doesn't make sense to do it right away as your one or two people team.
[00:22:42] Leo Dion (Host): Yes.
[00:22:43] Alex Bush (Guest): Something like that, right at least some reasoning like that because if they don't have it and the answer is oh, I just been doing storyboards all the time because Apple said so that is not a good answer.
[00:22:54] That means they don't think why they do it. That means the likely it's going to be difficult for them to adapt or impossible even when the scale grows to more than 20 people and then storyboards don't work anymore.
[00:23:07] Leo Dion (Host): Yep. I think it's a really good point. I think this goes with all interview questions. I mean there is right or wrong answers, but it's more are they reasoning this out well.
[00:23:16] Alex Bush (Guest): Right yeah.
[00:23:17] Leo Dion (Host): Do they understand the basics because yeah, I agree with you completely. It's like, okay. Do you know why you're doing what you're doing? And are you aware of other ways and then how do you work with large teams especially when you're building UI if you want to do storyboard or if you want to code it. Like what are some pitfalls? I think that's a really great point.
[00:23:39] Alex Bush (Guest): Another thing sort of related to that comes to mind. It's my personal opinion though. But still it's an observation over the years. The other thing you kind of want to gauge as how much do they agree or not agree... That's not the right word. But how much do they follow what Apple says - and you do need to follow what Apple says most of the time right? But again, are you still aware of the trade-offs?
[00:24:08] Leo Dion (Host): Can you give an example of a apple guideline?
[00:24:11] Alex Bush (Guest): It's the overall model view controller thing? The reason they push it on us all these years and still don't stop.
[00:24:21] It's an easier design pattern to start with and build a simple app with and that fits their the goals of the company. Apple is a company once more apps. Yes. They want a better quality apps. What they want more is more apps and much more developers coding for their platform. So that's why they're pushing MVC if you want a better quality app or a bigger app, you can't really use MVC but they never say is that right?
[00:24:50] They always sort of skew it the other way or if you're not doing MVC you're doing it wrong. That's just as a you know, general from the software architecture perspective. That's not the right answer. Unfortunately Apple keep saying that right and a lot of people still think: Apple is right because it's Apple.
[00:25:11] Leo Dion (Host): Yeah, I think that like, it's also hard to change the ship when it's moving in a specific direction. I wouldn't be surprised if Apple like recommends other UI patterns, but for 99% of developers like they're not going to know. Like if you're already experienced enough you know to look for other patterns anyways. But yeah, I agree like if you're starting off being an iOS developer, you should definitely know MVC is a prerequisite if you know other patterns, I think that's definitely even a greater skill to have during an interview.
[00:25:44] Alex Bush (Guest): Trying to say the same thing if they tell you: oh use MVC because Apple said so then maybe a follow-up question from you should be all but why MVC is good, in what scenarios and what cases?
[00:25:58] Leo Dion (Host): It says a lot for a developer to not like fight going upstream because like you want to go with what Apple already recommends because when version 2 or version 3 of whatever you're working on is based on an Apple framework changes like at least you're ready for when those upgrades and updates happen. As opposed to fighting Upstream with your own custom thing and then finding out like oh it's not compatible anymore because Apple's changed the API.
[00:26:24] Alex Bush (Guest): Yeah, that's true. It's a balance to strike, right?
[00:26:29] Leo Dion (Host): Yeah
[00:26:30] Alex Bush (Guest): On the one hand your working and building an IOS app because you wanted to run on iOS platform, but on the other hand you're actually, building an app right that is your own thing with your own business logic and you don't want it to be too tightly couple it to specific iOS Apple stuff right?
[00:26:53] but then again, you still run it there. So you kind of have to in some cases that's what it's about.
[00:26:58] Leo Dion (Host): Yeah, and I think it goes back to what we were saying earlier is like if their reasoning is good and they have solid reasons, you know that they're knowledgeable in that space and they can learn and adapt to your team.
[00:27:09] So the other thing I wanted to ask is what are some pitfalls that people who are interviewed constantly run into when they are being interviewed,
[00:27:20] Alex Bush (Guest): huh? I think I would say basically, I think what I see a lot of developers when they're interviewed the mistake they make is they know only a certain subset of iOS Frameworks, right and the concerns and IOS app has but they don't know others this sort of overall the full circle of it. Specifically they might know how to do UI stuff and networking but they never done any storage or architecture for business logic right? Or doing very little of it and they don't pay attention. Again as we talked about it if you're interviewing for an UI heavy position. Maybe that's good enough, right? You really know your UI stuff very well and low-level details of it and likely then you'd be asked those questions in the interview and you probably pass right.
[00:28:18] But just in general as you apply right most of the time you kind of need to know more of overall rather than specifics because like let's say you Leo, you and I we team up and you know build an app and it's e-commerce with some social networking feed - let's say right some hybrid of Instagram and Amazon.
[00:28:42] So to build that you and I can code but let's say we need two more people to help us because timelines.
[00:28:50] So for that when we will interview people we would ask. Oh, yes. Do you know how to do UI work and networking but also we would want to know: oh, do you know how to do offline and storage stuff right?
[00:29:07] Because again, maybe our app needs to persist something offline for reasons. And also on top of it a little bit of a I call it business logic, I guess business logic / architecture / design patterns as with we again talked about it something beyond MVC right at least a little bit. Do you know MVVM and MVP and in what cases to use those and maybe other design patterns like a Factory and Command write something like that?
[00:29:39] So I think that's the mistake a lot of iOS devs make. They just prep for UIKit UI stuff and networking. They never look into storage all the ways. You can store things on iOS like file storage core data key value storage all of those.
[00:29:57] Leo Dion (Host): Yep,
[00:29:58] Alex Bush (Guest): and they don't look a bit beyond at least a little bit beyond MVC and those design patterns and architecture.
[00:30:05] Leo Dion (Host): Do you think you could just like as iOS developer? You just pick up one framework? And just be like, okay today I'm going to use like core data and then get really knowledgeable about Core Data for this particular app. And then that gives them at least one framework that they can bring to an interview and speak about
[00:30:23] Alex Bush (Guest): In a way, yes, it's possible. Each one of those you can go very deep right but at least I think what I recommend focusing on maybe not even a specific framework but a concern an app has.
[00:30:42] Leo Dion (Host): So like you talked about like storage like you don't have to know particularly like core data, but like okay be able to bring to the company that is interviewing you different ways of doing storage and the pluses are pros and cons of each one.
[00:30:57] Alex Bush (Guest): Precisely. Yeah, because you can implement it with core data or realm or whatever else is out there. Right? I don't even know. But when you and I interview people we would want to know that they're aware of that concern and how to sort of overall approach on how to solve it and what it does rather than the details of how to do it because that's what they'll figure out on a job.
[00:31:22] Leo Dion (Host): Yes.
[00:31:23] Alex Bush (Guest): So that. I would say there are four big concerns, right? That's the UI, networking, storage, and business logic. So that's the pitfalls I think for interview is not knowing those four overall.
[00:31:39] Leo Dion (Host): I think it's a really good point is yeah, a lot of people can just obsess over UIKit in the very basics of you.
[00:31:45] I can't without knowing, you know that to build an app. You need to store data somewhere. If you need to call the web you need to do notifications. For instance. That's a whole elephant that we haven't even gotten to but I think it's a really good point. Is there anything else you wanted to talk about? As far as for people who are doing interviewing other iOS developers.
[00:32:09] Alex Bush (Guest): One more thing for interviewees. I guess that's not more or less for interviewers. You will get a lot of points on your interview if you're actually know a little bit of a back-end. Maybe not how to code it but at least how it works, right because as an iOS dev, you likely constantly will need to work with back-end people
[00:32:31] Leo Dion (Host): so maybe like the basics of what a rest API or GraphQL back end should do okay
[00:32:38] Alex Bush (Guest): and how to establish those contracts. What are the best practices there ... Things like that.
[00:32:44] Leo Dion (Host): Yeah. It's a really good point. I'm just surprised at how many iOS developers don't know anything about the back end.
[00:32:50] Alex Bush (Guest): Yes, it sort of makes sense to a degree they're specializing in iOS right there not those general software developers, but still it helps to know and in a lot of cases.
[00:33:04] The API design the backend API design will be driven by the front end people which means iOS people right?
[00:33:13] So the more knowledgeable you are maybe that applies more to sort of architect if you have a team, but if you're solo person you need to know that. As you mentioned it like at least know what restful is best practices there with my experience in one of the companies I worked at.
[00:33:31] That got out of hand so bad that we were sending 5 megabytes payloads of JSON down with each request to iOS and then parsing that took forever on the older devices like iPhone 4. Yeah, so they had to do client-side hacks to parse only lazily portions of the JSON and the rest on demand, so that is something that as an iOS developer, you should stop before it even comes to it.
[00:34:04] You need to be aware of what's going on with their API right that you're consuming and are they are you guys as a team keep shopping more data in it and not deprecating and migrating and having versions or something like that.
[00:34:18] Leo Dion (Host): Yeah, it's wow. Five big Json files.
[00:34:22] Alex Bush (Guest): I know right?
[00:34:24] Leo Dion (Host): Well, thank you so much for coming on the podcast and talking about this.
[00:34:28] I think there's a lot of companies that have no idea and just need help interviewing and finding iOS devs and it can be a real challenge. I know I know it's hard just recruiting people let alone interviewing them.
[00:34:41] Alex Bush (Guest): Right? Yeah. Yeah my pleasure and again, you know, it's been a passion of mine on the other side right help iOS devs to get jobs, but I understand the pain and that's where I originally came from the pain of how do I access and know that the person I'm hiring is actually knows what they're doing and everything that you know, they need
[00:35:05] Leo Dion (Host): so if you're someone who's looking for an iOS job. How does your book help them or tell me a little bit about the book and how it guides iOS developers in the interview process.
[00:35:18] Alex Bush (Guest): Overall. The book actually does what we talked about is those four areas of concern. Like UI, networking, storage, and business logic it gives you an overview of all those options that you have in each area of concern right like back to the storage option.
[00:35:37] Oh you can press store things in memory or you can store them key value storage right in as user default. So you can store things in files or it database like core data and so on. So it gives you this overview right without going into deep into details of how they work like specifically core data or something like that.
[00:35:59] But at least it tells you: oh here are the options that you have and in some scenarios you you want to use this or another option. That's what the book talks about. It kind of perhaps you overall. If you want to dig deeper, you can go ahead and research on specific topics. But yeah that overview was lacking before I wrote the book. So that's why I decided to do that
[00:36:23] Leo Dion (Host): Awesome. So where can I find the book at?
[00:36:26] Alex Bush (Guest): Its iOSinterviewguide.com
[00:36:28] Leo Dion (Host): awesome and then your podcast is insideiOSdevs.com, correct?
[00:36:32] Alex Bush (Guest): Yep.
[00:36:33] What do you talk about on that podcast specifically?
[00:36:36] So this podcast is for developers and we talked mostly I guess architecture and design questions sort of higher level, you know, everything beyond MVC.
[00:36:46] Leo Dion (Host): Okay. Awesome, so you can be found on Twitter at?
[00:36:53] Alex Bush (Guest): @alex_v_bush
[00:36:55] Leo Dion (Host): Awesome that'll be all in the show notes. And then you can find this podcast we are on brightdigit so @brightdigit on Twitter also you can find my website brightdigit.com for more info about the services that brightdigit offers when it comes to iOS development. Alexm again. Thank you for coming on.
[00:37:16] Alex Bush (Guest): Thank you for inviting me on.
[00:37:18] Leo Dion (Host): Welcome, and we will talk to you later. Bye.
★ Support this podcast on Patreon ★