Six months of Android development

In my current role at Qudini, I started as an iOS developer. My main task was to create and improve our mobile products for iOS devices based on what was already done on Android. However I wanted to be more efficient in my job and I thought it could be by impacting more users through Android development. Once our iOS apps were at the same level as the Android one, I push the idea that it would be better I start doing Android too. Here is my feedback after 6 months developing on Android.

I’ll start with Gradle, the Android build system and package manager. I had some knowledge about it but it took me days to figure out how Gradle works and try to avoid not messing with it. It became a common thing to double check any Gradle update and dependencies, otherwise it’s easy to break Android Studio project or features if you let Android Studio automatically update dependencies for you.

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'idea'

group "org.sample"
version "1.0"

mainClassName = "org.sample.myapp.Main"

dependencies {
    compile "org.sample:number-utils:1.0"
    compile "org.sample:string-utils:1.0"
}

repositories {
    jcenter()
}

Coming from Xcode and iOS, it felt a step back when it came to UI, create multiple layouts for a reused component to manage resolution I was surprised to not find an easy way to create a view and set its position straight into the code as we can in iOS.

When I had to create a list, I was lost when using Adapter, and RecyclerView into an Activity. I would have thought that Android had a similar way as iOS and its UITableViewControllerDataSource or UITableViewControllerDelegate. I felt that UIViewController in iOS are easier to handle compared to Activity, Dialog or Fragment, especially when it comes to the life cycle of UI element.

Not everything gave me a hard time: my background and experiences on mobile apps helped me to structure my code quickly. I only need to get the right pattern and Android element to make it standard and maintainable. I also discovered great resources like ButterKnife or Retrofit which are a third part libraries that make the gap when you feel Android SDK is limited.

Here Butter Knife library allows you to bind layouts and resources, make it faster to deal with layout. (code from ButterKnife website)

class ExampleActivity extends Activity {
  @BindView(R.id.title) TextView title;
  @BindView(R.id.subtitle) TextView subtitle;
  @BindView(R.id.footer) TextView footer;

  @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_activity);
    ButterKnife.bind(this);
    // TODO Use fields...
  }
}

The other key element to go through this learning curve was pair programming. I got lucky to work closely with another Android developer that took time to help me, answering every of my question. We got used to it and helped each other for the past 6 months more often than we did before.

When I started Android development, my idea was to be more efficient and to balance the amount of work between mobile developers. My day was about 60% iOS and 40% Android. Now it’s mainly Android even if I still prefer iOS environment. Every time I got the opportunity, I jump back to it to learn more about latest Swift version.

It didn’t took me too long to be useful to my team, it was also a good exercise to reorganize my ideas around development. Getting a complete overview of mobile development helped me understanding mobile needs regardless the targeted platform. It also allowed me to work closer to backend developers to create a generic solution to iOS and Android.

I’ll finish by sharing some resources I found useful in my journey.

© 2020 Benoit Pasquier. All Rights Reserved
Author's picture

Benoit Pasquier

iOS Software engineer 🇫🇷, writing about Swift, Data and more.

ShopBack 💰

Singapore 🇸🇬