Insider's Guide to Udacity Android Developer Nanodegree Part 7 - Full Stack Android
Written by Nikos Vaggalis   
Monday, 23 April 2018
Article Index
Insider's Guide to Udacity Android Developer Nanodegree Part 7 - Full Stack Android
Adapting to Android's Needs
HTTP Requests
Combating Memory Leaks
GSON Problems
Filtering and Comparing Devices
Functional Programming in Java
Conclusions

Native vs Web

In the end, there's a lot of effort required to build and release a native app.Is it really worth the effort given that I've already had a full blown WebSite, despite that it had been build as proof of concept having rather slim chances of commercial success?

There's many reasons why having a mobile app on the side is beneficial, and of the most important ones is getting rid of browsers' incompatibilities, especially regarding JavaScript.What follows is a true story on the matter:

A colleague had been using browserA (which it was is not important) and had logged into his bank account.He found that despite paying a bill in full, there was an annoying message keep popping up telling him that there's still some amount due.He called the help line which confirmed that the bill had been paid in full and that there wasn't any amount due.He closed the phone and walked out.Couple of days later, he logged into his bank account again upon which he was greeted once more with the very same message!Called the help line again, whose representative couldn't figure out what was really going on so she passed the request on to one of the web site's developers who in turn re-confirmed that there wasn't any amount due.But the colleague could still see that damn message;by that time he had really started worrying!

Being aware of the browsers' incompatibilities as well as having a hunch, I advised him to switch browsers and try again.Logging in with browserB there was no message any longer!

This just goes to show the disparity under browsers implement standards and render Javascript.

Furthermore, the Browser acts an Operating System of its own. Browsers render under a variety of engines and idiosyncratic properties which can make or break your website. Therefore the need for tools such as Modernizr, which tell you what HTML, CSS and JavaScript features the user’s browser can work with. On a native app you just have one Operating System to deal with, which regardless of version incompatibilities offers uniformity at the very least. And that's what matters most, the consistent behaviour across devices.

The use of just one language, Java, Kotlin, whatever, for both back-end and front-end development is key. That's not the case on the web; you need at the very least have knowledge in HTML, CSS, JavaScript, JQuery and a template engine. Then again there's the subsidiaries; CSS-grid, Flexbox or maybe Bootstrap? There's no shortage of frameworks too; React, Angular, Vue, you name it. Then what about the backend? Building a dynamic website and not opting for JavaScript through Node.js would require knowledge in yet another language like Perl, Ruby, PHP, C#(?) and its associated MVC framework. Smadeseek, for example, runs on Perl and the Dancer framework.

And what about state? It's much easier to maintain in a native app, offering the mobile users a richer and smoother experience. Saving favourites, preferences, credits and state recovering after exceptional situations are a cakewalk. Other reasons include the gains in performance due to offline support and accessing the device's hardware directly.

Then testing. You can use your favourite Unit testing framework, fire up your emulator and load your custom devices versus the non-standardized testing across browsers and their versions.

Security wise despite that native apps are not immune to vulnerabilities according to OWASP's Mobile Top 10, XSS, prevalent on Web sites or even mobile apps using WebViews, is not one of them.

Saying that, there's also a handy Mobile App vulnerability Scanner.Testing my app against it revealed that it communicates with 3 remote hosts (Google's servers) therefore it may be exchanging data with them.

 

This is not bad at all considering that better known and commercial apps have been diagnosed with serious security flaws.

Marketing wise

"A mobile app, on the outside, is nothing but a copy of an ecommerce website that runs on a mobile device. On the inside, however, a mobile app offers a convenient yet personalised environment for customers to search and purchase the required products without much hassle."

taken from Here’s Why Your e-Commerce Store Needs a Mobile App

Finally, apps also feel more familiar because users can easily transfer their experience from using one to another. This is because they are based on predefined standards or frameworks, such as 'Material Design' in Android's case. Such frameworks make designing an application easier since they make use of standardized, as well as enhanced, UI components such as Collapsing Toolbars, Navigation Views, FAB's, Snackbars, Tab Layouts and more. On the web you don't get that sort of functionality for free.

However in both cases, be it mobile app or WebSite, if your underlying data is not up to par don't expect a commercial success.Similarly, smadeseek's backend's database is obsolete, already, since the device specifications stored are at least 2 years old and have been painfully entered using a custom made CMS I've built with Xataface.

 

So in order to have any chance of even trivial commercial success, I must first find a better way for keeping the database up to date.

Summing up

This sums up the ways a native app can prove beneficial either on its own or alongside a website, therefore courses like this one are really worth the effort. Graduating though doesn't put a lid to the story.It should be heralded as the beginning of a, hopefully, prolific career in Android app development.

Initially, the Nanodegree gave me the foundations, the know-how to turn on the ignition and find my bearings. Graduating from it signified the beginning of an era where I can take matters into my own hands.

Weighing the alternatives, I found that developing for Android isn't a subject widely taught at traditional brick and mortar institutions, but even if it was, enrolment would be probably too expensive. And what about learning through books? I would considered it as a plausible option if developing for Android was as solid and well defined as a programming language is. The problem here lies in the fact that Android is a fluent ecosystem comprised of dynamic components (lifecycle management, states, events, services, resources, layouts, views, loaders, UI/background threads), interconnections and patterns, which collectively form a tangling not easily conveyed through the static pages of a book.

Self-paced, high quality, and evolving MOOCs, such as the Android Developer Nanodegree, form the modern shape of education and hold distinct advantages over their traditional instructor-led counterparts.

While at University or now at work, I've attended quite a few instructor-led lectures or seminars that would span several days or weeks and the major problem with them was always feeling the stress of having to be constantly focused or risk getting left behind.Of course the teacher's quality is the other major factor, who is also burdened with having to examine several subjects in a limited time frame, hence impossible to do so in depth. The Nanodegree being self-paced for the student and being taught by a team including Google engineers solves both issues of the limited time frame and teacher quality. And what about the subtle and elaborate bugs in doing the exercises which won't start creeping until long after the lecture has ended?  By then it's too late to get in touch with the teacher.What are you then supposed to do - research on your own, ask on Stackoverflow, or google for relevant results. Udacity on the contrary offers support through mentor-led forums serving personalized and quality help, accessible even after graduating.

Let's not forget that graduating also gets you a Certificate. But how valuable is it? The IT industry, highly dynamic as it is, is being constantly reshaped by new inventions, trends and tools, all striving to become the new Kings of Software Development. Prime examples are Vue, Angular, React, Kotlin and so on, trends that a classic BSc issued by a traditional brick and mortar institution is not able to keep track of. The answer lies in seeing through the hype and adopting a life-long model of education which Udacity is able to provide.

With regard to whether the Nanodegree is recognized industry-wide on a par with traditional diplomas, ptroviding you with the same chances of landing a job, I can't have an opinion since all the career options offered by Udacity are exlusively US based and I don't live in the US. Nevertheless, such a hard earned Certificate validates both the skills acquired and the real world experience gained through building quite a few Android apps, even releasing them to the Playstore. Were I to look for a new job, this is where I'd direct all potential employers; and that by itself is the biggest gain.

 

More Information

Smart Device Seeker on Google Playstore

Nikos's Udacity GitHub repo

Android Developer Nanodegree

Related Articles

Insider's Guide To Udacity Android Developer Nanodegree - 1

Insider's Guide To Udacity Android Developer Nanodegree - 2

Insider's Guide To Udacity Android Developer Nanodegree - 3

Insider's Guide To Udacity Android Developer Nanodegree - 4

Insider's Guide To Udacity Android Developer Nanodegree - 5

Insider's Guide To Udacity Android Developer Nanodegree - 6

Data Entry with Xataface

Java Closures and Lambdas book review

 

{loadposition iprogrammer) 

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

 

 

raspberry pi books

 

Comments




or email your comment to: comments@i-programmer.info

 



Last Updated ( Monday, 23 April 2018 )