My personal take on Droidcon Kenya 2019
What is Droidcon
According to https://droidcon.co.ke/about
“Droidcon is a global conference focused on the engineering of Android applications. Droidcon provides a forum for developers to network with other developers, share techniques, announce apps and products, and to learn and teach”
This year (2019) Droidcon was held on the 8th and 9th of August at IHub - same as 2018.
The venue was big enough to host the hundreds of people at the conference consisting of attendees, and speakers. Kudos to android254 for the great work of organizing Droidcon Kenya.
Speakers
There were a number of speakers at the Droidcon from different parts of the world, from the US to South Africa, and Japan. I will not focus on all the speakers and their talks but I will mention the talks that stood out to.
To find more information on all the speakers click here.
Keynote (Community on a Global Scale)
Greg heads up global operations from the Droidcon HQ in Berlin, Germany. He is responsible for managing the Berlin-based HQ team, supporting a worldwide network of partners and heading up product development.
He started out by giving a brief background on the History of Droidcon.
The importance of community, and how you can get involved.
Talks I attended and some new things learned
USSD Automation for developers by Hover
I came to this talk knowing what Hover is and some of the features it offers. Hover solves real African problems by automating USSD which is widely in use on the continent.
See more about Hover here: https://www.usehover.com/
During the talk, Hover offered a bounty (Galaxy A80) to whoever would come up with a good idea and demo it the next day.
The prize went to an attendee who created an app that can check your airtime balance by using the Android text-to-speech API to read your balance for you. I thought this was an awesome use of technology to solve a real-world problem.
Coroutines’ Flow: The what, why and how
This was a very informative talk. I learned that Flows might replace RXJava. But for now, RX is way ahead of Flows in terms of community and functionality. I’m hoping to experiment with Kotlin Flows in the near future.
Introduction to Work Manager
Almost always when you are met by a new technology you have this resistance to change — that’s how I felt at the time. Edward explained how to use the work manager, also displaying in-depth knowledge on the subject.
I recently started using it on a project, and I am loving it. I was using it to upload some Room data that had failed to upload earlier.
Presentation: https://speakerdeck.com/edwardmuturi/intro-to-workmanager
Experimentation at scale: fuel your application’s growth through A/B testing
This was a session packed with so many juicy Android desserts 😉.
A little bit about Thomas, he builds Android apps at Lyft. He took us through the components required to do A/B testing:
- Hypothesis
- Analytics framework: To make sense of the results e.g. Apptimize, leanplum, optimizely…
- Random user sample: To use for the A/B test
Imagine having to make a decision on which UI/UI flow to use to grow app in-app purchases. Rather than make an informed decision, why not create both views/flows and A/B test the two views/flows and roll out the view/flow to a sample of your users. At the end of weeks/months, the test is completed and you can make a more informed decision with the data you have gathered. Maybe view1 is better than view2, or vice versa. Maybe both views did not have much difference in driving in-app purchases — the bottom line is to make an informed decision.
Presentation: https://drive.google.com/file/d/1oUqoToSbUtS6dVIVmOsiJ_twY8PSe5ag/view
Accelerate Flutter Apps Development
Question: Maintaining two codebases for Android and IOS?
Kenichi explained the benefits of using Flutter, the main benefit that stood out to me was one codebase, and deploying to multiple platforms i.e. IOS, and Android. I think Flutter is a solution to the question posed above.
Presentation: https://t.co/hIdphBCZ7Z?amp=1
The Power of Play Console: Launch and Grow Your App
I learned about how powerful the Google Play Store is and that I was actually underutilizing it.
From the recently released ‘suggested replies’, which uses AI to give you suggestions to reply to your customers on the Play Store; to having custom listings for different countries on the Play Store. Custom listings can aid in increasing app installs by customising the graphics, currencies... It can also be used with A/B testing to know what listing drives installs or whatever metric you are using.
Release management.
Alpha and beta versions of the app are deployed to the users you assign to the alpha and beta test groups that exist on the Play Store.
Internal versions of your app can be deployed to your internal test track as configured in the Google Play Developers Console; allowing you to release robust apps to your users.
Releases on the “production” track are deployed to all users although you can make use of staged releases on the “production” track to safely deploy your release first to a small percentage of production users and then gradually increase this percentage as your confidence in the release grows.
Staged rollouts
Control how many users get the update. With a staged rollout, your update reaches only a percentage of your users, which you can increase over time.
Timed releases
Updates to existing apps are processed as usual, but you control the specific moment your update goes live.
App quality tools
Pre-release reports are useful when getting started or re-writing an app.
User Acquisition
The customer lifecycle is a term that describes the different steps a customer goes through when they are considering, buying, using, and remaining loyal to a particular product or service.
Pirate Metrics (AARRR) can help you with that.
-Acquisition (Google Ads, Acquisition reports in Google Play, Playstore listing acquisition experiments e.g. app icons, screenshots)
-Activation
-Retention
-Referral
-Revenue
To get more information on how to get the best out of the Play store use the link below.
https://playacademy.exceedlms.com/student/catalog
App modularization: From Zero to Hero
Moyene works at Zola Electric as an Android developer.
She took us through how they modularized their Android app, and the testing challenges they faced.
Modularization involves separating your apps logical components into discrete modules. Some of the advantages of modularisation include:
- Faster build times
- Dynamic delivery
- Smaller APK size
Additionally, some of the challenges she faced were, incorporating Dagger with app modules, and having multiple string.xml files for localization.
Presentation: https://t.co/O2z6y9VULj?amp=1
A Small Leak Can Crash A Great App
Michael talked about how leaks can cause your app to underperform, this may not be noticeable on high-end phones, but out there in the wild where there are different species and genera of Android devices, every KB counts.
Causes of leaks include:
1. Inner classes
2. Unbound IO operations
3. Anonymous classes
Conclusion
- Do not blindly rely on the garbage collector.
- Favour static inner classes over non-static. Each non-static inner class will have an implicit reference to its outer class instance which may result in unwanted behaviors
Software Engineers to the Power of X; An employer’s perspective [Andela’s Fireside Chat] by Mercy Orangi and Carol Warugongo
This talk was about Andela demystifying who they are and what they stand for. This was eye-opening, I felt the energy in Andela and their passion for what they do — they were also recruiting mid-level and senior Devs
Compassionate Software Engineering Values — Be An Awesome Android Engineer!
The talk was focused on showing empathy in the craft of making software. Maye gave a personal example from GitHub, he wanted to change a repo, he advised the author if the repo to use a different convention. The author responded by first saying thank you for the suggestions and then giving him an opportunity to implement the changes suggested. His take from this was that the author was courteous, and gave him an opportunity to learn and contribute to the repo.
Currently, I have been reading Clean Code by Uncle Bob, in the first few chapters, he recommends choosing good names for variables. I looked at this from a technical standpoint, it makes the code maintainable. On the other hand, the talk gave the same recommendation but the speaker looked at it from a compassionate angle, i.e. you want to make it easier for your fellow developers to read the code and understand it, thus being compassionate.
My main takeaway is that we need to be thinking from other people’s point of view, listen more, talk less.
Leading The Droids: The Memoirs of a Technical Team Lead
This talk was centred around the speaker's personal journey from being a dev to a team lead, and the challenges he faced along the way while creating an office room management system.
The system was meant to address the challenges faced while scheduling meetings in rooms — for example, hoarding a room that is not in use — teams schedule a meeting in the same room at the same time.
Initially, he made the mistake of defaulting to his norm i.e. coding. He spent too much time coding rather than orchestrating the team and communicating with the outside departments to meet end goals.
My main takeaway is that the team lead position is dynamic and you need to balance dynamics both from inside and outside the team.
Presentation: https://t.co/lFWsfQmUMo?amp=1
Conclusion
It was a great event and I can’t wait to use the knowledge I have gained from the talk in my own projects and apply some of the nuggets of wisdom to my Android career.