EzyCharge App Case Study
Ezycharge Group was founded in Australia by Russell Barwick in August of 2014, when he simply ran out of power on his mobile at one of the races! Russell saw a need for charging stations at events and functions and set about growing the business. Within a short period of five years Russell and his team has built the business and through acquisition of ChargeBar and ChargeSpot made EzyCharge Group into the largest supplier of mobile phone charging kiosks in Australia.
EzyCharge being leaders in innovation had contracted Chinese manufacturers to develop a unique vending machine that gave you the ability to rent a portable powerbank for casual-use.
The vending machine is dubbed as a ‘GrabNGo’ station and is powered by IOT (Internet of things).
The contracted Chinese engineers that manufactured these vending machines had outsourced the development of the mobile app and management system to a third-party development company in China. The agreement between EzyCharge and the Chinese contractors meant that the Chinese development company would only establish the base of the system and then EzyCharge were to find their own developers to continue the development and maintenance of the system.
EzyCharge found it difficult to find reliable and proven technology vendors that had dealt with similar types of transitions before. Especially vendors that were willing to take on the communication challenges and technological challenges a transition like this would hold.
EzyCharge chose to work with us because we have:
- Experience with transitioning publicly used systems
- Experience with working with offshore teams.
- Experience with managing and improving publicly used systems.
- Technological capabilities supporting Java, ReactNative and IOT.
- Frameworks and processes from previous transitions to ensure this transition would be smooth.
As we progressed we found oursevles further refining the transition process because of the limited communication capability displayed by the Chinese Developers and complex range of technology used within the actual system. However, we kept within the realms of completing the transition within two phases.
Phase 1: Discovery Phase (3 Weeks)
In this phase, our main objective was to understand each component of the system, understand the code (comments were in chinese and some missing), understand linkages of the system, handover credentials and system access. While doing this, we also started creating the ‘Developers Handbook’ which ensured we had documented our understanding of the system and has a focal point for reference.
In the first week we conducted pre-scheduled conference calls for a walk through of the entire system with the Chinese developers and Chinese contractors. This is where discovered all the features within the system, all the components involved, redundant modules, known issues and key linkages.
In the second week we created a copy of the entire system with the intention to ‘play’ and get a proper feel of all the components within it. This gave us the opportunity to explore the features at a deeper level and dive into the code. From this insight, we were able to identify multiple grey areas, concerns and genuine questions that the Chinese team needed to address.
In the final week we ensured that all grey areas, concerns and questions we had were addressed by the Chinese team. In addition to this we compiled all our notes and crafted the developers handbook.
The developers handbook included:
- Internal Technical Components (Software, Hardware, Frameworks and Server Technology)
- Limitations within all components of the EzyCharge Project.
- Server and system architecture diagram
- Flows of all features and components involved:
- Code Snippets
- Flow Diagrams
- Web Services & Socket Services
- Third-party dependencies (External Components)
- Code Snippets
- Flow Diagrams
- Web Services & Socket Services
- Based on current or planned continuous integration setup, a deployment processes mapped out for each component.
- Current error handling systems and planned implementation of error handling systems along with procedures.
Phase 2: In-Development Transition phase (3 Weeks)
We utilised the next 3 weeks to start developing feature requests and issues on the GrabnGo system with the help of the Chinese team. We followed weekly sprints and had successfully performed branding changes, text changes and minor library changes.
Upon completion of 3 weeks, we were able to work independently without the help of the Chinese team and displayed this by not requesting assistance for the remaining 10 days of this phase.
Develop for success
Before we went live to the public, we urged EzyCharge Group to perform our ‘Develop for success” service to ensure the system is built for growth and that we’re well equiped to respond to issues as opposed to frantically reacting.
We put major emphasis on doing this because the system was inherited from previous developers and during our discovery phase we had found a lot of broken linkages and redundant modules. For scenarios like this we always do a ‘Bug Burn’ which is several QA cycles performing gray box testing, where we test the system, fix issues, test the system, fix issues, test the system, fix issues, test the system… until we’ve reached suffice confidence in the stability of the system.
We spent the next 2 weeks:
- Performing bug burns.
- Implementing error recognition systems for all exceptions of every component. (Ensure we see errors before users do and also help us debug issues that arise)
- Integrating analytics systems for for every component of the system. (Ensure we have data to support issues that occur and help with server management & planning).
- Implementing session tracking for every component of the system. (This helps incredibly with the debugging as we’re able to see how certain issues happen or make the system crash).
- Implementing notification systems for downtime in all components of the system. (Ensures we know the system is down before anyone else does)
- Determining contingency plans for error scenarios, downtime scenarios and user-inability scenarios. (Ensures that all stakeholders understand how to respond in these scenarios).
- Ensuring that software improvement plans are in place. (Ensures that the system becomes stable, mature and improves).
- Developing basic automated testing systems and also plan the development of further automated testing. (Helps with speeding up the development cycle, helps with deploying hot fixes quickly, and helps increase reliance of future deployments).
In Partnership Support & Continuous Improvement
Immediately after completing the ‘Develop For Success’ phase, EzyCharge and PICWA establish a long-term agreement which gave gave EzyCharge the flexibility to produce improvements, changes, new features and maintain their system without the need of in-house engineers specialising in broad range of technologies that the system is built in. This also meant that they saved on unnecessary overhead costs, management hurdles and had a greater pool talent to work with.
The system is launched as the GrabnGo app and has 3,000 active customers and EzyCharge is growing their customer base with peace of mind knowing they’ve got a development team they can trust and help them grow.