1 00:00:00,090 --> 00:00:01,890 Welcome to the Dev Team show. 2 00:00:01,890 --> 00:00:03,240 My name is James. 3 00:00:03,240 --> 00:00:07,710 In this episode, we're going to talk about the alternatives to doing native, 4 00:00:07,710 --> 00:00:09,890 mobile application development. 5 00:00:09,890 --> 00:00:12,320 Joining me is Amit Bijlani. 6 00:00:12,320 --> 00:00:17,500 Amit is a teacher here at Treehouse and is a mobile application developer. 7 00:00:17,500 --> 00:00:18,540 Welcome to the show, Amit. 8 00:00:19,570 --> 00:00:21,315 >> Hey James, thanks for having me on the show. 9 00:00:21,315 --> 00:00:25,826 [SOUND] >> So I thought we would start, 10 00:00:25,826 --> 00:00:29,795 by just kind of giving a lay of the land and talking about what are the options 11 00:00:29,795 --> 00:00:35,020 that are available to you, as a developer, for doing mobile application development? 12 00:00:35,020 --> 00:00:38,240 >> Right, so I think there are like four different options. 13 00:00:38,240 --> 00:00:41,320 And the first one of course being native app development, 14 00:00:41,320 --> 00:00:46,850 which is basically you do development in the native language of the platform. 15 00:00:46,850 --> 00:00:50,540 So for example, for iOS it's Swift, or Objective C. 16 00:00:50,540 --> 00:00:52,320 For Android it's Java. 17 00:00:52,320 --> 00:00:54,920 So you're basically building in those languages, 18 00:00:54,920 --> 00:00:59,729 using those native libraries and building the app with all the native components. 19 00:01:00,760 --> 00:01:03,570 The second one, which was pioneered a long time ago and 20 00:01:03,570 --> 00:01:07,210 it's now part of phone gap and Apache Cordova. 21 00:01:07,210 --> 00:01:09,560 Which is basically a web wrapper. 22 00:01:09,560 --> 00:01:14,520 You have your Web view, and you're building your application using HTML, CSS, 23 00:01:14,520 --> 00:01:15,900 and JavaScript. 24 00:01:15,900 --> 00:01:20,400 And you're interfacing with the native API's using your JavaScript calls. 25 00:01:20,400 --> 00:01:22,269 And that didn't take off very well, 26 00:01:22,269 --> 00:01:24,812 because the web views weren't very performant. 27 00:01:24,812 --> 00:01:30,402 And even though you could leverage a lot of your web team to build a mobile app, 28 00:01:30,402 --> 00:01:35,648 it was never like the way and you could build nice little prototypes, but 29 00:01:35,648 --> 00:01:41,580 I don't think you could really do full fledged applications with that. 30 00:01:41,580 --> 00:01:46,870 After came Xamarin, which basically you leverages one language and 31 00:01:46,870 --> 00:01:49,850 you cross compile it on different platforms. 32 00:01:49,850 --> 00:01:53,358 So if you have a team that's very proficient at C#, 33 00:01:53,358 --> 00:01:57,449 that same team can go out and build an app for iOS and Android. 34 00:01:57,449 --> 00:02:01,973 In that similar venue you have something called ruby motion, 35 00:02:01,973 --> 00:02:07,670 which basically leverage your ruby team to build iOS and Android apps. 36 00:02:07,670 --> 00:02:12,220 And finally you have the hosted JavaScript run times. 37 00:02:12,220 --> 00:02:16,680 Your basically React Native and Native Script and 38 00:02:16,680 --> 00:02:22,560 even Titanium Accelerator, which basically you're communicating with 39 00:02:22,560 --> 00:02:27,510 Java Script and the Java Script runtime is sending native calls to your native. 40 00:02:28,870 --> 00:02:31,360 You know, native libraries and native app there. 41 00:02:31,360 --> 00:02:35,260 So, you know, for example, if you want some control on the screen, 42 00:02:35,260 --> 00:02:40,110 it actually live, the run time sends that called to basically 43 00:02:41,270 --> 00:02:43,960 test that control and display it on the screen. 44 00:02:43,960 --> 00:02:45,980 >> That's a lot of options, 45 00:02:45,980 --> 00:02:50,680 and I can imagine that as a developer or if you're leading a project or 46 00:02:50,680 --> 00:02:54,950 working with your customer, whether that be internal or external. 47 00:02:54,950 --> 00:02:56,400 How do you even begin, 48 00:02:56,400 --> 00:03:00,730 what does that process look like in evaluating these technologies? 49 00:03:00,730 --> 00:03:03,810 in determining like what is a good fit. 50 00:03:03,810 --> 00:03:05,300 >> Yeah, I mean that's a great question. 51 00:03:05,300 --> 00:03:10,050 I think that all starts with where you are in the company. 52 00:03:10,050 --> 00:03:10,770 Right? I mean, 53 00:03:10,770 --> 00:03:13,565 what kind of resources do you have available? 54 00:03:13,565 --> 00:03:14,835 How big is your team? 55 00:03:14,835 --> 00:03:20,555 What's the know how, and what do the teams 56 00:03:20,555 --> 00:03:23,685 comfortable with, what technologies the teams are comfortable with? 57 00:03:23,685 --> 00:03:27,895 So for example, if you're basically a .NET shop, so 58 00:03:27,895 --> 00:03:31,735 probably Xamarin makes a lot of sense for you guys because you already have a team 59 00:03:31,735 --> 00:03:35,995 of C# developers that you can leverage and build mobile apps really quickly. 60 00:03:37,690 --> 00:03:42,310 In the same vein, if you're probably a shop that's pretty heavy on 61 00:03:43,400 --> 00:03:48,130 front end UI on your web team, so you're probably using something like Angular, 62 00:03:48,130 --> 00:03:51,610 React or any of those big JavaScript libraries. 63 00:03:51,610 --> 00:03:55,780 Then you have a lot of java script developers and honestly, 64 00:03:55,780 --> 00:03:58,920 i think, react, and react native, and native script, 65 00:03:58,920 --> 00:04:04,850 these are pretty good contenders to your Native mobile app development. 66 00:04:04,850 --> 00:04:06,320 I mean, if you ask me personally, 67 00:04:06,320 --> 00:04:11,100 of course I always advocate native app development. 68 00:04:11,100 --> 00:04:15,282 And there's a very basic reason for that. 69 00:04:15,282 --> 00:04:20,011 A phone or device is basically your finger on glass. 70 00:04:20,011 --> 00:04:24,257 And whatever is beneath the glass has to be closest to the metal, and 71 00:04:24,257 --> 00:04:28,367 the closest to the metal you can get is by native app development. 72 00:04:28,367 --> 00:04:32,188 I'm not trying to bash any of the other approaches, but 73 00:04:32,188 --> 00:04:37,080 I think the best case is what resources you have available on your team. 74 00:04:38,190 --> 00:04:41,290 >> So that user experience it sounds like. 75 00:04:41,290 --> 00:04:45,970 In my experience of working with mobile development and teams, 76 00:04:45,970 --> 00:04:49,850 we spend a lot of time talking about what that user experience was like and 77 00:04:49,850 --> 00:04:52,390 what we needed to do in terms of performance. 78 00:04:52,390 --> 00:04:56,710 It always seemed like it came to performance time, and time again. 79 00:04:56,710 --> 00:05:01,300 That you wanted, like a user says hey I want to do this action. 80 00:05:01,300 --> 00:05:05,204 You had like, I forget, it was like less than a second typically. 81 00:05:05,204 --> 00:05:09,961 [LAUGH] That the expectation was, they need to see that something is happening on 82 00:05:09,961 --> 00:05:14,931 screen, or you run the risk that they're going to just basically leave your app and 83 00:05:14,931 --> 00:05:18,990 go do something else, because they just don't have the patience. 84 00:05:18,990 --> 00:05:23,680 Is that, like, aligned with your own experience? 85 00:05:23,680 --> 00:05:24,600 >> Absolutely. 86 00:05:24,600 --> 00:05:29,831 I think with shrinking attention spans, performances are a huge key, 87 00:05:29,831 --> 00:05:34,029 decision maker when you're talking about mobile apps. 88 00:05:34,029 --> 00:05:36,364 And we talk about performance a lot, 89 00:05:36,364 --> 00:05:39,916 especially in the IOS world in a In the scrolling views. 90 00:05:39,916 --> 00:05:45,413 When you're just scrolling through pages of content, performance is a huge topic. 91 00:05:45,413 --> 00:05:49,601 Because when you're scrolling and you're downloading information on the fly and 92 00:05:49,601 --> 00:05:50,872 trying to display that. 93 00:05:50,872 --> 00:05:55,676 And if your finger does not match what's beneath that glass, the user is 94 00:05:55,676 --> 00:06:00,820 going to kind of get pissed off, or just not have a very good user experience. 95 00:06:00,820 --> 00:06:04,400 And, like you said, they have so many options out there. 96 00:06:04,400 --> 00:06:08,000 There are millions of apps in the app store today, and you're competing for 97 00:06:08,000 --> 00:06:09,620 all of that attention. 98 00:06:09,620 --> 00:06:14,109 >> Yeah, and I think Cordova in particular, so 99 00:06:14,109 --> 00:06:18,480 the native web view wrapped apps Have had a, 100 00:06:18,480 --> 00:06:23,340 definitely a reputation for poor performance. 101 00:06:23,340 --> 00:06:27,515 And I think it's fair to say, that as phones have gotten more powerful, so 102 00:06:27,515 --> 00:06:30,000 Cordova's been around for a while. 103 00:06:30,000 --> 00:06:33,210 And as phones have become increasingly more powerful, 104 00:06:33,210 --> 00:06:35,500 it's not even a linear increase, right? 105 00:06:35,500 --> 00:06:37,410 Phones just continue to get more and 106 00:06:37,410 --> 00:06:41,760 more powerful that even those applications are benefiting from that boost. 107 00:06:41,760 --> 00:06:46,320 And maybe so what used to be a scrolling problem a list four years ago, 108 00:06:46,320 --> 00:06:48,850 maybe it's not so much a problem today? 109 00:06:48,850 --> 00:06:54,620 But I think that there's still a delta, there's still a difference between native 110 00:06:54,620 --> 00:07:00,360 like list scrolling performance and even a web view wrapped application. 111 00:07:00,360 --> 00:07:05,149 >> I totally agree, also especially for a lot of these libraries out there or 112 00:07:05,149 --> 00:07:09,334 development frameworks that are out there that are not native. 113 00:07:09,334 --> 00:07:14,296 You definitely hit edge cases, especially like your 114 00:07:14,296 --> 00:07:19,770 building an app that's very specific to your use case. 115 00:07:19,770 --> 00:07:24,951 And that use case has not been explored by any of these non native tools. 116 00:07:24,951 --> 00:07:28,110 And you hit that edge case and then what happens? 117 00:07:28,110 --> 00:07:30,530 Do you try to work around that edge case? 118 00:07:30,530 --> 00:07:36,788 Do you try to build your own bridging from the native to the non native SDKs? 119 00:07:36,788 --> 00:07:38,740 What do you do? 120 00:07:38,740 --> 00:07:43,080 And that also boils down to how many resources do you have to spend on that. 121 00:07:43,080 --> 00:07:47,970 So if you had a dedicated team that was working on the native platforms 122 00:07:47,970 --> 00:07:50,930 then you wouldn't have to worry about all these edge cases. 123 00:07:50,930 --> 00:07:55,220 And also is mobile, how variable or 124 00:07:55,220 --> 00:07:58,750 valuable is mobile to your business, right? 125 00:07:58,750 --> 00:08:01,840 So if you're business is heavily relied on mobile, 126 00:08:01,840 --> 00:08:05,434 then I highly recommend investing in a native team. 127 00:08:05,434 --> 00:08:10,417 >> Yeah, and I think that you bring up a good point that you know Your 128 00:08:10,417 --> 00:08:15,630 situation may, or may not be the same as someone elses situation. 129 00:08:15,630 --> 00:08:20,120 So, for instance, if you're developing a mobile business application, 130 00:08:20,120 --> 00:08:24,140 you're company might dictate that everyone is on Android phones. 131 00:08:24,140 --> 00:08:28,030 So, if that's the case, the value proposition of doing something, 132 00:08:28,030 --> 00:08:32,430 other than just native Android development. 133 00:08:32,430 --> 00:08:35,532 It just not make sense and that maybe what you're gonna focus on. 134 00:08:35,532 --> 00:08:40,186 The other thing to that I think is interesting is that by adopting like one 135 00:08:40,186 --> 00:08:45,373 of these, we call them hybrid, but alternative technologies, you're adding 136 00:08:45,373 --> 00:08:48,650 one more thing to your technology stack >> So 137 00:08:48,650 --> 00:08:52,670 no longer are you just thinking in terms of iOS or Android, but 138 00:08:52,670 --> 00:08:58,290 now you've got C# and .NET potentially that you also have to consider. 139 00:08:58,290 --> 00:09:00,850 And whether or not you can 140 00:09:00,850 --> 00:09:06,490 keep at arms length the platform specific concerns that you were just talking about. 141 00:09:06,490 --> 00:09:07,890 It's hard to know, and 142 00:09:07,890 --> 00:09:11,700 that's probably gonna be very variable across different situations. 143 00:09:13,240 --> 00:09:14,809 >> Right. I don't think you can ever 144 00:09:14,809 --> 00:09:17,417 get away from not knowing platform specific stuff. 145 00:09:17,417 --> 00:09:20,678 Even with stuff like React Native or NativeScript, 146 00:09:20,678 --> 00:09:24,013 there are UI components that are platform specific, 147 00:09:24,013 --> 00:09:28,529 that you have to know about, and know how to use them and implement them, 148 00:09:28,529 --> 00:09:33,374 regardless of whether you're not an iOS developer, or Android developer. 149 00:09:33,374 --> 00:09:37,853 And I think one of the key things to consider here is probably, 150 00:09:37,853 --> 00:09:43,043 the mantra that Facebook has, which is learn once and write anywhere. 151 00:09:43,043 --> 00:09:47,628 Which I think is a great mantra, because if you have a team that's familiar with 152 00:09:47,628 --> 00:09:52,349 React, tomorrow they can turn around and build an app for iOS, and build an app for 153 00:09:52,349 --> 00:09:56,760 Android, without having to learn any new technologies of languages. 154 00:09:56,760 --> 00:09:59,020 And that goes very far. 155 00:09:59,020 --> 00:10:03,888 >> Yeah, that is a powerful idea, and you mentioned this earlier, 156 00:10:03,888 --> 00:10:08,237 knowing, looking at what resources you have available. 157 00:10:08,237 --> 00:10:13,250 And kind of making a decision, you're making a bet on something, right? 158 00:10:13,250 --> 00:10:19,230 So if you choose react native your investing time and money, 159 00:10:19,230 --> 00:10:24,230 your own resources into learning that and hopefully that continues to be viable. 160 00:10:24,230 --> 00:10:26,490 And something that's going to be around. 161 00:10:26,490 --> 00:10:30,540 And so, you need to be a little careful about that too in terms of determining 162 00:10:30,540 --> 00:10:34,950 what it is that you're bringing into your shop, into your situation. 163 00:10:34,950 --> 00:10:38,562 That one feels like not that risky, comparatively? 164 00:10:38,562 --> 00:10:40,370 But who knows, right? 165 00:10:40,370 --> 00:10:42,980 I mean, things change, and sometimes they change quickly. 166 00:10:44,020 --> 00:10:45,380 >> Absolutely. 167 00:10:45,380 --> 00:10:47,395 That's a really good point that you brought up, 168 00:10:47,395 --> 00:10:49,272 which is how long things are gonna be around. 169 00:10:49,272 --> 00:10:55,597 Things like tools that Facebook introduces, or native script, 170 00:10:55,597 --> 00:11:01,270 which is I think by this company called Telerik. 171 00:11:01,270 --> 00:11:06,380 These tools have enough backing that they can survive whatever comes their way. 172 00:11:06,380 --> 00:11:10,900 And they're not only just like, you can't just build a tool and put it out there and 173 00:11:10,900 --> 00:11:12,600 be like, all right, we're done. 174 00:11:12,600 --> 00:11:18,550 You have to keep evolving with each new version of iOS and Android. 175 00:11:18,550 --> 00:11:21,580 And you have to keep pushing the envelope. 176 00:11:21,580 --> 00:11:27,790 So I'm sure that the tools probably have better caching mechanisms or hot push or 177 00:11:27,790 --> 00:11:32,950 just more innovative technologies that they keep baking into the tools so 178 00:11:32,950 --> 00:11:35,710 that it can make the life of the mobile developer a lot easier. 179 00:11:37,310 --> 00:11:42,305 That said I love all of these tools and I played around with all of them. 180 00:11:42,305 --> 00:11:46,375 But I always keep coming back to native app development, because I feel like 181 00:11:46,375 --> 00:11:51,215 there's nothing like building closest to the platform, and using the tools, 182 00:11:51,215 --> 00:11:55,835 and libraries that are provided by the platform and the vendors of the platform. 183 00:11:55,835 --> 00:12:00,695 >> Yeah, and I imagine that there's a little bit of a risk when you're trying 184 00:12:00,695 --> 00:12:03,340 to focus on shared code. 185 00:12:03,340 --> 00:12:08,530 You know, or develop once and deploy you know, two multiple platforms 186 00:12:08,530 --> 00:12:12,390 that you need to make sure that you're taking it to consideration for 187 00:12:12,390 --> 00:12:15,580 instance like the UI design elements. 188 00:12:15,580 --> 00:12:19,330 On those specific platforms and I know that these tools like summer for 189 00:12:19,330 --> 00:12:23,260 instance you know, have put a lot of effort into making sure that, 190 00:12:23,260 --> 00:12:27,940 that does happened, that if you say, I want a list, or I want this button, or 191 00:12:27,940 --> 00:12:35,010 a dialog, that you're getting a UI element on that platform that looks appropriate. 192 00:12:35,010 --> 00:12:42,380 But even then, I do think that you need to make sure that you're thinking of that and 193 00:12:42,380 --> 00:12:45,870 you need to make sure that you're not giving something up in translation. 194 00:12:45,870 --> 00:12:50,810 You know by doing more of a shared approach, we're right once and 195 00:12:50,810 --> 00:12:53,287 deploy or run everywhere >> Yeah, 196 00:12:53,287 --> 00:12:56,801 and you bring up a really good point, which is testing. 197 00:12:56,801 --> 00:13:00,629 You have UI, and UI on different resolutions, and 198 00:13:00,629 --> 00:13:05,443 different screen sizes, and you have landscape and portrait. 199 00:13:05,443 --> 00:13:08,392 You also have to evaluate what kind of debugging and 200 00:13:08,392 --> 00:13:12,792 testing tools these platforms provide you, these none native platforms. 201 00:13:12,792 --> 00:13:17,447 Because that's vitally important, especially if you're placing a button. 202 00:13:17,447 --> 00:13:21,815 You wanna know where that button gonna end up in a different screen resolution. 203 00:13:21,815 --> 00:13:25,012 Where it's gonna end up in a landscape mode, in a portrait mode. 204 00:13:25,012 --> 00:13:28,245 And at least on the iOS and Android side, 205 00:13:28,245 --> 00:13:33,310 all of these tools are provided to you by Apple and Google. 206 00:13:33,310 --> 00:13:38,470 And so, I'm not sure, I think Xamarin has a pretty extensive tool. 207 00:13:38,470 --> 00:13:42,290 And now that they've been acquired by Microsoft, they keep evolving and 208 00:13:42,290 --> 00:13:45,470 reading and building better and better testing tools. 209 00:13:45,470 --> 00:13:50,290 And I haven't seen a lot of great testing stuff with react native. 210 00:13:50,290 --> 00:13:53,730 Although they use a lot of the web, 211 00:13:53,730 --> 00:13:58,770 the Chrome developer tools, which is something as a web developer, 212 00:13:58,770 --> 00:14:02,890 if you're already familiar with, then you can just leverage that and use that. 213 00:14:02,890 --> 00:14:07,740 Because a lot of the tools are, you 214 00:14:07,740 --> 00:14:12,870 have JavaScript debugging built in the Chrome debugger tools. 215 00:14:12,870 --> 00:14:17,990 So, yeah, I would definitely sit and evaluate what kind of Debugging and 216 00:14:17,990 --> 00:14:21,790 testing tools are out there with these nonnative platforms. 217 00:14:21,790 --> 00:14:25,050 >> So for business applications like I mentioned earlier, 218 00:14:25,050 --> 00:14:27,320 these certainly I think have the opportunity. 219 00:14:27,320 --> 00:14:28,900 Maybe, maybe you don't, maybe it's, 220 00:14:28,900 --> 00:14:31,610 maybe it's more of bring your own device kind of environment. 221 00:14:31,610 --> 00:14:35,082 And and who knows, like someone may show up with, with a Windows device or 222 00:14:35,082 --> 00:14:39,018 a Blackberry or something like that and gets really complicated quickly, right. 223 00:14:39,018 --> 00:14:44,260 But you might have the luxury of having a single platform, so there's always that. 224 00:14:44,260 --> 00:14:49,690 But in the consumer space, occasionally you hear people make the argument of like, 225 00:14:49,690 --> 00:14:55,100 well given our product or the service that we're developing, maybe 226 00:14:55,100 --> 00:15:01,100 they launch only in the Google Play Store, or the Apple app store, and start there. 227 00:15:01,100 --> 00:15:04,339 And then sort of opportunistically, move into the other, 228 00:15:04,339 --> 00:15:05,906 when it makes sense to do so. 229 00:15:05,906 --> 00:15:10,890 Is that also a common, a viable way of thinking of this? 230 00:15:10,890 --> 00:15:12,850 >> Absolutely, definitely. 231 00:15:12,850 --> 00:15:16,660 Like I said, if your main play is not mobile, 232 00:15:16,660 --> 00:15:21,270 so your main product is web or your business is something else and 233 00:15:21,270 --> 00:15:25,120 you have a web component to it, and you're evaluating mobile so 234 00:15:25,120 --> 00:15:29,900 you can start off with just one platform and see how it does there. 235 00:15:29,900 --> 00:15:34,420 And also evaluate whether most of your users lie on that platform. 236 00:15:34,420 --> 00:15:37,480 Maybe your platform is only IOS, 237 00:15:37,480 --> 00:15:41,040 the majority of the users are using just iPhones. 238 00:15:41,040 --> 00:15:45,590 Or a majority of your users are using just Android phones if 239 00:15:45,590 --> 00:15:48,990 you're not outside in third world countries or something like that. 240 00:15:48,990 --> 00:15:53,720 And, your major user base is based on a different platform. 241 00:15:53,720 --> 00:15:57,650 And you can go out and evaluate what that feels like. 242 00:15:57,650 --> 00:15:59,810 And then come back and reassess. 243 00:15:59,810 --> 00:16:03,410 Like hey, like do we want to dedicate more resources to this? 244 00:16:03,410 --> 00:16:04,910 And do we want to rewrite this? 245 00:16:04,910 --> 00:16:10,340 Or do we want to use this non-native tools or do we want to go full native? 246 00:16:10,340 --> 00:16:15,366 Because these are the edge cases that we might run into so a lot of questions that 247 00:16:15,366 --> 00:16:20,087 you can ask and evaluate before you dedicate completely to one platform or 248 00:16:20,087 --> 00:16:24,220 all of them, or any of the tools that we've been talking about. 249 00:16:24,220 --> 00:16:25,910 >> Yeah, absolutely. 250 00:16:25,910 --> 00:16:28,300 And, I mean, there is obviously, 251 00:16:28,300 --> 00:16:31,780 there's huge dose of reality mixed in here as well. 252 00:16:31,780 --> 00:16:37,370 Given your specific situation, you may just not have the resources or 253 00:16:37,370 --> 00:16:42,410 the budget you know, to develop native applications on multiple platforms. 254 00:16:42,410 --> 00:16:43,620 And so giving that you know, 255 00:16:43,620 --> 00:16:46,905 it may force your hand to look at something like React Native or. 256 00:16:46,905 --> 00:16:50,205 Or Xamarin or one of these others. 257 00:16:50,205 --> 00:16:52,405 And it's more of a practical thing. 258 00:16:52,405 --> 00:16:57,545 And hopefully, if that is the case, that the requirements for 259 00:16:57,545 --> 00:17:01,905 your specific application are such, that makes sense. 260 00:17:01,905 --> 00:17:06,105 And then you're able to do the majority of everything that you need to do and 261 00:17:06,105 --> 00:17:06,909 do it well enough. 262 00:17:08,180 --> 00:17:09,480 And maybe you can avoid. 263 00:17:09,480 --> 00:17:10,890 Because let's face it. 264 00:17:10,890 --> 00:17:16,390 It's not going to be a cheap proposition either in the beginning developing or 265 00:17:16,390 --> 00:17:18,730 over the long haul as you mentioned earlier. 266 00:17:18,730 --> 00:17:22,170 Adding features, maintenance to that application, 267 00:17:22,170 --> 00:17:25,900 that's a significant investment to make that call that says, well, 268 00:17:25,900 --> 00:17:28,950 we're going to do this on each of the platforms. 269 00:17:28,950 --> 00:17:30,670 So stand alone if you will, right? 270 00:17:31,680 --> 00:17:34,680 >> Yeah, you can just like build an app and put it out there and hope for 271 00:17:34,680 --> 00:17:35,295 the best. 272 00:17:35,295 --> 00:17:37,220 >> [LAUGH] >> You have to keep investing and 273 00:17:37,220 --> 00:17:41,570 evolving and you know, ulcerating because if that's. 274 00:17:41,570 --> 00:17:45,780 If you've even dedicated that many resources to actually building the app, 275 00:17:45,780 --> 00:17:49,790 it's only fair that you dedicate resources enough to maintain or 276 00:17:49,790 --> 00:17:51,980 add more features and evolve the app. 277 00:17:51,980 --> 00:17:54,040 So that you can grow the user base over time. 278 00:17:54,040 --> 00:17:59,860 >> So in sum, I think it's fair to say that there is no magic bullet, 279 00:17:59,860 --> 00:18:03,330 right, or silver bullet into the this equation. 280 00:18:03,330 --> 00:18:06,460 You have to think about your users, you have to think about your product and 281 00:18:06,460 --> 00:18:11,540 how your users are gonna use that product, what's gonna give the best experience, 282 00:18:11,540 --> 00:18:13,750 you have to think about your development team, right? 283 00:18:13,750 --> 00:18:16,822 So you gotta think about who's gonna be developing this application, 284 00:18:16,822 --> 00:18:19,497 who's gonna be maintaining it and what is the best fit there. 285 00:18:19,497 --> 00:18:24,283 And then there's other constraints, like cost, schedule. 286 00:18:24,283 --> 00:18:26,823 So if you think of those things and 287 00:18:26,823 --> 00:18:31,269 try to find the solution that gives you the best of those for 288 00:18:31,269 --> 00:18:37,420 your given situation at that, that probably is the best way to presume. 289 00:18:37,420 --> 00:18:41,010 >> Yeah, I think that's a great way to summarize it, because there are so 290 00:18:41,010 --> 00:18:43,410 many different variants and so 291 00:18:43,410 --> 00:18:47,850 many things that you have to consider when actually thinking about a mobile app. 292 00:18:47,850 --> 00:18:52,155 And given that we have all of these tools now available to us. 293 00:18:52,155 --> 00:18:57,690 And I don't want to put down any of these non-native solutions because, 294 00:18:57,690 --> 00:19:01,710 like you said, given your constraints, maybe your team has only 295 00:19:02,970 --> 00:19:07,890 These many days to produce something and it have these set of skills. 296 00:19:07,890 --> 00:19:11,860 So, you can leverage all of those skills and technologies that your team is already 297 00:19:11,860 --> 00:19:16,830 familiar with, and then run with whatever solution that you guys decide upon. 298 00:19:16,830 --> 00:19:18,720 And there is no right or wrong here, right? 299 00:19:18,720 --> 00:19:22,620 So, if you can put out an MVP using react native or 300 00:19:22,620 --> 00:19:24,970 using native scripts there is nothing wrong with that. 301 00:19:26,010 --> 00:19:30,340 >> Well thanks, thanks for taking time to talk with me about native 302 00:19:30,340 --> 00:19:34,350 application development and alternatives to doing application development. 303 00:19:34,350 --> 00:19:36,420 It's great having you on the show. 304 00:19:36,420 --> 00:19:38,650 >> Same to you, thank you so much, James. 305 00:19:38,650 --> 00:19:41,230 >> Be sure to check that notes that accompanied this video for 306 00:19:41,230 --> 00:19:43,340 links to additional resources. 307 00:19:43,340 --> 00:19:46,910 Also, be sure to rate this video, and let us know how we're doing. 308 00:19:46,910 --> 00:19:50,000 Or, if you have a topic that you'd like to see us talk about, 309 00:19:50,000 --> 00:19:51,520 let us know about that, too. 310 00:19:51,520 --> 00:19:53,450 Thanks for watching, and we'll see you next time.