- 러스트는 완전히 새로운 사고방식을 요구하는 언어로, 마음가짐이 학습 속도에 큰 영향을 줌
- 컴파일러와 친해지는 것이 핵심이며, 오류 메시지를 단순히 고치는 것이 아니라 이유를 이해하는 태도가 중요함
- 초반에는
clone(),unwrap등을 적극적으로 사용해 작게 시작하고 점진적으로 리팩토링하는 것이 좋음 - 코드를 손으로 많이 작성하며 실수와 시행착오를 통해 직관과 근육 기억을 쌓아야 함
- 러스트는 타입 시스템 중심의 개발 철학을 갖고 있어, 문서를 꼼꼼히 읽고 타입으로 모델링하는 연습이 필요함
Flattening Rust's Learning Curve
러스트는 배우기 까다로운 언어로 알려져 있지만, 이 글에서는 러스트를 보다 효과적으로 배우기 위한 태도와 접근 방법에 대해 저자의 경험을 바탕으로 구체적인 조언을 제시함
Let Your Guard Down
- 러스트는 기존 언어와 다른 정신 모델을 요구함
- 초보자가 고수보다 빠르게 익히는 경우도 있음 → 태도와 열린 자세가 핵심
- 빌림 검사기(borrow checker) 를 적으로 보지 말고 공동 저자로 여겨야 하며, 오류 메시지를 이해하려고 노력해야 함
- 컴파일러가 lifetime 파라미터를 요구하는 이유를 깊이 이해하려는 자세가 중요함
- 코드가 보기 싫고 복잡할수록 잘못된 설계일 수 있음, 더 나은 방법을 찾는 계기로 삼아야 함
- 러스트의 장황함(verbosity) 은 대규모 앱에 도움이 되며, 리팩토링에 유리함
clippy린트는 꼭 초반부터 모두 켜고 활용해야 함
Baby Steps
- 초반에는
String,clone(),unwrap을 아낌없이 쓰고 나중에 리팩토링해도 무방함 - 복잡한 메서드 체인보다 간단한
if,match문부터 시작 - 비동기(async) 는 첫 주에는 피하는 것이 좋음
- 작은 코드 조각을 Rust Playground에서 실험해보며 학습
- 개념 하나당
main.rs파일 하나로 실습하고, 대부분의 코드는 버릴 생각으로 작성
Be Accurate
- 러스트는 정확함이 생존 조건
- 타이포나 작은 실수가 바로 컴파일 오류로 이어지므로 주의가 필요함
&,mut를 자동으로 붙이는 습관을 들이면 도움이 됨Tsoding같은 개발자의 스트리밍 영상은 좋은 참고 자료
Don’t Cheat
- LLM, 코드 자동 완성에 의존하면 학습이 느려짐
- 직접 손으로 타이핑하고, 이해되지 않으면 문서를 찾아보는 연습 필요
- 자동조종 상태(auto-pilot) 로 코딩하지 말 것
- 실수를 수용하고, 이를 통해 컴파일러의 작동 방식을 이해할 것
- 코드를 실행하기 전에 컴파일 가능 여부를 예측하는 연습도 추천
- 다른 사람의 코드를 읽고 분석하는 습관도 중요
- 학습 중에는 외부 Crate 사용을 자제하고,
serde,anyhow정도만 예외로 허용
Build Good Intuitions
lifetime,ownership개념은 시각적으로 이해하는 게 도움됨excalidraw같은 도구로 데이터 흐름, 아키텍처 등을 직접 그려보는 습관 추천- 많은 뛰어난 엔지니어와 수학자도 시각화 도구를 잘 활용함
Build On Top Of What You Already Know
- 러스트는 익숙한 개념에서도 작동 방식이 다름 (예:
mut, 값 이동 등) - 그러나 기존 언어와 비교를 통한 학습은 유용함
예시:
- Trait → Interface 와 비슷하지만 다름
- Struct → 상속 없는 클래스 느낌
- Closure → 람다와 유사
- Module → 네임스페이스
- Borrow → 단일 소유자 포인터
- Option → Maybe monad
- Enum → Algebraic data type
- Rosetta Code는 여러 언어간의 코드 비교 학습에 유용
- 익숙한 언어의 코드를 러스트로 포팅하며 학습하는 것도 효과적
- 리스트 내장 문법이나 반복문 등의 언어별 관용 표현을 러스트에서는 어떻게 표현할지 고민하는 연습도 좋음
Don’t Guess
- 러스트는 추측이 통하지 않는 언어
"hello".to_string()같은 코드를 왜 써야 하는지 이유를 고민해볼 것- 오류 메시지는 매우 유익하므로, 그 안에 숨겨진 힌트를 절대 무시하지 말 것
- 특히 borrow-checker 관련 오류는 데이터 흐름을 손으로 추적하며 분석해야 함
Lean on Type-Driven Development
- 러스트는 타입 시스템 중심 언어
- 함수 시그니처, 타입 정의 등에서 많은 정보를 얻을 수 있음
- 표준 라이브러리 문서와 소스를 자주 읽을 것
- 타입 먼저 설계하고, 그에 맞는 코드 작성을 통해 더 정확하고 재사용 가능한 구조 구현 가능
- 불변성(invariant)을 타입으로 표현하면 아예 잘못된 코드가 컴파일되지 않음
Invest Time In Finding Good Learning Resources
- 러스트 학습 자료는 아직 많지 않지만, 초반에 자신에게 맞는 리소스를 찾는 것이 시간 절약에 중요함
Rustlings같은 학습 툴은 성향에 따라 호불호가 갈림Advent of Code,Project Euler같은 문제풀이 중심 자료가 더 적합할 수 있음- 유튜브 영상은 정보성보다는 엔터테인먼트로 활용
- 책을 사서, 오프라인으로 읽으며 직접 코드를 작성하는 방식이 가장 효과적
- 가능하다면 전문가의 교육이나 코칭을 받는 것도 장기적으로 큰 시간 절약 가능
Find A Coding Buddy
- 실력 있는 동료의 코드를 그림자처럼 따라가며 관찰하는 것도 좋음
- Rust 포럼, Mastodon 등에 코드 리뷰를 요청하거나 직접 리뷰하면서 실력 향상 가능
Explain Rust Code To Non-Rust Developers
- 러스트를 모르는 사람에게 설명해보는 것도 학습에 효과적
- 오픈소스 프로젝트의 유지되지 않는 코드에 기여하는 것도 추천
- Rust 용어를 자신의 업무 도메인 언어로 매핑한 용어집을 작성하면 좋음
Believe In The Long-Term Benefit
- 러스트는 단기 생산성보다 장기 품질을 위한 언어
- 하루아침에 고수가 되긴 어렵지만, 한 달 집중하면 많은 걸 얻을 수 있음
- 러스트는 ‘Day 2 언어’이며, 첫날은 힘들지만 지속적으로 사용하면 가치가 커짐
- 성공하려면 단순히 이력서용이 아니라, 프로그래밍 자체를 좋아해야 함