많은 개발자들이 자신의 주종 개발 언어(혹은 툴)을 선택하거나 바꿀 때, 앞으로 자신이 주로 작성해야할 프로그램의 종류와 성격, 문법의 간결성이나 체계성, 현대성, 생산성 등을 파악하여 고르기 보다는, 유행을 따라서 선택한다. 잘라 말해서 "앞으로 이 언어 혹은 툴이 돈 될 거랍니다"란 말에 따라서 결정한다는 것이다. 이는 매우 불행한 선택 방법이다. 현재 가장 유행인 툴 혹은 언어를 선택했다고 해서 개발자로서 밥벌이가 절대로 보장되지는 않는다. 예전 내글에서 여러번 지적했지만 개발자는 어떤 언어를 쓰느냐가 아니라 "어떤 프로그램을 제대로 만들 수 있느냐"가 더 중요한 밥벌이 보장 수단이다.
처음에는 이 새로운 유행 언어를 선택했다는 덕을 몇번 볼 수도 있을 것이다. 이 나라에는 희안한 개발 관행을 가진 회사들이 있는데, 멀쩡히 현재 업무를 잘 처리하고 있는 프로그램을 시대에 뒤진다는 희안한 이유 하나만으로, 자바나 닷넷같은 신 유행 언어로 다시 만드는 회사들이 종종 있다. 어찌보면 우리같은 개발자 관점에서는 좋은 기회다. 경기가 가뜩이나 안좋아서 신규 개발 프라젝트가 별로 없는 요즘에 이런 돈 낭비하기 좋아하는 황당한 회사들이 있다는 것은 매우 고마운(?) 일이다. 따라서 "요즘 뜬다는 어떤 언어를 나는 쓸 줄 압니다"라는 말로 신규 프라젝트에 참여할 기회를 얻는데 도움이 될 수도 있을 것이다.
그러나, 확고한 자신의 주종 언어(툴) 없이, 시대 유행을 따라서 이런 저런 툴로 말을 갈아타는 개발자는 조만간 이 업계에서 버티지 못한다. 왜냐하면 여러 언어를 알긴 하지만, 어떤 언어도 깊이 있게 알지 못하고, 겉껍질만 아는 개발자가 되기 때문이다. 어떤 언어도 깊이 알지 못하면서 제대로 돌아가는 프로그램 작성이 가능하다고 생각하는가? 물론, 여러 언어를 모두 잘 사용하는 천재적인 능력을 가진 소수의 개발자들이 있을 수도 있다. 그러나 실제 이런 사람들은 매우 보기 힘들다. 대부분 뛰어난 개발자들은, 몇가지 언어를 동시에 사용하긴 하지만, 자신의 주종 언어 즉 주종 밥벌이 언어를 반드시 가지고 있다. 보조 언어는 주종 언어의 단점을 보완하는 수단으로만 사용한다.
다시 말해서 성공한 개발자의 대부분은 컴 언어를 연구할 때 "집중과 분산의 원칙"을 어떻게 구사할지 잘 아는 사람들이란 것이다. 불행스럽게도 상당수의 개발자들은 집중의 원칙은 잊어버리고 돈 된다는 말에 따라서 "분산"에만 전념하는 경우를 많이 본다. 사실 나도 예전에 이 분산 원칙만 믿고 주종 언어에 대한 중요도를 망각하여, 힘들게 살았던 시절이 있었다.
간혹 구인 구직 광고를 보면 기막힌 문구들을 발견한다. 어떤 개발자가 구직란에 올린 자기 소개를 보면, 경력 5년차인데 Java, C++, Delphi, ASP, PowerBuilder 등등의 언어를 능숙하게 구사할 줄 안다고 적혀 있다. 내 경험에 의하면, 정말 천재적인 능력의 소유자가 아닌 한, 한 언어에 전념하여 그 언어를 자신의 주종 언어로 만드는 기간을 최소 3년으로 본다. 나의 이 계산 방식에 의하면 5년간 무려 5가지의 언어를 모두 섭렵했다는 이 개발자는 어떤 언어도 제대로 할 줄 아는게 없다는 것이 나의 결론이다. 만일 이력서에 이렇게 적혀 있다면 나는 거들떠 보지도 않는다.
반대로 Java, C++, Delphi, ASP, PowerBuilder를 능숙하게 사용할 줄 아는 개발 신입 사원 구함이라는 구인 광고나, 3년차 경력 개발자를 요구하면서 요구 스킬에는 도저히 3년으로는 불가능한 여러 언어와 툴에 대한 스킬을 요구하는 회사도 마찬가지다. 결론인즉 이딴 식의 구인 구직 광고를 하는 개발자나 회사와는 접촉하지 말라는 것이다.
델파이나 비주얼 베이직 같은 비주얼 툴들이 등장하면서, 개발 과정이 많이 편리해진 순기능도 있지만, 역기능으로 껍데기 개발자들을 매우 많이 양산시켰다. 껍데기 개발자들이란 어떤 언어나 툴의 기능 일부 밖에 사용 못하는 개발자들을 말한다. 예를 들어 폼 디자인 밖에 할 줄 모르는 개발자를 말한다. 즉 폼에 콤포넌트를 놓고 속성만 세팅할 줄 알지, 내부 처리 과정은 전혀 못하는 개발자를 말한다. 불행스럽게도 사실 개발자라고 불러줄 수도 없는 이런 개발자들이 도처에 넘쳐나고 있다. 껍데기 개발자의 또 다른 부류로, 화면 디자인과 더불어 입력 화면까지는 만들 수 있지만, 내부 데이타 처리 로직 코드는 전혀 구사못하는 개발자들이 있다.
얼마전에 타 업체의 소스 하나를 받았는데, 이런 껍데기 소스였다. 무려 6개월간 개발했다는 프로그램의 소스 내용이 어떤 처리 로직도 없고 단순히 입력 폼만 보여주는 코드만 존재했다. 이런 껍데기 개발자들이 도처에 넘쳐나고 있는 이유는 주종 언어 선택에 대한 확고한 판단이 없다는 것이다. 다시 말해서 개발 환경은 주종 언어의 몇가지 기능을 편리하게할 뿐이지, 데이타 처리 로직을 구현하려면 주종 언어에 대한 깊은 이해가 필요하단 사실을 전혀 깨닫지 못한 탓이다. 프로그램은 입력과 처리, 출력 작업으로 이뤄진다는 것을 잘 알 것이다. 이 입력 부분 즉, 화면 밖에 그리지 못하는 개발자들을 과연 개발자라고 할 수 있을 것인가?
여러 개발자들 게시판에는 질의응답 게시판이 있다. 내 사이트에도 이 게시판이 있지만, 조만간 없애버릴 작정이다. 내가 보기엔 질의응답 게시판은 별로 제대로된 질문과 답변도 잘 없지만, 질의응답 게시판은 초보 개발자들에게 매우 중요한 원칙인, 코딩은 스스로 해야 하며 쉽게할 수 있는 것이 아니다란 사실을 망각하게 만들기 때문이다.
질의 응답 게시판에 올라오는 상당수 질문들을 보면 내가 느끼는 생각은 이렇다.
"델파이 매뉴얼을 대체 보기나 한 것인가?"
"자신의 밥벌이므로 스스로 짜야할 프로그램을 남한테 짜달라고 할 작정인가? "
"코드는 없고 장황하게 말한 뒤 안 돌아가더라.. 에러좀 찾아주세요.. 내가 귀신인가? 코드도 없고 실행해볼 수도 없는 프로그램을 천재적인 상상력을 총동원해서 에러를 찾아달라는 이야긴가?"
"이렇게 어려운 질문을 한방에 답변해 줄 만큼 시간 널널한 사람이 많다고 생각하고 이런 질문을 올린것인가?"
해외 사이트를 보면 팁이나 개발에 관한 문서를 제공하는 곳은 많으나 질의응답 게시판은 잘 찾아 보기 힘들다. 개발자는 혼자서 해결하는 능력을 키워야 하지, 남에게 코딩을 구걸하는 방식에 익숙해져 버리면 개발자로서 살아가기 무지 힘들어질 것이다.
|
TCP/IP를 이해하는 개발자라면 자바, C++, Python, 심지어 PHP로도 각 개발 도구에 맞는 구현 방법으로 비슷한 품질의 네트워크 애플리케이션을 개발할 수 있다고 생각합니다. 질의응답의 대부분은 도구 사용법 문제 이전에 TCP/IP라는 원리 이해 부족이 아닌가 생각이 듭니다. 하아~ 생각은 그렇게 하고 사는데, 그나마 사용할 수 있는 언어는 C++ 뿐이고, 원리에 대한 지식도 희박해서 매일 질문을 올리고 있습니다. ㅜ.ㅜ
언제쯤이면 저도 1초 이상의 타이핑 지연없이 몇 천줄의 코드를 연속으로 작성할 수 있는 슈퍼개발자가 될 수 있을 까요? ㅜ.ㅜ