Rail Europe (Software Engineer freelance)

Presentation

Rail Europe is a leading distributor of European rail products, serving travelers from around the globe. They have two main products. One oriented on B2C and the other oriented on B2B. Both using a base in ruby for their communication with the national train providers, with every real logic being delegated to sidekiq.

I joined Rail Europe as a Ruby back-end engineer to assist with the integration of those train providers and enhance the overall functionality of the back-end product, which involved developing on the internal Ruby gem that abstract each provider's API specifications and contribute to enhancements of both the end customer functionalities and admin features of the main website. Despite being a freelancer, I seamlessly integrated into the team, actively participating in reviews, following the board and priorities, and engaging in various subprojects. I also invested a significant portion of my the mission on a project focused on integrating a new payment provider.

The team was diverse, with members spread across different time zones and using english as a working language. This setup posed challenges in both technical work and communication because many actors could affect or be affected by a feature. Keeping a focus on engineering and council was crucial, especially since the company had recently undergone significant organizational changes, and many team members were new to the project.

At first my work was focused on communications with external API. Improving wrappers or debugging issues with them. I also worked on subject quite close to product to improve the offers (the number of differents train journeys that could be offered). This included updating configuration or working with the train stations inventory with specialist. At some point I was assigned to a bigger project aiming at switching the payment provider of the B2C website (from Braintree to Checkout). This got me deep into the payment related problematics as well as the fraud topic. Due to the knowledge I won from this I was then working mostly on payments issues (improvement, additions of many metrics, data analysis).

Personal impression

This mission stood out from others because I was working on a product that was already completed. The approach was different, focusing more on maintaining and fine-tuning the existing features rather than creating entirely new ones. However, there was a higher turnover rate in the company, with many of the original developers no longer present. As a result, I spent a significant amount of time reverse-engineering the product to understand its complexities better. Additionally, I gained valuable experience working with external APIs and delved into various concepts related to payment, including understanding the product terminology and processes, as well as handling technical aspects such as working with webhooks, manipulating foreign objects, locking ressources and assuring unicity.

It was a great experience. I wanted to work in a fully english team for a long time. I learned a lot regarding train travels and payment related issues. However, like in many companies, we faced the challenge of technical debt. The difference here was the sheer size of the company and the rigid processes, which made it difficult for me to initiate any meaningful changes on this part.

Skills