Artur Hebda

Нow To Migrate To Rails From non-Rails

Pivorak Conf 1.0

00:00:02.960 Hi everybody, welcome to Pivorak. Today we are talking with Artur Hebda, a Ruby developer at a company called Railsware. Artur is also a frequent speaker at Ruby conferences, where he discusses code quality, intersection, and product design. Welcome to Pivorak, Artur!
00:00:20.540 In response to a question about the kind of companies Railsware is and how many people work there, Artur discusses that the company is in a transformation period. They started as a software consultancy but focused on delivering what clients needed rather than what they wanted. In addition to software engineering and design services, they also provide product management services to help clients build their products. Now, they are using the knowledge acquired over the years to develop their own products. Artur explains that the team at Railsware consists of T-shaped specialists and generalists, making it difficult to categorize everyone, but emphasizes the importance of T-shaped skills.
00:01:10.930 Artur shares how he chose Railsware. Previously, he was working with Android but had a background in Ruby. He was engaged in recruitment processes with several Android companies but chose Railsware because it was the only place that still offered opportunities in the Ruby world. The recruitment process stood out for him as impressive, particularly the test tasks and the thoroughness of Railsware's approach, which emphasized pairing, product-focused culture, and effective communication. Although Ruby was not his primary focus at the time, Artur expresses no regrets about returning to it, as he has been happy with his decision.
00:02:57.800 When asked about how product development at Railsware differs from other software development companies, Artur explains that it starts with understanding the problem before jumping into coding. They strive to comprehend why a client believes a particular task is worth pursuing, mapping out requirements, and the relevant user problems. This understanding helps avoid technology debt and ensures that they meet actual user needs. Artur also highlights the benefits of pair programming, which accelerates problem-solving and decision-making in the team, while sharing knowledge and reducing dependency on single individuals.
00:05:05.810 Artur discusses Railsware's technology stack, indicating that they gravitate towards Rails when starting new projects but do not limit themselves to it. He mentions an example of a project that initially started in Rails but later migrated certain parts to Golang for efficiency. He acknowledges that while Rails remains a central part of their development process, they adopt new technologies as needed and have learned to integrate modern tools, including Yarn and React, into their front-end stack.
00:06:33.830 When asked about migrating existing projects to Rails, Artur clarifies that it was an engineers' initiative due to a significant rotation of team members. The project served as an onboarding platform, with newcomers adding unique perspectives. He noted friction in their existing processes and recognized the team was often reinventing solutions that were already established in Rails, leading to an unsustainable codebase with increasing technical debt.
00:09:04.930 Artur shared how the team's experiences with Sinatra led them to realize the need for migration due to scalability issues and the challenges of keeping up with security patches. By using Rails, the team expected to leverage existing tools and gems that reduce code complexity and improve the overall quality of the application.
00:09:55.600 Before embarking on the migration, Artur explained the stack they had been using, which involved Sinatra and Sequel, among other tools. While they had some testing frameworks in place, the lack of strong integrations resulted in various issues, particularly with handling JSON responses and authentication flows. They acknowledged the challenges they faced and understood that migrating meant an overhaul of how their application was structured.
00:13:01.179 Upon migration, they transitioned to Rails 5.1, which allowed them to utilize Active Record for easier database interactions. The team balanced preparations for the migration with the ongoing needs of the project, creating feature branches that would be compatible with Rails. As they began this process, they experienced improvements in handling requests and managing database migrations without introducing disruptive changes.
00:14:53.600 Artur describes their migration planning, highlighting the importance of writing code that would facilitate the move to Rails without stalling the addition of new features. They tackled issues piece by piece while maintaining clarity around potential roadblocks, ensuring they had a structured approach to question and resolve future challenges.
00:17:02.910 Artur discusses the main challenges faced during the migration, particularly with request specifications. Changes to the authentication flow required substantial adjustments, revealing the complexity of the migration as they aimed to maintain end-to-end testing while transitioning to Rails structures. They emphasized the importance of keeping tests relevant to ensure the application's integrity throughout this process.
00:19:40.180 Artur reflects on the timeline of the project, noting that while they had run their Rails stack alongside Sinatra for about six to nine months, the overall migration took approximately a year and a half to complete. As they transitioned features over time, the strategy was to ensure stability and functionality before diving into refactoring efforts.
00:21:58.940 Towards the end, Artur shares the current status of the project's codebase, which is largely cleaned up aside from minor residual tasks such as parameter whitelisting and code optimization. He concludes by emphasizing the value of clear communication, helping clients understand the benefits and risks involved in such technology transitions, fostering a collaborative approach to project evolution.
00:24:44.440 In closing, Artur advises that the process of migrating to Rails can significantly ease workflow and enhance productivity. Reflecting on the migration journey, he highlights the merit of approaching changes with step-by-step strategies and giving space for fresh perspectives from newcomers. He underscores the enduring value of communication and elegantly structured plans in ensuring the successful adoption of new technology.
00:27:06.540 Artur wraps up the discussion, highlighting the success of gradual migration over a sudden overhaul. Every change must be carefully presented to clients to showcase potential benefits while addressing their concerns about risks. This thoughtful approach to technology management helps maintain ongoing business operations without disruption.