Welcome to WebmasterWorld Guest from 34.204.189.171

Forum Moderators: open

Message Too Old, No Replies

Mobile development is easy to hate

A little bit about native and hybrid mobile dev

     
5:04 pm on Sep 24, 2017 (gmt 0)

Senior Member from GT 

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month

joined:Mar 30, 2006
posts:1613
votes: 163


Hi there, it surprises me to see so little activity in this area of the forum (for years), but sometimes it doesn't surprise me. Mobile development is the new thing right? but easy to hate. I come from desktop development where you downloaded the SDK, coded, compile, then distribute. You were in many ways an isolated production unit and the only variables affecting your work would be the destination OS or conflicting software on the client computer. OS updates? very little effects on your production, your APP could run for years on the same computer isolated or not, upgraded or not.

Things are not like that on the mobile world. Native?, you must code for Android and iOS separately, this means double work. Sometimes a little feature can be easy to get done on one platform while a headache on the other. Something I always hate about native is you need to download like 1.5G of data to get things going, and sometimes only then you get a notice of "you must download some other plugin", is never ending. Then, some things get broken with an OS update, in fact you would have diff clients with diff Os versions. Not to mention the terrible situation where you are already working and suddenly the SDK gets an update and you must download again and reinstall, it sucks.

You might have a local compiling solution, that's somehow ok... you might have a cloud based compiling solution, this might suck because some commands and functions get deprecated, removed... so what worked on version X doesn't work (compiles) on version X.1. This also happens with Xcode (locally), new versions break your projects, some partially, some break it all.

This is not an ad or sponsored post, but Corona SDK (it's been mentioned before in this area) is the only tool I've seen allowing one set of code, good stability on the long run and building binaries on the cloud without suffering all of the previously mentioned issues. But sure is not perfect, it targets specific resolutions so no easy way to approach responsive apps. In some cases screen positioning can be a headache as X and Y changes depending on some factors. I like it, but sometimes it takes a lot of code to get some things done...

Hybrid. It suppose to solve the double coding nightmare, you know code once and distribute on diff platforms, right? here you have things like Monaca, Telerik, PhoneGap, etc, all built on top of Apache Cordova. Ok, have you tried it? have you built something? there are things like:

DoThis(MainThing, FunctionIfSucceeds, FunctionIfFails);

And guess what? lots of people reporting it works, it doesn't work, it fails, etc. There is no consistency (really) besides in some cases you might find the line executes the MainThing and then FunctionIfSucceeds along with FunctionifFails ONE AFTER THE OTHER, why? who knows, you might be lucky finding an answer because there are many threads where people moved on to try something new after constant fails with no response.

It is amazing how serious documentation lacks examples, it is worse to find documentation filled with asterisks:

* that only works with version x.1.2.1.
** on version x.1.2.2 you must replace ACDE with XJSJJ
*** This causes an issue on iOs
**** Using whatever with comas fails on Android

And my favorite: This command MIGHT fail or return an error on [insert another variable, might, perhaps, sometimes...]

WTF, documentation with no solutions? with "this might fail?" or lines like "sometimes this fails, we recommend X function instead" well why not removing what doesn't work and say "this platform just can't do that"? It sucks. And it sucks big time.
5:09 pm on Sept 24, 2017 (gmt 0)

Senior Member from GT 

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month

joined:Mar 30, 2006
posts:1613
votes: 163


Worked on a company needing X app, an experienced developer was hired, the thing never got done, why? tweaking this tweaking that. I didn't have enough experience to lead, but yes I got involved. The many times this guy had to upgrade and downgrade things because plugins worked on specific versions (1.2.3...1) was terrible, in the end (PhoneGap and Cordova) provided a terrible result. Recording sound opened the soundrecorder! -I thought the guy didn't know better but turns out that was how it worked!.

Then I thought "this guy doesn't know his trade" but later after researching I have found lots of threads on forums asking how to get this done with no luck, also freelance abandoned projects because it couldn't be done as expected, integrated (tried and yes, Corona can do it).

Right now I'm building an APP and while I'm not upset, I laugh, this whole thing is so broken. Not to mention you might start working with X and one year the company is done, over, erased from the planet. Then you move to Z, two years later? dead. You must bet for the big players, even if that means coming back to Xcode or Android Studio (native) and then again they break the code, one thing works this year and two years from now it doesn't.

This takes a lot of patience. Any stories to share?
5:54 pm on Sept 24, 2017 (gmt 0)

Senior Member

WebmasterWorld Senior Member Top Contributors Of The Month

joined:Apr 1, 2016
posts:2711
votes: 822


Any stories to share?

No! and this sounds terrible...
I am hoping to, sometime in the not too distant future, make the leap into PWA's. But when I read posts like this it really makes me question that decision.

How much do PWA (progressive web-apps) differ from native apps. My understanding is that most of the ui in a PWA is in the browser. Does this simplify some of the complications expressed?
10:02 pm on Sept 24, 2017 (gmt 0)

Senior Member from GT 

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month

joined:Mar 30, 2006
posts:1613
votes: 163


I wasn't clear on what PWA means, so I researched right now. There are differences.

- Native. Create apps using the official SDK for each platform such as Android Studio and Xcode on Macintosh. You can also create apps using third party tools such as Appcelerator/Titatium etc. The thing is each platform has pure code only useful on the platform itself, meaning you must code double when creating iOS app + Android, producing two diff binaries.

- Hybrid. It's basically a webbrowser with code on top, such code (usually javascript) communicates with the native functions of the platform using some layer in between, you can't access everything and each platform is different (Mosync now dead, Telerik, PhoneGap, etc). Is basically HTML + CSS + JS. This chapter actually sucks, is too fragmented, too buggy, too unstable (changes constantly.

PWA. Different, it's suppose to be a web application (running on your browser) on your device, sounds like Opera Mini running Facebook (for those who don't know it, you can open a session on Opera Mini and use Facebook as if you had the APP installed.

PWA is something else, it relies on the browser and some additional technologies for local storage and active sessions.


BTW yes, mobile is a headache, there are lots and lots of abandoned threads of "this doesn't work" with no solution, in some cases something works, in others is something else that works and something else broken. Besides, what I trully hate is the amount of code... lots of it for simple things. Native sounds better in many ways but I don't agree on coding double.
3:22 pm on Oct 1, 2017 (gmt 0)

New User

joined:Oct 1, 2017
posts:3
votes: 0


I feel everyone's pain in this thread. I've always preached to my dev team as well as to clients to steer clear from the hot/newest/latest and greatest libraries, JS flavors, etc., simply because of what's already been said above: who knows if that library will even be supported the next time iOS updates? Maybe the original creator moves on to something else; do you have a backup pan to support the library in three years?

I think there's a reason why so many corporations are so heavily invested in WordPress, PHP, and .NET architectures: sure, they may not be sexy, but they're darn stable and aren't going anywhere for years.