The Eureka Moment!
Back in 2014, I was with my friend Monika right there on a bench on the platform of Pune station. We were discussing how Android was coming up as the next fever which was going to grip the developer community. We had just come out of a conference on Android App development feeling like cave women. The developer world was frantically moving at a rapid pace and here we were still discussing how Android could be the next best thing in the world of application development. Well, better late than never – we said – to pacify our ashamed minds.
And then Monika sprung up with a genuine real world problem – I wish my son had an Android app to do last minute revision before the exam. Things which he had bookmarked to revise at the last moment, he could just pull out his phone and browse through them to keep them fresh in his mind. Well, we had a real world problem and Monika was my friend and a friend in need is a friend indeed, so i jumped on to the bandwagon of Android App Development to give my friend what she so wanted for her son. Besides, the selfish part of me said, that’s a good opportunity to be like the other cool developers at the conference and be a pro Android developer so that i could contribute in the next conference rather than just staring open-mouthed at whatever they showed me in the past one.
So that was how LMR (Last Minute Revision) Android App came into being and did its job by giving me reason to learn Android. And what could be a better deed than sharing what i learnt in the best way possible – learning by example. I took up LMR (Last Minute Revision) as a foundation for me to learn Android and the components and flow of the Android application development process. Here is the entire journey…
Being the core developer that i was, I started out my venture by first taking a pencil and some blank papers and visualising what i needed to put in the app to help put Monika’s son just before he walks into the exam hall.
Step 1 – List and draw all the features you can visualise in the app
I created the following list –
- The first screen would be a subject listing.
- If no subjects were added, the user could add subjects by name
- Once a subject was listed the user could add a Flash Card to the subject
- The Flash Card could be text or image
- For text based Flash Cards there would be a formatting toolbar also – just in case he wanted to add scientific symbols for Physics formulae
- For image based Flash Cards he could upload an image file
- He could bookmark a Flash Card (for the nasty ones which required too much of Last Minute Revision)
- He could assign a level of difficulty to the Flash Card – Easy, Medium or Difficult so that he could filter and prioritise based on his available time
- He could update and delete Flash Cards and Subjects
Step 2 – Create a static prototype of the look and feel with navigability
It was looking so good on paper, I completely fell in love with it. My hands were itching to start building it and giving it to Monika’s son and the world right away! A little patience here though, helped a lot. My grubby drawings on paper were not impressive enough to show my end user how lucky he was going to get. Building the entire app would take too long and I hoped deep inside he wouldn’t smirk at the end of such a long journey and tell me “You created this lame thing for me?”.
So, I took the intelligent way out and thought I’d give him a feeler of the app first to see his reaction and then spend the time and effort to create it in its entirety. I learnt the UI components of Android and the various layouts in which I could put the UI components together.
Created the front end activities – SubjectListActivity.java – which listed the Subjects. On click of a subject name the flash card list was displayed by FlashCardListActivity.java. AddFlashCard.java showed up a form with options for Text and Image and based on the selection showed the user a text box to type in the FlashCard contents or showed a Browse control which allowed the user to select an image as a FlashCard. Created UpdateSubject.java, UpdateFlashCard.java and DeleteSubject.java and DeleteFlashCard.java which are self explanatory. Created the associated resource XML files for the UI Layouts. All that this skeleton did was show up the UI and change screens based on user interaction be it clicks or file uploads.
The smile on Monika’s son’s face gave me a green signal that it was time to put the fillings inside the donut!
Step 3 – Time to fill in the fillings!
The huge fan of the MVC (Model-View-Controller) architecture that I am I sat down and chalked out the DB to define the model data. SQLLite was true to its name Hardly took me any time to figure it out and create the tables in the DB through the Android code itself. Created the model files Subject.java, Flashcard.java. Created the controllers SubjectController.java and FlashCardController.java which had listed methods to transfer data from the view to the model in case of Update activities and vice versa for View activities.
Plugged in the wires to bring the static prototype to a dynamic app full of life and data!
Step 4 – Publish my creation
Surprisingly the most difficult step was publishing the app on the Google Play Store. The 25$ developer registration was a little bit of a pinch but i was willing to pay it if my published brought a smile on someone’s face. There was a lot of documentation that I was made to do as part of the Store Listing – Description, Screenshots (for each kind of Android resolution, Hi-res icon, Feature graphic, Promo Graphic, Promo Video and what not! Suddenly I had to be a creative designer along with a developer. Anyway, went in the flow and did all of that and finally published my creation!
Step 5 – Let the world know it’s out there
I thought I had reached the milestone and published the Android app and had to just wait and watch as the traffic pours in. But I kept looking at the download count longingly but it refused to climb up. It was only when my friend who was a marketing pro, knocked on my door one day and when I poured out my woes – it was then that I realised that there was an entire gamut of things done which came under the heading App Marketing. You have to shout it out of the roof tops, he said. A lot of SEO (Search Engine Optimisation), SMM (Social Media Marketing), SEM (Search Engine Marketing) for a few months and then the charts just would’nt stop climbing!
A dream well achieved!
The dream of “I want to create an Android App” taught me a lot along its way. I had thought learning Android Development is all it takes. But I was privileged enough to realise that it taught me a new development language for sure, it made me a creative designer, a marketer and last but not the least the patience and perseverance it takes to bring a smile on a child’s face when you hand him an app which makes his life better in a small way!
Want to benefit from what I learnt? Here is a course I actually created to help those people who nurture the dream that i nurtured – “I want to create an Android app”