시작하는 분에게 권하는 프로그래밍 잘 하는 법
개요
이 글은 다음의 분을 위해 작성하였습니다.
- 비전공자이면서 프로그래밍을 시작하려 하는 분
- 전공자이지만 프로그래밍 실력이 늘지 않는 분
먼저 동기부터 살펴봅시다.
이 글을 읽고 있는 독자는 어떤 이유로 프로그래밍을 배우고자 하나요? 게임을 하다가 '나도 이런 게임을 만들고 싶다.' 던가 앱 서비스를 이용하는데 영 불편해서 '차라리 내가 만들고 말지!' 또는 학교에서 프로그래밍 수업을 받기 때문에 '어쩔 수 없이 배워야 한다.' 는 등 다양한 이유가 있을 것 같습니다.
그런데 이런 내적 동기 또는 외적 동기의 유형과 상관없이 결국에 프로그래밍 실력을 갖추게 되는 동력을 주는 동기는 나에게 꾸준함
을 줘 결국에는 성취할 수 있게 하는 무엇입니다.
매일 학습한다면 미래의 나는 유능한 프로그래머가 되어 있을껄?
자신이 어떤 유형의 사람인지 살펴볼 필요가 있습니다. 첫 번째 행동형 유형입니다. '아 됐고, 코드 따라 해보다 보면 늘겠지.' 라고 생각하는 유형입니다.
두 번째 유형은 생각이 앞서서 실행에 잘 옮기지 못하는 유형입니다. 학습해야 하는 내용을 분석하고 생각하고 정리하지만 막상 코딩을 못하는 유형입니다. 이 두 가지 유형을 행동형
과 사고형
이라고 정의하겠습니다.
매일 학습을 하기 위해선 두 가지 유형 중 자신이 어디에 속해 있는를 먼저 확인할 필요가 있습니다. 본인의 유형을 살펴야 하는 이유는 꾸준함
을 유지하기 위해 해야 할 일이 다르기 때문입니다.
프로그래머는 이론가가 아닙니다.
영화 평론가는 깊은 분석력과 날카로운 문장력이 필요한데요, 그럼에도 불구하고 영화 평론가는 영화 감독
이 될 수 없습니다. 영화감독은 사고력과 행동력을 고루 갖춘 전문 능력을 갖춰야 하지만 영화 평론가
는 사고력이 집중력으로 발달된 전문가이기 때문입니다.
프로그래머는 이해해야(사고) 하고 이해한 것을 코딩(행동)해야 하므로 사고하고 행동하는 능력이 고루 발달해야 합니다. 즉, 행동력이 강한 분은 사고력을 키워야 하고, 사고력이 강한 분은 행동력을 키우는 방향으로 학습 전략을 세울 수 있습니다.
시작하는 프로그래머에게 필요한 학습은 알고리즘 학습이 아닙니다.
처음 프로그래밍을 배우게 되면 컴퓨터에 대한 간략한 개요와 프로그래밍 언어의 구성에 대해 배우고 대체로 알고리즘을 학습하는 방향으로 학교나 학원에서 가르칩니다. 그런데 과연 이 방법이 옳은 교육 방향이고 학습 방향일까요? 물론, 바로 코딩을 알려주는 것 보다야 기반 지식이 쌓이니 맨땅에 해딩하는 느낌은 안들게 되겠지만 제 생각은 좀 다릅니다.
위에서 표현한 것처럼 프로그래머는 사고력과 행동력이 필요합니다. 사고력은 문제를 해결하기 위해(문제를 풀기 위해) 전개하는 힘이 되고, 행동력은 전개한 내용을 실행하는(코딩 하는)능력이 되는데요, 마치 위의 방식은 영어를 잘하기 위해서 영어 문장 구조를 학습 시키는 것과 비슷합니다. 결과는 영어는 알겠는데 영어로 말하기가 안되는 부작용이 생기는 거죠.
그렇다면 어떻게 해야 하는 건가요?
본인이 사고유형 이라면 먼저 프로그래밍 사고 학습을 먼저 해야 합니다. 프로그래밍 사고 학습은 컴퓨팅 사고을 참고하세요. 어느 정도 이론적 학습이 되었다면, 이것을 바탕으로 행동력
을 학습해야 합니다.
본인이 만약 행동유형 이라면, 코드 따라하기를 하세요. 먼저 짧은 코드로 실행되는 코드 예제를 따라 하는게 좋습니다. 그리고 결과를 확인 한 후 역으로 왜 이런 결과가 나왔는지 코드 분석해야 합니다. 어느 정도 학습이 되면 컴퓨팅 사고
를 이론 학습하세요.
어느 정도 학습 패턴이 생기면, 프로그래밍 실력을 향상 할 수 있는 작은 프로젝트를 진행하는게 좋습니다. 너무 어려운 것을 잡으면 안됩니다!
무엇보다 가장 중요한 것은 동기
의 유지와 새로운 동기
부여 입니다.
사람은 재밌어야
꾸준히 할 수 있는 동력이 생깁니다. 재밌는 동기는 대부분 내적 동기로부터 오는데요, 그렇다고 마냥 외적 동기가 나쁜 것 만은 아닙니다. 왜냐하면 우리는 좋은 성적을 받아야 하고, 좋은 환경의 회사에 취업하기를 원하고, 그리고 높은 연봉을 받기 원하는 욕구가 있기 때문인데요, 제가 강조하고 싶은 것은 내적 동기든 외적 동기든 학습이 진행되면서 그 동기가 사라지지 않도록 강력한 동기
를 찾고, 또 단계에 따라 새로운 동기
를 부여 하는게 중요하다는 것을 강조하고 싶습니다. 마치, 마라톤 완주를 위해 완급 조절이 필요한 것 처럼, 꾸준함을 발휘하려면 때에 맞는 적절한 동기
와 동기부여가 반드시 필수입니다.
정리
간략히 어떻게 해야 프로그래밍을 잘 할 수 있는지 살펴봤는데요, 자신이 어떤 스타일을 가지고 있는지 살펴보고 그 스타일에 맞게 학습 방법을 선택해야 한다는 것. 크게는 행동유형과 사고유형으로 나눌 수 있고 세부적으로는 마라톤을 완주하기 위해 본인의 성격이 급하거나 차분한 요소를 파악해서 자신을 분석할 필요가 있습니다. 그런 후에 적절히 이론 학습과 실습 학습을 잘 배치해서 전략적으로 학습 방향을 잡고 동기
를 계속 유지하는 노력으로 자신만의 스타일로 프로그래밍을 잘하게 되는 방법을 찾을 수 있다고 믿습니다.