2016년 11월 10일 목요일

[나쁜 프로그래머] 5. 흥선대원군

내 경우는 대학때 배운 첫 언어가 C 언어 였고

학과 수업을 따라 MFC (정확히는 visual C++ 6.0 툴 로 수업을 들음) 가 주 종목인 학생이었다.

수업 으로 들은 html 코드와 리눅스 , java의 기초 등등도 있긴 했지만 어디까지나

내 관심은 WIPI 라는 당시 휴대폰(스마트폰도 아니다!!) 에 들어가는 플랫폼으로
(WIFI 아니다. 당시엔 위피로 읽었다. 비슷한 이름의 리눅스 휴대폰도 있었던거 같은데..)

모바일을 전문으로 하는 프로그래머가 되고 싶었다.

WIPI 는 검색해보면 나오겠지만 대한민국정부와 3대 이통사가 만들어 놓은 희대의 병크 플랫폼이긴 했지만 국내에서 모바일 프로그래머가 되기위해서는 어쩔수 없이 접해야만 했다.

그 WIPI 는 개발 언어를 선택할수 있었는데 (뭐? 그런것도 있었어?)

C 혹은 Java 였다. 우리는 이것을 Clet Jlet 으로 불렀다.

그때의 나는 모든 언어의 기본은 C 로 시작한다는 C빠 였고 Java 는 VM 위에 올라가는 느려터진 암덩어리 라고 생각했다.
(뭐 지금도 java 를 좋아하지는 않는다.. oracle 때문이기도 하지;;)

그래서 java 빠들과 넷상에서 극렬하게 키보드 배틀을 벌리기도 하고 했지만

그게 큰 의미가 없다는것은 나중에 한 SI 업체에서 근무하면서 부터였다...
(알지? SI 가 뭐하는 곳인지...)




개발자 커뮤니티에서 활동을 하다보면 (어느 커뮤니티든 마찬가지겠지만)

여러 부분의 전문가들의 글을 읽을수 있고 그에 대해 논쟁이 발생하기도 하는데

그중 가장 극렬하게 말이 오가는 부분이 바로 언어에 대한 품평을 할때 발발한다.

" PHP 같은 쓰래기 같은 언어가 비중이 높은 이유를 모르겠어요. JAVA 가 짱인데... "

내 경우에는 C 를 먼저 다루던 사람이었고 당시에는 Python 으로 웹을 구축하는 사람으로서

" Python 도 좋던데 말입니다. "

라고 쓰려다가 말았다. 논점이탈이기도 하려니와 의미없는 소모성 논쟁에 발을 담그고 싶지 않기도 했다.


다른 논쟁도 있다.

" 프로그래머가 언어에 종속되면 안됩니다. "

이런 주제로도 많은 논쟁이 오간다.

완전히 상충되는 두가지 말인

1. 이 언어는 나쁘다. 내 언어가 최고 빼~~~액
2. 언어에 종속되면 안된다. 하나만 쓸줄알면 쓰래기!!!

를 주장하는 개발자들은 나는 나쁜개발자의 유형중 하나인 흥선대원군 이라고 칭한다.
(다 똑같은 마음가짐을 가지고 있다는 말이다.)




프로그래밍 언어는 하나의 수단이기도 하지만 그 수단이 가지는 의의와 숙련도는 별개이다.

1. 에서 말하는 어떤 언어는 나쁘다. 라고 말을 하기 위해서는 그 언어가 왜 나쁜지에 대한

내용이 있어야 하지만 대부분은 보안이 취약하다 라거나 언어적인 특성이 너무 수준이 떨어진다.

혹은 디버깅이 취약하다, 디자인패턴이 나쁘다. 효율적이지 못하다 등등 의 수만가지 이유를 댄다.

먼저 이것부터 말해보자.

언어는 하나의 수단(도구)이다. 이 부분은 많은것을 알려준다.

도끼을 들고 나무를 베는 사람은 나무꾼이요, 대결을 하면 전사다. (록타오가르!! 싸우는자에게 힘을!!)

보안이 취약하거나 디버깅이 취약하다 라는 말은 이미 보안쪽이나 개발진행에 문제가 제기되지 않았거나 극복한 사례로 논파가 되며

디자인 패턴의 관련된 문제는 언어의 문제점이라 보기 어렵다.

효율적이지 못하다는 것과 언어적인 특성이 너무 수준이 떨어진다는 말은 과연 무슨생각으로 한말인지 의심이 될정도로 저급한 비판이다.

주어진 환경과 사용하는 사람에 의해 결정되는 디자인패턴과 언어적인 특성을 왜 언어의 문제로 치환하는것인지 도통 알수가 없다.
(일례로 JAVA 로도 얼마든지 개판오분전 패턴으로 막코딩한 프로젝트 수억개는 봤다.)

" 그 언어를 사용하게 되는 사람들이 대부분 나쁜 프로그래머가 되었더라. "
(예를들면 신입프로그래머는 절대 배우면 안되는 프로그래밍언어 라든지..)

그건 배우는 사람이 잘못 배워서 그런것이지 언어가 어디 그렇게 쓰라고 적혀져 있던가?

" 세상이 어느시대인데 객체지향의 'ㄱ' 도 못내밀만한 허접한 언어를 개발언어로 쓸수가 있는가? "

객체지향의 개념이 없는 언어도 당당히 현역으로 많은 개발자들이 다루고 있으며, 사회의 중추적인 역할을 하는 부분도 많다.

그럼 여기서 2. 에 해당하는 개발자들은 고개를 끄덕이겠지.
(늬들도 똑같아.)

언어에 종속되지 말하야 한다는 말 자체는 인정한다.

하지만 한 언어의 사용하는데 있어서 숙련도는 절대 무시할 수 없다.

프로그래밍 언어는 필연적으로 언어적인 특성과 함께 사용되어지는 플랫폼의 특성도 함께 따라가며

그것을 다루는 개발자역시 플랫폼과 언어에 숙련도를 쌓기 마련이다.

그러다 보면 어쩔수 없이 한 언어와 플랫폼에 종속되어버린 개발자 들도 있다.

안된다고 하지만 그들은 이미 한언어에 종속되어버린 친구들이고

그들이 역시 잘못된 혹은 나쁜 프로그래머가 되어버린것일까?

천만에

이런 개발자들은 한 분야에 대단한 숙련도를 쌓은 베테랑중에 베테랑들이다.

그런 그들에게 개발자는 한 언어에 종속되면 안된다라고 말할만큼의 전언어의 베테랑들이 몇이나 될까?






개발자 커뮤니티에서 활동을 하다보면 처음에서야 멋 모르고 날뛰다가

어느정도 시간이 흐르고 머리속에 들어간게 많아지다 보면

함부로 ' XX는 쓰래기다. ' 혹은 ' XX 는 하지 말이야 한다. '

라는 말을 하지 않게 된다.

다른 커뮤니티에서는 모르겠지만

개발자 커뮤니티에서는 적어도 개발부분에 있어서 무엇이 좋지않다 라고 말하는것에 대한

검증을 하지 못하는 한 검증된 논리에 대해 심증적인 주장을 할수 밖에 없고

결국 그게 쌓이다 보면 ' 꾸준글 쓰는 봇 ' 정도로 치워지게 된다.




그래서 어느정도 커뮤니티 경력(?!) 이 쌓이다 보면 부정하는 것 보다는

추천이나 더 나은 방향을 제시하는 내용이 많아지는것도 다 이런 이유에서이다.

(그러면서 나는 블로그에 나쁜프로그래머 라는 글을 쓰고 있다. 뭐하는거니 난..)

해당 언어를 사용하는데에는 다 이유가 있고 쓰는 사람에 따라서 성능이 결정이 나는것이 대부분이다.

그리고 한 언어만 사용해왔고 그것만을 고집하는 환경에 있다고 해서 싸잡아 무시하는 생각도 버려야 한다.

개발을 스포츠 라는 것에 빗대어 표현하자면

축구 야구 농구 배구 피겨스케이팅 아이스하키 미식축구 등등이 많고

어떤게 더 좋다 나쁘다 라고 평하는것은 아무런 의미가 없는것이다.

축구보다 미식축구가 더 좋다? 피겨스케이팅 보다 배구가 더 좋다? (뭔 지꺼리야)

진정한 스포츠맨이라면 모든 운동을 골고루 해야지.
(그래 메시가 너보다 미식축구 더 잘할수는 있겠다.)



제목을 흥선대원군이라 칭한것은 이런것 때문이다.
(사실 흥선대원군이 나쁘다.라는 것보다는 쇄국정책 이라는 이미지를 차용하고 싶었다.)

하나의 자신의 생각에 사로잡혀 있으면 안된다고 말하고 싶다.

개발자는 언어에 종속되면 안돼, JAVA가 짱이지, 평생 JAVA만 해처먹고 살아라.

이런 생각에서 자유롭지 못하면 나쁜개발자가 되어간다고 생각한다.

정리하자면

A. 그래 지금 내가 다루는 이 언어가 짱이야.
B. 다른 언어도 장점이 있지만 지금 나는 이쪽에 숙련도가 높아서 장점을 잘 살릴수 있어.
C. 나는 많은 언어를 다루어 봐서 각자의 장단점을 알고 있지만 해당언어에 숙련된 사람들도 그에 맞는 장점을 많이 가지고 있으니 그또한 대단하다고 본다.

난 A 보다는 B,C 가 더 좋은 개발자의 마음가짐이 아닐까 라는 것이다.


교류하자.

누구나 본인이 다 옳다고 생각하는것에 대해 반론하기 보다는

그들이 왜 그렇게 생각하고 있는지에 포인트를 두고 생각해보자.

하나를 중점적으로 파는 사람들도

많은 부분의 경험을 지향하는 사람들도

결국은 서로 같은것을 추구하는 사람들이다.









시작하는 글


1. 투덜이 스머프

2. 인디아나존스

3. 인턴에서 나쁜프로그래머까지

4. 업햄 상병 구하기

5. 흥선대원군

6. 듀크 뉴캠 포에버

7. 아르센 뤼팽

8. 질데로이 록허트

9. 사루만

10.과거의 나에게 보내는 편지

마무리 하는 글

댓글 없음: