Sunday 12 July 2015

Review: Android Development for Beginners on Udacity

My self-learned programming education has always had some tangents, times when I wasn't sure that my current method of learning was not efficient. Lately my progress in Android has been stunted by a lack of the fundamentals that the book I was learning from assumed. My email inbox has also been barraged by a bunch of online learning platforms with all kinds of promotions, and from this I discovered the Udacity course Android Development for Beginners.

I started this course mid week and I have to say I'm hooked. The style of learning is very methodical, and definitely shows that the directors have considered their target audience. While I already have fair amount of familiarity with java, the Android platform has so many quirks that my progress was a little jagged. Going back to basics was a scary proposition, both because it meant having to sift through some basics that will seems ridiculously easy, but also because I didn't want to find out that I missed some super important things.

Either way, I jumped in and committed myself to thinking "no matter what, take every lesson as though you are a newbie". With the mindset of a newbie, it was much easier to listen to some of the explanations of important concepts that seem easy to me now.

I admit to not being very familiar with XML; I know that its a markup language and I have familiarity with HTML so it didn't seem too foreign. In all honesty, my belief going into the course was that XML for android was a cop-out, the easy drag and drop method of putting together an app. I wanted the Java, I wanted to learn how to do things the hard way because I thought that's what a real programmer would do. The flaw in my thinking was revealed right away when I saw how much coding went into the XML, and that the drag and drop option was being skipped over entirely for a real coding approach.

The first lesson does not even touch an IDE, but instead puts the learner in a position to test their knowledge using a custom browser IDE with a preview pane. The experience here was liberating as I didn't feel like I had to learn a whole new IDE and spend six hours just getting it installed before I even got to write some code. Having a custom work space in-browser meant I didn't have to worry about saving files, strange error messages or settings windows. The lessons give a sample piece of code to either analyse, edit, or extend, and this led to some great time had just moving things around.

The lessons also emphasize the importance of searching through documentation for new concepts and really expanding your own knowledge past that of the syllabus. Once the first lesson is done you finally start to work with the IDE, in this case Android Studio. Since Eclipse is not going to be updated as much with Android development, and the course on Udacity is led by Google professionals, it only makes sense to make the switch to Android Studio.

The first practice lesson actually leads to an app which simply displays a message over a birthday themed image, but gets you to practice all of the concepts covered so far. My app looked as follows.

While its not in fact Toby's birthday until December, he was next to me and was a suitable replacement for the lessons "Ben"(no offence Ben). The app focused on using a relative layout to position the Views around the screen and overlapping an image. Overall the lesson did not take long but gave a strong foundation both in putting together a project, and also in running it on my android device.

From there the next lesson stepped it up a notch and worked through creating an app that simulates a coffee ordering interface, nicknamed "Just Java". The app added interactivity with Java and taught me a lot about using the resources system to save strings and images for use later. With a little extra time on my hands while the instructors explained the basic concepts of variables, I managed to jazz up my app a little to be the final product listed here.

While the app itself does nothing beyond using a picker to increment a number and update a price field, I was able to learn how to work with currency Number Formatting, how to grab an XML element and work with it in the Java Activity, and also how to nest layouts to achieve the look and spacing I desired. Admittedly, some of these may have been easier for me than beginners as I already have a working knowledge of Data Types, OOP, Inheritance and Polymorphism, all of which are for now are just taken as truth for the students in the course.

Overall I am thoroughly impressed with the course so far and hope to get more done as soon as possible, my ideas for apps are coming through more frequently and with a larger range of inspirations and I hope to share some of the finished products here soon!

No comments:

Post a Comment