Native mobile app development for client management | Case Study

Native mobile app development

Android and iOS apps for clientmanagement


Native mobile app development

Android and iOS apps for client management


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.

Mobile app development
Industry

SaaS
Location

Australia
Time frame

2 years

Project Scope

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.

Technology stack

Android: Kotlin, Java, RxJava, Android Studio, LiveData, Data Binding
iOS: Swift, Objective-С, Reactive cocoa
Database: Realm
Testing: Unit tests, XCUITest, Espresso

Android app development
iOS app development
Test-driven mobile development

Background

Service businesses have all been through it: multiple clients, schedules, massive team workload, invoicing, reports, and more. Organizing effective client management isn’t always the easiest task. A handy cloud-based platform that organizes all aspects of this work, therefore, can be of great help.

The Australia-based company, Accelo was started in 2009. Since then, the company helps businesses to:

Systemize the sales and quoting process
Plan, manage, track, and deliver client projects
Organize the work of the customer support team
Make business development forecasts
Automate billing and provide accurate invoicing
Receive helpful insights with extensive reporting

Accelo was not a mobile-first platform, and at the start, customers only needed a web application to improve business performance and profitability. Yet, as approaches to client management started to evolve, the company noticed the customers' need to have all the information when staying outside the office.
Accelo was not a mobile-first platform, and at the start, customers only needed a web application to improve business performance and profitability. Yet, as approaches to client management started to evolve, the company noticed the customers' need to have all the information when staying outside the office.
Systemize the sales and quoting process
Plan, manage, track, and deliver client projects
Organize the work of the customer support team
Make business development forecasts
Automate billing and provide accurate invoicing
Receive helpful insights with extensive reporting
Accelo was not a mobile-first platform, and at the start, customers only needed a web application to improve business performance and profitability. Yet, as approaches to client management started to evolve, the company noticed the customers' need to have all the information when staying outside the office.

Business & Tech Challenges

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.

01
Outdated programming languages used

The existing mobile projects were created based on Objective-C (iOS app) and Java (Android app). The tech stack required modernization while the apps had to remain fully operational.
02
Support two native apps simultaneously

As the product continued to develop, the iOS and Android versions had to be kept up-to-date with the web version. For separate native applications, the workload for the mobile team doubled.
03
Adopting Test-Driven Development

Focused on code quality, the Accelo team decided to introduce TDD to their mobile projects. This required changing the traditional approach and adopting a conceptually new methodology.
04
No flexibility for mobile team scaling

The teams evaluated the benefits and agreed to create new functionality using Swift and Kotlin exclusively and iteratively migrate existing functionality to these languages as well.
We needed the flexibility to scale resources as the need to support new features on mobile ebbed and flowed with our product feature timeline. We also had a need to continue to migrate from Java and Objective-C on Android and iOS.

Wise Engineering impressed us during the selection process by quickly building a prototype feature, and with the right people, making it easy to select them for our needs.
Casey Giles, Mobile Team Lead

Wise engineers onboardthe mobile team

Right from the start, the companies agreed that this would be a long-term collaboration contract. Accelo team looked for experts to empower their existing mobile app development team which consisted of 3 mobile developers, a mobile lead, and a QA engineer at that time. Initially, two Android developers and one iOS developer joined the Australian team from the Wise side. Also, a local dedicated account manager worked with the Wise team and provided systematic performance reviews to ensure the professional growth of everyone on the team.

Before this project, the Wise mobile team worked on several short-term initiatives and was happy to join a native mobile app development team for a significantly longer period. This allowed them to dive deeply into the product and industry specifics, suggest improvements, and contribute to the overall product development.
Before this project, the Wise mobile team worked on several short-term initiatives and was happy to join a native mobile app development team for a significantly longer period. This allowed them to dive deeply into the product and industry specifics, suggest improvements, and contribute to the overall product development.
We have had an outstaffing style arrangement where the staff is essentially no different from internal developers. With a local HR manager from Wise, we’ve always had a good handle on how our team is progressing, even though our time zones do not overlap for much of our business day. And the team was active in presenting the latest technologies and best practice thoughts to peers in our regular meet-ups.
Casey Giles, Mobile Team Lead

Time-difference challenge


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 & other initiatives


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.

The Wise team and their HR representative have also been proactive in helping us to establish the best practice for communication across our differing time zones, minimizing the productivity impact of that time difference, and keeping the team focused on not only the tasks at hand but also on the upcoming tasks.
Casey Giles, Mobile Team Lead

Introducing Test-Driven Development

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.

The results were all worth the efforts:

Increased code quality for both iOS and Android apps
Reduced debugging time and eliminated code duplications
90% of time spent on adding new functionality
A better understanding of tech task acceptance criteria
Faster and more effective onboarding for new engineers
Test driven development

Native mobile app development

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.

For over two years, the Wise team has grown to know our product and our applications and processes like they were part of our local mobile team, and we’ve been able to scale to meet our needs on two native app platforms. The Wise team has been key to enabling us to develop new features on Kotlin and Swift while continuing to migrate existing features from the legacy syntax.
Casey Giles, Mobile Team Lead

Objective-C to Swift

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.

Java to Kotlin

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.

Extensive feature set

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.

/src/case_studies/accelo/technologies/kotlin.png
/src/case_studies/accelo/technologies/java.png
/src/case_studies/accelo/technologies/rxjava.png
/src/case_studies/accelo/technologies/android-studio.png
/src/case_studies/accelo/technologies/live-data.png
/src/case_studies/accelo/technologies/swift.png
/src/case_studies/accelo/technologies/objective-c.png
/src/case_studies/accelo/technologies/reactive-cocoa.png
/src/case_studies/accelo/technologies/realmio.png
/src/case_studies/accelo/technologies/junit5.png
/src/case_studies/accelo/technologies/xctest.png
/src/case_studies/accelo/technologies/espresso.png
I would not hesitate to recommend the Wise team for native mobile development projects. The way they foster their talent while still maintaining a fully outstaffed rather than outsourced approach means that we have been able to scale our agile team of professionals while still feeling supported with local HR representation and individual professional growth.
Casey Giles, Mobile Team Lead

results

  • The tech stack modernization for both mobile projects with migrations from Objective-C to Swift and from Java to Kotlin.
  • The number of development errors dropped significantly, and the quality of the first pass development increased.
  • The introduction of the test-driven development approach helped the team create reliable production-ready code.
  • With an extended mobile team, Accelo managed to simultaneously support two native apps and release updates iteratively.

Have a complex tech task in mind?

Contact us