I Tried Every Coding Path - Here's how I chose native android dev as my first development domain among so many options during my undergrad studies.
Peer Insights and Confusion
During the second year of my undergrad B.Tech degree, I found myself at a crossroads. Everyone around me was embarking on their unique development journey—some diving into ML and AI enticed by the fame of an honors degree (which our college offered), while others were venturing into the vast realm of web development. Amidst all this, I found myself in a state of confusion, uncertain about which development domain I should choose.
As a normal student, I also sought insights from those around me. Most answers boiled down to variations of "because others are doing it" or "I heard there are lots of jobs in this domain." Unsatisfied with these responses, I decided to take some help from the Internet.
Listing Potential Domains
I wasn't feeling satisfied because I believe the first development field we chose is really crucial. The terms we learn in that area stick with us and shape how we understand other fields later on. It's a bit like getting good at one language, which makes picking up other languages much easier.
So in my fourth semester (year 2021), I listed a few potential domains that I thought were good.
The domains that I listed were:
Web Development
AI/ML
Data Science
Mobile Development
AR/VR
Cybersecurity
Now, after making a list, I moved on to the research phase, exploring each domain to understand the prerequisites and job markets. Armed with only knowledge of C++ and a surface-level understanding of Python, I leaned toward Python-related fields. AI-ML seemed like a logical choice due to my comfort in using Python.
Still, a tiny part of me wasn't content with my thoughts. One day, while casually browsing through videos, I stumbled upon one that happened to change my perspective. In the comment section, I noticed a person expressing gratitude for exploring different fields before deciding on a specific domain. That comment intrigued me, and I decided to take a more organized approach – devoting 15 days to each domain to understand its basics.
The appeal of Offline Apps
Starting with HTML, CSS, and JS, I created static websites, and in the last 4-5 days, I experimented with React.js. I repeated this cycle for various domains, gaining minimal knowledge to understand their essence. After about three months of exploration, my heart settled on mobile development.
The appeal of creating apps that didn't rely on the internet and could be shared with friends and family struck a chord with me. Even though it might seem like a small thing, it sparked genuine curiosity and interest in me. I understand it might not sound like a major reason to dive into mobile development, but the Jatin of that time found genuine joy in it, and that's what led me to embrace mobile development.
In mobile development, I had to decide between going hybrid or native. I opted for native because I wanted to delve into the inner workings of a platform and eventually create plugins for hybrid developers. So, I set my sights on native Android development using Java.
As for why not native iOS development? Well, it's simple – I don't own a Mac or an iPhone.
Struggles and Shifting Strategies
So, my journey into Android development kicked off with Java as my go-to language. Following Google's recommended Udacity courses, I immersed myself for a good 2-3 months. Things seemed cool until I tried to build my first app and bam! A black screen stared back at me. Panic mode activated!!
I thought, "Alright, more tutorials will do the trick!" I picked up some more courses for the next 2–3 months. Six months down the line, I was knee-deep in "tutorial hell." Despite drowning in information, each attempt to build an app landed me back at that same gloomy black screen. Talk about recursion!
Fed up with the endless tutorial cycle and not moving an inch in my journey, I decided to switch gears. Instead of starting from scratch every time, I started pimping up the apps I'd built during the courses. It was like magic! Applying what I'd learned gradually boosted my confidence.
If you're faced with a similar challenge, here's my suggestion: instead of staring at a blank screen, head back to your courses and start by adding 2-3 functionalities to each app as a starting point. Trust me, it's a surefire way to lift yourself out of the tutorial hell.
This time around, I felt content. Then, after 2-3 months, I made the switch to Kotlin. It was like a breath of fresh air. To my surprise, the skills I gained during my Java struggles seamlessly translated.
After a few more months, I stumbled upon Jetpack Compose. The concept intrigued me, and I was frankly tired of dealing with XML layouts. Creating apps with Jetpack Compose turned out to be super easy compared to my last two experiences. I believe the groundwork from Java and Kotlin made it less of a nightmare. The learning curve felt more like a stroll in the park this time.
Importance of Initial Choices
The things I learned during Android development still help me a lot in whatever domain I switch to; everything feels much easier compared to Android. To this day, I have published five Android apps on the Play Store, and I am extremely happy about the fact that I learned a domain and then jumped to other domains, rather than picking shiny stuff every 2-3 months.
Conclusion: Growth Attitude
Looking back, my journey reflects the importance of exploration before settling. The joy of mobile development, the struggles with Java, the shift to Kotlin, and the embrace of Jetpack Compose have all contributed to shaping my skills. Now, as I venture into different domains like web development and AIML, the lessons from Android development provide a solid foundation, making the journey smoother. It's not just about mastering one domain; it's about the growth and adaptability gained throughout this adventure.
Subscribe to my newsletter
Read articles from Jatin Shihora directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Jatin Shihora
Jatin Shihora
I work across the entire stack as a software developer. There are now 3 main technical stacks I use based on this languages: JavaScript, Python, Java, Kotlin, and sometimes CPP