<p> <span style="font-weight:700;color:#333333;font-family:gulim, Dotum, Helvetica, AppleGothic, sans-serif;background-color:#ffffff;">저작권이 있으므로, 무단 전제 및 복사를 금합니다.</span> </p> <p> </p> <p> <b>제가 생각하는</b><b>프로그램의 본질</b>에 대한 이야기 입니다. </p> <p> <b>비전공자들도 충분히 이해가 가능</b>한, 프로그램이 본질에 대한 이야기 입니다. </p> <p> <span style="font-family:gulim, Dotum, Helvetica, AppleGothic, sans-serif;">중요한 것은 많은 고수들도 이점을 간과한다는 겁니다.</span> </p> <p> <br></p> <p>======================================================================</p> <p> <b>프로그램 언어도 하나의 언어이다</b></p> <p> <br></p> <p>프로그램 언어도 '언어'의 하나이다.</p> <p>많은 개발자들이 이것을 많이 망각하고, 기본을 잃어 버린다.</p> <p> <br></p> <p>언어를 분류하는 방법은 많다.</p> <p>음성언어와 문자언어로 구분하기도하고, 손의 모양으로 소통하는 수화도 언어의 하나이다.</p> <p> <b>인공어</b>라는 것도 있는데, 자연적으로 만들어진 것이 아닌 사람이 의도적으로 만든 언어이다. </p> <p>예를들면, 수학에서 사용하는 언어와 '프로그래밍 언어' 등이 있다.</p> <p>즉, 프로그래밍 언어도 언어의 한 종류이며, 명령을 표현하고 전달하기 위한 것이다.</p> <p> <b>프로그래밍 언어의 명령은 한국말로 번역이 가능하다.</b> </p> <p> <br></p> <p>프로그램의 이슈가 발생하여 도움을 주러 가면, 내가 처음 하는 것은 담당자에게 구현사항 설명을 부탁한다.</p> <p>대부분의 경우, "말로는 설명 못하겠다. 구현은 다했는데 잘 안된다."라는 답변을 듣는다.</p> <p>즉 '한국말로 번역을 못 하겠다.'라고 하는 것이다.</p> <p>사람은 프로그래밍언어보다 자신의 모국어를 더 잘 사용한다.</p> <p>자신의 모국어로도 표현하지 못하는 것을, 다른 언어로 잘 표현 할 수 있을까?</p> <p> <br></p> <p>프로그램을 배우는 것이 아니라, <b>한국말부터 배우라</b>고 종종 말한다.</p> <p>한국말로 표현하지 못하는 것은 다른 언어로 표현하지 못한다.</p> <p>잘하는 언어로 못하는 것을, 이제 막 배운 새로운 언어로 어떻게 표현하는가?</p> <p> <br></p> <p>이런 경험이 실제 있었다.</p> <p>대기업에서 한국말을 못하는 외국인이 프로젝트 리딩을 하고 있었다.</p> <p>당시 윗분들은 '영어 잘하는 개발자를 뽑으라'고 하셨다.</p> <p>나는 이렇게 설명을 했다.</p> <p> "영어말고, 한국말로 먼저 설명해 보라고 하십시요."</p> <p> "한국말로 설명하지 못하는 것을, 영어로 설명 할 수 없습니다."</p> <p> "영어를 못하는 것이 아니라, 기술이 부족한 겁니다."</p> <p> <b>한국말로 횡설수설하는 것을 영어로 번역하니, 알 수 없는 암호문이 된것이다.</b> </p> <p>한국말로 정확히 설명하면, 영어를 잘하는 사람이 번역해 줄 수 있다.</p> <p>기본적으로 사용하는 용어는 이미 영어로 되어 있기 때문에, 짧은 3형식만 가지고도, 영어로 직접 설명할 수도 있다.</p> <p> <br></p> <p>기술영업을 할때 이런 경험도 있었다.</p> <p>프랑스인 해외 엔지니어가 한국을 방문했다.</p> <p>고객사에서 1년정도 수정이 되지 않는 이슈가 있는데, 그 이슈를 외국인에게 설명해 달라고 했다.</p> <p>영어를 잘하는 사람들이 설명하지 못해서 1년동안이나 지연되고 있었다.</p> <p>내 영어실력은 완전 초보이며, 외국인을 보면 도망가지 않는 수준이고, 형편없다.</p> <p>내가 외국인과 말하는 것 보면, 대부분의 한국 사람들은 웃는다.</p> <p>그런 실력으로 아무런 준비도 없이, 외국인 개발자에게 기술 이슈를 설명해주고, 수정 약속을 받았다.</p> <p>1년 동안 설명하지 못해서, 수정하지 못한 것을 나는 이해를 시켰다.</p> <p>내 설명을 듣고 해외 엔지어가 '씩'하고, 웃었다.</p> <p>웃음엔 두 가지 의미가 있을 것이다.</p> <p>하나는 "너 영어 못하내.", 다른 하나는 "기술적 설명은 이해 했다."</p> <p>지금 까지 다른 사람이 설명하지 못한 이유는, 영어가 아니라, 기술적 이해를 하지 못했기 때문이다.</p> <p>실제로 많은 기술적인 이슈를 한국말로도 제대로 설명하지 못 하면서, 영어로 설명하려고 한다.</p> <p>당연히 영어로 횡설수설하는 것 밖에 되지 못한다.</p> <p>반대로 기술적인 완벽한 이해가 있다며, 더듬거리는 엉터리 영어로 이해를 시킬 수 있다.</p> <p> <br></p> <p>내가 만든 프로그램을 다른 사람이 보면, '쉽내', '나도 이해된다.'라고 많이 말한다.</p> <p>내가 만든 프로그램은 어려운 기교가 거의 없다.</p> <p>프로젝트 시작할 때는 어려운 업무라면서 서로 안하려고 미루던 것인데, 만들어 놓으면 '쉽다'는 말만 한다.</p> <p>어려운 프로그램이 잘 만든 것이 아니라, 쉬운 프로그램이 잘 만든 것이다.</p> <p>어려운 기교는 쉽게 만들지 못하는 사람들이 사용하는 것이다. 즉 중수들이다.</p> <p>고수들은 어렵게 하지 않고, 쉽게 한다. 물론 쉽게 하는 것 처럼 보일 뿐이며, 따라해 보려면, 잘 안된다.</p> <p>쉽게 할 능력이 안되어서, 어렵게라도 하면 중수라는 것이다.</p> <p>한글을 읽을 때 어떤 글이 좋은 글인가?</p> <p>쉽고, 간결하고, 애해하기 쉬운 글이 좋은 글이다.</p> <p> <b>프로그램도 언어이며, 똑같이 적용된다.</b> </p> <p> <b>쉽고, 읽기 편하게 만든 프로그램이 좋은 프로그램이다.</b> </p> <p> <br></p> <p>프로그램을 만드는 사람을 '코더'라고한다.</p> <p>잘 봐 주어야 중급 개발자다.</p> <p>한글에 비유하면, 번역가 정도가 될것이다.</p> <p>원문의 정확한 의미를 이해고, 아름답게 번역하는 훌륭한 번역가도 물론있다.</p> <p>그러나 원문을 만드는 사람을 더 높게 평가한다.</p> <p>프로그램에서도 이와같이, 사람의 말로 정확하게 말할 수 있어야 한다.</p> <p> <br></p> <p>내가 신입 사원을 가르칠때, 한국말로 프로그램 할 것을 설명하게 시킨다.</p> <p>이것을 완벽하게 할 때까지 프로그램하지 말라고 한다.</p> <p>한국말로 설명 못하는 것은, 다른 언어로 번역하지 못한다.</p> <p>한국말로 설명을 할 수 있을때, 프로그램을 만들어 보라고 하면, 크게 문제 없는 프로그램이 나온다.</p> <p>너무나 당연한 것인데, 많은 사람들이 프로그램을 못 한다고 생각한다.</p> <p> <b>그냥, 한국말도 못 하는 것이다.</b> </p> <p>심지어 많은 특급 개발자도 한국말도 제대로 못 하는 경우를 종종 본다.</p>