<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ngacho</title>
    <description>The latest articles on DEV Community by Ngacho (@ngacho).</description>
    <link>https://dev.to/ngacho</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F227830%2Faf4fcacf-7a1f-43ff-8018-467d85f0b9bb.png</url>
      <title>DEV Community: Ngacho</title>
      <link>https://dev.to/ngacho</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ngacho"/>
    <language>en</language>
    <item>
      <title>Patience Persistence Results</title>
      <dc:creator>Ngacho</dc:creator>
      <pubDate>Fri, 08 May 2020 22:40:59 +0000</pubDate>
      <link>https://dev.to/ngacho/patience-persistence-results-4k3a</link>
      <guid>https://dev.to/ngacho/patience-persistence-results-4k3a</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;br&gt;
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.&lt;/p&gt;

</description>
      <category>android</category>
      <category>beginners</category>
      <category>kotlin</category>
    </item>
    <item>
      <title>Navigating thy desert of despair</title>
      <dc:creator>Ngacho</dc:creator>
      <pubDate>Fri, 28 Feb 2020 02:24:33 +0000</pubDate>
      <link>https://dev.to/ngacho/navigating-thy-desert-of-despair-4ejk</link>
      <guid>https://dev.to/ngacho/navigating-thy-desert-of-despair-4ejk</guid>
      <description>&lt;p&gt;In the culmination of all the frustrations that had been building up in me, I threw my hands in the air, and flipped my laptop. The resounding bang that followed was akin to what I had been feeling for many days now, almost weeks. “No looking at code this entire weekend,” I resolved, and something within me settled. As a glimmer of hope started shining within me, I thought if there is any light at the end of the tunnel, I should start looking for it. I had never experienced this in all my months as an Android developer. Everything was overwhelming, activities or fragments, things I knew, and things I didn’t know but needed to know… you name it. At some point, I thought Android wasn’t for me.&lt;/p&gt;

&lt;p&gt;As most passionate developers do, I hardly avoided code all weekend. In fact, I started looking for options. I had read about MOOC.fi and 'The Odin Project', and after a lot of deliberation, I decided on 'The Odin Project', mainly because MOOC.fi taught Java, and it is Java for Android that had me pent up all these frustrations.&lt;/p&gt;

&lt;p&gt;The web was exciting, it was enormous, maybe more enormous than Android, but it looked exciting. I started learning things: the difference between the web and the internet and the important skills to have as a web developer. I started looking at command line, and programming seemed all beautiful and good once more. It took me one &lt;a href="https://www.thinkful.com/blog/why-learning-to-code-is-so-damn-hard/"&gt;article&lt;/a&gt; to figure out that what I had been feeling before was just a part of a programmer’s journey.&lt;/p&gt;

&lt;p&gt;In essence, I was mainly frustrated because I was sure my Android programming journey would end somewhere, I was just never sure where nor how I’d get there. I was just drawn with the “Mirages of Mania”–dozens of tempting resources that appeared to have all the solutions I was looking for, but didn’t. I sought The Odin Project thinking it was the salvation I needed: that it would make me a real developer, while Android would not.&lt;/p&gt;

&lt;p&gt;Thanks to that article, I self-diagnosed and started looking for solutions. I needed a strong goal; I needed a strong path; I needed to focus and avoid distractions. You bet this is what I did. I set myself strong goals to improve my Android development skills. I started learning Kotlin, which I had been postponing for months now even though it is crystal clear is the future of Android development. I decided to level up my Java skills through Michael T. Goodrich and Robert Tamassia’s Data Structures and Algorithms. I must say the frustrations are now long gone, they have been replaced by the desire to chart forward. I don’t know if my path will work or not, but the person who suggested I was in the Desert of Despair also recommended focusing and avoiding distractions. Who am I to dispute?&lt;/p&gt;

&lt;p&gt;It has been going not so well, but in the desert of despair, we simply persevere.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>motivation</category>
    </item>
    <item>
      <title>What—and how—staying alone and being forced to cook reminded me about my programming journey.</title>
      <dc:creator>Ngacho</dc:creator>
      <pubDate>Fri, 31 Jan 2020 06:37:26 +0000</pubDate>
      <link>https://dev.to/ngacho/what-and-how-staying-alone-and-being-forced-to-cook-reminded-me-about-my-programming-journey-32d1</link>
      <guid>https://dev.to/ngacho/what-and-how-staying-alone-and-being-forced-to-cook-reminded-me-about-my-programming-journey-32d1</guid>
      <description>&lt;p&gt;The first time I opened android studio was two hundred and twenty five days ago. I was not only trying to recover from major setbacks in my life, but also felt abandoned by everyone I thought I was close to. I felt alone. Having non-existent hobbies (passions) then, it was only natural that my will to live on depended on any straws I could find and clutch on.&lt;/p&gt;

&lt;p&gt;Little did I know that programming was lay among those straws: a friend of mine had over-estimated my coding capabilities and given me an android project to work on. She has since abandoned the idea altogether, but I am really glad she asked me to create the application. It’s what I’ve clutched on ever since. At least, I wake up every day looking forward to something. It may not be that great or revolutionary, but I’m glad I started this journey.&lt;/p&gt;

&lt;p&gt;Similarly, I find myself alone today—in a remote village of my country. Nothing is wrong this time, I am just taking time off. I’m fully living alone for the first time in my life. I didn’t know it’s hard to decide what to eat if you live alone. It’s worse when you don’t have fast-food options nor know how to cook. Nonetheless, one has to eat. So after two days of surviving on bread and lots of coffee, I was forced to enter the kitchen and prepare something.&lt;/p&gt;

&lt;p&gt;I remember looking at the utensils in the kitchen and thinking to myself, this exactly feels like what android studio felt the first time I opened it. It was new and strange. It felt like one big static main void. The two hundred and twenty five days I have been looking at android studio however came in handy. They inspired me. If I had hacked android studio, the tormentor of RAMs and senior developers, who was I not to hack a kitchen?&lt;/p&gt;

&lt;p&gt;I recalled everything I had ever seen anyone do in a kitchen, gathered my ingredients, and psyched myself for this new challenge. “The worst thing I can do is make edible food, not bad, just edible,” I remember telling myself. I then set out to work, and after a lot of improvisation, I had something to eat. In my first attempt at cooking, I did well. As a matter of fact, I cooked something I thought was really hard—Ugali. As I enjoyed the first meal I have ever cooked in my life, I couldn’t help but draw similarities and extrapolate lessons from both my beginner journeys—in the kitchen, and in android studio.&lt;/p&gt;

&lt;p&gt;When you are starting out, it doesn’t matter how you do it. What really matters is you do it. I remember one of my biggest weaknesses is thinking I could write industry (read FAANG) standard code. Looking back, I think I was a bit too harsh on myself, and ever since I accepted I was a beginner and I needed results not standards, I think my drive to code rose exponentially. I might have written lots of spaghetti code, but who cares? I know how to code, don’t I? For cooking, at least I didn’t fall into that trap. I didn’t hold myself to any particular standards. The fact was, I had never cooked, so imagining I could produce chef-like meals was not a goal in mind. I became comfortable with cooking something that is edible, not professional. With that, I know I will continue cooking, looking forward to become better at preparing meals. Point is, when you are starting out, do not care whether your code is industry-standard. Just ensure your code does the intended task.&lt;/p&gt;

&lt;p&gt;Those are my only two cents. If you are deliberating either cooking or coding, don’t deliberate… just do it. I must warn you though, you might not be able to stop. Happy coding, and cooking!'&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>android</category>
      <category>motivation</category>
    </item>
  </channel>
</rss>
