DEV Community

Ngacho
Ngacho

Posted on

Patience Persistence Results

This quarantine has provided me with more time to think about the direction of my career—negatively and positively in equal measure. I am still unsure of the exact details, but what I have spent most time thinking about is being professional. Yes, before, I could piece up functions to make my android apps do what I wanted, but I kept running into some common hurdles. For example, I have spent more time than I care to remember thinking about what to do when my apps are switched from portrait to landscape. I have also really thought about the structure of my classes, with all the messy code in a single place.

I of course turned to GitHub to look at sample examples of professionally written android apps, and I was not really shocked to realize I did not understand the code base of a single repository. I hardly understood how all the pieces connected together, and this immediately cast doubt on whether I could start contributing to open source.

To get a clearer direction, I reached out to people I looked up to. And the general consensus was that I should learn three things: app architectures—mainly MVVM architecture, the Databinding library, and Dependency Injection. As a beginner, I had always thought these to be intimidating topics to learn. They have a learning curve. The learning resources are limited, and it is worse if you are trying to learn them in a recent programming language—Kotlin in my case. I felt defeated even before I began. As every google search on ‘introduction to [x] in Kotlin’ (where x is either MVVM, Databinding, or Dependency Injection) brought zero to none results, my heart sank, slowly convincing me I’d never be a real Android developer. As I usually do when faced with a hurdle, I took a break from everything. In my short sabbatical, I remembered how I got here in the first place. I got this far by diving head first into a concept, and trusting that I’d grasp it somehow along the way.

When I got back, I decided to start with architectures—MVVM in particular. I got a few tutorials written in Java, and chose to follow the implementation rather than the exact examples. It took me a while, but when I did my first example in MVVM, I was quite pleased with the result. It was far from perfect, but it was honest work, a step in the right direction. I found out MVVM heavily relied on things called Live data, which as literal as it sounds, it wraps data that is live, data that is updated at runtime. I decided to do it a second time, this time, not relying on online resources, but to try and make my own from scratch. Of course, making it a bit more complex along the way. This time, the results were better: and my understanding of the concept was reinforced, my confidence restored.

With MVVM in the bucket, I moved to the next: Data binding. The second monster remember? The techniques I used in learning MVVM were useful this time. I scraped the web for tutorial blogs on data binding, and dove headfirst into it. It was far easier this time, albeit the debugging was demoralizing since databinding uses a lot of annotation processing. It took me about three hours of implementation and debugging, and at about 2 in the morning, I heaved that sigh of relief of everything coming together properly. I couldn’t stop rerunning my code just because everything seemed so clean. I was confident I am on the right path, the people I looked up to approved my code, confirming I was on the right path.
I don’t know if I am a professional developer yet, but I do know something: patience, persistence, and throwing yourself into the murky waters certainly has its own benefits. If you are uncertain about a concept, try taking a step back, and when you resume, let go of the fear of the concept, and just get started. Hopefully, I will remember these lessons and carry them on even as I learn Dependency Injection, and beyond.

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

Sentry mobile image

Improving mobile performance, from slow screens to app start time

Based on our experience working with thousands of mobile developer teams, we developed a mobile monitoring maturity curve.

Read more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay