본문 바로가기
프로그래밍

프로그래밍 공부 - 무엇으로해야하는가?

by Couldi 2021. 10. 2.
반응형

프로그래밍을 공부하는데 뭘가지고 공부해야하는지에 대한 내 지극히 개인적인 의견이다. 

 

공부할 컨텐츠는 크게 3가지 정도로 나눠볼 수 있다.

  • 온라인 강의
  • 웹문서(공식문서, 기술블로그 등등)

각각의 장단점이 있고 상호보완해가며 사용해야하는게 맞는 방법이긴 하다. 하지만 각 공부 단계별로 주가 되어야 하는 컨텐츠가 다르다.

 

초보 : 강의를 중심으로 공부하라.

당신이 프로그래밍을 처음 공부하는 초보라면, 강의를 중심을 공부하는 것이 100% 낫다. 

책이 가장 저렴한 입문 방법이고, 다른 학문들을 공부하던 익숙한 방식이라 선호할 수는 있겠지만, 적어도 프로그래밍 공부에 있어서 만큼은 좋은 방법이 아니다.

 

초보인 경우 프로덕트를 만들어 본다는 입문용 서적을 찾아보게 되는데, 이 입문용 서적에 담긴 내용은 한계가 있다.

입문용 서적의 한계는 다음과 같다.

 

1. 책에 담기지 않은 많은 고려사항들이 있다.

입문용 서적은 기본적으로 저자가 실습하는 과정을 담고 있다. 이게 동적으로 보여져야하는 내용을 정적인 책에 담으려하니, 중요하지만 담기지 못하는 부분이 많다. 책의 저자가 신경을써서 중요한 내용을 모두 담아낸다 하더라도, 단계단계 넘어가는 과정 중에 생략되거나 독자들이 이해할꺼라 생각해 적지 않은 부분들이 있기 마련이기 때문이다.

 

2. 책으로 나온 기술을 이미 많이 바뀌었다.

아무리 최신으로 나온 책을 사더라도, 집필과정 중 시간은 소요되고, 세부적인 내용이 바뀌어 있을 수도 있다. 이를 해결하기 위해 책에서 나온 버전을 맞춰서 설치를 진행하고, 실습을 해보게 되는데 구버전이 가지고 있던 문제들을 해결하고 더 좋아진 최신버전을 두고서 책때문에 옛날 버전을 공부하는 것은 답답한 일이다.

 

3. 책이 담고 있는 내용이 많지가 않다.

프로덕트를 만들어가는 과정을 스크린 샷을 찍어 하나하나 붙여넣고, 코드도 적어두고 하기 때문에, 책이 두꺼워도 다루고 있는 내용이 별로 없다. 책이 담고 있는 내용은 웹문서가 담고있는 튜토리얼 수준, 혹은 그보다 살짝 더 진화된 형태인 경우가 대부분이다.

 

그래서 가능하다면 강의를 중심으로 공부해라. 물론 최신화가 되어있지 않을 수 있다는 점에서는 책과 같은 문제를 가지고 있을 수 있다. 하지만 강의에서 강사가 어떤 순서로 코드를 작성하는지, 어떻게 실행을 시키는지 등 그 과정을 찬찬히 살펴보는 것만으로도 프로그래밍의 감을 잡을 수 있다.

최신화가 되어 있지 않은 부분들은 강사와의 소통이나, 다른 웹문서들을 통해서 보완이 가능하다. 게다가 요즘은 유투브가 활성화 되어있기에, 최신화된 강의도 금방금방 찾아 볼 수 있기도 하다.

 

좋은 강의를 고르는법

1. 재미있어야한다.

초보자에게 강의를 지속하게 해주는 힘은 재미이다. 다른 요소들도 중요하지만 재미가 있어야 계속 공부할 흥미가 생긴다. 그래서 재미있는 강의를 골라라.

 

2. 관련 리소스를 설명해주는 강의를 들어라.

가끔 강의들을 보면, 이건 이렇게 하는 겁니다. 이건 이렇게 하세요. 뭘 복사해서 붙여넣으세요. 그리고 작성해보세요. 라는 식의 강의들이 많다. 당신이 단순히 시간때우고, 흥미위주로 수업을 듣는다면 그런 강의도 나쁘지 않다.

하지만 제대로 프로그래밍 공부가 하고 싶다면, 그런 밀키트 같은 강의는 한편으로 치워두고, 관련된 자료를 어디서 찾아볼 수있는지, 이런 문제가 생기면 어떻게 해결해야하는지 등을 설명해 주는 강의를 들어라. 그런 강의가 좋은 강의이다.

물고기를 잡아주는 강의보다 잡는법을 알려주는 강의가 좋다. 밀키트같은 강의는 접어두어라.

 

3. 직접 만들어보는 강의를 고를 것

이게 3번째다. 1과 2를 만족한 상태에서 3번째 강의를 찾아라. 내가 회사에 강의 철학을 잘못 불어넣었는지 단순히 '직접 만들어 보는' 만을 주구장창 광고하는 업체들이 우후죽순 늘어났다. 초보자에게 아얘 도움이 안된다고 할 수는 없지만, 이걸 왜 강조해서 마케팅을 하는지 이해할 수가 없다. 이건 기본적인 거다. 요리학원에서 요리법을 가르치면서 요리를 따라 만들어보게 하지 않는다면 그게 뭐하는건가 싶을꺼다.

그런 당연하고 기본적인 걸로 우리는 남들과 다르다 라고 광고하는 세태가 참으로 한심스럽다.

 

정리하자면, 재미있고 관련 리소스를 많이 알려주며, 프로젝트 중심으로 직접 만들어가며 배우는 강의를 찾아 들어라.

개인적으로 Udemy에서 Bootcamp용으로 나오는 강의들을 추천한다. 한국에서 제공되는 강의 서비스의 대부분은 이 강의들을 파편적으로 베낀 강의에 불과하고, 그 또한 제대로 못 베낀 강의가 많다. 그래도 최근에는 한국 강의의 퀄리티들도 많이 좋아졌다. 기회가 되면 업체별 강의들을 리스펙하고 디스하는 글도 적어봐야겠다.

 

강의만으로 공부하지 마라

초보자에게 제일 중요한 말이다. 강의를 중심으로 공부하되 강의만으로 공부하지 마라. 강의만으로 공부하게 되면 강의가 끝나고나서는 아무것도 못하게 된다. 누군가 가르쳐줘야한다는 생각으로 다른 강의를 찾아 전전하고 실력은 늘 제자리에 머물게 된다. 강의로 기본지식과 물고기 잡는 법을 알았다면, 내가 원하는 프로덕트를 만들어보며, 웹 문서들을 살펴보고, 영상을 찾아봐야한다.

강의를 통해 생각하는 방식을 익혔다면, 그 방식을 토대로 문제를 정의하고 해결해나가는 과정을 능동적으로 해봐라. 물론 혼자서는 어려울 수 있다. 그럴때는 동아리나 스터디 모임을 적극 활용하는 것을 추천한다.

나보다 더 잘하는 친구의 도움을 받거나, 내가 겪었던 어려움을 겪는 다른 친구를 도와가며 크게 성장할 수 있는 기회의 장이 열리게 된다. 뜻이 맞는 친구를 찾아 함께 개발일을 시작할 수 있을지도 모른다.

 

강의를 통해 기본기를 익혔다면, 문제를 정의하고 해결하는 시도들을 지속적으로 해보고, 함께 성장할 동료들을 찾아라.

 

중수 : 이젠 책과 웹문서가 더 중요하다.

이제 뭐 좀 알겠다 싶은 중수가 된다면, 이제 강의보다는 책과 웹문서를 통해 공부하는 것이 중요하다.

 

초보때와 다른 점이 있다면 봐야할 책과 웹문서의 성격이 달라진다는 점이다.

 

아무래도 초보때는 잘모르다 보니 프로덕트를 만드는 방법 중심으로 공부 할 수 밖에 없다.

인터넷에 '제육볶음 하는 법'을 검색해보고 괜찮다 싶은 레시피를 찾아 따라해보는게 초보자의 공부법이였다면,

이제 중수는 '요리' 자체에 대해 공부하기 시작해야한다.

 

무엇이 좋은 요리인지에 대한 고민, 좀 더 나은 맛을 위한 고민 등 단순히 만든다의 개념을 넘어, '어떻게, 잘' 이 중요해진다. 즉, 방법론에 대한 고민을 시작해야할 때라는 것이다.

 

기술 트랜드의 변화는 웹 서핑을 통해 해결할 수 있다. 초보 때부터 꾸준히 공부하며, 코드를 보는 실력이나 문제를 정의하고 해결하는 능력이 많이 성장했기 때문이다.

하지만 방법론에 대한 부분에 대해서는 답답함을 느끼게 되는데, 주변에 좋은 선배나 동료가 없는 경우 더 크게 느낀다.

 

'나는 코드를 이렇게 짰는데 이게 맞는걸까. 다른사람들은 어떻게 코드를 짰을까. 이방법이 최선일까. 다른 더 좋은 방법이 있지 않을까 등' 아는게 많을 수록 고민만 더 많아진다.

 

그렇기에 막연히 고민만 하지말고 관련해서 도움을 줄수 있는 사람을 찾아나서거나 비슷한 고민을 했던 사람들의 기록을 찾아보는 것이 좋다. 이런 내용을 다루는 강의들도 많지 않기때문에 책이나 개발블로그들을 찾아보는게 베스트이다.

 

(관련 강의가 많이 없는 이유는 단순하다. 강의를 만들어 파는 입장에서 돈이 안되기 때문이다. 프로그래밍 초보 시장보다 시장규모가 많이 작아지고, 이런 내용을 강의 할 수있는 사람의 몸 값은 높기 때문에 강의자체는 더 비싸진다. 그러니 강의는 안팔리고, 안팔리니 만들 생각을 안하고, 악순환의 반복이랄까..)

 

당신이 개발자이고 좋은 사수를 만났다면, 이런 고민은 저절로 해소될 수 있을 것이다. 하지만, 그런 행운은 모두에게 오지 않는다. 그렇다면 성장을 위해서는?

 

좋은 글을 찾아다녀라. 당신이 겪게되는 고민과 관련된 책들도 찾아보고, 비슷한 고민을 하는 사람, 극복한 사람들을 찾아나서라. 개발 커뮤니티나 스터디, 친목 모임 등이 생각지도 못한 답을 가져다 줄지도 모른다.

 

고수 : 당신은 개발자가 아니다.

스스로 고수라는 생각이 든다면 당신은 더 이상 개발자가 아니다. 코딩의 신(God)이다. 나는 신에게 조언을 남길만한 능력이 없다.

자신 스스로 고수라고 칭하는 개발자는 없다. 남들이 보기에 고수이고 대단한 개발자라 하더라도, 진정한 고수는 아직도 해결해야할 수많은 고민때문에 스스로를 고수라고 생각하지 않는다. 그저 남들보다 조금 더 고민해봤고, 조금 더 알게된 사람일 뿐이라는 생각을 가지고 어떻게 성장해나야할지 끊임없이 고민 중일 것이다. 진정한 고수는 어떻게 성장해야할지, 어떻게 더 공부해야할지 안다. 그런 사람이 주변에 있다면, 당신이 개발자든 개발자가 아니든 복받은 것이다.

반응형

댓글