IMPORTANT: The consultant will need to work in our office (Sydney CBD) at least for the first 3 days
== OVERVIEW ==
We provide an industry specific, cloud based CRM application. We introduced a new Mobile application 18 months ago. The application provides classic workflows (contact management, etc) and some others specific to our industry. We have had an increasing number of complaints from users regarding the speed and performance of the mobile application. A number of iterations have already been released in the past few months to improve speed on both sides: the application itself, and the backend serving the application via API requests. We are looking for a consultant to assist us in the identification and resolution of performance issues. This audit needs to be very hands on, including code introspection and end-to-end profiling to target the root causes and draft the right remediation actions.
== GOALS == 1) Identify bottlenecks, misuse, bad practices or design/architecture issues that constitute the root cause of the performance issues 2) Identify opportunities to improve performance or perception of performance: caching, pre-loading, queuing, storage management, search ... 3) Establish an action plan with any identified remediation action and and guidance for the Mobile app team to address the issues
== SPECIFICATIONS ==
The mobile application is build in React Native (0.57) using redux-offline and realm, present on the App and Play store. It features an offline mode and a number of screens. The audit can be restricted to a limited set of screens, as the performance issues are identified globally but on one or two features specifically.
IMPORTANT: The consultant must have a strong background on this stack, and know the best practices when it comes to manipulate the redux state, views and manage data using this stack. A team of 4 developers is currently actively working overseas on the Mobile application
== MILESTONES == === Identification of the performance issues === Working closely with our development and product team, the initial step will consist of a quick assessment of the symptoms, understand why the mobile app is perceived as slow by our clients and get an non-opinionated diagnostic: what type of client is complaining, in what context, on what grounds and legitimity. We will provide the necessary information to consolidate this.
=== End to end profiling === This step exists to obtain an excellent comprehension of the full technical workflow, including storage, caching, fetching data from API ... Then a deep-dive introspection and analysis of the code to profile and identify where time is lost. The problems could be related to initial architecture, a misuse of some components, UX flaws, or handling data. It is important to keep in mind that we do not focus on a specific part of the stack.
=== Guidance and remediation steps === The deliverable of this audit must be a consolidation of the main pain points, the identified root causes and a comprehensive action plan with prioritisation of the corrective actions on both frontend and backend. In the case of an obvious critical issue that is identified early in the audit as the main root cause with a relatively quick win, we expect the consultant to adopt a pragmatic approach and assist directly the developers to address the fixes as soon as possible.
== METHODOLOGY AND TIMING == We estimate that it may take one to two weeks for a consultant to achieve the above milestones. The consultant will need to work at our office (close to Redfern station) at least for the first 3 days to perform initial diagnostic, share findings and engage technical/functional discussions with our development and product team. Interactions with our Mobile App team can be handled via video/audio conf calls, as well as Slack. This audit is a business priority: the consultant can expect us to be reactive to information requests and available when discussions needs to be engaged.