Executive summary

This use case shows how CoderBunker helped our customer to increase conversion rate of leads, speed up the release process and avoid several business risks related to poor network environment and human mistakes.

Delivered solution was a creative innovation to mitigate poor connection by using p2p synchronization and in-memory search engine.

Better sales brochures application his sales team provides the right content to the customer in fewer clicks.

Automated Unit and UI testing and static analysis tools helped to reduce issue related to engineers mistakes.

Finally by initiating migration collaboratively on the new stack we helped our customer leverage skills of existing team and reduce dependency on outside contractors.

Our Customer

EIC is an international education company based in Shanghai whose business is to help Chinese students apply into overseas universities. It is sales-driven company which is extensively uses information technologies to increase successful lead conversion. The work of is a cornerstone for this company and the ability to reliably use their mobile app is crucial to get their clients to convert from lead to opportunities.

Problem

Business of our client reached a tipping point when growth of the technical team and amount of projects exceeds the ability of leadership team to drive everything to the goal with good level of performance and quality.

The existing application suffers from a lack of interest of counselors as they prefer to continue work with printed sales materials. We discovered several reasons behind this:
  •     missing file caused by unstable network; some materials are just not synchronized.
  •     another cause is the long and painful process to search for documents which takes time when meeting with customers
Another problematic is updates on the document model on the server and client side. Due existing architectural decision each change in the model on the server side requires update of mobile application.

Another goal from the engineering lead was to make developers more productive and release process more smooth.
Possible options

Our team considered Contentful as a solution which promised synchronization out of the box. It’s true that Contentful provides some synchronization functionalities on mobile devices, but it delegates to the client managing situations such as unreliable network. This leaves our major issue unresolved.

Another option was to use exponential backoff algorithm which runs a series of of web requests to the server with an increasing time frame between each request. That solution might help to decrease amount of cases of missing pdf files, but not eliminate them all.

Another approach was to use a p2p solution as they are better adapted to deliver files even in unreliable network conditions. We found on the market several options: syncthing, hive2hive, Resilio and FreedomJS. After the pilot we found Resilio as a best fit to our needs and decided to go further with it.

To address issues with the necessity to update the app each time when the document model has been changed, our team separated the tight coupling between app model and interface.

We consider the option to apply React-Native as a Proof-of-Concept for this project as it might be beneficial for our customer to be able to use the Javascript skillset from the rest of the team. Also this would let us innovate more in the user experience as a major pain point of sales people to work with our application.

Implementation challenges

We started our work with improving the management process. The team uses private Github repositories for source code, issues and documentation management. However it had several issues which we addressed to increase efficiency of the work.

Firstly, via automated tools, we moved all issues and wiki from multiple sources to the existing repo which makes issues management easier and better integrated with the development.

Secondly, we applied the policy where each commit has a prefix with an issue number which helps Github automatically link each commit to the issue description and helps Continuous Integration (CI) to provide correct reference in failure messages.

Thirdly, we added to Continuous Integration a static analysis check which helps the team address issues in the code at an early stage.

In China, the Internet is unreliable even within the country. Internet connections in our different satellite offices are not reliable sometimes because of the state-owned ISP (China Telecom) and sometimes because of office-specific network issues. That’s why even classic client server requests can be the issue.


Among several alternatives our team ended up with p2p solution as the most fault tolerance solution among known. It worked well in one of education center which had experienced similar issue.

Another challenge was necessity to handle overhead with each new update of document model / business use case - with current implementation code one the client side should be modified to mimic new folder structure.


The found solution for this is separate actual data model and business use cases by creating list of tags that represent valuable for business use cases where each tag point out on the list of relevant documents. The dependency between this tags and relevant files can be defined by config file, but we utilize previous code where dependency defined by file hierarchy. Files and folders are synchronised with p2p solution and algorithm goes through file tree where each folder is a tag and inner folders and files are relevant files.

Keeping in mind the in-house core team skills are web frontend/backend and lack of Android expertise on the market we made a decision to move all code to react-native to better utilize team skills without hiring external consultants in future. The work on search engine and new screen was delivered in Java (completely) for pilot and react native (partly) for long-term development. The idea was to move logic to jar which we replace when react-native module in future.

Finally with runtime generated index on files and folders app UX was redesigned from classical file browser to single input field which is simply search engine with one input keyword providing the all relevant documents and with two keywords - intersection of all relevant docs belong to that keywords. By selecting documents sales person now able to prepare personalized proposal to each customer before the meeting.

Benefits


At the end of our work we delivered mobile application with new functionality and establish a new process to work on issues.

Mobile clients got 0% fault rate of not synchronised data which gives sales people confidence their sales materials will be always available and up to date during their talks with customers.

User experience of document search was reconsidered to give necessary materials quicker in one click. That’s made application attractive to sales people as they were able to find any document in one click or prepared personal story with a client before the meeting.

With clever architecture decision new mobile application separate document model and business use cases. That lets business update and change document model without updating mobile application. Sales people will constantly get relevant update as soons as they reach WiFi spot.

Best practices as unit testing, continuous integration with static analysis tools and proper issues management helped to increase traceability and general stability of release process.

Prepared for our company blog