The start of my Android development journey
This is a story of how I started my Android application development journey as a junior software engineer.
Up until now, I had about a year of experience in development of full-stack web applications. One of the tech stacks included Spring Boot as a back-end framework in Java for web applications. I liked this and found it appealing as I had some experience in developing Java desktop applications back from my college days. Little did I know that this would become helpful later.
BEFORE I STARTED
Before I started, I wondered what an Android application actually is, and as it turns out, Android apps are written in Java and/or Kotlin, compiled into Java bytecode, but do not run on a JVM as I thought, but on something called Dalvik Virtual Machine, specific for Android apps.
Also, the recommended IDE was Android Studio, which I liked immediately. As Kotlin was preferred for Android application development over Java, I went through some basic Kotlin syntax explaining similarities and differences between the two and their interoperability. This is why I recommend being familiar and confident with Kotlin to begin with and a good interactive book for that purpose could be the Kotlin Apprentice from Kodeco. I tried it myself and it did a good job.
SO IT BEGINS
My first step was to develop some small applications by watching tutorials and working side-by-side with that. That worked, kind of … I had a problem that these tutorials introduced too much new things while I was not grasping well enough in the beginning. Concepts like Activity, Layout, View, Adapter, Context etc. could have been explained better and just like the book above, the book “Android Apprentice” helped with that, so I would recommend that over diving into tutorials right away like I did. It just felt like I wasted more time doing same things over and over instead of trying to understand what I was actually doing.
REAL PROJECT EXPERIENCE
So, after all this introduction it was time to put all I learned so far to test. I was, along with other few Android developer beginners, suppose to build an app for sport events management. The initial setup was done by more experienced senior developer and the project was structured and organised following modern and recommended concepts like Fragments, MVVM design pattern, usage of external libraries like Room for Local DB communication and Retrofit as HTTP Client just to name a few.
None of this was present in tutorials and I was very confused at first. But as I solved one task after another, I got used to it and now I see why things are the way they are, and if there was one reason I had to pick, I would pick separation of concerns. I encountered this before when I worked with Java Spring Boot as it does the same job as well with Controller – Service – Repository layers pattern.
For example : The XRepository in Spring Boot for DB communication would be XDao from Room in Android. A Service in Spring Boot that holds a business logic would be a ViewModel for example in Android, although with usage of injected utilities that communicate with the API and/or local DB if needed. My point being, some analogy could be drawn, and it helped me understand things better.
CONCLUSION
This beginning of my Android development journey has been a remarkable evolution. I went from being a junior software engineer with limited Android knowledge to someone who can confidently navigate the intricacies of Android development. I hope my experience I described here can serve as an inspiration to others embarking on a similar journey, emphasizing the importance of a structured approach, resourceful learning, and the ability to connect past experiences to new challenges. As I continue to explore the ever-evolving world of Android development, the skills and insights I’ve gained have the potential to propel me to even greater heights.