From monolith to modular: the new Snap for Android
Redesigning Snap for Android is NOT a Snap!
“It is not an easy task,” Gustavo Moura, director, engineering at Snap remarks when I ask him why it was taking so long for the much talked about new Android version of Snap to come out. “And we are not hurrying it, because we want to get it right.”
“It is a pretty big application and comes with a number of features,” explains Jerry Hunter, senior vice president Engineering at Snap. “It generally takes about a year to rewrite an application of this size. And that is not counting the time taken in planning. In planning, we also had to consider whether we actually wanted to rewrite the app or just wanted to continue trying to fix the old one…”
Snap (earlier, Snapchat) might be one of the most popular social networking apps around and indeed can claim to have played a major in pioneering the whole concept of image or photo messaging (“snaps”), but the app has had a rocky road when it comes to Android. While its iOS avatar has always been a smooth performer, Android has been a different story with complaints coming in thick and fast. To its credit, the company knew that it had a challenge on its hands as far as Android went.
“A couple of years, when I joined Snap,” Hunter recalls. “Evan (Spiegel, Snap CEO), was asking what it would take to change the Android experience. The performance was not up to scratch and Android customers were not happy.”
The reason for this, he says, was the fact the existing Android app was a monolith. “We found that the code itself was messy,” he explains. It was created without any architectural underpinning, so it was difficult to make changes. And this was because the app was created quickly in an attempt to get to the market quickly, and in this, it succeeded. However, it was running into issues, and by the time I had joined – October 2016 – they already were thinking of reworking the app.”
Of course, rewriting the entire app from scratch was not the initial option. Snap first tried fixing the existing application by rewriting parts of it. “Originally, I thought we could change bits of the app. We thought we could try rewriting parts of it but just did not work out,” Hunter recalls wryly.
The biggest challenge, as per Moura, a former Googler, was the fact that a number of the elements of the previous Android application were interconnected. “If we tried to fix one aspect, another got affected,” he points out. “There were a lot of features in the app and they were all getting in each other’s way. So if you tried to fix one part, something went wrong with another.”
Which is were Moura and his team came into play. “In around December 2017, Gustavo and a few select engineers started work on trying to rewrite the whole application – and not just bits of it – from scratch,” Hunter recalls. “In three months, about March 2018, they showed us how an Android app for Snap could be. They showed us how to build the new app.”
The core ethos behind the new app was increased modularity. “We built an underlying structure that was modular in nature. We had to work to isolate features without affecting other features – if you load the camera, then only the camera should be loaded,” Moura elaborates.
And of course, it had to work really fast. “We are looking at making it as fast as possible,” Hunter stresses. “It is about catching snaps with your friend and family. We do not want the customers to feel the app is getting in the way of sharing their experience.”
Helping them in their way is a massive beta testing community. “One million people signed up for our beta testing,” Moura says. “They are our saviors. They try out the app, send us issues and test new features.”
Of course, all this is taking time, which is why neither Moura nor Hunter will be drawn into giving an exact date of public release of the new Snap for Android. After the previous experience, the team at Snap is taking no chances and is trying out every feature in detail. The fact that Android runs on a wide variety of devices of different sizes and configurations, unlike iOS (where one has to deal with fewer device and spec permutations), only makes the task more challenging. Snap has even got a special device lab with dozens of different Android devices to help in testing the app.
“We don’t have a definite date. We are doing a lot of beta testing, letting select customers use it along the way. We are in the process of rolling it out,” says Hunter. Then there is the little matter of Android itself evolving. When work had started on the new Snap, Android Oreo was finding its way onto devices, today it is the turn of Pie and even as we speak, a new version of Android is on the horizon. Moura acknowledges that constantly changing the app for different versions is a challenge but feels that Android itself is getting better and is much more mature than it was two years ago. He insists that the team is not only adapting the new Snap app for different devices and versions of Android but also new product developments like notches and foldable displays,
Jacob Andreou, Vice President, Product, Snap feels that the most important aspect of the new Android app will be its performance on devices that previously could barely run the application. “Our goal is for Android performance to be as good or better than on comparable iOS devices,” he says. “We are finding smart ways to work around issues like camera and memory and making our application far more adaptive. Users who actually had bad Snap experiences on Android in the past, will now have an excellent experience.”
It is a heck of a promise. But one on which Snap seems determined to deliver. Which is also perhaps why the team is taking its time getting the app ready. As we wind up, I ask when the final version of the app will be ready.
Gustavo’s answer sums up the attitude of the new Snap for Android team.
“Final version? Even after it is released to the public, we will keep working on it. There is no final version. It is going to keep improving. It will keep changing.”