Deliveroo provides insights into delivering quality apps experiences — part of the Apps, Games, & Insights podcast

This article is based on Google’s Apps, Games, & Insights podcast episode featuring Maria Neumayer, Staff Software Engineer at Deliveroo alongside Shobhit Chugh, Product Manager at Firebase.

Over the last few years, users’ expectations of apps have increased. First impressions count. An app that crashes, hangs, or drains battery life, probably has a competitor that provides the same features but with a much, much better experience. To meet these expectations and keep ahead of the competition, developers are investing more into their apps’ usability and technical capabilities.

In this article, I’ll take you through some of the things Deliveroo does…

I’m a huge fan of Kotlin — it’s powerful, concise and makes it fun to write code. But even our biggest heroes aren’t perfect and there’s one thing I don’t like about Kotlin: destructuring declarations. Let’s see why, and what they do!

What are destructuring declarations?

Destructuring declarations are a convenient way of destructuring an object into multiple variables. So what does that mean? Let’s take a look at this simple data class:

data class Song(
val artist: String,
val name: String

What if we want to get a variable of the artist and the name from this? …

Many years ago in school I was learning about matrices. I don’t remember much of it, but what I do remember was thinking, “but… what do you actually do with that knowledge?”

Fast forward a few years and I started working as an Android Developer and had to work with ImageView's scaleType — if you ever looked at all the possible types you’d have noticed that one of them is matrix. For many years I shied away from it, using the other scale types or working around the issue otherwise. …

Last week I wrote about my initial experience using the new Navigation Architecture Component. But after my first few days of working with it I still had many questions. How do I pass data back to the origin? How does conditional navigation actually work in practice? How can I start navigation for a common flow and get back to the origin? So I got stuck in and tried to figure them out.

Passing data back to the origin

When working with activities there’s a simple way of getting a response back from a started Activity using startActivityForResult and onActivityResult. For fragments that doesn’t exist, and as…

Navigation on Android can get quite complicated — from passing data to handling the back stack there’s many things to watch out for. There’s many solutions out there trying to solve that problem — often working with a single Activity, but none of them satisfied me so far. They were either too complicated or didn’t handle things like restoring state.

So when Google announced the new Navigation Architecture Component I got very excited and decided to play around with it over the weekend. …

Sometimes coding can be a bit frustrating — why is this build taking so long? Why is it crashing? What is happening? While I won’t answer those questions right now, there’s a few tips that can make it more bearable and easier to deal with — with colour.

First up: Slow builds. Frustrated by waiting for your gradle build to finally finish? Make things more colourful! Go to the Android Studio preferences, search for plugins, click browse repositories and search for “Nyan Progress Bar”. Install, restart Android Studio and your progress bar will look like this:

No more ifs? That sounds great! Well with Kotlin that is possible. Kind of. Kotlin has multiple language features that can replace ifs in many cases. But are they always a good idea? Let’s find out.

Let’s take a look at an if statement you probably wrote in the past if you’re an Android developer:

override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == {
// do something
return true
} else if (item.itemId == {
// do something else
return true
} else {
return super.onOptionsItemSelected(item)

Android Studio will already highlight that this can be…

At the start of the year Apple announced their acquisition of Buddybuild, along with the news that Android support would end by March. This meant we had to find an alternative quickly, and Bitrise was our eventual choice. Here’s why, and how we switched.

We use CI for various things:

  • Running our unit and instrumentation tests to ensure there are no regressions
  • Creating an APK and deploying it to Fabric and/or Google Play
  • Deploying our internal nightly build on the Google Play alpha channel for internal feedback.

We looked at various options, including Nevercode, Visual Studio App Centre and Circle…

Kotlin was the big topic of the year in the Android community. Many of us are talking about it or have started using it. In this blog post I will share a few tips and tricks we’ve learned while converting our application to Kotlin.

For us at Deliveroo the journey took off in April this year when we introduced Kotlin to the production app and now (after 8 months) we hit the major milestone of having a majority Kotlin app.

At Droidcon UK, Amal and I talked about our journey from Java to Kotlin. You can watch the talk here

Public speaking is a scary experience. But it’s also a great experience.

With Droidcon UK 2017 I’ve done my second talk and I’d like to talk a bit about the experience and give some tips for public speaking. I’m by means no expert in public speaking, but I’m definitely an expert at being scared of it.

People’s number one fear is public speaking — more than death

It all started 2 1/2 years ago when Natasha emailed me and asked me if I wanted to speak at Droidcon UK. I didn’t apply for the call for paper — and never would’ve. I was always terrified of any kind of public speaking…

Maria Neumayer

European living in London. Android Developer at @DeliverooEng. Tweeting at @marianeum.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store