
Native mobile app development
Native mobile app development
How Wise engineers, in collaboration with the in-house mobile team, delivered functionality for native Android and iOS apps to help Accelo's clients access the powerful customer management platform on the go.
For more than two years, the Wise mobile team worked closely with the Accelo team on code improvements and delivering new functionality using specific technologies for iOS and Android platforms.
The key results of the collaboration were two native applications that evolved in parallel with the web application version. Besides, the team successfully adopted the Test-Driven Development approach and achieved some automated end-to-end testing.
Android: Kotlin, Java, RxJava, Android Studio, LiveData, Data Binding
iOS: Swift, Objective-С, Reactive cocoa
Database: Realm
Testing: Unit tests, XCUITest, Espresso
Before the Wise Engineering team onboarded the project, the separate apps for Android and iOS already existed and had some basic functionality. Still, to ensure the full lifecycle of client work, including prospecting and payments, some more features were to be added. The main hurdles the Accello team faced were related to insufficient code quality, outdated technologies, and lack of human resources to implement any improvements.
Ukraine is nine hours behind Australian time. Such a significant time difference was one of the key challenges both Ukrainian and Australian teams met. To minimize its impact on the mobile team performance, the Wise engineers started their workday two hours earlier than the other teams in Ukraine. This allowed them to have more overlapping working hours with the Australian team.
Though teams worked mostly asynchronously, daily scrums and weekly demos helped everyone stay on the same tune. Mutual meetings allowed a tech lead on the Accelo side and an account manager on the Wise side to effectively orchestrate teamwork spanning across continents.
Developer-driven time was a great idea by the Accelo team that allowed engineers on the Wise side to be more involved in the product development process and suggest improvements for the mobile applications. For three days every three sprints, engineers could work on the optimizations they considered significant and work more deeply on their ideas on how to improve the value the apps brought to the Accelo end-users.
Besides, at Wise Engineering, there is a popular book club initiative: colleagues come together to read some professional literature, meet once a week to discuss chapters, and decide how to implement the insights from the book. The Ukrainian team suggested the idea to Australian colleagues, and it turned out to be a pleasant and productive experience for sharing knowledge.
Test-Driven Development is an approach to software development that relies on the creation of automated tests before writing any code that is to be tested. TDD helps to turn requirements into very specific test cases and ensures written code is covered by at least one test.
Always focussing on code quality, the Accelo tech team decided to adopt this approach to native mobile app development in collaboration with the Wise team. This was a complex process and required additional workload and high expertise from both the Wise and Accelo engineers. The united mobile team successfully coped with the task, and the results were all worth the effort.
Before the Wise Engineering mobile team joined the Accelo mobile team, they already had two native applications for iOS and Android platforms. When the teams started to collaborate they evaluated the old projects in Objective-C and Java and decided that new functionality will be created using more up-to-date programming languages – Swift and Kotlin, and the tech stack was to be modernized.
Besides, the engineers from the Wise side took an active part in the optimization of the overall mobile development process at Accelo and suggested ideas that helped to deliver faster. For example, each task in the Accelo mobile sprint was split into seven and more subtasks. With a separate review for each pull request, it took too much time to process. So mobile engineers from Wise suggested uniting some small subtasks into one and dividing a task into up to 3 subtasks. With the new approach, both teams could release updates and new functionality quicker without compromising the code quality.
After a thorough evaluation of both programming languages’ specifics, it was decided to switch to a more approachable, full-featured Swift. The decision was made due to its clуan syntax, improved security, and speed advantages. The transition was rather challenging for the iOS development team as Objective-C and Swift are incompatible programming languages and most of the code had to be written from scratch. Nevertheless, the new language allowed developers to write more reliable code, avoid repetitive work, and keep the focus on more high-level tasks.
Converting from Java to Kotlin was less daunting for the Android team, as the two programming languages are compatible and the code is converted more easily. Kotlin was selected by the Android team as it is a statically-typed language that is very easy to read and write. It has a much simpler and shorter code than Java’s code for the same problem. Because the language is more human-readable, it is easier to debug. Compared to Java, Kotlin’s code is more concise and this helped to streamline the programming process significantly.
Both iOS and Android development teams worked iteratively to make mobile apps as robust as the web application and allow Accelo users to perform the following activities when being out of the office.