Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

코딩 배우기는 외국어 배우기와 같습니다 — 단계별 성장 로드맵

조금 의아하게 들릴 수 있지만, 사실입니다. 코딩을 배울 수 있는 자료는 워낙 많아서 오히려 길을 잃고 압도당하기 쉽습니다. 하지만 코딩 공부를 새로운 언어를 배우는 것처럼 접근하면, 유용한 학습 틀 안에서 나아갈 수 있습니다.

이런 프레임워크를 활용하면 학습 과정을 체계적으로 구성할 수 있어 방향과 이정표, 그리고 최종 목적지가 생깁니다.
이 방법의 가장 큰 장점 중 하나는 초보자에서 고급자로 가는 여정을 여러 단계로 나눌 수 있다는 점입니다. 단계를 구분하면 지금 무엇을 하고 있는지 더 명확하게 이해할 수 있습니다.

예를 들어 현재 자신의 수준을 알면 기대치를 현실적으로 설정할 수 있습니다. 아직 초급 단계라면 중급·고급 실력을 당장 쉽게 달성해야 한다고 생각하지 않아도 됩니다. 현실적인 기대는 깊은 좌절이나 포기를 막아주는 힘이 됩니다.

좋은 계획인가요? 그럼 재미있는 연습부터 시작해 보겠습니다.

궁극적인 목표는 무엇인가요?

언어를 배울 때 목표는 단순히 단어 목록이나 임의의 문구를 외우는 것이 아닙니다. 새로운 단어를 배우기 위해서만 언어를 배우는 사람은 거의 없습니다. 항상 어떤 실질적인 활용 목적이 있죠. 결국 그 언어로 유용한 무언가를 할 수 있기를 원하는 것입니다. 원어민과 유창하게 대화하기, 그 나라를 여행하기, 그 언어로 책 읽기 같은 구체적인 최종 목표가 있을 겁니다.

코딩 학습도 마찬가지여야 합니다. 단순히 "코딩을 배운다"가 아니라 새로운 정규직 직장 찾기, 모바일 앱 판매하기, 프리랜서로 일하기 같은 궁극적인 목표가 필요합니다. 그 목표는 어려울 때에도 계속 배워나갈 동기가 되어주며, 프로그래밍 세계를 항해할 때의 나침반 역할을 합니다.

잠시 글 읽기를 멈추고, 코딩을 배우는 궁극적인 목표가 무엇인지 생각해 보세요. 왜 이 길을 걷기 시작했나요? 처음의 동기는 무엇이었나요? 종이에 목표를 적어 컴퓨터 옆이나 욕실 거울처럼 매일 볼 수 있는 곳에 붙여두세요. 그 메모를 볼 때마다 여정을 시작한 이유를 떠올리게 되고, 그 핵심 이유를 기억하는 것이 포기하지 않는 원동력이 됩니다.

목표를 적으셨나요? 좋습니다. 글을 다 읽은 후 아래 댓글로 목표를 공유해 주세요. 서로의 이야기에서 언제든 격려를 얻을 수 있고, 여러분의 이야기를 듣고 싶습니다.

이제 코딩에 능숙해지는 방법으로 넘어가 보겠습니다!

첫 번째 언어가 가장 어렵습니다

한 번에 하나씩만 배우세요

세상에 6,000개가 넘는 구어 언어가 있듯이, 배울 수 있는 프로그래밍 언어도 많습니다. 이제 막 시작했다면 Python, Ruby, JavaScript, React, Java를 한꺼번에 배우는 것은 추천하지 않습니다. 비현실적이죠. 중국어, 스페인어, 독일어, 포르투갈어를 동시에 배우려 하지는 않겠죠?

첫 언어를 고르는 데 스트레스받지 마세요. 하나를 골라 적당한 수준까지 익히면 됩니다. 첫 언어가 가장 어려운 이유는, 언어만 배우는 것이 아니라 프로그래밍이 작동하는 방식 자체를 함께 배우기 때문입니다. 한 언어에 능숙해지면 두 번째, 세 번째 언어를 배우는 것이 훨씬 쉬워집니다.

모든 프로그래밍 언어에는 공통 원리가 흐르고 있습니다. 그 원리들을 익히고 나면, 새로운 문법과 어휘를 배우는 일이 됩니다. 물론 각 언어마다 특유의 특징이 있지만, 프로그래밍의 기초를 다져두면 나중에 추가 스킬을 습득하는 것이 훨씬 수월합니다.

첫 언어를 골랐다면, 이제 여정의 첫 단계부터 시작해 보겠습니다.

초급 단계

Hello, world!

외국어에서 가장 먼저 배우는 말은 무엇일까요? 보통 가장 기본적인 인사, 즉 "안녕하세요"입니다. 우연히도 프로그래밍 언어에서 가장 먼저 배우는 것도 "Hello, world!"를 출력하는 방법입니다.

인사를 배운 후에는 단어와 기본 문법을 암기하죠. 프로그래밍에서는 변수 타입, 메서드, 문법, 프로젝트 파일 구조 같은 개념을 배웁니다. 함수를 직접 손으로 익히고 사소해 보이는 문법 오류에 막히는 일은 그렇게 재미있지 않을 수 있습니다. 하지만 이런 기본 요소들을 마스터해야 계속 올라갈 수 있는 실력이 생깁니다.

초급 단계에서는 실수를 많이 하게 됩니다. 아니, 정말 많이 하게 됩니다. 하지만 전혀 문제없습니다! 중요한 것은 사용하기 전에 완벽하게 익히는 것이 아니라는 점입니다. 실수는 오히려 좋은데, 그 실수에서 배울 수 있기 때문입니다. 잘못할까 봐 두려워 시도조차 하지 않으면 스스로 학습 과정을 방해하게 됩니다. 핵심은 실수하면서 새로 배우는 것들을 실험해 보는 것입니다.

실험하는 한 가지 방법을 소개합니다:

코딩 튜토리얼을 따라 배우고 있다면 평소처럼 강의를 따라가되, 시간을 내어 혼자 에디터에서 코드를 가지고 놀아보세요. 작업 중인 코드를 일부러 망가뜨려 보고, 어떻게 왜 깨지는지 이해해 보세요. 그다음 강의 노트를 참고하지 않고 처음부터 코드를 직접 다시 작성해 보세요. 막힐 때만 노트를 확인하면 됩니다.

이런 실험에는 시간과 에너지를 미리 투자해야 하지만, 장기적으로 큰 보람이 있습니다. 코딩 개념을 직접 만져보며 작동 원리를 파악하면 해당 스킬이 뇌에 훨씬 오래 남습니다. 실력 수준과 관계없이 새로운 개념을 접할 때마다 이 방식을 기본 습관으로 삼을 수 있습니다. (실험을 통한 전문성 향상이라는 주제로 Michael Simmons의 글도 있었으니 참고해 보세요.)

중급 단계

조각들을 조합하기

외국어에서는 이 단계부터 재미가 붙습니다. 아는 것이 많아질수록 할 수 있는 일도 늘어납니다. 회화 실력이 생기고, 그 언어로 읽고 듣는 내용의 상당 부분을 이해할 수 있게 되죠. 온라인 언어 학습 자료 덕분에 원어민 친구를 사귈 수도 있습니다.

프로그래밍에서 중급 단계란 언어의 원리와 그것으로 할 수 있는 일들에 대한 감각이 생기기 시작한다는 뜻입니다. 여전히 기본기를 다져야 합니다. 책을 읽고, 튜토리얼을 진행하고, 실험해야 하죠. 하지만 시간이 지나도 계속 발전시켜 나갈 수 있는 기반을 쌓기 시작하는 단계입니다. GitHub 같은 커뮤니티에서 더 경험 많은 개발자들과 교류하는 법도 배울 수 있습니다. 실제로 다른 사람들의 코드를 연구하면 큰 도움이 됩니다.

예를 들어 관심 있는 GitHub 저장소를 살펴보며 다른 개발자들이 특정 문제를 어떻게 해결하는지 볼 수 있습니다. 저장소를 충분히 연구한 후에는 이슈에 대한 수정 방법을 발견하고 pull request를 제출해 볼 수도 있습니다. 소유자가 요청을 받아주지 않더라도 코드를 다루는 귀중한 경험이 쌓입니다. 계속 시도하고 계속 배우세요.

Stack Overflow, 페이스북 그룹, Slack 채널 같은 온라인 포럼에서 다른 프로그래머들의 도움과 지원을 받을 수도 있습니다. 버그 해결을 돕고 올바른 방향을 알려줄 준비가 된 사람들이 많습니다. 전 세계에 코딩을 배우는 사람들의 커뮤니티가 있습니다!

정체기를 만났을 때

이제 조금 안 좋은 소식을 전해야겠네요… 학습 과정 어느 시점에서 반드시 정체기를 느끼게 됩니다. 가파른 학습 곡선에서 벗어났는데도 앞으로 갈 길이 끝없이 펼쳐진 것처럼 느껴질 수 있습니다. 솔직히 말해, 꽤 힘듭니다.

하지만 절망하지 마세요! 이런 정체기는 새로운 스킬을 익힐 때 누구에게나 찾아오는 자연스러운 과정입니다. 처음에는 엄청난 발전을 이루며 빠르게 실력이 늘어나는 것 같지만, 실력이 좋아질수록 중급·고급 스킬은 더 어렵습니다. 당연히 더 고급이기 때문이죠. 어떤 스킬이든 숙련된 초보자가 되는 것보다 마스터하는 데 훨씬 많은 시간이 걸립니다.

정체기에 갇힌 느낌이 든다면 포기하지 마세요. 자신에게 인내심을 갖고, 실력을 더 올리는 데 시간이 더 걸릴 뿐이라는 것을 이해하세요. 번아웃되지 않도록 하고, 완벽해야 한다는 과도한 압박을 스스로에게 주지 마세요. 무엇보다 지금이 현실과 온라인에서 탄탄한 지원 네트워크가 힘이 되는 시기입니다. 같은 처지에 있을 수 있는 사람들에게 다가가 이야기를 나누고 서로 격려하세요.

고급 단계

"어? 나 이거 꽤 잘하는 것 같은데?"

외국어 학습에서 대부분의 사람들이 목표로 하는 지점은 유창함입니다. 유창하다는 것은 그 언어로 어떤 생각이나 감정이든 표현할 수 있다는 확신이 서는 상태죠. 이 단계에서는 거의 원어민 수준입니다!

코딩 언어나 기술에서 숙련 수준에 도달하면 정말 기분이 좋습니다. 가끔 가면 증후군(impostor syndrome)에 시달릴 수 있지만, 전반적으로는 자신의 실력과 프로그래머로서의 가치에 더 자신감을 느끼게 됩니다. 클라이언트나 상사가 던지는 거의 모든 과제를 처리할 수 있게 됩니다. 정확히 어떻게 해야 할지 모르더라도 리서치(즉, 구글 검색)하고 시간을 들이면 해결책을 찾을 수 있는 도구가 있다는 것을 알고 있죠.

하지만 지금은 안주할 때가 아닙니다. 프로그래밍은 끊임없이 변화하고 빠르게 움직이는 분야입니다. 계속 실력을 갈고닦아야 합니다. 멈추면 힘겹게 얻은 숙련도가 서서히 사라지기 시작합니다. 자만과 정체는 결국 프로그래머 경력의 종말을 부르는 신호가 됩니다. 다행인 점은, 이 무렵이면 이미 '배우는 것' 자체에 능숙해졌다는 것입니다. 새로운 언어, 프레임워크, 도구를 배우는 데 예전만큼의 시간이 걸리지 않습니다. 심지어 그 과정을 즐길 수도 있습니다!

여러분의 궁극적인 목표는 무엇인가요? 아래에 댓글을 남겨주세요…

프로그래밍 학습 방법에 대한 이 글이 도움이 되었기를 바랍니다. 앞서 말했듯이, 여러분의 프로그래밍 목표와 지금 배우고 있는 내용을 댓글로 들려주시면 감사하겠습니다.