Hostnfly (Software Engineer freelance)

Presentation

For my first freelance mission I worked with a french parisian startup called Hostnfly (online service for flat renting) that needed help to improve their synchronisation system with Airbnb and other externals platform. The codebase had accumulated some legacy code and a big part of the mission included a global refactoring with an engineering approach to build something new and durable.

First part of the mission was to rewrite entirely the Airbnb wrapper (declared as a lib inside the main project) used to push and pull things on Airbnb using their Developer API. After some analysis and research on best practises I rewrited it during the first 2-3 weeks using a client and resources approach and I also managed to unlock a testing ground from Airbnb that would become crucial to QA the refactoring that came next.

Second part of the project was to design a system to encapsulate the synchronisations between Hostfly servers and external platforms, with a better error management (rate-limit, critical errors or unprocessable requests) and an easy monitoring. After a bit of research and some brainstorming, we created a system using a dedicated pgSQL table and Sidekiq middleware systems.

Last long step was to rewrite every singular synchronisation into our new asynchronous system while improving file management, code organisation and adding a lot of tests. It was also a time to exchange with other teams using the product to provide or improves features. At the same time since I built some knowledge on the codebase I was able to help on bugs or small improvements not necessary linked with original mission. We also designed a visual representation of the synchronisation process on the website for better monitoring and added some documentations.

Personal impression

This first freelance mission reinforced my will to stay a freelance. I was given a lot of liberties and the "project approach" allowed me to do something clean using my engineering background without rushing for results but instead aiming for durability. I was in a good team and I was able to work with a lot of people from different backgrounds. I was also given a lot of tools to help me with the project and I was able to use them well.

It was also interesting to work this specifically on using external APIs as it's a critical problematics for a lot of business. I hope to be able to use this knowledge and the one I got on sidekiq in a future mission.

Skills