I started out with android development back in 2016, and the end of 2nd semester of my college. I didn’t even know anything about JAVA, let alone Android. I did not think about making a great app or something. I just wanted to build an app that I can use as well as get my friends to use it. I thought it would be great fun.
What motivated me to take up android development when I didn’t even know Java?
Here’s the punch line!! Till 2nd semester I was a Web Developer!!
I had developed 2 websites for companies and had completed an internship in Web Development. But although I became quite good at HTML, CSS 3 and Bootstrap, I couldn’t make use of the projects I created for myself.
Getting a website online was a costly task and being a student, I didn’t have enough money to spare. But what I did have was LOTS and LOTS of time.
I got into thinking that what technology could I take up in order to be able to enjoy it myself, without needing to spend money to publish it.
I jotted down 2 options which were hot selling at that time:
Mobile Application Development
Artificial Intelligence and Machine Learning were hot topics when I began college. Everyone was learning python, it was super cool, and you could automate WhatsApp messages with it XD
There was so much that python could do!! Data Science, ethical hacking, web development, backend development and what not.
But there was one thing it couldn’t do (or at least was not the preferred solution for it).
I was always interested in topics such as psychology, human behavior and deeply cared about how the people would interact with my applications (web and later Android). I wanted to design Zen-like UI for my apps and would spend hours figuring out what would be the perfect share of White for the background of my app.
But to get into Artificial Intelligence and Machine Learning, one had to be deeply involved with algorithms, data structures and the one subject which I hated from the deepest point in my heart: MATHEMATICS.
It made you learn all those Fourier transform series, Jacobian’s equations, Derivatives and so on. I was just not good enough for those. I still can’t forget all those dreaded mathematics lectures.
All in all, it was not too difficult for me to reject Machine Learning and Artificial Intelligence as an option. I wasn’t good at mathematics, it had little scope in front-end, so, it wasn’t for me.
My second option?
Mobile App Development:
Back in 2016, I knew nothing about mobile app development. All I knew was that it was a hot topic, and didn’t require a lot of cash to be able to produce an app which could be used by everyone.
So, I started researching about what languages I should know in order to start mobile app development and how much time it would take to learn to build an app.
I had two options: 1. Android app development 2. iOS app development
I knew that iOS development required expensive equipment to start with and to publish an app on App Store one needed to spend some thousand dollars per annum for renewal. So, this option was struck off as well.
I was left with Android App Development. Here were the points that Android sold me on:
- It had a much larger market share (86.2% at that time).
- It was inexpensive to publish an app on play store. A one-time fee of $25 was required for lifetime account.
- It was easy to learn.
- There was money to be made, freelancing as android developer (although this didn’t work out for me XD).
- It had a large community and was backed by Google.
Probably the 4th point was the most important factor to me at that time. I wanted to be a trillionaire, making apps. Lol
Hence, I decided that android development was the path I wanted to take and started to research on materials and good resources to learn android development.
I found out that, I needed to learn java for this. Android applications were written using java and I needed to get myself familiar with it. By that time, I had experience with only C++ and didn’t know about Java.
So, I decided to get myself familiar with Java within a week. I started out with a course by Bucky Roberts on his youtube channel TheNewBoston. Also, with the tutorials I kept on referencing Head First Java for more theory on the concepts.
As I had good experience with C++, my OOP concepts were clear and I was able to pick up java within a week.
Now was the time to start learning some android development. This was the exciting part. I was clear as to what resources on Android Development I wanted to refer to. Bucky Roberts had explained Java extremely well, in a way which made a mundane task such as printing hello world, a lot interesting. He also had a course on Android Development, and I knew I wanted to watch those.
What I didn’t know was, that Android Studio was still in its initial stages and was a memory hog!! After I setup and opened android studio, I couldn’t run anything apart from it. And let’s not even talk about the android emulator here. I had a desktop with 2GB RAM and although the recommended RAM was 2GB as well, to function properly it required a lot more. But, I decided to make do with 2GB.
It was slow, the Gradle build took 3-4 minutes (after applying all the hacks to speed it up), but it was interesting.
First Things First
Seeing the first hello world android app run on my phone was very exciting. My mind started bubbling up ideas as to what all could I build with this skill. It was almost artistic. Even though I was a noobie at android development, I knew that one day I would be skilled enough to convert any of my idea into reality.
I became dedicated, I downloaded all the YouTube videos of the course and began watching those on my computer or mobile phone. I also downloaded hundreds of e-books on Android Development so as to reference the theory of some concepts. The most important was Head First Android Development.
I started learning how to build layouts using XML. How the Java files would interact with the XML layouts and also a lot about MVC Framework (as android uses MVC Framework).
Initially I kept it simple and developed simple apps, like click button to login, changing colors on user interactions and gesture detection like swipe up, swipe down and fling. Thereon I learnt about how to insert images into android apps. How to load images from resource folder to my app, changing the typography of textview and so on.
Next thing was the in-app navigation.
How would I start a new screen? How to use fragments for more modularity? How to handle exit and launch of the app?
I learnt about something called Intents. Intents are used in android applications to start a new screen (although there is much more that can be done with intents, this is what I believed when I started learning about them). I didn’t know much about fragments but knew that they were cumbersome and difficult to handle. So, for every new task I opened an activity.
So on, and so forth I began learning more and more concepts of android and got to a level where I could say I was a beginner in android development.
But now what? Here I was all on my own, referring to YouTube videos and making small dummy apps for myself, but I needed a bigger challenge to grow. So, I decided to pursue an internship in Android Development. I went to the same company where I had interned as a web developer as they were also on the lookout for an Android Developer. I decided to apply and got myself an interview, which I cleared pretty easily and next working day was my joining.
They required an android app for their business which apart from selling the products, would also include other features such as YouTube channel integration, integration of their blog and a login feature using OTP. There was another challenge. This had to be done in 20 days’ time. All of this, most of which I hadn’t done before, had to be done within 20 days.
Looking back, I sometimes have a hearty laugh as to how much I didn’t know back then. Things such as recyclerviews, nested scrollviews, REST API integration and Json parsing which I can do right now with my eyes closed, took me around 2 days to figure out. But then this is what experience is all about. If I had never pursued that internship, I might not have been where I am today. That internship allowed me to land many more offers after that.
The most important thing I learnt during that internship was that you only learn by doing and not reading. You need to pursue as many internships as you can, build as many apps as you can to develop your skills further. You can only learn so much by reading. But if you want to become a better android developer, you need to DEVELOP. Yes, go out there, pickup an idea and build it.
In the last 3 years I have pursued numerous internships and have undertaken some freelance projects as well although don’t believe in Freelancing, as I think freelance projects lack that emotional connection you need with the project and the business, to develop a great app and not just an average one (this is my personal opinion though).
And although now I am at an advanced level in android development and know things such as MVP Architecture, RxJava, Retrofit, ButterKnife etc. I still feel I have a long way to go. I still want to keep getting better every day and hopefully one day become the best android developer on this planet.
Takeaways for you:
If you want to become an expert android developer or if you are already an expert and still want to improve, I would recommend you to take up an idea and build it using the new technology you want to learn.
Like if you want to learn how to architect apps using MVVM Architecture, then build a simple login app using mvvm architecture.
As I have already said, “you only learn by DOING and not by reading”.