근본적인 문제: 읽는 것만으로는 부족하다
많은 Ruby 팀이 직면하는 문제점은 다음과 같습니다.
-
“Metaprogramming Ruby”는 필독서이지만 내용이 방대하고 밀도가 높습니다.
-
그룹 독서 세션은 꾸준히 운영하기 어렵습니다.
-
적용되지 않는 지식은 쉽게 잊힙니다.
-
신규 개발자 온보딩은 반복적이며 비용이 많이 들고 확장성이 부족합니다.
SmartHR 팀의 Maeshima와 동료들은 단순한 독서 그룹을 넘어, 다음과 같은 목표를 가진 시스템을 원했습니다.
-
진정한 역량 구축
-
개별 세션을 넘어선 지식의 지속성
-
미래 채용자에게의 혜택
-
Ruby 생태계에 기여
해결책: 문제와 테스트를 통한 학습
팀은 수동적인 읽기 대신 실습 중심의 학습 모델을 설계했습니다.
기술 수준별 구조화
참가자들은 다음과 같이 레벨별로 그룹화되었습니다.
-
초급자: 챕터 요약 및 개념 설명
-
중급 개발자: 설명 및 솔루션 검토
-
고급 개발자: 도전적인 메타프로그래밍 문제 설계
이러한 구조는 경험 수준에 관계없이 모든 사람이 학습할 수 있도록 보장했습니다.
테스트 실패(및 수정)를 통한 학습
각 챕터는 자동화된 테스트로 검증되는 실용적인 연습 문제와 연결되었습니다.
-
문제에는 단일 정답이 없었으며, 개발자들은 다양한 접근 방식을 비교할 수 있었습니다.
-
GitHub Actions를 사용하여 테스트를 통과시키는 것이 공동의 목표가 되었습니다.
-
참가자들은 단순히 API를 암기하는 대신 다음을 이해하도록 강제되었습니다.
- Ruby의 객체 모델
- 핵심 클래스로부터의 상속
method_missing및respond_to?define_method및 싱글톤 메서드- Ruby가 실제로 코드를 실행하는 방식
이는 학습을 이론적 이해에서 ‘몸으로 익히는’ 방식으로 전환시켰습니다.
내부 도구에서 오픈 소스 리소스로
내부 실험으로 시작된 프로젝트는 공개 GitHub 저장소로 발전했습니다.
-
메타프로그래밍 도전 과제의 엄선된 세트가 되었습니다.
-
실제 사용을 통해 점진적으로 개선되었습니다.
-
Pull Request와 커뮤니티 피드백을 통해 발전했습니다.
문제를 공개함으로써 팀은 중요한 것을 달성했습니다. 학습 자료는 다른 사람들에게 노출되었기 때문에 더욱 강력해졌습니다. 외부의 시선은 오타, 엣지 케이스, 그리고 영리한 대안 솔루션을 찾아냈고, 이 모든 것이 연습 문제의 품질을 향상시켰습니다.
ruby.wasm을 통한 브라우저 기반 Ruby 학습
성공에도 불구하고 접근성이라는 한 가지 문제가 남아 있었습니다. 이를 해결하기 위해 프로젝트는 ruby.wasm을 도입하여 개발자들이 다음을 수행할 수 있도록 했습니다.
-
브라우저에서 직접 Ruby 코드 작성
-
즉시 테스트 실행
-
실시간으로 출력 및 실패 확인
-
일본어와 영어 간 전환
로컬 설정이나 Ruby 설치 없이 문제 해결에만 집중할 수 있게 되어 진입 장벽이 크게 낮아지고 전 세계 사용자에게 문이 열렸습니다.
AI의 역할
wasm 기반 플랫폼은 AI 에이전트(특히 Claude Code)의 도움을 받아 부분적으로 구축되었습니다. AI는 다음을 지원했습니다.
-
복잡한 문제를 브라우저 친화적인 단위로 리팩토링
-
테스트 구조 재편성
-
플랫폼을 영어로 번역
그러나 발표는 AI의 한계에 대해 솔직하게 언급합니다.
-
AI는 암묵적인 문제 경계 설정에 어려움을 겪습니다.
-
복잡한 로직에는 인간의 지도가 여전히 필수적입니다.
-
AI는 작업을 가속화하지만, 전문성을 대체하지는 않습니다.