프로그래머가 되는 것에 관심이 있거나, 소프트웨어 직업군에 대해 관심있는 모든 분들께 드리는 글입니다.
가위바위보 게임을 전혀 모르는 사람이 있다고 가정합시다.
우리는 이 사람에게 가위바위보 게임을 가르치려고 합니다.
그런데 이 사람은 우리하고 사용하는 언어가 다릅니다. 문법도 다르고 심지어 우리 발음이 조금이라도 틀리면 못알아듣습니다.
이 사람에게 가위바위보를 가르치려면 어떻게해야할까요?
이 사람이 사용하는 언어를 배워서 가위바위보에 대해 설명을 하면 됩니다. 간단해보이죠. 우리는 이미 가위바위보에 대해 잘 알고 있습니다.
그렇다면 이 사람이 사용하는 언어만 배우면 되겠네요..?
여기서 한가지 중요한 부분이 있습니다.
만약 이 사람이 한국말을 이해 할 줄 안다고 해서 가위바위보에 대해 가르치는게 쉬울까요??
그렇지 않습니다. 가위바위보를 가르치기 위해선 우리가 가위바위보에 대해서 한치의 빠짐도 없이 간결하게 설명할 줄 알아야 하기 때문입니다.
자 그럼 머릿속에서 떠올려봅시다.
가위는 보를 이긴다. 바위는 가위를 이긴다 보는 바위를 이긴다. 이 게임은 두명이서 하고 동시에 가위 바위 보중에 하나를 낼 수 있다. 같은 것을 내면 비긴다. 비길경우 다시 한다. 합의된 약속이 있다면 비긴 상태로 종료할 수 도 있다. 가위는 손의 검지와 중지를 제외한 나머지 손가락을 접는 것이다. ...
상당히 어렵습니다.
여러분이 가위바위보에 대해 정확히 설명하고 있어서 가위바위보를 전혀 모르는 사람이 봤을 때 100이면 100명 다 게임을 이해할 수 있는 문서를 작성한다면 가위바위보를 프로그래밍한 것입니다.
프로그래밍이란 어떠한 시스템의 논리구조를 설계하고 정확히 묘사하는 것이고. 코딩은 이를 컴퓨터가 알아들을 수 있는 언어로 번역하는것입니다.
우선순위를 보자면 여러분 스스로가 설계한 시스템의 논리구조를 정확히 파악하고 있는 것이 먼저입니다. 코딩은 그 다음의 일입니다.
프로그래머가 되기를 원하신다면 이러한 논리적 사고방식, 문제해결능력, 시스템을 파악하는 능력을 먼저 기르세요. 프로그래밍언어 구사능력, 개발툴,라이브러리활용능력은 그 이후의 일입니다. 네이버에 프로그래머가 되는 방법에 대해 검색하면 항상 C ->C++ ->자바 ->php -> JSP-> API, MFC -> OpenGL, DirectX 이런 말들만 나옵니다. 첫 프로그래밍언어로 자바가 좋을까요 C가 좋을까요? 아무래도 좋습니다. 중요한건 언어를 익히는것 보다 프로그래밍을 공부하는 것이 우선이다는 말을 하고싶습니다.
프로그래머 실무 10년차면 치킨집을 차려야한다는 말이 우스갯소리로도 안들릴만큼 개발자들에 대한 대우가 바닥을 치고 있는 현실입니다만, 이는 비단 회사나 기업의 문제뿐만은 아닙니다. 단순한 번역능력 자격증을 가지고서는 회사에 가서 이미 작성된 코드를 분석하고 Ctrl+C,V로 편집하는 일 밖에 할 수 없겠지요. 단순 편집, 관리업무다 보니 부과되는 일의 양도 많고 돈도 쥐꼬리만큼 받습니다. 몇년 지나면 스스로 오류를 해결하고 수정하는 능력은 생기지만 갓 학원을 수료한 신입 이상의 능력을 할 수 없습니다. 그러니 밑에서 치고올라오면 물러나줘야하죠. 스스로 번역기가 되기를 원한 결과입니다.
프로그래머가 되고싶다면 번역가가 아닌 작가를 목표로 삼고 언어를 여러가지 익히기보단 익숙한 언어로 창조적인 문제해결능력을 기르세요.