Project scope and technology
Ruby on Rails development
1 Ruby on Rails developer
10 months (ongoing)
AICrowd is a marketplace that helps companies find machine learning experts for their projects. It is one of the YCombinator Alumni.
The client came to us with a ready-made product - a platform for data science experts who solve real-world problems in challenges. The platform was already live, but the code had to be tidied up - there was a lot of refactoring and code reviewing to be done.
Our task was to remove technical bugs and create architecture which will suit more the quality of the code. We had to implement multiple amendments e.g. related to cross-site scripting - classic JS attack technique.
There was a lot of work, because for a long time the project was developed by only one person: from the conceptual phase to implementation. And although the team grew to 3 people, as it is not difficult to guess, refactoring had a lower priority than implementing new functionalities and that is why the client came to us.
After reviewing the code, we have established an operating plan. We chose the classic agile sprint method in cycles of 2 weeks and technology: Ruby on Rails.
We quickly found that there was a lot of dead code in the repository, which was vulnerable. We removed these fragments and implemented safe solutions so the project was better for review.
The platform has been in operation for several years now, so most of the decisions on architecture and technology have long since been taken. As part of the improvements, we have changed the JS Framework to StimulusJS, with Sidekiq and Redis responsible for background jobs. We used Heroku for hosting.
The biggest challenge was a technical debt of application and we did our best to reduce it and deliver new high deliver high-quality software that's easy to maintain and modify. We strive to deliver high-quality software that's easy to maintain and modify.
During work, new challenges were constantly appearing e.g. memory usage on the server so we had to optimize it on the go. We have also migrated to a webpack to manage JS more easily.
We have also improved data synchronisation so that multiple users can work on one challenge in real time.
We have managed to significantly improve the quality of the code in the repository and eliminate most bugs. After changes and introduction of the architecture, the platform is more stable and uses less resources. We added a communication module, thanks to which organisers of the challenges can write directly to their participants and before they had to ask AICrowd if they can send them an email address of a participant.
The refactoring has improved the structure of the existing code, got rid of dead parts and will allow for faster and more effective implementation of changes in the future.
We have also improved the code review process using static code analysis. Comments are now automatically added to the repository.
Our cooperation with the customer is not over and we are still working on product development. We have shown that we are able to effectively introduce improvements, thanks to which we have gained a project that has turned into long-term cooperation.