레일스 역량 차트(Rails Competency Chart)라는 것을 보신 적 있나요?
CodeFellows의 브룩 리지오(Brook Riggio)가 만든 이 차트는 현대적인 레일스 개발자가 알아야 할 모든 개념을 한눈에 보여줍니다. 직접 확인해 보세요:

벅차게 느껴지시나요? 마치 수백 개의 촉수를 휘저으며 달려드는 괴물처럼 보입니다.
레일스 학습이 부담스럽게 느껴지는 것도 당연합니다. SQL이나 배포(Deployment)처럼 그 자체로 하나의 커리어 경로가 될 수 있는 분야도 있고, 애플리케이션 아키텍처에는 몇 년을 투자해도 전문가라고 확신하기 어렵습니다.
하지만 이 차트는 정확합니다. 현직 레일스 개발자에게 이 차트를 보여주면 대개 "맞아, 실제로도 딱 저런 느낌이야"라는 답을 듣게 됩니다. 오히려 여기서 빠진 것이 무엇인지 지적하는 경우도 있고요.
그렇다면 이 방대한 목록을 어떻게 다뤄야 할까요? 5년 전부터 공부해 오지 않았다면 어떻게 배워야 할까요?
방대한 주제들, 어떻게 소화해야 할까?
그렇습니다. 현직 레일스 개발자들은 이 개념들 대부분에 대해 폭넓게 알고 있습니다. 하지만 레일스 앱 만들기를 시작하기 위해 이 모든 것을 알 필요는 없습니다. 배포할 준비가 되기 전까지 배포를 공부할 필요도 없고, SQL에서 데이터를 묶어 조회해야 할 때 그때 찾아보면 됩니다.
이 차트가 잘 보여주지 못하는 것(원문 블로그에서는 언급하고 있지만)은 각 영역들이 서로를 강화한다는 점입니다. 예를 들어 유닛 테스트, 통합 테스트, 인수 테스트 등은 비슷한 스킬과 지식을 기반으로 합니다. 테스트 종류별로 차이가 없는 건 아니지만, 유닛 테스트를 여러 개 작성하며 테스트의 기본 원리를 익히고 나면 다른 종류의 테스트는 훨씬 빠르게 습득할 수 있습니다.
배울수록 배우는 속도는 빨라집니다. 객체지향 프로그래밍(OOP)을 알면 함수형 프로그래밍이 훨씬 쉬워지고, 서비스 지향 아키텍처(SOA)는 OOP와 비슷하게 '느껴집니다'. CSS 선택자를 배우면 jQuery 사용도 한결 수월해집니다. 배운 원칙 상당수는 서로 다른 분야에도 그대로 적용됩니다.
그래서, 어디서부터 시작해야 할까?
모든 스킬을 동시에 익히려 들면, 하나씩 마스터하면서 얻을 수 있는 학습 가속 효과를 누릴 수 없습니다. 따라서 한 번에 몇 가지만 골라 집중하고 제대로 익히세요.
스스로에게 이 질문을 던져보세요:
"내가 지금 직면한 문제를 해결하기 위해 무엇을 알아야 하는가?"
그 답을 바탕으로 먼저 익혀야 할 역량을 좁혀 나가세요. 해당 역량을 익힌 뒤에는 그 주변의 스킬들을 살펴보고, 방금 배운 내용을 활용해 비슷한 주제를 더 빠르게 흡수할 수 있습니다. 예를 들어 커맨드 라인에 익숙해졌다면 패키지 관리나 파일 권한 같은 분야로 자연스럽게 확장할 수 있습니다.
필요할 때마다 스킬을 쌓다 보면 동기부여도 함께 따라옵니다. 나에게 진짜 중요한 일에 시간을 쓰게 되기 때문입니다.
예를 들어 멀티테넌시(multitenancy)를 '개발자니까 알아야겠지' 하는 막연한 생각으로 배운다면 첫 번째 블로그 포스트를 읽다가 잠들어버릴 겁니다. 반면 내 앱이 돌아가려면 그것 말고 방법이 없어서 배운다면, 찾을 수 있는 모든 튜토리얼과 레퍼런스에 매달리게 되겠죠.
수백 가지 스킬이 나열되어 있고 그걸 전부 배워야 한다고 생각하면 무력감에 사로잡히기 쉽습니다. 특히 초반 몇 가지 역량을 익히는 데만 몇 주, 몇 달이 걸린다면 더욱 그렇습니다. "나는 평생 현직 레일스 개발자가 못 되는 게 아닌가"라는 생각이 들 수 있죠.
하지만 차트가 틀린 건 아닙니다. 레일스 개발자가 되면 결국 그중 대부분을 깊이 있게 알게 됩니다. 다만 우리 모두 처음부터 거기서 출발했던 건 아닙니다.
그러니 일단 어딘가에서 시작하세요. 우선순위를 정하고, 내 앱을 완성으로 이끌 경로를 따라 나아가세요. 빈틈을 메우며 분야를 넓혀가고, 시간이 갈수록 배움의 속도가 붙는다는 사실을 기억하세요.