During the last six months, part of our engineering team has been collaborating with Chicfy. It was an awesome experience and today we'd like to tell you the story of a successful collaboration with such an awesome team.
Everything started months ago when the Vernon team asked us for a collaboration with a promising startup named Chicfy. The goal was clear, they wanted us to improve the quality of their mobile and backend applications and create the new server-side infrastructure. Sergio Arroyo, an independent contractor, was going to help us developing server-side code. They had a crystal clear roadmap and goals to achieve. During the next six months, our tasks as mobile and backend engineers were to help the current team to organize, design, and implement the features needed to reach the company goals.
The first thing we did was to measure the quality of the projects reviewing the state of the art. After this stage, we were ready to design a technical roadmap we combined with the product roadmap. Combining both road maps we could improve the quality of the app from the technical point of view while adding some features requested by the client. Improving the quality perceived by the final user and adding new features was the way to go. Here you have a list of the most relevant tasks performed during this six months period:
- Evaluate the state of the art. We used this checklist, which was really helpful.
- Every sprint, we spent some time to find the top 5 crashes on Fabric and fix them.
- Keep part of the time during every sprint to fix the critical bugs found in the app.
- Update the logger implementation to report non-fatal errors to Fabric.
- Add continuous integration support. As we've been fighting against different CI tools this time we decided to use Bitrise.
- Implement the testing infrastructure needed to be able to easily write UI, integration and unit tests. Some interesting resources can be found here:
- Start covering some of the most relevant features for our product such as the upload process product and the login/register process. Adding coverage to the app we were able to modify the code without breaking already implemented the code.
- Add a performance monitoring tool to identify some of the performance issues. In this case, we used FlowUp.
- Schedule every release in a calendar to be able to publish new features often and clarify when new versions were going to be publicly available.
- Improve the main application screen performance by using a differential update technique in the recycler view widgets being used. In this case, we used a library named renderers to easily implement this feature and generate easier to read the code.
- Review and redesign the application architecture to be able to write testable code and hide implementation details.
- Review the multi-threading policy used in the project to use a more aggressive one based on the device capabilities.
- Improve the usage of the libraries to handle images downloads and caching efficiently.
- Add a new stats tracker implementation we can easily use and adapt the implementation to the Business Intelligence team. A bunch of new events was added to the tracking system to be able to identify user behaviors and measure the impact of our changes from the product usage point of view.
- Migrate part of the backend infrastructure to docker and design the systems infrastructure using terraform.
At the same time, some product tasks were developed based on the product team requirements. Here you have a list of the most relevant tasks performed during this six months period:
- Implement a new feature named "holidays mode" to let the user specify when it's going to be out for holidays.
- Add a new feature to request feedback to the user.
- Add a new screen to the main application tab bar named "delicioso" the user can use to review the products and parties they liked or commented.
- Implement a new purchase system to facilitate how products are bought and improve the conversion rate when talking about finalized transactions.
- Add a new vertical to the product to be able to buy and sell male clothes in the app. This task was mostly developed by the current team. During this feature development, the Karumi team was focused on some platform specific tasks while supporting the local team.
One of the keys to success in this project was our trainings. During the first three months we performed different training focused on different topics:
- Object oriented programming and other software engineering paradigms.
- Testable code.
- Architecture and software design patterns.
- Unit testing.
- Integration testing.
- UI testing.
Saving some time for training and exploring new development horizons while developing the product and improving the quality of the software was hard but worth it. The iOS/Android apps and the backend code improved in many different terms. We added new key features to the product and collaborated with the team to improve the company culture and engineering process. We'd like to thank the Chicfy Team for such an interesting collaboration during this project! Working with you was awesome!