UBC Theses and Dissertations

UBC Theses Logo

UBC Theses and Dissertations

From understanding to repair : an empirical and agentic investigation of Ruby developer challenges Akbarpour, Nikta

Abstract

This thesis investigates the challenges faced by Ruby developers and proposes an automated, language-specific solution to one of their most critical problems which is program repair. The research is conducted in two phases. In Phase One (Unveiling Ruby), we examine the landscape of Ruby development by analyzing 498,719 Ruby-related questions from Stack Overflow and validating the findings through a survey of 154 developers. Using BERTopic for topic modeling, GPT-4o for taxonomy construction, and human validation, we identify a three-level hierarchy of 35 topics, 18 middle categories, and six main categories of Ruby challenges. The results reveal that web application development, application quality and security, and data management are the most discussed areas, while debugging and repair are perceived as the most time-consuming tasks. The study also exposes discrepancies between objective platform metrics and developers’ perceived difficulty, emphasizing the need for better evaluation methods and more supportive tools for Ruby practitioners. In Phase Two (RAMP: Ruby Automated Multi-Agent Program Repair), we introduce a lightweight, feedback-driven framework for Automated Program Repair that uses large language models in a multi-agent setup. RAMP distributes the repair process among specialized agents: Programmer, Test Designer, Test Executor, and Feedback Integrator, who collaborate iteratively through test-guided reflection. Evaluated on the Ruby subset of the XCodeEval benchmark, RAMP achieves a pass@1 accuracy of 67.0%, outperforming baselines such as LANTERN, ChatRepair, Self-Planning, and Self-Collaboration, while remaining resource-efficient. Together, these two phases bridge empirical understanding and intelligent automation. The findings provide the first comprehensive characterization of Ruby developer challenges and demonstrate the feasibility of lightweight, feedback-driven repair systems for underexplored languages. This work contributes to both empirical software engineering and LLM-based program repair by emphasizing data-driven, and resource-aware approaches to improving developer productivity.

Item Citations and Data

Rights

Attribution-NonCommercial-NoDerivatives 4.0 International