Why Developing Android Apps is Difficult ?

Why Developing Android Apps is Difficult ?
So you're the new kid on the block trying to get your hands on Android Application Development ? If you're developing apps as an hobby then you can safely skip reading this article. Hop onto the previous article "Smartphone User Interfaces Are Getting Bad." But if you're looking to further/Begin your career in this field. Let me give you a fair warning, this article is exclusively written for you.

Many people seem to think Android platform is a good idea to start with because it has free SDK, Large User Base & most of all Its Open Source. But it is not a good idea. No matter how much regular programming past you have behind your back it won't help you with Android. Android will break your perception of programming.

The GUI editor in IDE doesn't do what its supposed to do. Here you have to make all of the markup yourself. Tonnes of markup in tens if not hundreds of files for a decent app. You thought StackOverflow is a good source of answers to your programming questions? Not for Android. Here you will get 10 repeating questions, all with different code samples and not a single moderator dares to mark question as duplicate, as changing a variable name can cause or remove the bug. How many of those 10 questions has valuable, helpful solution that will work not only for the author of the question, but for everyone else with the same bug? 0, zero, none... All the answers you see on StackOverflow can only be applied to that one Bug that is hidden somewhere between the referencing of the border markup for the List Item, which in turn is being referenced by List View and List Activity markups, not to mention the reference of it from the Activity and in case you have a tabbed app, also Fragment or List Fragment.

Write once run everywhere doesn't applies here.
You have to plan your code to work on hundreds screen sizes and aspect ratio, resolution, pixel densities, hardware components and software installed. Not to mention compatibility with older versions of the API using the support libraries, and since there are almost 30% of users with API 8, you are almost forced to use v4 support library.

Documentation on Android was written by and for Android platform developers, not for you guys, but for Android platform authors themselves. Not to mention the bugginess and lack of good examples in documentation.

In case you are forced to work with Android, buy as many cookies and chocolate bars as they sell in the nearest shop. In case that does not help - get some sedatives and a punching bag.

5 Comments

  1. I'm sorry but I'm going to have to disagree on all of your points, given that they are all blanket statements, generalizations, and flat out wrong.

    "The GUI editor in IDE doesn't do what its supposed to do" - What is it supposed to do? Make me a sandwich? Drive me to work? Write my code for me? For creating a layout file, the visual editor in Android Studio (you didn't specify which IDE you use, so I'm going to assume its AS) is fine. Its perfectly capable of laying out elements, and setting all the properties you'll need to use on each element. Of course for some finer control it may be preferable to edit the XML manually, or if you're comfortable enough write it all yourself, but by no means do "you have to make all of the markup yourself".

    "Tonnes of markup in tens if not hundreds of files for a decent app" - Would you rather write the layouts in code? Or draw them in MSPaint and have them automagically work?

    "All the answers you see on StackOverflow can only be applied to that one Bug" -
    Not this one http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception
    or this one http://stackoverflow.com/questions/477572/strange-out-of-memory-issue-while-loading-an-image-to-a-bitmap-object
    or this one http://stackoverflow.com/questions/151777/saving-activity-state-in-android
    or even this http://stackoverflow.com/questions/23653778/nullpointerexception-accessing-views-in-oncreate

    "You have to plan your code to work on hundreds screen sizes and aspect ratio, resolution, pixel densities, hardware components and software installed" - That's part of being a developer. Make a website, and you're dealing any potential window resolution. Make a windowed application, it better look good when resizing. Make a pc game, yep its going to run at different resolutions on different computers. If developing an application which can scale its UI is too much work for you, development probably isn't your thing.

    "Documentation on Android was written by and for Android platform developers, not for you guys" - I don't even know where you got this from, but I'm pretty sure it's wrong. Just in case you were checking the wrong url - its at http://developer.android.com/index.html.
    Looks pretty developer-targetted to me. The documentation is well laid out, complete, and functional. Still need more? There's always StackOverflow.

    So I don't know if you had a particularly bad experience developing an Android app, or this is just your first time developing something and was expecting "Computer write me an app that will make me $$$". But developing an Android app is like working with any other platform, some bits are a joy to work with, some bits are infuriating. However to call it "difficult" with little valid reasoning is just wrong.

    ReplyDelete
    Replies
    1. I use Eclipse IDE. And working in it is difficult! This IDE is so overwhelming, but instead of giving you what you need it hides the most common features, so that you have to search for it on stack overflow (http://stackoverflow.com/questions/3175035/eclipse-find-in-project).

      Secondly, Emulator. It is slow on my system don't know about others. Plus the startup time takes more than eclipse you need to fiddle around for that (http://stackoverflow.com/questions/2359895/android-emulator-screen-too-tall). Not to forget its ugly and it fails to work in the beginning (http://stackoverflow.com/questions/3557996/android-httprequest-java-net-unknownhostexception).

      3) Testing - Because of all the tight coupling and multithreaded environment it is nearly impossible to test something. Even simple tasks like testing your Utility-Methods needs to be done in the Emulator just to find this (http://mobile.tutsplus.com/tutorials/android/android-sdk-junit-testing/). - See more at: http://www.kanthalaraghu.com/2014/07/why-developing-android-apps-is-difficult.html?showComment=1406481784479#c7620282059440070513

      Delete
  2. It's evident that you are using the wrong tools.

    If you don't know still about the existence of Genymotion then you are a bit out of the loop.

    Also I've been using Eclipse for a long time and though it has it's quirks, the same happens with any IDE (even in visual studio sometimes you need to deal with refreshing stuff, cleaning and rebuilding, etc)

    Developing in any language is difficult, that's why it takes time to become a good developer. There are plenty of developer wannabes, some of them keep learning to become master of the trade, and some others prefer posting blog articles, sorry.

    ReplyDelete
  3. Sorry, I haven't heard much about 'Genymotion'.

    And Who are you ? Your mother or mine ? You cannot taunt me for expressing myself. Blogging; you make it sound as if its wrong.

    FYI Developers/wannabe developers also keep a journal/blog for noting their experiences/notes. If you desire, i can provide characteristic references for developers having a blog on the Internet.

    ReplyDelete
  4. Why not develop in a cross platform language like HaXe? There are a lot of games and apps made with it for android. Disney uses it. It's catching speed as we speak.

    ReplyDelete
Previous Post Next Post