ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래밍 공부방법은 어떻게 하는거야?
    프로그래밍/공부방법 2020. 7. 3. 15:17

    글 읽기를 앞서, 이 글은 필자의 주관적인 의견이 많이 담겨져 있는 글입니다. 그러므로 정답이라고 보기보다는 참고용으로 봐주시면 감사하겠습니다.

     

     

     

    목차

    • 프로그래밍 추세
    • 필자의 사람들의 프로그래밍 관심에 대한 생각
    • 여러분들은 어떻게 공부를 해오셨나요?
    • 프로그래밍 공부는 주입식 교육을 통해 절대로 이루어질 수 없다.
    • 프로그래밍 공부는 암기식 교육을 통해 절대로 이루어질 수 없다.
    • 너는 전공자라 우리의 마음을 모르지 않아?
    • 나의 공부방법 경험
    • 나의 공부방법 성공과 실패
    • 처음 언어를 배울때 추천하는 공부방법
    • 처음 프레임워크를 배울때 추천하는 공부방법
    • 어느정도 익숙해졌을때 추천하는 공부방법
    • 결론

    1. 프로그래밍 추세

    올해로 2020년이 되었습니다. 그 전부터 꾸준히 성장하고 있는 IT 계열, 특히 소프트웨어에서는 비약적인 성장을 이루고 있습니다. 생각만 해왔던 것들이 현실이 되었고 그만큼 프로그래밍 공부가 선택이 아닌 필수가 되고 있습니다. 확실히 제가 대학 전공을 컴퓨터공학과로 정했을 때(2015~2016년도)만 해도 부모님이 걱정을 많이 하셨습니다. 그때만 해도 프로그래머가 3D 업종 중 하나였으며 힘든 직업이라고 다들 생각해왔던것 같습니다.

    하지만 지금 소프트웨어가 생활에 있어서 없어서는 안되는 존재가 되었으며 회사와 창업에 있어서 소프트웨어는 선택이 아닌 필수가 되었습니다. 당연하게 개발자의 수요 또한 증가했습니다. 또한 정부에서는 코딩 교육을 의무화 하고 있습니다.

    전과 비교했을때 프로그래머에 대한 대우가 좋아졌으며 프로그래밍에 대한 교육 열풍 또한 증가했다고 느낄 수 있습니다. 프로그래밍을 시작하고자 하는 사람 또한 늘었습니다.

     

    2. 필자의 사람들의 프로그래밍 관심에 대한 생각

     

    저는 긍정적인 방면보단 부정적인 방면에 집중하고 있습니다.

    프로그래밍 교육에 대한 열풍이 느는 동시에 광고 또한 많아지고 있습니다. 광고, 몇몇 유튜버들은 말합니다. 누구나 프로그래밍을 시작할 수 있으며 마음만 먹을 수 있으면 서비스를 만들 수 있다고. 하지만 컴퓨터 과학이라는 학문은 워낙 방대해 하루종일 공부해도 부족하다고 생각합니다. 물론 다른 분야도 마찬가지지만, 실습과 이론 모두 탄탄해야하는 컴퓨터 분야는 더더욱 힘들다고 생각합니다. 시작하는 사람들에게 꿈만 제공하는 광고와 유튜버들과 달리, 입문하는 사람들에게 실패와 절망감을 안겨주고 있습니다.

     

    3. 여러분들은 어떻게 해오셨나요?

    저는 평소에 해왔던 입시공부와 프로그래밍 공부방법이 전혀 달랐습니다. 프로그래밍의 특수성으로 공부방법이 달라질 수 밖에 없었고,

    효과적인 공부방법을 찾기 위해 노력했습니다. 먼저 제 글을 읽기 전, 여러분들의 공부방법은 무엇인지 생각해보시길 추천합니다. 또한 프로그래밍을 시작해보신적이 있거나 이미 하고 계시는중이라면 자신과 저와의 공부방법 어느부분이 다른지 생각해보시면 좋을 것 같습니다.

     

    4. 프로그래밍 공부는 절대로 주입식 교육으로 이루어질 수 없다.

    확실히 몇 년 사이 학원 또는 인터넷 강의 교육이 늘었습니다. 강의를 보면서 느낀점은 이와 같습니다.
    공부하는 방법을 쏙 빼놓은 채 문법 또는 라이브러리 교육에 집중합니다. 클론 코딩으로 당신도 할 수 있다고 느끼게끔 해주며, 강의를 들으면 그 상태로 할 수 있다고 착각하며 다른 강의를 이어나갑니다. 강의를 수료하고 나서 하나를 만들지 못한다고 생각하며 '나는 프로그래밍에 재능이 없구나' 라며 공부를 중단하는 경우가 많습니다.

    공부방법이 잘못됐습니다. 프로그래밍 공부를 할때 공부방법이 옳지 않으면 프로그래머로써 성장할 수 없습니다.

     

    5. 프로그래밍 공부는 절대로 암기식 교육으로 이루어질 수 없다.

    프로그래밍 공부는 절대 암기식으로 이루어져선 안됩니다. 입문하는 사람들은 워낙 방대하고 프로그래밍의 많은 문법과 기능을 보고 당황해합니다. 공부의 진도를 나아가고자 모두 외우는데 이는 좋지 않은 방법입니다. 앞에서 말했다시피 프로그래밍의 기능과 코드는 워낙 방대합니다. 다양한 기능과 모듈을 모두 외울 수 없습니다. 외우는건 오히려 진도를 방해합니다.

     

    6. 너는 전공자라 우리의 마음을 모르지 않아?

    물론 저는 컴퓨터공학과를 다니고 있는 학생입니다. 하지만 저는 프로그래밍을 독학해왔고 지금도 꾸준히 독학중입니다. 저는 최대한 누구의 도움을 받지 않으려고 하며 이것이 저에게 있어서 최적화된 공부방법이라고 생각중입니다.

    19살 수능끝난 직후부터 프로그래밍 공부를 시작했으며 현재 4~5년째 진행중입니다. 인터넷 강의도 보고 학원도 다녀봤으며, 책으로 공부도 해봤습니다. 학교 수업은 안들은 채 독학했습니다. 전공자이지만 비전공자처럼 공부해왔습니다.

     

    7 . 나의 공부방법 경험

     

     

     

    저 또한 공부방법을 처음부터 알았던건 아닙니다.

    이렇게 공부하는 방식이 맞는지 의문이 항상 들었었고, 어차피 해야된다는 생각으로 맨땅에 헤딩 방식으로 공부해왔습니다. 흔히 말하는 삽질을 수만번 해오면서 이렇게 저와 같은 길을 걷는 방법보단 좀 더 빠른 지름길을 알려드리고자 합니다.

     

    19살때 무작정 학원을 등록했습니다. 공부하는 방법도, 프로그래밍도 전혀 몰랐습니다. C언어가 입문하기 어려운 프로그래밍 언어인지도 모른채 학원을 다녔고 하루종일 기본문법도 못배운체 끝나게 됩니다. 결국 아무것도 모르는 상태에서 컴퓨터공학과 새내기가 됩니다.

     

    1학년 1학기가 되었을 때 학교에서 자바라는 프로그래밍 언어로 시작했습니다. 물론 새내기라는 이유로 공부를 하지도 않고 수업도 안들었습니다. 매일매일 놀러가고 친구들과 술마시는걸 일상으로 삼았습니다.

    이런 삶을 계속 살아오다가 기말고사 전에 불안한 마음을 가지고 자바공부를 시작했습니다. 컴퓨터로 먹고 살고자 컴퓨터공학과에 들어왔는데, 기본도 못하면 안될꺼 같은 마음이 컸었습니다. 혼자 집에서 생활코딩 강좌를 이해할때까지 머리를 쥐어짜며 시험기간동안 새벽 3~4시까지 공부했습니다.

     

    1학기를 마치고 나서 자바프로그래밍 성적을 A 받았습니다. 성적이 잘나와 기분은 좋은지라, 제대로 해보고 싶은 마음이 생기기 시작합니다.

    선배가 자바 프로그래밍 언어로 어플리케이션 개발을 할 수 있다고 알려주셨습니다. 유튜브 강의 한개를 추천받고 모를때 '이렇게 검색해봐' 라는 몇몇 조언을 듣고 나서는 독학을 강행했습니다. 저는 중학교때부터 어플리케이션을 개발하고 싶다는 꿈 하나로 컴퓨터공학과에 진학하게 되었기에 독하게 책 한페이지를 이해못했으면 하루종일 구글링하고 하루종일 들여다보았습니다. 방학동안 하루에 12시간~14시간정도를 한달반 정도 했었습니다.

     

    안드로이드 어플리케이션을 어느정도 개발할줄 아니 다른 기술을 배워보고 싶어졌습니다. 처음에는 어플리케이션과 소통하고자 php + mysql을 공부하였고 무작정 책 하나 사서 검색을 동반해 서버개발을 시작했습니다.

    그 이후에는 React.js & React-Native, Python을 배운 후 Django, 학교 수업을 위한 C++ 를 모두 독학을 강행하였고 지금은 어플리케이션, 프론트엔드, 백엔드와 인프라를 갖출 수 있는 프로그래머가 되었습니다.

     

    8. 나의 공부방법 성공과 실패

    무작정 책을 산건 좋은 방법이였습니다. 우연히 잘 맞는 공부방법이였고 잘 맞았습니다.

    책을 무작정 사는 이유는 단순하면서도 중요합니다. 책의 '목차'를 보기위해서입니다. 모든 공부에는 순서가 있습니다.

    수학에서도 덧셈 나눗셈을 먼저하고, 곱셈을 배웁니다. 프로그래밍도 마찬가지로 변수와 연산자를 배운 후 함수와 클래스 등등을 배웁니다.

     

    하지만 저는 책을 모두 다 보는 실수를 범했습니다. 여러분들이 항상 책을 사게되면 이 책은 끝내자라는 마인드를 가지고 계실때가 있습니다. 그렇지만 책을 통해 배우고 끝으로 갈 수록  '자주 쓰지 않아 까먹을 것 같다.' 이거였습니다. 책은 친절하기 때문에 모든 것을 설명하고자 합니다. 자주 사용하지 않는 기술을 배우다가 프로젝트 할 타이밍을 놓치게 됩니다.

     

    그러면 어떻게 해야될까요? 저는 공부를 시작하기 전 기술 또는 프로그래밍 언어를 무작정 마스터 하기보다는 기술의 사용 용도를 먼저 파악합니다. 예를 들어 Python프로그래밍 언어는 기본적인 프로그래밍, 웹 서버 프로그래밍(Django, Flask), 크롤링 등등 있습니다. 만약 Python으로 서버 프로그래밍을 하고자 Python을 배울 때, 서버 프로그래밍을 생각하며 중요하다고 생각되는 부분은 메모와 표시를 꼭 해둡니다. 굳이 지금 배울 필요가 없다고 생각하면 과감하게 넘어가실 필요가 있습니다. 나중에 배우면 더 쉽기 배우실 수 있으니깐요.

     

    9. 처음 언어를 배울때 추천하는 공부방법

     

     

     

    축하합니다. 당신은 프로그래밍 세계로 발을 딛으셨습니다. 그와 동시에 수많은 좌절과 절망을 느끼실 겁니다.

    컴퓨터는 매우 정직하기에 처음으로 프로그래밍 언어를 배우실 때는 정직하게 배우셔야 합니다.

     

    앞서 말했던 것처럼 책을 무작정 삽니다. 베스트셀러면서 초보자용으로 아무거나 사시면 될 것 같습니다. 책 구매에 신중하실 필요가 없습니다. 저희는 목차를 보고자 사는거니깐 상관없습니다. 책 하나로 부족하실 것 같으면 인터넷 강의를 보셔도 됩니다. 하지만, 비싸게 인터넷 강의를 돈주고 살 필요는 전혀 없습니다. 찾아보면 친절한 무료자료들은 어디든 발견할 수 있으니깐요.

     

    책의 목차를 제일 먼저 펴봅시다. 목차에는 어떤것을 배울지, 공부 순서를 알러주는 큰 좌표입니다. 책을 차근차근 읽어나가면서 하나하나 직접 예제를 해봅니다. 이해를 완벽하게 하셨으면 다음 페이지로 넘어가고, 이해를 못하셨으면 구글링을 해봅시다. 이해를 할 수 있을때까지 검색을 하고, 책을 들여다 봅니다. 이해하셨으면 자신이 이해한 방식으로 메모합니다. 이걸 반복하시면 됩니다. 말만으로는 간단하고 정말 쉽습니다. 하지만 간단해서 콧방귀를 뀔만큼의 예제도 있고 귀찮은 부분도 있습니다. 하지만 직접 실행으로 옮기는 건 생각보다 어렵습니다.

     

    검색하는 방법이 중요합니다. 결국 프로그래머는 구글링이 반이다 라는 말이 나올정도로 검색을 일상화하시고, 메모와 정리를 꾸준히 하시면 성장하는 자신의 모습을 직접 체감하실 수 있습니다

     

    어느정도 배웠다 싶으면 책을 덮습니다. 책을 끝까지 보실 필요 없습니다. 수많은 예제를 입력하고 자신이 이해한 방식으로 공부를 하게되면 어느정도 자연스럽게 프로그래밍을 할 수 있습니다. 어느정도 자주 사용하는 문법을 배우셨으면 토이프로젝트(간단히 자신의 수준에 맞는 프로젝트)를 시작합니다.

     

    간혹 욕심이 많으신 분들은 토이프로젝트의 수준을 높게 책정하실 때가 있습니다. 해내실 수 있으시면 정말 좋지만, 그런 확률은 희박하기에 자신이 해낼 수 있는 수준을 정하시면 됩니다. 예를 들어 html과 css의 기본기를 배우고 나서 토이프로젝트를 정할때, 처음부터 데이터베이스와 연동하는 게시판이라던가, 쇼핑몰같은 웹페이지는 만들기 힘들겁니다. 하지만 html과 css만으로 만드는 자신의 포트폴리오 만들기, 자기소개 페이지 정도가 있을 것 같네요. 토이프로젝트를 2~3개 정도 해내게 되면 어느정도 자신감이 붙어 나아갈 수 있게 됩니다.

     

    10. 처음 프레임워크를 배울 때 추천하는 공부방법

    어느정도 언어를 배우시고, 자신감이 붙으셨을겁니다. 좀 더 많고 큰 프로젝트를 만들기 위해서는 프레임워크 또는 라이브러리를 배우는 건 필수입니다. 저는 프레임워크를 무작정 넘어가는 좋지 않은 습관이 있어 자주 헤메었지만, 여러분들은 그러지 않으시길 바랍니다. 또한 프레임워크 또는 라이브러리는 그 언어의 문법을 어느정도 마스터한 이후에 하는걸 추천드립니다. 그렇지 않게되면 배우다가 다시 문법책을 피시게 될거니깐요.

     

    프레임워크를 처음 공부하시게 되면 책을 구매하시는건 필수가 아닌 선택입니다. 그 프레임워크의 레퍼런스가 잘 되어있으면 구매하실 필요가 없고, 레퍼런스가 부실하다(예를 들어 안드로이드 스튜디오 같은,,,) 싶으면 똑같이 목차를 보기 위해 구매합니다.

     

    레퍼런스가 있을 경우에는 공식 레퍼런스를 먼저 찾아보고, 이해를 못하시면 똑같이 구글링을 열심히 합니다. 수많은 예제를 보고 감을 익히며 직접 입력해보고 사용해봅니다. 에러가 나면 에러 트랙킹을 보면서 고쳐봅니다. 모르면 똑같이 구글링을 합니다.

    사실 공부방법은 별거 없습니다. 하지만 실천이 제일 어렵습니다. 꾸준히 프레임워크 또는 라이브러리를 자신이 원하는 방향, 목표를 도달할 때까지 공부하시면 됩니다.

     

    11. 어느정도 익숙해졌을 때 추천하는 공부방법

    어느정도 익숙해졌을때는 자신의 공부방법이 자리잡았을테고, 이 글을 읽을 필요가 사실상 없으십니다.

    그렇기에 현재 저의 공부방법을 소개할까 합니다.

     

    예를 들어 새로운 언어를 배울 때를 살펴봅시다. 여태까지 수많은 언어들을 경험해보았기에 배우는 새로운 언어도 그 전과 비슷할 수 밖에 없습니다. 어떤 언어와 비슷하고 어떤 언어와 차이점을 비교하며 간단히 이해할 수 있을 정도로 메모해봅니다. 완전 새롭게 배우는게 아닌 이 전에 알고 있던 내용을 응용하기에 처음 프로그래밍을 배울때와 달리 수십배, 수백배는 빠르게 배울 수 있습니다. 완벽하게 그 언어를 이해하는건 아니지만요.

     

    그 언어를 배울때 저는 항상 목표를 미리 정합니다. 파이썬을 배울때 처음의 목표는 크롤링이였고, 언어의 기초를 배우자 마자 Beautiful Soup라이브러리를 사용해보았습니다. 그리고 Selenium을 배우고 나서 파이썬의 매력에 빠져 Django, Flask를 이용해 서버 개발도 해보았습니다. 처음이야 어렵지 그 후에 언어와 프레임워크를 배우는건 어렵지 않습니다. 그저 잘 사용하는 법을 익히는 것이 어렵습니다.

     

    12. 결론

    오늘날에 프로그래밍의 장벽은 낮습니다. 하지만 배워야 할 것, 익혀야 할 것은 모두 산더미입니다.

    광고나 유튜브에선 프로그래밍의 장벽이 낮아 모두들 할 수 있다고 자신감을 불어넣어줍니다. 1년도 배우지 않은채 바로 나도 취업할 수 있나? 라는 망상에 빠지게 됩니다. 물론 직접 경험하는 것, 어느정도 프로그래밍을 배우는 것을 경험해보는것 모두 나쁘지 않지만 프로그래밍과 전혀 관련이 없는 사람이 배우는건 시간낭비일 뿐이라 생각됩니다.

     

    프로그래밍 공부방법은 우리가 이전에 배웠던 입시 공부방법과 매우 다릅니다. 완전 이론을 빠삭해도 프로그래밍을 전혀 못하는 사람이 인서울대학교 4년제에 넘치며, 코딩을 매우 잘해도 프로그래밍 이론을 전혀 모르는 사람도 많습니다. 밸런스를 맞춰 기본기와 프로그래밍 실력을 모두 갖춰야하며 수많은 노력을 쏟아부어야합니다.

     

    시작하는 분들께 말씀드리고 싶습니다. 정말 프로그래머로 먹고살고자 하면 이를 가셔야한다고. 자신이 미친듯이 프로그래밍을 해야 뛰어난 프로그래머가 된다고. 긴글 읽어주셔서 감사합니다.

    댓글

Copyright 2020. Alpox(양민열)