It’s been a little over three weeks into my user interface design class, which, besides showing us the ropes of “the design cycle” and some pretty theoretical stuff regarding the way people interact with computers, is also teaching us to program for Android devices. Or perhaps I should say they are expecting us to learn to program for Android as we go along, and largely on our own, as none of the lectures touch on the specifics of programming for Android. When I realized we were being flung into the unfamiliar and murky waters of Android, either to sink or swim alone, I admit that I panicked a little. What do I, the obnoxious iPhone-iPad-Macbook user know anything about Android devices, and having never programmed for mobile applications, how many sleepless nights is it going to take to learn how to do so?
Turns out, not too many, really! In my brief foray into the world of Android thus far, I have been pleasantly surprised at, to put it quite simply, how supportive the Android framework is for programmers. This may be an obvious observation to people in the know, but I’m continually amazed at the vast amount of code that already exists out there, and the amount of potentially complex functionality that is abstracted to a very simple level. I’ve found that in learning to program for the Android, a lot of the work I thought I was going to be doing was already done for me. More than anything, learning Android up to this point has consisted largely of sifting through a sea of documentation (and stackoverflow posts, let’s be real) to take stock of all that Android can implement for me, and the various objects, classes and functions Android provides that allows me to create what I want. Again, all this may seem rather obvious and the point of APIs and a developing framework, but as little as a year and a half ago when I took my first computer science class I could not have dreamed that creating mobile applications could be so…conceptually simple? Dare I say, nurturing? Granted, our programming assignments up to this point have not been super intensive, but they certainly haven’t been easy either. Learning something new is always a challenge and takes time. What I am most impressed with is how simple Android has allowed this to be. Would it be the same for other platforms, say iOS? I’m incredibly interested to find out.
For now, I’m enjoying learning more about Android. The one inconvenience for me, naturally, is a lack of a device to test on, which means reliance on sometimes unavoidably slow emulators. Styling and positioning objects can at once be simple and a pain. Personally I like the similarities between XML and styling for the web, but I often wish the similarity extended further. Ah well!
For my less technically-inclined readers, the simple situation I’m talking about here can be akin to this: you’re furnishing and arranging your home office, and you thought this a daunting task because you thought you would have to make most of the things you needed essentially from scratch. You knew you’d be given plenty of wood and tools, but that meant if you wanted a chair, well, you’d have to turn into Ron Swanson and make it yourself. Turns out, the task was made much easier for you when a truck dumped a load of prefabricated chairs, desks, bookcases and other things on your lawn and sped away. It’s a big pile of stuff, but everything you need is there, already made. It’s now up to you to choose what you need, arrange it in your room, customize it, and tweak whatever isn’t quite right to make it work for the way you want your office to be. It’s still a lot of work to be done, but a much simpler and supported task than the one you had envisioned.
Not sure you all needed that extended and oversimplified metaphor, but I like metaphors and will use them any chance I get. Remember, I am still an English major.