본문 바로가기

컴퓨터잡학

프로그래밍을 잘하는 법

프로그래밍을 처음 시작하는 사람들이 많이 묻는 질문이 있다.

프로그래밍을 잘하는 법이 있을까요?

 

그럼 난 이렇게 반문한다. 잘한다는 기준이 뭐냐고.

프로그래밍을 잘하는 사람이라는 기준은 개발자가 있는 환경에 따라 많이 달라진다.

 

기업과 같은 생산성을 중시하는 환경에서는 주어진 시간 내에 얼마나 더 많은 요구사항을 받아들여 구현하느냐가 기준이 될 것이다. 당신이 대학의 전산 관련 학과 학생이라면 교수가 내주는 C, JAVA 문법 문제를 얼마나 잘 맞추느냐가 기준이 될 것이다.

 

나는 저런 질문을 받았을 때, 우리나라 프로그래밍 학습 및 교육 방식이 놓치고있는 것이 있다고 말해준다. 그것은 'Concept'라는 것이다. (내가 현재 있는 곳은 이런 부분을 어느정도 강조해주는데, 다른 학교 이야기를 들어보면 한결같이 이런 문제를 공통적으로 가지고있다.) 이걸 직역하면 '개념'이라는 뜻을 가지고있는데, 사람들은 '컨셉'이라는 말을 '개념'이라는 말과 조금 다르게 사용하고있다. 사전에 찾아보면 '관념'이라는 다른 해석도 나오는데, 우리가 자주 쓰는 Concept라는 말은 '개념'보다는 '관념'에 가까운 뜻을 가지고있다.

 

그래서 Concept가 뭐 어쨌다고?

 

당신은 Pascal, Portran, ALGOL 등의 프로그래밍 언어에 대해 들어본 적이 있는가?

오늘날 컴퓨터를 배우는 학생들은 주로 C부터 시작을 하고있다. 그리고 위와 같이 옛날에 사용된 프로그래밍 언어들은 구시대 유물 취급 받고있다. 나 조차도 다룰 일이 없기 때문에 유물 취급하고있긴 마찬가지이다. 물론 이런 프로그래밍 언어들이 오늘날 쓰이지 않는 것은 아니다. 특수한 분야에서는 아직도 사용하고있고, 이중 Pascal 언어는 현재도 쓰이고있는 Delphi에 일부 차용되어 쓰이고있다. 하지만 배우는 사람 입장에서는 그리 신경쓸 일이 아니다.

 

가상의 상황을 설정해보자.

LISP을 아는데 C를 모르는 사람이 있다고 생각해보자. 물론 LISP을 배우는 사람 대다수는 C를 포함한 다른 언어들을 거쳐온 경우이기때문에 현실성은 없긴하지만 일단 설정이니 적어둔대로 생각해두자. 그의 옆에는 프로그래밍을 시작한지 얼마 안되어 경험도 없지만 C의 문법이라면 입에서 술술 나올만큼 공부를 한 사람이 있다.

 

전자(LISP을 아는데 C를 모르는 사람)은 이미 LISP으로는 프로그래밍의 정점을 찍은 사람이라 할 수 있다. 생각하던게 있다면 LISP으로 다 구현해 낸다. 후자는 C가 프로그래밍의 기초라는 생각만을 가지고있다.

 

전자(A씨)와 후자(B씨)가 만났다. 둘 다 C언어를 하기위해 같은 곳으로 모였다. B씨는 주변인들을 통해 A씨가 프로그래밍의 고수라는 사실을 익히 들었다. B씨는 긴장이 되었다. 그런데, 고수라는 A씨가 B씨에게 C언어의 기초가 되는 부분부터 물어보기 시작했다. A씨는 C 언어를 사용해본 경험이 없다. 그래서 A씨는 B씨에게 C언어를 배워야만 했다. B씨는 긴장이 풀리며 자신만만해진다. B씨는 고수라는 A씨보다 더 고수가 된 것 같은 기분에 뿌듯함을 느낀다.

 

얼마 뒤, A씨는 B씨만큼 C언어를 익히게 되었다.

그리고 그들은 어떻게 되었을까? 결과는 말하지 않아도 뻔하다. A씨는 그 후로 프로그래밍 실력 하나로는 많은 사람들의 인정을 받을 것이다. 반대로, B씨는 A씨를 따라가기에 너무 벅차다는 느낌을 받게될 것이다.

 

이런 차이를 보이는 이유는 무엇일까?

프로그래밍의 Concept를 아는 사람과 몰랐던 사람의 차이이다. 어떤 업체에서 업무에 쓸 프로그램 제작 의뢰를 해왔다. 그 프로그램을 만드려면 무엇을 알아야 할지 생각해보라. 의뢰받은 업체가 어떤 업무를 하는지 알아야 한다. 그 업무에 따라 자료를 어떻게 처리해야할지를 생각해야한다. 이런 부분은 아무리 특정 언어의 문법만 잘 안다고 절대 해결되지 않는다.

 

내가 과거에 쓰이던 프로그래밍 언어 이야기까지 하며 설명하는 이유는, 프로그래밍을 배우는데 언어에 너무 얽매이지 말라는 것이다. 언어는 도구일 뿐이다. 못 박을 때 쓰는 망치와 같은 도구말이다. 못 박을 때 못보다 망치에 더 집중하는 사람은 거의 없다. 물론 망치의 특성을 잘 이해하는 것도 장인이 되는 조건 중에 하나이기도 하다.

 

이 문제는 "어떤 프로그래밍 언어가 가장 좋을까요?"라는 질문과도 연결된다.

그 질문에 대한 나의 답은, 자신이 쓰기 가장 편한 언어부터 하라는 것이다. 언어라는 수단을 통해 프로그래밍을 익히면 나중에 새로운 언어로 업무를 진행해야할 일이 생겨도 빠르게 적응할 수 있을 것이다.

 

C언어로 프로그램을 짜보고 싶은데 프로그래밍을 Visual Basic으로 공부해도 되는지 묻는다면, 난 강력히 지금 당장 VB로 프로그래밍 공부를 시작하라고 말할 것이다.

VB를 통해 프로그램이 어떻게 돌아가는지를 익히면 C/C++은 문법만 배워서 적용하면 그만아닌가!

 

현재 쓰이는 프로그래밍 언어는 다양하다. 각자에게 맞는 언어를 선택하여 프로그래밍 공부를 시작하길 바란다.