혼자 힘으로 코딩을 배우기 시작하면 처음에는 답보다 궁금증이 더 많아지기 마련입니다.
무엇부터 배워야 할까요? 버그는 어떻게 고쳐야 할까요? 그리고 모든 것이 불가능해 보일 때는 어떻게 동기를 유지할 수 있을까요?
코딩에서 성공할 수 있을지 걱정된다면, 아래의 10가지 팁이 여러분에게 용기와 동기를 불어넣어 줄 것입니다!
1. 시작하기 전에 구체적인 목표를 세우세요
개발자를 꿈꾸는 사람들에게 가장 자주 받는 질문 중 하나가 바로 "어떤 언어를 배워야 하나요?"입니다.
충분히 이해되지만, 사실 이것은 출발점으로 삼기엔 잘못된 질문입니다.
먼저 스스로에게 던져야 할 진짜 질문은 "내가 코딩을 배우는 최종 목표는 무엇인가?"입니다.
여행에 비유해 볼까요? 아무도 가고 싶은 곳 없이 여행을 떠나지 않습니다. 마찬가지로 아무도 코딩 그 자체만을 위해 코딩을 배우지 않습니다. 반드시 이유가 있는 법이죠.
당신은 왜 코딩을 배우려 하는 걸까요?
시간을 내서 최종 목표가 무엇인지 생각해 보세요. 목표가 정해지면 거꾸로 거슬러 올라가며 그것을 달성하기 위해 무엇을 해야 하는지 파악할 수 있습니다!
아직 코딩 학습 목표가 확실하지 않다면, 흔한 목표들을 참고해 보세요:
- 우리 동네 회사에 취업해서 안정적인 수입을 얻고 싶다
- 소상공인을 위한 웹사이트 제작 사업을 직접 시작하고 싶다
- 모바일 앱을 만들어 수익을 내고 싶다
- 테크 스타트업에서 일하고 싶다
시간 낭비를 하고 싶지 않고, 방황하고 싶지 않다면 반드시 최우선 목표 하나를 명확히 정해야 합니다.
2. 계획을 정했다면 끝까지 밀고 나가세요
요즘 온라인으로 코딩을 독학하는 것의 장점 중 하나는 학습할 수 있는 강의와 글이 정말 많다는 점입니다. 검색만 하면 어떤 주제든 영상과 글을 찾아 배울 수 있습니다.
하지만 단점도 있습니다. 리소스가 너무 많다 보니 최고의 것을 찾기 어렵고, 그 방대함에 압도될 수 있다는 점입니다.
제 조언은 이렇습니다. X, Y, Z를 배우는 '절대 최고의' 강의를 찾느라 엄청난 시간을 쓰지 마세요.
그냥 하나를 고르세요.
세계 최고가 아니더라도 적어도 나쁘지 않을 가능성이 높습니다. 최고의 강의를 찾는 것보다 선택한 강의를 끝까지 완주하는 것이 훨씬 중요합니다.
솔직히 말하면, 온라인 강의를 사고팔며 이리저리 옮겨 다니는 건 집중력 부족과 미루기를 교묘하게 포장한 행동일 때가 많습니다.
그냥 하나를 골라 (정말 형편없는 게 아니라면) 끝까지 해내세요. 마음에 들지 않으면 언제든 다른 강의로 넘어갈 수 있습니다!
3. 단거리 경주가 아니라 마라톤입니다
"3개월 또는 6개월 만에 프로그래밍을 배워 취업한다"는 문구로 홍보하는 블로그 글과 영상이 많습니다. 물론 가능한 경우도 있겠지만, 수많은 조건이 붙습니다.
풀타임으로 일하지 않아야 하고, 충분한 자금이 있어야 하고(코딩 부트캠프는 1천만 원 이상 드는 경우도 많습니다), 빠른 속도를 따라갈 수 있어야 한다면... 그때 비로소 웹 개발자로 취업할 수 있을지도 모릅니다.
문제는 이런 과장된 홍보가 사람들에게 코딩 진입이 매우 쉽다는 지나치게 낙관적인 그림을 심어준다는 점입니다. 실제 난이도를 깨달았을 때 큰 실망을 겪게 되죠.
부트캠프를 수료하고 몇 달 만에 프로그래머로 취업한 지인들도 있습니다. 하지만 부트캠프 없이 독학으로 성공한 사람들의 이야기를 들어보면 훨씬 오래 걸렸다고 합니다. 대략 1~2년 정도죠.
독학으로 코딩을 배운 실제 사례를 듣고 싶다면, 오웬(Owen)의 인터뷰를 읽어보세요. 그는 풀타임 직장과 어린 자녀가 있었지만, 거의 매일 새벽에 일어나 2년간 묵묵히 공부했습니다.
그는 최근 풀타임 웹 개발자 자리를 얻었지만, 그 이면에는 아주 긴 시간의 굳건한 노력이 있었다는 점을 기억하세요.
절망시키려는 게 아니라 현실적인 그림을 보여드리고 싶을 뿐입니다. 충분히 가능합니다! 다만 몇 달이 아니라 최소 1년 이상의 시간이 필요하다는 것을 예상해 두세요.
4. 느리지만 꾸준히가 승리의 열쇠입니다
코딩 학습이 결코 쉽지 않다는 것을 이제 알았습니다. 하지만 새벽 공부나 한밤중의 벼락치기 속에서 번아웃에 빠지지 않도록 주의하세요.
어떤 사람들은 최대한 빨리 모든 걸 배우고 싶어서, 퇴근 후 하루 5시간씩 공부하려 합니다.
물론 가능한 사람도 있겠지만, 다른 사람들에게는 과부하일 수 있습니다. 스스로를 소진시켜 결국 포기하게 될 위험이 있습니다. 그리고 포기야말로 피해야 할 바로 그것이죠!
번아웃 없이 코딩을 배우려면 어떻게 해야 할까요?
지속 가능한 수준의 진전을 목표로 하세요. 하루 30분~1시간처럼 천천히 시작하거나, 주 1~2회 1~2시간 정도로 설정하는 것도 좋습니다.
물론 투자 시간이 많을수록 진전도 빨라집니다. 하지만 천천히 시작하면 점진적으로 학습 시간을 늘려갈 수 있습니다.
습관이 자리 잡으면 포기하지 않고 학습의 길을 계속 걸어가기가 훨씬 수월해집니다.
5. 타인과 비교하지 마세요...
따르기 어려운 조언이지만, 목표를 향해 나아갈 때는 자신을 다른 사람과 비교하지 않으려 노력하세요.
같은 길을 걷는 사람들과 자신의 위치를 확인하는 것은 도움이 될 수 있습니다. 하지만 SNS가 상시화된 시대에는 비교가 오히려 좌절감을 안겨줄 때가 많습니다.
성공의 열쇠는 고개를 숙이고 남의 진행 상황에 신경 쓰지 않는 것입니다. 오직 자신의 발걸음에만 집중하세요.
누군가는 당신보다 빨리 배울 수도, 느릴 수도 있습니다. 그건 괜찮습니다. 모두의 삶의 상황과 학습 속도가 다르니까요.
타인과의 비교에 대한 생각이 줄어들수록, 자신만의 길에 더욱 집중할 수 있습니다.
6. ...하지만 동료들과 친구가 되세요!
계속 자신을 타인과 비교하지 말라고 했지만, 세상과 완전히 단절하라는 뜻은 결코 아닙니다.
오히려 혼자 온라인으로 코딩을 배우면 금방 외로움에 시달릴 수 있습니다.
같은 것을 배우는 사람들을 찾아 친구가 되는 것은 중요한 동기 부여의 원천이 됩니다.
왜냐하면, 자신과 같은 문제로 고민하는 사람들이 있다는 것만 알아도 큰 위안과 격려가 되기 때문입니다.
또한 친구들은 서로의 문제를 해결하도록 도울 수 있습니다. 혼자만의 관점에 의존하기보다 여러 시각을 더하면 더 나은 해결책을 찾을 수 있습니다.
오프라인 학교에서 배운다면 다른 학생들과 함께 공부해 보세요. 온라인이라면 밋업(Meetup), 웹 개발 전용 페이스북 그룹, 인스타그램 같은 SNS에서 코딩 커뮤니티를 찾아보세요.
친분과 연결망을 쌓으면 목표를 추구하는 동안 동기를 유지하는 데 큰 도움이 되고, 여러분도 다른 사람들에게 힘이 되어줄 수 있습니다!
7. 일상 속에 코딩을 스며들게 하세요
코딩할 시간을 내는 것은 정말 어렵습니다. 우리 모두 바쁜 삶을 살고 있으니까요.
하지만 매일 혹은 주 몇 번 코딩하는 습관을 만들 수 있다면 올바른 길에 들어선 것입니다.
습관 형성(좋든 나쁘든)은 험야에 길을 내는 것과 같습니다. 처음 그 길을 걸을 때는 뚜렷한 길이 없어 힘듭니다. 하지만 걸을수록 길은 점점 분명해지고, 오랜 시간이 지나면 평평하고 걷기 쉬운 길이 됩니다.
습관 만들기도 마찬가지입니다. 처음 몇 번은 코드 에디터 앞에 앉는 것조차 어려울 것입니다. 하지만 계속하다 보면 뇌가 패턴에 익숙해지고, 뇌는 원래 루틴을 좋아하기 때문에 시간이 지날수록 습관을 시작하는 것이 점점 쉬워질 것입니다.
습관을 굳건히 만드는 방법 중 하나는 새로운 습관 직전에 일어나는 '트리거'를 설정하는 것입니다. 예를 들어, 아침에 첫 커피나 차를 마신 직후 책상에 앉아 코딩하는 식으로 아침 루틴에 코딩을 녹여낼 수 있습니다.
아니면 저녁에 저녁 식사 뒤정리를 마친 직후 코딩을 시작하는 것도 좋습니다.
무엇이든, 습관을 지속하는 핵심은 시간이 지나도 계속 반복하는 것입니다.
8. 검색하고 문제를 해결하는 법을 익히세요
스스로 문제를 해결하는 능력은 웹 개발자에게 갖추어야 할 가장 중요한 기술입니다.
경험 많은 개발자들은 모든 답을 즉석에서 알고 있다고 생각할 수 있습니다. 전혀 사실이 아닙니다!
물론 어떤 것들은 머릿속에 외우고 있지만, 구글(혹은 DuckDuckGo)로 검색해야 할 것들이 아주 많습니다. 저 역시 업계에서 7년째 일하고 있지만 마찬가지입니다!
이제 개발자들의 비밀을 알았으니, 이 핵심 역량을 어떻게 키울 수 있을까요?
연습하는 것입니다!
막힐 때, 도움을 요청하기 전에 먼저 겪고 있는 문제나 에러 메시지를 검색해 보세요.
저는 자주 "XXX doesn't work"처럼 검색합니다. 그러면 저와 같은 문제를 겪은 사람들의 Stack Overflow 게시글이 검색되기 때문입니다.
또 하나의 팁은 사용 중인 도구나 소프트웨어의 공식 문서(documentation)를 찾아 읽어보는 것입니다.
그리고 해결책을 찾은 후에도 시간이 된다면 해당 분야 전반에 대해 추가로 조사해 보세요. 이렇게 하면 짜증 나는 버그 수정 하나하나가 실력을 키우는 기회로 바뀝니다.
이렇게 생각해 보세요. 처음 어떤 문제를 검색할 때는 해결책을 찾는 데 3시간이 걸릴 수 있습니다. 하지만 그 과정을 기억하면 다음에 같은 문제를 만났을 때는 훨씬 적은 시간이 듭니다.
자주 막히는 문제들을 해결하는 법을 익히면 더 빠르고 효율적인 웹 개발자가 될 수 있습니다.
9. 튜토리얼만 보지 말고, 직접 만들어 보세요!
코딩 학습에서 가장 유혹적인 함정 중 하나는 수많은 튜토리얼을 읽고 영상을 보기만 하면서, 정작 배운 기술을 직접 연습하지 않는 것입니다.
이렇게 생각해 보세요. 누군가 "달리기 훈련 중"이라고 말했는데 정작 거의 달리기를 하지 않는다면, 말뿐인 사람이라고 생각하게 되겠죠? 물론 기술을 배우고 어떤 신발이 필요한지 알아보는 데 시간을 쓸 수 있습니다. 하지만 언젠가는 실제로 뛰어야 합니다.
웹 개발도 마찬가지입니다. 코딩 기술을 배우고 작업을 편하게 해줄 도구를 갖추는 것도 물론 중요합니다. 하지만 모든 시간을 튜토리얼을 수동적으로 따라가는 데만 쓴다면, 사실 아무것도 배우고 있지 않는 것입니다.
저는 실무에서 웹 개발을 배웠습니다. 유튜브에서 코딩 영상을 볼 여유는 없었습니다! 마감 기한이 있었고, 그 전에 어떻게든 웹페이지를 작동시켜야 했습니다.
시련의 연마였고, 확실히 스트레스받는 경험이었습니다. 하지만 돌이켜보면 그만큼 좋은 학습 방법은 없었습니다. 웹 개발자로 일한 불과 몇 년 만에 엄청난 실무 기술을 익혔고, 그 전부가 직접 만들면서 배운 것이었습니다.
그래서 제 조언은 이렇습니다:
튜토리얼과 책은 훌륭합니다. 하지만 섹션이나 챕터 하나를 끝냈다면 잠시 멈추세요. 코드 에디터를 열고 방금 배운 내용을 다시 살펴보세요. 학습 자료가 보여준 예제를 직접 재현해 보는 겁니다.
읽거나 듣기만 하는 것보다 훨씬 어렵겠지만, 실전 연습이 개념을 확실히 각인시켜 줄 것이라고 약속합니다.
10. 실패에 열린 마음을 가지세요
실패는 기분 나쁜 일입니다. 누구나 잘하고 싶고, 실수하고 싶지 않죠.
하지만 실패와 실수를 피하는 것은 오히려 성장에 최악의 방법입니다. 잘못했던 경험을 통해서만 올바른 방법을 배울 수 있기 때문입니다.
주니어 웹 개발자로 시작했을 때, 저는 실수하는 것에 대한 큰 두려움이 있었습니다. 문제에 막히면 상사에게 도움을 요청해야 한다는 사실이 싫었습니다. 혼자 해내지 못했다는 것을 인정하는 셈이니까요.
더 심각한 건 실수를 했을 때, 특히 운영 중인 웹사이트에 영향을 미쳤을 때였습니다. 정말 큰 잘못을 저지른 것이니까요!
그런 상황에서 제 첫 반응은 실패한 사실을 아무도 모르게 하는 것이었습니다.
하지만 더 잘 알고 있었죠. 상황 자체를 가장 빠르게(그리고 가장 정직하게) 해결하는 방법은 솔직하게 털어놓고 상사에게 도움을 요청하는 것임을요.
물론 이것은 근무 환경에 따라 다르지만, 제 경험상 실수를 하거나 모르는 것을 인정했을 때 곤란을 겪은 적은 한 번도 없었습니다.
실패에 대한 두려움은 '안전한' 선택만 하려는 성향으로 이어져, 잠재적으로 실수할 수 있는 상황 자체를 회피하게 만듭니다. 하지만 그렇게 하면 성장할 수 있는 만큼 성장하지 못합니다.
어렵더라도 계속 밀고 나가고 계속 시도하세요. 실수해도 괜찮습니다! 코딩에서 문자 그대로 생사가 걸린 상황은 거의 없습니다. 가장 흔한 결과는 멍청한 기분이 들거나 비판을 받는 정도입니다.
그건 그저 자존심의 문제일 뿐입니다. 자존심을 내려놓고 실패를 받아들이세요. (저도 스스로 실천하려 노력 중인 조언입니다. 쉽지 않죠!) 실패와 실수에 열려 있다면 장기적으로 훨씬 더 나은 개발자가 될 수 있습니다!
11. 끊임없이 배우세요
배움을 멈추지 마세요.
처음 시작할 때는 웹 개발의 세계가 압도적으로 느껴질 수 있습니다. 배워야 할 기술이 수백 가지나 되는 것처럼 보이니까요.
한동안 배우고 연습하다 보면 점점 편안해질 것입니다. 그것은 실력이 늘고 자신감이 생긴다는 좋은 신호입니다. 하지만 그 자리에 머물러 있지 마세요!
우리가 종사하는 산업은 끊임없이 변화합니다. 오랫동안 함께 변화하지 않으면 스스로를 시대에 뒤떨어지게 만들 수 있습니다.
예를 들어, 저는 CSS float 속성으로 레이아웃을 만드는 데 꽤 능숙해졌었습니다. flexbox에 대해 들었고, 동료들이 얼마나 훌륭한지 이야기하기도 했습니다.
하지만 새 기술을 배우는 데 시간을 쓰는 것을 망설였습니다. 솔직히 말하면, 꼭 필요하지 않다면 새로운 것을 배우기 귀찮았던 거죠.
결국 flexbox를 배웠습니다. 생각보다 오래 걸리지 않았고, 익히는 순간 왜 진작 배우지 않았나 후회스러웠습니다.
이제 저는 최신 기술을 따라가는 것의 중요성을 깨달았습니다. flexbox 학습을 미룬 것이 커리어에 큰 타격을 주지는 않았지만, 아예 배우지 않았다면 어느 순간부터 웹 개발자로서 경쟁력을 잃었을 겁니다.
세상의 모든 언어, 도구, 기술을 다 배워야 한다고 느낄 필요는 없습니다(정말 원한다면 말리지 않겠지만). 할 수 있는 것은 이미 주류가 되어 폭넓게 사용되는 새로운 도구들을 배우는 것입니다.
예를 들어 React.js와 Node.js는 몇 년 전에 등장해 현재 업계를 지배하고 있습니다. 아직 배우지 않았다면 지금 배우기 좋은 스택입니다.
그렇다면 어떤 것이 유행하는지 어떻게 알 수 있을까요?
제가 활용하는 방법들을 소개합니다:
- Syntax.fm — Wes Bos와 Scott Tolinski의 팟캐스트로, 웹 개발의 새로운 소식과 관련 주제를 다룹니다. 정말 훌륭합니다.
- CSS Tricks — CSS 활용에 관한 방대한 글과 튜토리얼을 제공합니다. 창립자 Chris Coyier는 웹 개발 놀이터 Codepen.io 공동 창립자이기도 합니다.
- Stack Overflow — 매년 웹 개발 현황 설문조사를 발표합니다. 어떤 기술이 주목받고 어떤 기술이 사라지고 있는지 파악하기 좋습니다.
- Smashing Magazine — 웹 개발, UX/UI, 웹 디자인 등 다양한 주제를 다룹니다.
일단 시작하세요!
이 팁들이 웹 개발 학습에 대한 불안을 덜고 설렘을 더하는 데 도움이 되었기를 바랍니다!
마지막 조언은 바로 '일단 해보라'는 것입니다. 무엇을 하고 있는지 정확히 모르더라도, 그것이 발목을 잡게 두지 마세요. 어디선가 시작하면, 가는 길에 점점 더 알게 됩니다.