Take big bites. Anything worth doing is worth overdoing.
– Robert A. Heinlein, Time Enough for Love
I was introduced for the first time to computer programming in elementary school. I started learning programming and exploring the world of computers from an early age. Today, I am an intern (along with two others) at Narbase, and I am really excited to go on this journey.
Before starting my internship, I got a list of topics to go through. These were the technologies the company used. Starting out, I learned Kotlin, a relatively new language. Learning Kotlin was really exciting. Being already familiar with Java and functional programming concepts, learning this language was a breeze. Then, I skimmed through some resources on Ktor – a web framework – and Android development.
Working at Narbase began how I expected it to begin – attending an orientation session given by Islam, setting up the development environment, and getting familiar with the development tools.
Our first task was to get familiar with the git-flow. Git-flow is a git workflow that defines a strict branching model designed around the project release. This model dictates what kind of branches to set up and how to merge them together. There are 5 branches in this model: feature, release, develop, hot-fix and master branches. Each branch serves a defined role in the development model of git-flow.
Next, Islam told me to focus on Android development. And so, after installing Android Studio and getting it to work I started reading the android official documentation along side the Vogella tutorial series. I also picked the book Head First Android Development to accompany these resources. I was really excited as it was my first time developing Android applications. The first results were so satisfying, I got quickly hooked on Android development.
The Following Days
Days passed quickly, and I was getting more and more interested in learning more about Android. Through these days, I followed a systematic routine. I would start by reading the Vogella tutorial series, solving the exercises, and playing with the small apps I developed for the exercises. And if things didn’t click from the first time or I needed a quick refresher I would either open the book or the documentation and read on it. I would also google some questions that intrigued me throughout my learning process.
It was helpful to also refresh my knowledge about different design patterns, as the Android framework uses a bunch of well known design patterns, these include composite, adapter, and observer patterns.
One thing that I thought might be an issue while reading about Android development is the language. as Kotlin is relatively new, the resources I was reading were using Java. But as it turned out later, converting Java to idiomatic Kotlin was easy and actually saved me a lot of time. While writing the code, Kotlin truly manifested its elegance compared to Java. Even when I wrote some code that could’ve been written in a better way, Android Studio would suggest to rewrite it.
By the end of the week, I had learned about the basics of activities, layouts and different kinds of resources, views (including list views and recycler views), fragments, Android permission model, Android application life cycle, logging in Android, and data bindings. I didn’t go in depth about these concepts but I have a basic understanding of them and I am capable of using them. Of course, a week is a short period to learn and become efficient with Android development concepts. So as with everything we learn, I will have to revisit those concepts from time to time to be efficient using them, but as they say, practice makes perfect.
Last Wednesday, We had a meeting where Islam and Hind briefed us on the project each of us is going to work on next week, and our responsibilities. We will start a sprint next week and I am really excited to begin working on the project.