프로그래밍을 배우는 몇 가지 방법

0

프로그래밍 공부를 시작하는 사람들이 늘어나고 있다. 스타트업 설립과 게임개발, 기계학습, 데이터 사이언스, 마이크로 컨트롤러 프로그래밍, 모바일 앱 개발, IoT 디바이스 개발 등등… 프로그래밍 기술을 살려서 할 수 있는 것이 많기 때문이다. 프로그래밍 학습 방법은 다양하다. 모든 사람에게 적합한 프로그래밍 학습 방법은 없겠지만 다양한 학습 방법 중에서 자신에게 가장 잘 맞는 것을 찾을 순 있을 것이다. 여기에서는 Codementor.io 웹 사이트에서 소개한 내용을 재정리하여 살펴본다.

컴퓨터 사이언스 학위 취득

컴퓨터 사이언스 학위를 취득하기 위해서는 3~4년 정도의 시간이 걸리며, 약 1만~10만 달러의 비용이 든다. 특히 실리콘밸리에는 STEM(과학, 테크놀러지, 엔지니어링, 수학) 학위를 보유한 사람만 뽑는 기업이 있다. 게 중에는 상위 대학 졸업생만 뽑는 기업도 있다. 물론 성적증명서나 졸업증명서 등을 고려하지 않는 기업도 있다. 아무튼 컴퓨터 사이언스 학위를 취득하면 선택지는 그만큼 많아진다.

컴퓨터 사이언스 학위를 취득하는 코스를 밟게 되면 코딩 스킬 그 이상을 배울 수 있다. 컴퓨터 전반에 대해 많은 것을 학습할 수 있는데, 컴퓨터의 구조와 컴퓨터의 문제 처리 방법, 컴퓨터 시스템의 기반이 되는 과학 등에 대해 알 수 있다.

이론에만 치우치는 건 좋지 않을 수도 있지만 컴퓨터의 기초를 이해해두면 코드의 품질 향상에 연결될 뿐 아니라 네트워크나 OS 등 다양한 문제를 디버그하는 능력도 키울 수 있다.

하지만 컴퓨터 사이언스 학위를 취득한다는 선택지는 트렌디한 웹 앱을 구축하는 것을 목적으로 할 때는 지름길이 아니다. 강의 내용이 진보적이고 웹 개발 교육을 한다고 해도 최첨단 기술을 배울 가능성은 낮다.

웹 개발은 빨리 발전하기 때문에 대학 커리큘럼이 쫓아가기 어렵다. 만약 특정한 무엇을 구축하기 위해 프로그래밍을 공부하고 싶다면 컴퓨터 사이언스 학위를 취득하는 것은 가장 시간이 많이 걸리고 가장 실천적이지 않은 선택지가 될 수 있다.

일반적으로 컴퓨터 사이언스 학위 취득이 가장 좋은 선택지가 되는 경우는 다음과 같다.

– 학습을 서두르지 않고 소프트웨어 개발 이력을 쌓고자 하는 경우
– 구글, 페이스북, 우버 등 경쟁이 심한 IT 기업에 취업하고 싶은 경우
– 학술적인 환경이 가장 학습 효율이 높고 주체적으로 학습할 수 있는 경우
– 인공지능이나 기계학습 등 컴퓨터에 대한 깊은 지식을 필요로 하는 분야의 문제를 해결하고 싶은 경우
– 충분한 시간, 비용, 에너지, 기회가 있고 학위 취득을 즐길 수 있는 경우

코딩 부트캠프 수료

어떤 나라에서는 최근 들어 코딩 부트캠프에 취업을 보장하는 경우가 생기고 있다. 코딩 부트캠프를 종료한 후 주니어 개발자직을 얻을 수 있는 식이다. 물론 컴퓨터 사이언스 정식 학위를 필요로 하는 기업에는 취업이 어렵다.

코딩 부트캠프 수료를 위해서는 미국의 경우 약 3,000~2만 달러 정도의 비용이 들고 3개월 정도의 시간이 걸린다. 일반적으로 코딩 부트캠프는 풀타임 또는 파트타임 코스로 민간조직에서 운영하고 수료를 인정해준다. 온라인 코스도 있지만 대부분 오프라인에서 학습하는 코스다.

코딩 부트캠프는 가장 짧은 기간 동안 가능한 한 많은 실천적인 스킬을 습득하는 데 초점이 맞춰진다. HTML, CSS, Ruby on Rails, JavaScript 등을 이용해 완전한 웹 앱을 구축하는 스킬을 습득할 수 있는지의 여부가 학습 성공 여부의 지표가 되는 것이 일반적이다.

어떤 특정한 것을 구축하고 싶은 경우, 프로그래머 일자리를 빨리 얻고 싶은 경우, 코딩 부트캠프는 가장 좋은 선택이다. 일반적으로 코딩 부트캠프는 진행 속도가 빠르기 때문이다.

학습의 품질은 코딩 부트캠프 자체의 품질에 좌우된다. 따라서 코딩 부트캠프를 신청하기 전에 철저하게 조사해야 한다.

코딩 부트캠프가 가장 좋은 프로그래밍 학습법이 되는 경우는 다음과 같다.

– 가능한 한 짧은 기간 내에 프로그래밍 스킬을 습득하고 싶은 경우
– 뭔가 특정한 것을 구축하기 위해 프로그래밍을 학습하고 싶은 경우
– 오프라인 강의장에 통학하는 방식이 학습 효율이 가장 높지만 컴퓨터 사이언스 학위를 취득하기 위해 충분한 시간 또는 돈이 없는 경우

독학

독학으로 프로그래밍을 학습하는 경우에는 통상 무료에서 5,000달러 정도의 비용이 들고 3개월에서 1년 이상의 시간이 걸린다. 취업과 관련해서는 코딩 부트캠프를 수료한 후에 주니어 개발자직을 얻는 경우와 비슷하다. 단 유수의 IT기업에 취직하기 위해서는 학위가 필요하겠지만 그밖의 일부 기업은 재능과 프로그래밍에 대한 열정을 우선적으로 볼 것이다. 모든 프로그래밍에 대해 방대한 양의 무료 학습 리소스가 존재하므로 프로그래밍 학습 방법으로 독학은 가장 비용이 들지 않는 방법이 될 것이다.

한편 특정 토픽에 대해 이해할 수 없을 때나 버그에 직면했을 때 물어볼 사람이 없다는 것은 단점이 될 수 있다. 이런 경우 프로그래밍 학습이 힘들어진다.

독학에는 자율성이 요구된다. 명확한 학습 프로그램이나 커리큘럼이 없다면 쉽게 학습을 포기하거나 헤매게 된다. 또 무엇을 배워야 하는지 알기 어려울지도 모른다.

만약 당신이 다른 분야에서 독학으로 스킬을 습득한 경험이 있다면 그 방법을 프로그래밍 학습에도 응용할 수 있을 것이다. 또 최종적으로 독학 이외의 학습 방법을 선택한다고 해도 독학으로 프로그래밍의 기초적인 스킬을 익히는 것은 다른 사람보다 빠를 것이다.

독학은 자신에게 맞는 페이스대로 진행할 수 있고 비용도 최소한으로 억제할 수 있으므로 만약 시간, 돈, 에너지면에서의 제약이 있다면 가장 유연성이 높은 학습 방법이다.

멘토에게 배우기

멘토가 있다면 프로그래밍 학습은 기본적으로 무료이고 3개월에서 1년 이상 정도 걸린다고 볼 수 있다. 취업할 때는 독학으로 프로그래머가 되는 경우와 비슷하다. 단 멘토가 프로그래머로서 현업에 있다면 취업에 대한 개인적인 지원을 해줄 수도 있을 것이다.

프로그래밍 학습에서 멘토를 가지는 것의 장점은 수도 없이 많다. 학습해야 할 것을 콕 집어서 알려주고 이해하기 힘든 부분이 있으면 해결해준다. 만약 멘토가 IT 업계에서 일을 하고 있다면 어디에 집중해서 학습해야 할지도 알려준다. 좋은 멘토를 가지는 것의 장점은 많다. 만약 프로그래밍을 즐겁게 알려주는 사람이 있다면 일종의 축복이다.

그러나 주의해야 할 점도 있다. 첫째, 멘토로부터 배우는 것을 유일한 학습 방법으로 보면 안 된다. 멘토와 만날 수 없는 경우, 또 앞으로 만날 수 없는 경우에도 학습을 계속해야 한다. 멘토와 만날 수 있을 때는 최대한 함께 해야 하지만 완전히 멘토에게 의존해선 안된다.

그런 이유로 멘토에게 배우는 학습 방법을 선택하는 경우에는 여기에서 소개하는 다른 학습 방법과 조합하는 것이 좋다.

또 한 가지 주의할 점은 멘토도 인간인 이상 가장 우수한 멘토조차 개인적인 취향 등에 의해 편향된 지식이나 정보, 방식을 가질 수 있다는 것이다. 폭넓은 환경에서 다른 프로그래머들과 함께 교류하는 것이 중요하다. 온라인 상에 있는 프로그래밍 커뮤니티에 참여하거나 지역의 프로그래밍 미트업에 참여하는 등 현재의 멘토와는 다른 시점을 가진 다른 멘토를 찾는 것도 좋다.

실전을 통해 배우기

실전을 통해 배우는 것은 기본적으로 무료다. 구축에 필요한 툴이나 서비스에 드는 비용을 제외하면 비용이 들지 않는다. 이것은 독학으로 프로그래머가 되는 경우와 거의 비슷하다.

본질적으로 이 학습 방법은 그때그때 필요에 따른 시기적절한 학습이 된다. 구축하고 있는 것을 다음 단계로 진행하기 위해 어떻게 하면 좋을지 생각해야 하고 그를 위해 리서치를 하고 그 방법에 대해 배우고 그것을 적용한다.

검색을 하느라 몇 시간을 보내야 할지도 모른다. 힘든 작업이 될 수도 있지만 가장 뛰어난 학습 방법 중 하나다. 보다 많은 정보를 기억하거나 발전하기 위해서는 가장 좋은 방법 중 하나다.

단 이 학습 방법의 최대 리스크는 카피&페이스트에 빠질 가능성이 있다는 것이다. 예를 들어 클릭 가능한 버튼 요소를 만들고 싶다고 할 때 Stack Overflow에서 답변을 찾았더니 누군가가 코드를 공개해놓았다고 하자. 쉽게 복사해서 붙여서 쓸 수 있다. 이렇게 코드 내용을 이해하지 않으면 실제로는 학습이 되지 않는다. 이런 경우에는 일단 잠깐 작업을 멈추고 스니펫을 이해하기 위해 공부 시간을 들여야 한다.

어떤 프로젝트를 완성한다는 목표를 갖고 공부를 한다면 프로그래밍 학습을 위한 훌륭한 모티베이션의 원천을 갖게 되는 셈이다. 실제로 학습한 것을 개인적인 프로젝트에 응용할 수 있는 사람은 그렇지 않은 사람보다 학습 진도가 훨씬 빠르다.

 

 

 

 

Facebook Comments

About Author

월간 app의 프로필 사진

국내 모바일 산업과 창업 생태계를 응원합니다. 모바일 트렌드에 대한 전문 컬럼을 기고하거나 유망한 스타트업을 소개하고 싶으시면 연락바랍니다. 적극 수용하겠습니다~♥

댓글 남기기