DEV Community

Cover image for Learn by contributing to Open Source
Subbu Lakshmanan
Subbu Lakshmanan

Posted on

Learn by contributing to Open Source

In the recent Google I/O, Google announced Kotlin to be the first choice language for writing Android apps. Since few years before Google announced that, Kotlin is preferred language and added kotlin support to the android studio, this news doesn't come as a surprise for me.

When the announcement came a year ago, I registered for many courses, finished a couple of them. I felt good about completing the exercises & sample projects. However, It lasted only for a while. With my personal (got married to a wonderful girl) & work commitments doubled(they let go of a few folks at my work), I took a break from learning kotlin.

When I started again, I struggled a lot and confused as to where to start again, as I was in the middle of several kotlin courses. Although the courses I registered to learn kotlin were pretty good, I realized that I'm more of a reading person. I don't mind reading documentation or several blogs to understand a concept and try out on my own. Watching a video course and following along a tutorial felt too slow for me.

I worked on small projects as I was learning. Although the personal projects were helpful to understand the fundamentals, it had few challenges.

  1. Focus on scope: It was up to me to decide the scope of the project. Sometimes I tend to expand on my idea on personal projects, and I spent more time on things that weren't relevant to kotlin.
  2. Focus on Technology Stack: Again, it's up to me to decide the architecture and design of the app, the libraries to use. While identifying answers to these technical questions, I lost track of my goal(which is learning Kotlin). For ex., I lost loads of time when I started with the goal of looking for blogs related with data classes and somehow followed blogs on sample apps that are built using the MVVM + RxKotlin + Dagger2. Although it is good to learn about this setup, it wasn't contributing directly to my original goal.

That's when I decided to start learning Kotlin again from scratch, but this time with a better clear plan.

So the mistakes that I did earlier in learning Kotlin were,

  1. Trying to learn Kotlin from too many sources
  2. Didn't start with what's working out well for myself (Reading vs. Video courses)
  3. Didn't have a plan with a defined schedule
  4. Didn't have a defined scope on personal projects

I learned from my experience and created a plan.

Goal: To Learn & develop an App in Kotlin and publish to the store by Sep 2019

The plan to do that,

  1. Buy a book for learning Kotlin: Kotlin Programming: The Big Nerd Ranch Guide
  2. Work on Personal project with limited scope: An Android App
    1. Outlined the basic idea of the app
    2. Identified the functionality scope of the app
    3. Identified the technology scope of the app
    4. Designed simple UI/UX flow using sketch app

Learn by Contributing to open source

I have participated in Hactoberfest last year and contributed to Slim-Launcher app by Beautus S Gumede. I completed my Hactoberfest challenge and got my T-Shirt as well. It felt good to give back to the community.

When looking back,

  1. I learned a lot while working on the project. The app uses Kotlin, and It was a good exercise for me to flex my skills.
  2. The app was published to store and had a defined technical scope to it. It helped me to focus on one thing and work within the boundary.
  3. I thoroughly enjoyed interacting with the project developer Beautus S Gumede and working on the project. While we both were strangers, connected through his blog on dev.to, I enjoyed working on his project and liked the candidness and the appreciative character of Beautus S Gumede.

This exercise made me realize that I could learn a lot more by working on projects with definitive design and functionality. I could look into the code, fix a bug, or add a feature and learn from the project.

This had led me to add one more step to my learning plan,

  1. Buy a book for learning Kotlin
  2. Work on Personal project: Android App
  3. Contribute to open source projects

So far, I have contributed to,

Currently, I'm working on an enhancement request in the projects,

I typically make notes of my learnings as I work on a project, and I plan to write a series of blogs once the PRs are submitted and merged.

Note: I found out about the repositories through Github "Discover Repositories" feature. However, now that we have a listing in 'Dev.to,' I'm going to create a listing for volunteering to work on open source Android/kotlin based projects where I can contribute and learn as well. (Although, I'm going to delay that until I finish my current commitments)

Top comments (3)

Collapse
 
sameerchandra profile image
Sameer Chandra Nimushakavi

I always wanted to contribute to open source but I never found a really good starting point. Whenever I tried to go through the issues of a project, I was always overwhelmed by the code that was written. This always threw me off.

Collapse
 
subbramanil profile image
Subbu Lakshmanan • Edited

I agree with you. It happened to me as well. Sometimes the architecture/design of the code is so much that you will be overwhelmed by it. Until last HactoberFest, I have never contributed to any open source repositories for a similar reason. Responding to a thread in one of the Dev.to's post helped me to find a repository that was simple enough for me to contribute.

I would say not to be discouraged as it's only natural to be overwhelmed initially. My initial goal was not to commit to contributing to the code, but to see if I can run the app locally from my machine on a test device and play around with it. Then eventually, I started poking around, making changes, and see how it works. If I pleased by the effort, then I think about forking the repository and contribute. I have done this with almost like 20+ android apps/libraries.

Now, based on the repositories that I have viewed, Github started showing the list of repositories that helped me to find one where I can contribute. I would say it's all about finding a starting point, and after that, it will become easy.

Good Luck!!

Collapse
 
thefern profile image
Fernando B 🚀

Good read! I am really embracing Kotlin myself instead of Java for Android, code is a lot compact and cleaner.

I also agree with the open source topic, it has helped me grow by leaps and bounds.