Heads up! To view this whole video, sign in with your Courses Plus account or enroll in your free 7-day trial. Sign In Enroll
Preview
Start a free Courses trial
to watch this video
In this episode, we talk with Amit Bijlani, a teacher at Treehouse and mobile app developer, about the alternatives to native mobile app development.
Mentioned References
Native
Native Wrapped WebView
One Source Cross Compiled
Native + Hosted JS Runtime
Other
Other Resoures
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
Welcome to the Dev Team show.
0:00
My name is James.
0:01
In this episode, we're going to talk
about the alternatives to doing native,
0:03
mobile application development.
0:07
Joining me is Amit Bijlani.
0:09
Amit is a teacher here at Treehouse and
is a mobile application developer.
0:12
Welcome to the show, Amit.
0:17
>> Hey James, thanks for
having me on the show.
0:19
[SOUND]
>> So I thought we would start,
0:21
by just kind of giving a lay of the land
and talking about what are the options
0:25
that are available to you, as a developer,
for doing mobile application development?
0:29
>> Right, so I think there
are like four different options.
0:35
And the first one of course
being native app development,
0:38
which is basically you do development
in the native language of the platform.
0:41
So for example, for
iOS it's Swift, or Objective C.
0:46
For Android it's Java.
0:50
So you're basically building
in those languages,
0:52
using those native libraries and building
the app with all the native components.
0:54
The second one,
which was pioneered a long time ago and
1:00
it's now part of phone gap and
Apache Cordova.
1:03
Which is basically a web wrapper.
1:07
You have your Web view, and you're
building your application using HTML, CSS,
1:09
and JavaScript.
1:14
And you're interfacing with the native
API's using your JavaScript calls.
1:15
And that didn't take off very well,
1:20
because the web views
weren't very performant.
1:22
And even though you could leverage a lot
of your web team to build a mobile app,
1:24
it was never like the way and you could
build nice little prototypes, but
1:30
I don't think you could really do
full fledged applications with that.
1:35
After came Xamarin, which basically
you leverages one language and
1:41
you cross compile it on
different platforms.
1:46
So if you have a team that's
very proficient at C#,
1:49
that same team can go out and
build an app for iOS and Android.
1:53
In that similar venue you have
something called ruby motion,
1:57
which basically leverage your ruby
team to build iOS and Android apps.
2:01
And finally you have the hosted
JavaScript run times.
2:07
Your basically React Native and
Native Script and
2:12
even Titanium Accelerator,
which basically you're communicating with
2:16
Java Script and the Java Script runtime
is sending native calls to your native.
2:22
You know, native libraries and
native app there.
2:28
So, you know, for example,
if you want some control on the screen,
2:31
it actually live, the run time
sends that called to basically
2:35
test that control and
display it on the screen.
2:41
>> That's a lot of options,
2:43
and I can imagine that as a developer or
if you're leading a project or
2:45
working with your customer,
whether that be internal or external.
2:50
How do you even begin,
2:54
what does that process look like
in evaluating these technologies?
2:56
in determining like what is a good fit.
3:00
>> Yeah, I mean that's a great question.
3:03
I think that all starts with
where you are in the company.
3:05
Right?
I mean,
3:10
what kind of resources
do you have available?
3:10
How big is your team?
3:13
What's the know how, and what do the teams
3:14
comfortable with, what technologies
the teams are comfortable with?
3:20
So for example,
if you're basically a .NET shop, so
3:23
probably Xamarin makes a lot of sense for
you guys because you already have a team
3:27
of C# developers that you can leverage and
build mobile apps really quickly.
3:31
In the same vein, if you're probably
a shop that's pretty heavy on
3:37
front end UI on your web team, so you're
probably using something like Angular,
3:43
React or
any of those big JavaScript libraries.
3:48
Then you have a lot of java
script developers and honestly,
3:51
i think, react, and
react native, and native script,
3:55
these are pretty good contenders to
your Native mobile app development.
3:58
I mean, if you ask me personally,
4:04
of course I always advocate
native app development.
4:06
And there's a very basic reason for that.
4:11
A phone or
device is basically your finger on glass.
4:15
And whatever is beneath the glass
has to be closest to the metal, and
4:20
the closest to the metal you can
get is by native app development.
4:24
I'm not trying to bash any
of the other approaches, but
4:28
I think the best case is what resources
you have available on your team.
4:32
>> So that user experience it sounds like.
4:38
In my experience of working with
mobile development and teams,
4:41
we spend a lot of time talking about
what that user experience was like and
4:45
what we needed to do in
terms of performance.
4:49
It always seemed like it came to
performance time, and time again.
4:52
That you wanted, like a user says
hey I want to do this action.
4:56
You had like, I forget,
it was like less than a second typically.
5:01
[LAUGH] That the expectation was, they
need to see that something is happening on
5:05
screen, or you run the risk that they're
going to just basically leave your app and
5:09
go do something else,
because they just don't have the patience.
5:14
Is that, like,
aligned with your own experience?
5:18
>> Absolutely.
5:23
I think with shrinking attention spans,
performances are a huge key,
5:24
decision maker when you're
talking about mobile apps.
5:29
And we talk about performance a lot,
5:34
especially in the IOS world
in a In the scrolling views.
5:36
When you're just scrolling through pages
of content, performance is a huge topic.
5:39
Because when you're scrolling and you're
downloading information on the fly and
5:45
trying to display that.
5:49
And if your finger does not match
what's beneath that glass, the user is
5:50
going to kind of get pissed off, or
just not have a very good user experience.
5:55
And, like you said, they have so
many options out there.
6:00
There are millions of apps in the app
store today, and you're competing for
6:04
all of that attention.
6:08
>> Yeah, and
I think Cordova in particular, so
6:09
the native web view
wrapped apps Have had a,
6:14
definitely a reputation for
poor performance.
6:18
And I think it's fair to say, that as
phones have gotten more powerful, so
6:23
Cordova's been around for a while.
6:27
And as phones have become
increasingly more powerful,
6:30
it's not even a linear increase, right?
6:33
Phones just continue to get more and
6:35
more powerful that even those applications
are benefiting from that boost.
6:37
And maybe so what used to be a scrolling
problem a list four years ago,
6:41
maybe it's not so much a problem today?
6:46
But I think that there's still a delta,
there's still a difference between native
6:48
like list scrolling performance and
even a web view wrapped application.
6:54
>> I totally agree, also especially for
a lot of these libraries out there or
7:00
development frameworks that
are out there that are not native.
7:05
You definitely hit edge cases,
especially like your
7:09
building an app that's very
specific to your use case.
7:14
And that use case has not been explored
by any of these non native tools.
7:19
And you hit that edge case and
then what happens?
7:24
Do you try to work around that edge case?
7:28
Do you try to build your own bridging
from the native to the non native SDKs?
7:30
What do you do?
7:36
And that also boils down to how many
resources do you have to spend on that.
7:38
So if you had a dedicated team that
was working on the native platforms
7:43
then you wouldn't have to worry
about all these edge cases.
7:47
And also is mobile, how variable or
7:50
valuable is mobile to your business,
right?
7:55
So if you're business is
heavily relied on mobile,
7:58
then I highly recommend
investing in a native team.
8:01
>> Yeah, and I think that you bring
up a good point that you know Your
8:05
situation may, or may not be
the same as someone elses situation.
8:10
So, for instance, if you're developing
a mobile business application,
8:15
you're company might dictate that
everyone is on Android phones.
8:20
So, if that's the case,
the value proposition of doing something,
8:24
other than just native
Android development.
8:28
It just not make sense and
that maybe what you're gonna focus on.
8:32
The other thing to that I think is
interesting is that by adopting like one
8:35
of these, we call them hybrid, but
alternative technologies, you're adding
8:40
one more thing to your technology stack
>> So
8:45
no longer are you just thinking
in terms of iOS or Android, but
8:48
now you've got C# and .NET potentially
that you also have to consider.
8:52
And whether or not you can
8:58
keep at arms length the platform specific
concerns that you were just talking about.
9:00
It's hard to know, and
9:06
that's probably gonna be very
variable across different situations.
9:07
>> Right.
I don't think you can ever
9:13
get away from not knowing
platform specific stuff.
9:14
Even with stuff like React Native or
NativeScript,
9:17
there are UI components
that are platform specific,
9:20
that you have to know about, and
know how to use them and implement them,
9:24
regardless of whether you're not an iOS
developer, or Android developer.
9:28
And I think one of the key things
to consider here is probably,
9:33
the mantra that Facebook has,
which is learn once and write anywhere.
9:37
Which I think is a great mantra, because
if you have a team that's familiar with
9:43
React, tomorrow they can turn around and
build an app for iOS, and build an app for
9:47
Android, without having to learn
any new technologies of languages.
9:52
And that goes very far.
9:56
>> Yeah, that is a powerful idea,
and you mentioned this earlier,
9:59
knowing, looking at what
resources you have available.
10:03
And kind of making a decision,
you're making a bet on something, right?
10:08
So if you choose react native
your investing time and money,
10:13
your own resources into learning that and
hopefully that continues to be viable.
10:19
And something that's going to be around.
10:24
And so, you need to be a little careful
about that too in terms of determining
10:26
what it is that you're bringing into
your shop, into your situation.
10:30
That one feels like not that risky,
comparatively?
10:34
But who knows, right?
10:38
I mean, things change, and
sometimes they change quickly.
10:40
>> Absolutely.
10:44
That's a really good point
that you brought up,
10:45
which is how long things
are gonna be around.
10:47
Things like tools that Facebook
introduces, or native script,
10:49
which is I think by this
company called Telerik.
10:55
These tools have enough backing that they
can survive whatever comes their way.
11:01
And they're not only just like, you can't
just build a tool and put it out there and
11:06
be like, all right, we're done.
11:10
You have to keep evolving with each
new version of iOS and Android.
11:12
And you have to keep pushing the envelope.
11:18
So I'm sure that the tools probably have
better caching mechanisms or hot push or
11:21
just more innovative technologies that
they keep baking into the tools so
11:27
that it can make the life of
the mobile developer a lot easier.
11:32
That said I love all of these tools and
I played around with all of them.
11:37
But I always keep coming back to native
app development, because I feel like
11:42
there's nothing like building closest
to the platform, and using the tools,
11:46
and libraries that are provided by the
platform and the vendors of the platform.
11:51
>> Yeah, and I imagine that there's
a little bit of a risk when you're trying
11:55
to focus on shared code.
12:00
You know, or develop once and
deploy you know, two multiple platforms
12:03
that you need to make sure that
you're taking it to consideration for
12:08
instance like the UI design elements.
12:12
On those specific platforms and
I know that these tools like summer for
12:15
instance you know, have put a lot
of effort into making sure that,
12:19
that does happened, that if you say,
I want a list, or I want this button, or
12:23
a dialog, that you're getting a UI element
on that platform that looks appropriate.
12:27
But even then, I do think that you need to
make sure that you're thinking of that and
12:35
you need to make sure that you're not
giving something up in translation.
12:42
You know by doing more of a shared
approach, we're right once and
12:45
deploy or run everywhere
>> Yeah,
12:50
and you bring up a really good point,
which is testing.
12:53
You have UI, and
UI on different resolutions, and
12:56
different screen sizes, and
you have landscape and portrait.
13:00
You also have to evaluate
what kind of debugging and
13:05
testing tools these platforms provide you,
these none native platforms.
13:08
Because that's vitally important,
especially if you're placing a button.
13:12
You wanna know where that button gonna
end up in a different screen resolution.
13:17
Where it's gonna end up in
a landscape mode, in a portrait mode.
13:21
And at least on the iOS and Android side,
13:25
all of these tools are provided
to you by Apple and Google.
13:28
And so, I'm not sure, I think
Xamarin has a pretty extensive tool.
13:33
And now that they've been acquired
by Microsoft, they keep evolving and
13:38
reading and building better and
better testing tools.
13:42
And I haven't seen a lot of great
testing stuff with react native.
13:45
Although they use a lot of the web,
13:50
the Chrome developer tools,
which is something as a web developer,
13:53
if you're already familiar with, then
you can just leverage that and use that.
13:58
Because a lot of the tools are, you
14:02
have JavaScript debugging built
in the Chrome debugger tools.
14:07
So, yeah, I would definitely sit and
evaluate what kind of Debugging and
14:12
testing tools are out there
with these nonnative platforms.
14:17
>> So for business applications
like I mentioned earlier,
14:21
these certainly I think
have the opportunity.
14:25
Maybe, maybe you don't, maybe it's,
14:27
maybe it's more of bring your
own device kind of environment.
14:28
And and who knows, like someone may
show up with, with a Windows device or
14:31
a Blackberry or something like that and
gets really complicated quickly, right.
14:35
But you might have the luxury of having
a single platform, so there's always that.
14:39
But in the consumer space, occasionally
you hear people make the argument of like,
14:44
well given our product or
the service that we're developing, maybe
14:49
they launch only in the Google Play Store,
or the Apple app store, and start there.
14:55
And then sort of opportunistically,
move into the other,
15:01
when it makes sense to do so.
15:04
Is that also a common,
a viable way of thinking of this?
15:05
>> Absolutely, definitely.
15:10
Like I said,
if your main play is not mobile,
15:12
so your main product is web or
your business is something else and
15:16
you have a web component to it,
and you're evaluating mobile so
15:21
you can start off with just one
platform and see how it does there.
15:25
And also evaluate whether most of
your users lie on that platform.
15:29
Maybe your platform is only IOS,
15:34
the majority of the users
are using just iPhones.
15:37
Or a majority of your users
are using just Android phones if
15:41
you're not outside in third world
countries or something like that.
15:45
And, your major user base is
based on a different platform.
15:48
And you can go out and
evaluate what that feels like.
15:53
And then come back and reassess.
15:57
Like hey, like do we want to
dedicate more resources to this?
15:59
And do we want to rewrite this?
16:03
Or do we want to use this non-native
tools or do we want to go full native?
16:04
Because these are the edge cases that we
might run into so a lot of questions that
16:10
you can ask and evaluate before you
dedicate completely to one platform or
16:15
all of them, or any of the tools
that we've been talking about.
16:20
>> Yeah, absolutely.
16:24
And, I mean, there is obviously,
16:25
there's huge dose of reality
mixed in here as well.
16:28
Given your specific situation,
you may just not have the resources or
16:31
the budget you know, to develop native
applications on multiple platforms.
16:37
And so giving that you know,
16:42
it may force your hand to look at
something like React Native or.
16:43
Or Xamarin or one of these others.
16:46
And it's more of a practical thing.
16:50
And hopefully, if that is the case,
that the requirements for
16:52
your specific application are such,
that makes sense.
16:57
And then you're able to do the majority
of everything that you need to do and
17:01
do it well enough.
17:06
And maybe you can avoid.
17:08
Because let's face it.
17:09
It's not going to be a cheap proposition
either in the beginning developing or
17:10
over the long haul as
you mentioned earlier.
17:16
Adding features,
maintenance to that application,
17:18
that's a significant investment to
make that call that says, well,
17:22
we're going to do this on
each of the platforms.
17:25
So stand alone if you will, right?
17:28
>> Yeah, you can just like build an app
and put it out there and hope for
17:31
the best.
17:34
>> [LAUGH]
>> You have to keep investing and
17:35
evolving and you know,
ulcerating because if that's.
17:37
If you've even dedicated that many
resources to actually building the app,
17:41
it's only fair that you dedicate
resources enough to maintain or
17:45
add more features and evolve the app.
17:49
So that you can grow
the user base over time.
17:51
>> So in sum, I think it's fair to
say that there is no magic bullet,
17:54
right, or
silver bullet into the this equation.
17:59
You have to think about your users,
you have to think about your product and
18:03
how your users are gonna use that product,
what's gonna give the best experience,
18:06
you have to think about your
development team, right?
18:11
So you gotta think about who's gonna
be developing this application,
18:13
who's gonna be maintaining it and
what is the best fit there.
18:16
And then there's other constraints,
like cost, schedule.
18:19
So if you think of those things and
18:24
try to find the solution that
gives you the best of those for
18:26
your given situation at that,
that probably is the best way to presume.
18:31
>> Yeah, I think that's a great way
to summarize it, because there are so
18:37
many different variants and so
18:41
many things that you have to consider when
actually thinking about a mobile app.
18:43
And given that we have all of
these tools now available to us.
18:47
And I don't want to put down any of
these non-native solutions because,
18:52
like you said, given your constraints,
maybe your team has only
18:57
These many days to produce something and
it have these set of skills.
19:02
So, you can leverage all of those skills
and technologies that your team is already
19:07
familiar with, and then run with whatever
solution that you guys decide upon.
19:11
And there is no right or
wrong here, right?
19:16
So, if you can put out
an MVP using react native or
19:18
using native scripts there
is nothing wrong with that.
19:22
>> Well thanks, thanks for
taking time to talk with me about native
19:26
application development and alternatives
to doing application development.
19:30
It's great having you on the show.
19:34
>> Same to you, thank you so much, James.
19:36
>> Be sure to check that notes
that accompanied this video for
19:38
links to additional resources.
19:41
Also, be sure to rate this video,
and let us know how we're doing.
19:43
Or, if you have a topic that
you'd like to see us talk about,
19:46
let us know about that, too.
19:50
Thanks for watching, and
we'll see you next time.
19:51
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up