facebookPixel
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.
Industry
SaaS
Location
Australia
Time frame
2 years

Tech stack

Android

Kotlin, Java, RxJava, Android Studio, LiveData, Data Binding

iOS

Swift, Objective-С, Reactive cocoa

Database

Realm

Testing

Unit tests, XCUITest, Espresso

Our expertise

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.

Android app development

iOS app development

Test-driven 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.

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
Casey GilesMobile Team Lead at Accelo

Wise engineers onboard the 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.

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.

Time-difference challenge

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.

Developer-driven time & other initiatives

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

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
Casey GilesMobile Team Lead at Accelo

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.

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 clean 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.

  • Access the list of all activities logged within the Accelo platform
  • Keep track of the sales process and change the contact status
  • Read, reply, and close requests from clients and new leads
  • Add activities (notes, emails, meetings, call schedules)
  • View all ongoing timers and create new ones
  • Track and upload expenses and their receipts
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
Casey GilesMobile Team Lead at Accelo

Results

Tech aspect

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.

Business part

Working together on a long-term basis, the two teams were collaborating as one integrated and highly motivated product development team.
With the help of an outsourcing mobile app development company, the Accelo team could achieve flexibility with the mobile development team and scale when necessary.
The platform’s accessibility on both iOS and Android devices offered Accelo's clients mobility and brought additional product value.
Working with an external team with an ownership mindset, the Accelo team could rely on the initiative, new suggestions, and optimization ideas from Ukrainian colleagues.
Get in Touch

Have a complex tech task
in mind?

Contact us