본문 바로가기

study/etc

프로그래밍 공부 방법 - 네이버 지식인 답변 펌

 

네이버에서 우연히 보게된 지식in 답변 중 하나이다

 

꿈과는 조금 멀어졌지만 프로그래밍을 좋아라 하는 나로써는

 

공감과 회의를 느끼게 하는 답변이었다

 

 

보관하고 싶은 답변인데..

 

네이버 지식인은 티스토리로 보내기가 안되므로 -0-;

 

네이버와 질문 작성자 답변 작성자의 양해도 구하지 못하고 퍼온걸

 

여기를 빌어 양해를 구합니다.

 

 

 

답변만으로도 좋은 글이라 질문은 퍼오지 않았습니다.

 

 

---------------------------------------------------------------------------

 

 

지금 바로 오프라인 서점으로 가세요. 그리고 한 권 한 권 꼼꼼히 확인하고 마음에 드는 것으로 선택하는 것이 가장 좋습니다.

 

을 선택하는 것은 매우 개인적인 문제입니다. 은 개인의 학습방법, 학습정도 그리고 취향에 따라 결정되어야 하기 때문입니다. 네이버나 인터넷서점으로 베스터셀러 목록을 작성한 다음 오프라인 서점에서 한 권 한 권 꼼꼼히 확인하고 마음에 드는 것으로 선택하는 것이 가장 좋습니다.

 

프로그래머가 되려면, 자바나 C언어같은 프로그래밍 언어, 라이브러리와 개발 툴 사용법만을 배워 구글링같은 검색으로 남의 코드를 구해서 Ctrl+N, Ctrl+A, Ctrl+C, Ctrl+V 같은 키보드 조작으로 시키는 일만 하는 코더가 되지 마시고, 문제를 풀어 프로그램을 만드는 방법을 배워 스스로 문제를 풀어 프로그램을 만들 수 있는 프로그래머가 되세요.

 

문제를 풀어 프로그램을 만드는 일인 프로그래밍을 먼저 체계적이고 전문적으로 배우세요. 그래서 창의적인 혹은 창조적인 문제 해결 능력을 갖추도록 하세요. 왜냐하면, 프로그래밍 언어, 라이브러리와 개발 툴로 하는 일인 프로그래밍이란 문제 해결 과정이기 때문입니다.

 

먼저 문제를 풀어 알고리듬을 만드는 방법을 배우세요. 그리고 자바나 C언어로 알고리듬으로 프로그램을 만드는 방법을 배우세요. 자바나 C언어로 알고리듬으로 프로그램을 만들 때 필요한 자바나 C언어의 문법적인 기능을 이제 자바나 C언어 에서 찾아서 읽어 보고 적용하는 방식으로 공부하세요. 난이도를 높여 가면서 많은 문제를 풀어 프로그램을 만들다 보면, 스스로 문제를 풀어 프로그램을 만들 수 있고, 자바나 C언어도 머리로 기억하는 것이 아니라 몸으로 기억되어 있을 것입니다. 그래서 숨쉬는 것처럼, 걷는 것처럼 자연스럽게 자바나 C언어로 프로그램도 만들 수 있을 것입니다.

 

알고리듬을 만드는 방법을 배우라고 해서 시중에 출간된 알고리듬 들을 사서 이미 만들어져 에 실린 정렬과 검색 알고리듬들을 외우지 마십시오. 정렬과 검색 알고리듬들을 만들 수 있도록 알고리듬을 만드는 방법을 먼저 배우라는 것입니다.

지식인과 같은 인터넷에서 "프로그래밍 공부 순서가 어떻게 되느냐" 질문하면 답변은 누구나 "C언어->C++언어->JAVA->C#->API->MFC->OpenGL->DirectX"라고 적고 있습니다. 그래서 프로그래밍 언어, 라이브러리와 개발 툴 사용법만을 강조하는 프로그래밍 교육이나 공부로 다음과 같이 좋지 않은 결과만 남겼습니다.

 

프로그래밍에 관심이 있는 대한민국 남자라면 C언어 한 두 권 장에 장식만 하고 다른 일을 하고 있을 것입니다. 그리고 C언어를 배워서 무엇할 것인가라고 하면, 우스개 소리였지만 지금은 현실이 된 말로 "C언어 학원 강사"만 할 수 있답니다. 실제 현업에서는 C언어로 프로그램을 만들 수 있는 프로그래머가 없다고 아우성이고 C언어로 프로그램을 만들 수 있는 사람이면 JAVA로 프로그램을 만들 수 있는 사람보다 연봉이 30% 더 준다고 해도 사람 구하기 힘듭니다. C언어를 배워서 프로그램을 만들 지 않을 것이라면 왜 C언어를 첫번째로 배워야 할까요? 다른 프로그래밍 언어를 쉽게 배울 수 있기 때문이라고요? 그냥 맘에 드는 언어부터 배우면 시간과 노력도 절감할 수 있고, 프로그래머의 꿈도 포기하지 않을 것입니다.

 

C언어, C++언어, JAVA, C#같은 프로그래밍 언어의 문법과 API, MFC, OpenGL, DirectX같은 이미 작성된 라이브러리와 개발 툴 사용법만을 배우고, 회사에 가면 이미 작성된 코드를 분석(?)하고, Ctrl+N, Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+H 같은 편집으로 시키는 일만 처리할 수 있겠지요. 그래서 단순 편집 작업이라고 생각하니, 부과되는 양이 많게 될 것이고, 이것을 처리하고자 하니, "월화수목금금금"이고 밤을 새야 하고, 돈도 쥐꼬리만큼 받게 됩니다.  몇 년 하다 보면, 오류를 찾고 고치는 능력을 조금 갖추었지만, 학원 갓 수료한 신입이 갖춘 능력 이상을 할 수 없습니다. 그러면 밑에서 치고 들어 오니, 물러나 주어야 하겠지요. 그리고 치킨집이나 커피전문점을 차린다나요. 이러한 내용의 인터넷 게시물이 한 때 회자되었든 것입니다.

 

어떠한 분야에서 10년 이상 일을 했다면 그 분야의 전문가가 된다고 합니다. 그러면 치킨집이나 커피전문점이 아니라 소프트웨어회사를 차려야 하는 것이 아닙니까. 돈 때문이라고요. 치킨집이나 커피전문점을 차릴 정도의 돈이면 소프트웨어회사를 차려 대중에게 서비스할 프로그램을 충분히 만들 수 있습니다. 왜? 프로그래밍 분야에서 10년 이상 일을 했는데 전문가가 되지 않을까요?

 

그래서 프로그래밍을 공부하겠다고 하면 말리는 사람들이 많지 않습니까? 공무원이나 되라고 권하면서 말이지요.


실수는 여러 번 하면 바보라고 하지요. 이미 문법 공부가 잘못된 것이라는 것을 우리는 체험했습니다. 우리나라에서 영어 공부를 보세요. 요사이는 유치원부터 시작한다지요? 영어의 문법 공부만 20년 가까이 하지만, 소설 한 권도 제대로 읽지 못하고, 회화나 작문은 하지 못하지 않습니까? 프로그래밍 언어의 문법과 라이브러리 사용법만 배운다고 프로그래밍할 수 있을 것 같습니까? 할 수 있었다면 우리나라가 소프트웨어 후진국이 되지 않았을 것입니다.

 

생각을 바꾸어야 합니다. 프로그래밍 언어나 라이브러리와 개발 툴 사용법만 배우지 마시고, 프로그래밍 언어나 라이브러리와 개발 툴로 하는 일인 프로그래밍을 체계적이고 전문적으로 배워 창의적인 혹은 창조적인 문제 해결 능력을 갖추어야 합니다. 왜냐하면, 프로그래밍이란 문제 해결 과정이기 때문입니다.

 

프로그래밍을 체계적이고 전문적으로 배워 창의적인 혹은 창조적인 문제 해결 능력만 갖춘다면, 나이, 성별, 학력, 전공과 무관하게 누구나 프로그래밍을 할 수 있습니다.

 

아직도 우리에게는 기회가 많습니다. 오늘날 만들어 지는 모든 것, 스마트폰, 스마트TV, 스마트워치, 게임, 자동차, 로봇, 비행기, 우주선, 배, 빌딩, 영화, 음악, 보안, 영업, 회계, 교통 등에 많은 프로그램이 사용되고 있습니다. 미래에는 더욱더 많은 프로그램이 더욱더 다양한 분야에서 사용될 것입니다. 이러한 환경에서 프로그램을 만들 수 있는 프로그래머는 반드시 창의적인 혹은 창조적인 문제 해결 능력을 갖추어야 할 것입니다. 프로그래밍을 공부하는 방법을 바꾸어서 준비하세요.

 

프로그래밍 언어와 프로그래밍을 체계적이고 전문적으로 공부하는 방법도 설명드려 보겠습니다. 참고해 보세요.

 

프로그래밍은 우리가 생활하는 데 있어 부닥치는 복잡한 문제를 새로운 생각으로 풀어 프로그래밍 언어로 컴퓨터가 처리하도록 하는 프로그램을 만들어 보다 편하게 살 수 있는 세상을 만드는 일입니다. 그래서 어렵습니다. 그렇지만 내가 생각한 프로그램을 만들고 세상 사람들이 사용한다면 엄청난 성취감과 자부심을 느낄 수 있습니다.

 

이러한 프로그래밍을 하고자 한다면 다음과 같은 최소한의 능력을 갖추어야 합니다.

(1) 문제 해결 능력

(2) 프로그래밍 언어 구사 능력

(3) 개발 툴 사용 능력

 

이 중에서 가장 중요한 것은 문제 해결 능력입니다. 문제를 해결할 수 없으면, 프로그래밍 언어 구사 능력도 개발 툴 사용 능력도 아무 소용이 없습니다. 문제 해결 능력은 많은 문제를 풀어 프로그램을 만들어 봄으로 해서 나만의 문제 해결 방법을 만들었을 때 갖추어 지는 것입니다. 따라서 프로그래밍을 배우고자 한다면 체계적이고 전문적인 학습을 해야 합니다. 그러면 누구나 프로그래밍을 할 수 있습니다.


프로그래밍 언어나 프로그래밍을 배울 때는 C언어나 자바같은 프로그래밍 언어만 배우지 마시고, C언어나 자바로 하는 일인 프로그래밍을 먼저 공부하세요. 프로그래밍 언어만 배운 사람이면 프로그래밍 언어가 배우기 어렵다고 하고, 어려운 프로그래밍 언어를 한 권 내지 두 세권 으로 공부를 마친 후에도 문제를 스스로 풀어 배운 프로그래밍 언어로 프로그램을 만들려고 하면 어디서 부터 시작하여 어떻게 해야 하는지가 막막하다고 합니다.

 

왜 그럴까요? 프로그래밍 언어 에 적힌 프로그램을 이해하기 위해서는 프로그래밍을 배워야 하는데 그렇지 않고 프로그래밍 언어를 배우고자 하기 때문입니다. 프로그래밍 자체는 어렵습니다. 프로그래밍은 문제를 풀어 컴퓨터가 처리하도록 하는 프로그램을 만드는 일이기 때문입니다.

 

프로그래밍 언어 에서는 문제를 풀어 프로그램을 만드는 것을 설명하지 않고, 문제를 풀어 해결(알고리듬)을 만든 후에 컴퓨터가 처리하도록 하는 프로그램을 만들 때 프로그래밍 언어가 언제, 어떻게 적용되는지만을 설명합니다. 그래서 프로그래밍과 프로그래밍 언어를 재미있게 공부하고자 한다면 체계적이고 합리적인 학습을 해야 합니다.


프로그래밍 언어를 배우기 전에 프로그래밍 언어로 하는 일인 프로그래밍을 먼저 공부하세요. 프로그래밍이 무엇인지, 어떻게 하는지, C언어같은 프로그래밍 언어가 언제, 어떻게 사용되는지 그리고 프로그램이 어떻게 작동하는지를 공부하세요. 또한 이러한 개념과 원리를 바탕으로 문제를 풀어 프로그램을 만드는 절차를 배우세요. 이러한 내용을 배우고자 하면, 다음 들을 참고해 보세요.

 

들은 "이렇게 하면 나도 프로그램을 잘 만들 수 있다(나프잘)" 시리즈입니다.

 

이렇게 프로그래밍을 이해했다면, 프로그래밍 언어를 배우세요. 무작정 프로그래밍 언어 을 사고 동영상강의를 보면서 에 적혀 있는 프로그램을 아무 생각없이 입력해서 실행시켜 보고 머리를 끄덕이고 외우는 방식보다 쉽게 재미있게 프로그래밍 언어를 배울 수 있습니다. 왜냐하면 왜 프로그래밍 언어를 배워야 하는지를 명확하게 이해했고, 프로그래밍 언어 에 나온 프로그램이 어떻게 작성되었는지를 이해할 수 있고, 마지막으로 프로그래밍 언어 에 제시되는 문제를 풀어 프로그램을 만들 수 있기 때문입니다.

 

C언어를 공부하고자 한다면 다음 을 참고해 보세요.
은 "C를 배우면 함수를 잘 만들어야 한다"입니다.

 

문법만 설명하는 것이 아니라 문제를 풀어 프로그램을 만들 때 C언어가 언제, 어떻게 적용되는지를 설명합니다. 특히 의 처음부터 끝까지 C언어를 배우면 반드시 만들 수 있어야 하는 함수를 만들어서 사용하는 방법을 설명합니다.

 

네이버 카페 "프로그래밍을 배우자"에서 게시글과 동영상강의로 프로그래밍이 무엇인지, 어떻게 하는 것인지 그리고 C언어나 JAVA언어가 언제, 어떻게 사용되는지를 확인해 보세요. 그리고 프로그래밍과 C언어나 JAVA언어를 어떻게 배워야 할지를 생각해 보고 시작하세요. 그래서 시행착오를 줄이세요.


독학을 하신다면 을 읽는 방법을 바꾸세요. 을 볼 때 바로 정독을 하지 마시고, 빠른 속도로 전체 내용을 훓어 보는 방식으로 여러 번 보고, 정독을 하십시오. 왜냐하면 모든 내용은 질문자 님에게 새로운 내용입니다. 따라서 어려울 수 밖에 없습니다. 그래서 최소한 에 어떠한 내용이 담겨 있는지와 자주 사용되는 용어(혹은 개념)에는 익숙해야 정독을 할 수 있지 않습니까? 의 줄거리나 용어에 익숙하기 위해서 빠른 속도로 전체 내용을 훓어 보는 방식으로 먼저 읽어 보시라고 권하는 것입니다.