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 a YCombinator alumni.
The client came to us with a ready-made product - a platform for data science experts who solve real-world problems. 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 that will suit better quality code. We had to implement multiple amendments, e.g., related to cross-site scripting - a 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 three people, as it is not difficult to guess, refactoring had a lower priority than implementing new functions and that is why the client came to us.
After reviewing the code, we established an operating plan. We chose the classic agile sprint method in cycles of two weeks and Ruby on Rails for the technology.
We quickly found that there was a lot of dead code in the repository that 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 made. As part of the improvements, we 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. We strive to deliver high-quality software that's easy to maintain and modify.
Ruby on Rails developer
During work, new challenges were constantly appearing, e.g., memory usage on the server, so we had to optimize it on the go. We also migrated to a webpack to manage JS more easily.
And we improved data synchronization so that multiple users can work on one challenge in real time.
We 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 organizers of the challenges can write directly to their participants, while before they had to ask AICrowd if they could send them an email address of a participant.
The refactoring 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 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.