Rust 비전 문서 프로젝트를 진행하며 배운 점, 한계, 그리고 앞으로의 사용자 연구 방향과 전담 팀 제안에 대해 정리합니다.
올해 초부터, 우리 몇 명은 다소 미친 듯한 도전에 나섰습니다. 바로 "Rust 비전 문서(Rust vision doc)"를 쓰자는 것이었습니다. 원래의 프로젝트 목표 제안에서 이를 이렇게 설명했습니다:
Rust 비전 문서는 Rust 채택 현황을 요약합니다. — 어디에서 Rust가 가치를 더하고 있는가? 무엇이 잘 작동하고, 무엇이 그렇지 않은가? — 이를 위해 여러 커뮤니티의 개별 Rust 사용자, 주요 Rust 프로젝트, 그리고 크고 작은 Rust 도입 기업과의 대화를 토대로 작성합니다.
올해 동안 비전 문서 그룹은 많은 데이터를 모았습니다. 우리는 먼저 약 4,200개의 응답을 받은 대규모 설문조사로 시작했습니다. 그 후 가능한 한 폭넓은 Rust 사용자 층을 대상으로 약 70회의 인터뷰를 진행했습니다. 각 인터뷰는 약 45분 정도였고, 우리가 찾을 수 있었던 최대한 다양한 사람들을 인터뷰하려 했습니다1.
이 글은 그 과정을 거치며 우리가 배운 것들과 그 결과로서 제안하고 싶은 내용들을 다룰 일련의 블로그 포스트 중 첫 번째입니다. 이 첫 글에서는 폭넓게 다룰 예정입니다. 우리가 사용했던 프로세스와, 앞으로 이를 어떻게 개선할 수 있을지 논의할 것입니다. 또한 우리가 들었던 큰 주제들을 이야기할 텐데, 그중에는 놀라운 것도 있고 전혀 놀랍지 않은 것도 있습니다. 마지막으로, 미래에 Rust 프로젝트가 이런 종류의 작업을 더 많이 하기 위해 무엇을 할 수 있을지에 대한 제안으로 글을 마무리하겠습니다.
비전 문서를 시작하면서 우리가 처음 한 일 중 하나는 사용자 연구(User Research) 전문가인 Holly Ellis를 만나 사용자 연구가 어떻게 진행되는지에 대한 간단한 튜토리얼을 받는 것이었습니다2. 그녀와 함께, 우리가 답을 얻고자 하는 연구 질문들을 정리했습니다. 첫 초안은 매우 넓었고, 세 가지 주제를 포괄했습니다:
기술로서의 Rust:
글로벌 프로젝트로서의 Rust:
오픈 소스 프로젝트로서의 Rust:
개별 인터뷰를 시작하기 전에, 우리는 Rust 사용 현황에 대한 넓은 스냅샷을 얻고 싶었습니다. 동시에, 우리가 실제로 대화를 나눌 수 있는 사람들의 기반을 마련하고 싶기도 했습니다. 그래서 몇 가지 짧은 "인구통계" 질문 — 예를 들어, 응답자가 어느 지역에 사는지, 어떤 도메인에서 일하는지, 본인의 경험 수준을 어떻게 평가하는지 — 과 함께, Rust를 접하게 된 여정, 어떤 종류의 프로젝트가 Rust에 잘 맞는다고 느끼는지, 학습 과정에서 무엇이 어려웠는지 등과 관련된 자유 서술식 질문을 포함한 설문을 만들었습니다. 또한 (선택적으로) 연락처를 남길 수 있는 항목도 두었습니다.
우리는 매우 많은 응답을 받았습니다 — 4,200개가 넘었습니다! 이렇게 많은 데이터를 분석하는 일은 쉽지 않았고, 데이터를 처리하는 데 활용할 수 있도록 도구를 무료로 제공해 준 Kapiche 측에 매우 감사했습니다. ❤
이 설문조사는 두 가지 면에서 유용합니다. 첫째, 선택 편향에 유의해야 하긴 하지만, 그 자체로도 흥미로운 데이터 세트입니다. 둘째, 설문조사는 1:1 인터뷰에서 들은 내용을 교차 검증하고, 그렇지 않으면 놓쳤을지도 모를 패턴을 찾는 데 활용할 수 있는 기반이 되었습니다. 물론, 우리가 추가로 대화할 수 있는 사람들의 명단을 얻는 데도 도움이 되었습니다(다만 대부분의 응답자는 연락처를 남기지 않았습니다).
설문조사 다음 단계는 실제로 사람들을 만나 이야기를 듣는 것이었습니다. 인터뷰 대상자는 다양한 경로를 통해 찾았습니다. 설문 응답자와 개인적인 인맥은 물론이고, 컨퍼런스에서 사람들을 직접 만나기도 했고, 밋업에도 갔습니다. 심지어는 좀 더 "Rust 커뮤니티 바깥"에 있는 사람들을 만나보고자 Python 밋업에도 가 보았습니다.
사람들을 인터뷰할 때, 사용자 경험(UX) 연구의 기본 통찰은 다음과 같습니다. 원하는 답을 얻기 위해 사람들에게 곧바로 그 질문을 던져서는 안 된다는 것입니다. 그렇게 하면 오히려 그들이 추측을 하게 만들고, "이렇게 말해야 할 것 같다"고 생각하는 대답을 하게 될 가능성이 큽니다. 대신, 우회적으로 접근해야 합니다. 사실에 기초하고, 유도적이지 않은 질문을 던지는 식으로 말이죠. 다시 말해, "빌림 검사기(borrow checker)가 정말 어렵다고 생각하시나요?" 같은 질문은 분명히 피해야 합니다. "Rust에서 겪은 가장 큰 고통 지점은 무엇인가요?" 같은 질문도 아마 하지 않는 편이 좋습니다. 대신 이렇게 물어볼 수 있습니다. "마지막으로 오류 메시지가 헷갈렸던 것은 언제였나요?" 그리고 이어서 이렇게 질문을 확장해 갈 수 있습니다. "이게 전형적인 사례인가요? 아니라면, 또 어떤 경우에 헷갈렸나요?"
솔직히 말해서, 이런 식의 "극도로 비유도적 질문"을 던지는 것은 그리 쉬운 일이 아닙니다. 하지만 이렇게 해야만 놀라운 결과를 발견할 수 있을 때가 있습니다.
설문 응답 4,200개와 인터뷰 70회를 거친 뒤, 우리는 많은 정보를 얻게 되었습니다. 하지만 여전히 가장 중요한 몇 가지 질문에 대한 답은 충분히 얻지 못했다고 느낍니다. 우리가 던졌던 질문의 유형을 고려하면, Rust를 사람들이 왜 좋아하는지, 다른 언어와 비교해 어떤 점에서 가치를 제공하는지에 대해서는 상당히 잘 파악하게 되었습니다. 사람들이 어떤 부분을 어렵게 느끼는지에 대한 전반적인 영역도 파악했습니다. 또한 Rust 프로젝트가 다른 이들과 어떻게 상호 작용하는지, 그리고 지역별로 어떤 차이가 있는지도 조금은 알게 되었습니다.
하지만 우리가 정말로 가지지 못한 것은, "X, Y, Z를 하면 이 도메인에서 Rust 채택이 확실히 진전될 것이다"라고 말할 수 있을 정도의 데이터입니다. 예를 들어, 충분히 기술적인 디테일까지 들어가 보지 못했기 때문에 어떤 기능을 우선순위에 두어야 하는지, 혹은 언어나 라이브러리 팀이 고려 중인 구체적인 설계 질문들에 답하는 데 도움이 될만한 정보를 제공할 수는 없었습니다.
우리가 배운 것 중 하나는, 반드시 집중해야 한다는 점입니다. 우리가 던지고 싶은 질문은 너무 많았지만, 이를 위해 쓸 수 있는 시간은 한정되어 있었습니다. 결국 우리는 여러 방향으로 범위를 좁힐 수밖에 없었습니다:
우리가 놀랄 만큼 어려움을 겪었던 부분 중 하나는, Rust를 좋아하지 않는 사람들을 인터뷰 대상으로 찾는 일이었습니다. 예를 들어, 설문 응답자 중 49%는 자신의 Rust 숙련도를 5점 만점에 4 또는 5점으로 평가했고, 18.5%만이 1 또는 2점이라고 답했습니다. 그리고 그중 실제로 연락처를 남긴 사람은 극히 일부에 불과했습니다.
알고 보니, Rust를 쓸 가치가 없다고 생각하는 사람들은 대부분 Rust 블로그를 읽지도 않고, Rust 팬들 무리와 그런 이야기를 나누고 싶어 하지도 않습니다3. 이는 분명 아쉬운 일입니다. 그런 사람들일수록 Rust가 가치를 더하는 경계가 어디인지에 대해 많은 것을 알려줄 가능성이 크기 때문입니다. 우리는 현재 이 부분의 범위를 넓히기 위해 타겟을 정한 아웃리치를 진행하고 있으니, 계속 지켜봐 주세요. 더 많은 데이터를 얻게 될지도 모릅니다.
사람들이 Rust에 대해 좋아한다고 말하는 것들에 대해서는 나중에 더 깊게 다룰 예정입니다(힌트: 성능과 신뢰성은 둘 다 포함됩니다). 흥미로웠던 점 중 하나는, Rust의 enum을 구체적으로 언급한 사람이 상당히 많았다는 점입니다. Rust의 enum은 프로그램의 상태와, 그 상태에서 사용할 수 있는 데이터를 한데 묶어 표현할 수 있게 해 줍니다. enum은 Rust가 OCaml, Haskell 같은 함수형 언어에서 가져와 시스템 프로그래밍 환경에 맞게 적용한 개념입니다.
"Enum 사용은 제게 새로운 개념이었습니다. 그리고 저는 이 개념이 마음에 듭니다. 클래스도 아니고, true/false로만 제한된 단순한 boolean도 아니죠. 서로 다른 상태를 가질 수 있습니다." — Rust 입문 개발자
"태그가 붙은 유니언(tagged union). 제가 진지하게 사용해 본 다른 프로덕션 언어 중에 이걸 가진 언어는 없었던 것 같아요. 다른 언어로 돌아가면, 도메인을 정확하게 모델링하는 수단으로서 이게 정말 그립습니다." — 임베디드 개발자
우리가 비전 문서를 쓰기로 했을 때, 이 문서가 RFC 형태가 되리라 상상했습니다. Rust를 위한 핵심 집중 영역을 식별하고, 다른 종류의 제안을 담은 RFC 말이죠. 하지만 이제 과정을 겪고 보니, 그런 종류의 RFC를 쓰는 데 필요한 데이터를 충분히 갖추진 못했다고 느낍니다(그리고 그게 올바른 형태의 RFC인지도 확신이 서지 않습니다). 그렇지만 우리는 많은 것을 배웠고, 이런 종류의 작업이 중요하다는 점에는 확신 을 갖게 되었습니다.
그래서 우리의 계획은 다음과 같습니다. 먼저, 우리가 연구 질문들에 대해 무엇을 배웠는지, 그리고 그 과정에서 마주친 다른 종류의 질문들은 무엇이었는지 더 깊이 파고드는 블로그 글 시리즈를 작성할 예정입니다.
둘째, 우리는 Rust 조직을 위한 전담 사용자 연구 팀을 제안하는 RFC를 작성할 계획입니다. 이 팀의 역할은 인터뷰, 설문조사 등 모든 형태의 데이터를 수집하고, 이를 Rust 프로젝트에 제공하는 것입니다. 그리고 가능한 경우에는, Rust 사용자(고객)와 Rust를 확장·개선하는 사람들을 직접 연결해 주는 역할도 하게 될 것입니다.
비전 문서 과정은 여러 면에서 우리에게 이런 종류의 연구를 처음 시도해보는 자리였고, 여기서 우리는 몇 가지를 배울 수 있었습니다:
await x vs x.await 논쟁 — 의 결정을 돕는 데 활용할 수 있을 것이라는 것이었습니다. 우리가 배운 것은 "어느 정도는 가능하다"는 것입니다. 우리가 진행한 폭넓은 인터뷰를 통해 사람들에게 무엇이 중요한지(예: 편의성 vs 신뢰성 등)에 대한 정보는 확실히 얻을 수 있었고, 이에 대해서는 앞으로의 글에서 다룰 예정입니다. 하지만 특정 질문(예: "x.await가 필드 접근으로 혼동될까?")에 대해 명확한 통찰을 제공하려면 훨씬 더 구체적인 연구가 필요합니다. 이는 인터뷰일 수도 있지만, 다른 형태의 테스트가 될 수도 있습니다. 이런 일들은 모두 사용자 연구 팀이 도움을 줄 수 있는 영역입니다.