Lessons from 10 Years in Mobile Development
Sergey Afanasiev is the Head of Mobile at Devexperts. He started working at the company as a mobile developer more than 10 years ago when the first mobile projects were just emerging. He has experienced all of the trends within the field – from J2ME, Blackberry to smartwatches, notched screens, and desktop-grade processors. In this interview he will explain the specifics of financial mobile software developments and how we, at Devexperts, handle them.
What motivates you to do your job?
SA: Challenges of all kinds. Specifically, challenges driven by the dynamics of the mobile field. Unlike, e.g., a purely backend development, which is very grown up and stable as of now, mobile keeps evolving month after month.
What are some interesting aspects of your current position?
SA: I have the opportunity to be in the loop on a number of mobile projects, each of them having its own specifics – which makes me be able to see a bigger picture of the industry.
The software we create within the Mobile universe ranges from solutions focused on trading complex derivatives, to crypto trading, to non-trading apps. We work with huge codebases and small experimental codebases with client-side code, backend-side code, integration code, in various languages, and environments.
What are the biggest technological challenges that you have faced in your job?
SA: To name one specifically, I can recall that one of our big clients managed to significantly grow their user base within a short period of time. Tens of thousands of users were simultaneously hitting our backend at the start of the trading day – not by a single request-response sequence, but streaming the trading data.
How did you manage them?
SA: We needed to move quickly and use every possibility to give the backend some fresh air. So, we went wide and deep at the same time: collecting as much data as possible on each level to find room for improvement. Obviously, there was no silver bullet, but a number of small changes here and there drastically improved the overall performance of the system. At the tip of the iceberg, we questioned whether the clients at each point were receiving just enough data or if there was something more so we could avoid any excess calculation on the server-side. Going deeper, we’ve profiled the backend behavior to identify the most expensive or inefficient operations. One example was that too many objects were being produced every second, which was causing GC to use more resources than expected. This was solved by a counter-intuitive move of making the code “less object-oriented” – starting to re-use the objects instead of creating new immutable ones. All of the above, as well as some tweaks to the way the components, interacted with each other lead to the ability to handle the increased load.
What would you recommend to developers that are developing apps for the Fintech industry?
SA: While it is important to master your main technology, whether it be iOS development, Android development or anything else, being an expert in a single technology is not enough in order to leverage it to the maximum level. In order to achieve this, you need to dig deep to the roots of Computer Science to understand how it works and why it is created to work this way.
In addition, any given technology might not necessarily be here to stay – so it might become more important to have a good foundation rather than a fancy attic.
What is so special about mobile software apps for traders & brokers?
Trading software deals with a huge amount of LIVE data, which is highly sensitive to the latency – providing a quote that is outdated by a number of seconds is almost useless. Moreover, mobile trading terminals are no longer complementary to the full-fledged solutions: instead, they are expected to provide desktop-grade features within a smaller display.
Multiplied by the first point, this means a lot of complex logic, dealing with not only user input, but a dynamic data feed.
And then there is a good UX, responsiveness, and stability – crucial factors for any mobile app.
How is Devexperts is dealing with these challenges?
In a few ways, Devexperts did not take a very standard approach:
- we were able to re-use the logic written once for both native Android and iOS apps
- we developed a binary data-aware protocol that helps the apps handle a dynamic data feed, even within unstable network conditions typical in mobile.