To read more articles like this, visit my blog
I started learning Android after getting my first internship which landed me my first job. But I was so frustrated with it!
After 1.5 years I switched to React and never looked back. Here is why I think I should’ve never gone that way.
1. Different Solution for the Same Problem
For some weird reason in many cases, there are multiple ways to do a single thing. You may think
Isn’t that a good thing?
My answer is NO! For experienced developers? Yeah sure!
But if you are a fresher then most of the time you will get confused and that was the case for me.
2. Difficult to Debug
One of the main frustrating points of android development is it’s often hard to pinpoint a problem.
First of all, the debug message is horrible in my opinion.
Imagine trying to debug a problem for the whole day and the solution was to restart your IDE! How are you supposed to know that as a fresher?
Sometimes issues vary from device to device. version to version. Very hard to get hand’s on every possible device
Sometimes you just write a solution and pray it works because you don’t have access to all the android devices out there!
3. Multiple Best Practices
When we have to use the word Best
with a plural noun
then it’s a huge problem itself :P
But unfortunately, it’s exactly the case for the Android ecosystem.
There are multiple best practices for the same problem. There are multiple rules for UI design, Activity design, Class Hierarchy, and so many other things.
But the frustrating thing is that it changes from time to time by the SDK itself!
4. Hard to Learn as a Beginner
Learning Android is attractive and fun. No doubt about that. It fascinated me when I realized that I can build something that will be running on my own phone. As a fresher, it felt so good.
But when I started learning it was hard for me to get the ideas of lifecycle methods and how everything worked together.
Even for a boilerplate application, there was so much file to understand.
What is Gradle?
What is Activity
What is XML
What is Manifest?
What are Lifecycle methods?
There are so many new concepts for a beginner that I got frustrated.
On the contrary with web development, all you need is a plain HTML file to see the results of your work.
5. The Barrier to Entry is High
For Android development, the barrier is very high in my opinion
You need a powerful machine(at least 8GB RAM)
You need a physical Android device(Emulator is so resource-hungry!)
For opening a play store account you need to have the ability to pay with international currency!
The learning curve is very steep.
I know these may be less common in other countries. But In my country, I have seen many people quit android development just because they can’t afford a better laptop/computer.
6. Dirty Ecosystem
A large number of android code-base out there is still written in JAVA and it’s so verbose!
Also, code readability can be an issue if the SDK is messed up. It seems nobody has given a thought about the future. Just add whatever is needed.
Android community has thrown a lot of things into the already messed up ecosystem like RxJava
, Dagger
and Data binding
. But problems were not all gone.
Then we throw a lot of other things like Kotlin
, KTX
, and Arrow
But doing so only complicates the already complex ecosystem in my opinion.
7. Horrible Publishing Mechanism
Well, you have conquered all the problems and built an awesome application. Then what?
Now you want to publish it to the play store. But it’s not as playful as you might think!
First, you have to have a developer account where you have to pay 25 dollars to get started.
Then you have to have a key file(I don’t remember correctly).
Sharing APK for multiple version is tricky
You can’t just change the name of your application anytime. (Technically you can do it but it has an adverse effect on SEO)
On the contrary, there are so many free hosting solutions that just work out of the box for web development.
Just pushing code into GitHub is enough for me to handle the deployment and update in most cases.
8. Managing Different Devices
This is an issue in both web development and android.
But the difference is there are only a handful of browsers and most of the features work in most browsers anyway.
But for mobile devices? No No No, my friend….
Only 4% or less use the last two major versions of Android
Sometimes we need to put conditionals inside code to support multiple versions of android. Which is so weird and frustrating as a junior dev!
9. Lots of Magic but Unfortunately They Don’t Work!
The most annoying thing about android development is that there are so many wow moments for me.
But unfortunately, the magic disappears after publishing it to the play store.
For example, there is a feature named minification that keeps the APK size smaller. But if you do that some of the things just don’t work (Even some functionality of Firebase which is Google's Own Product!).
If you find the solution on StackOverflow all will be saying that you have to remove the minification and this is the only solution.
My question is why is there a feature that can’t be used by anyone? This type of thing frustrates a junior developer so easily and the same happened to me!
Conclusion
This article was not intended to bash android. Android is great and I still love it. I frequently make some useful apps for fun.
But what I think is learning android as a junior developer can have a bad impact overall. It is so much easier and better to learn web development and then move on to the mobile space.
The attraction is enticing and I get it. There are lots of jobs for mobile developers and it’s the future. But getting the basics right is more important to me. And I think I wasted 1 year of my life just because I started with Android.
That’s it. Have a Great Day! :D
Have something to say?
Get in touch with me via LinkedIn or Personal Website