얼마전에 이런 사람을 만났습니다.
개발쪽에 게신분은 아니고 인터넷방송국을 하는 벤처기업의
전략기획실장님이셨습니다. 93년도부터 인터넷을 하셨다고
하는데, 여하간 뭐 대단한 분이셨죠.
그분이 이런 말씀을 하시더라구요.
자꾸만 개발자영역이 줄어들고 있으니
더이상 기술개발하는데 골머리 썩이지 말고
기획이나 관리를 해라.
그분 말이 그다지 틀리다고는 생각하지 않습니다.
MS가 특히 그 대표적인 예인데, 핵심적인 부분은 MS에서
모두 만들고, MS계열에서 개발자들은 모두 그 위에서 작업
할수 밖에 없으니까요. 가면갈수록 이른바 개발자들이
하는 일이라는게 단순해지고 있죠...
회사입장에서 사용자입장에서도 이런 추세가 싫지는
않을겁니다. 회사입장에서는 꼰대부리는 개발자들
많이 가질필요 없어서 좋을테고, 사용자입장에서는
에러적은 소프트웨어 가지니까 좋을테고...
근데 정말 추세가 그렇게 가고 있으니까
웬만한 개발자들은 다 그렇게 다 돼있는 API가지고
어플리케이션 만들다가 세상 종쳐야 할까요?
사실 리눅스도 마찬가지 입니다.
우리가 리눅스의 핵심적인 부분(커널이나 아니면 GNOME이나
KDE같은 부분들. 이른바 프레임웍대열에 들어갈수 있는것들 개별적인
데몬이나 어플리케이션 말고...)에 대해서 어느정도 건드릴수 있을까요?
커널핵킹할수 있는 수준을 리눅스의 대가라고 하던데,
사실 그 커널핵킹이라는 것도 공개된 데이타가지고
커널 파라메터 이것저것 건드리는 정도 아닌가요?
예를 들어 세마포어 크기를 조절한다든가 하는거...
개발자의 한사람으로서 정말 그러다가 세상마감해야 하는건지.
정말 서글픕니다...
훌쩍...
개발엔 여러가지 개발이 있을 수 있습니다.시스템 프로그래밍부터 어플리
개발엔 여러가지 개발이 있을 수 있습니다.
시스템 프로그래밍부터 어플리케이션 프로그래밍까지
시스템 프로그래머는 코드 자체에 무게를 두죠.
코드 자체의 완성도를 즐기고요(ioccc정도의 엽기성은 아니지만)
어플 프로그래머는 Business logic에 무게를 둡니다.
각종 방법론이 발달하게 되고(해보신 분은 아시겠지만 방법론 익히는거
장난 아닙니다. 실제 업무랑 연관되게 초보수준으로 이해하려면 적어도 1
년이상은 필요하죠)
시스템 프로그래머 입장에서 어플 프로그래머가 code에 충실하지 못한 하
급프로그래머라고 욕하고
어플 프로그래머입장에선 시스템 프로그래머를 형이상학적인 BA
(Business Analysis)를 알지 못하는 코더(메인프레임이 활개치던 공룡
시절엔 실제로 펀칭만 하는 서무급대우밖에 못받는 코더라는 직업이 있었
습니다.)라고 욕하죠.
어플 프로그래머의 앞길은 뭘까요? 당연히 BA훈련받은 경험을 가지고 컨
설팅이나 기업 프로젝트 관리로 나가게 되죠.(이상할 것 없습니다. 단지
우리나라엔 특히 강조되었을 뿐이고요)
시스템 프로그래머의 앞길은 평생 프로그래머입니다. 프로그래머를 천직
으로 갖는 장인정신의 그런 쟁이죠.(우리나라 현실에선 힘든 경우입니
다.)
다 같이 프로그래머라는 직업으로 분류하지만 사실은 전혀 다른 직업이라
해도 무방할 만큼 차이가 큰 부류인데 서로가 서로를 누가 더 낫네 라고
말할 필요가 있을까요?
마치 프로그래머와 디자이너와 작곡가가 누가 더 나은가를 비교하는 것처
럼 공허한 얘기인것 같습니다.
아래의 델파이건도 마찬가지이고요.
IT 나 개발자가 software 개발자 만을 언급하는 건 아니겠죠.
IT 나 개발자가 software 개발자 만을 언급하는 건 아니겠죠.
옛날에 reader's digest 인가...기억이 잘 안 나네요.
어느 방송프로에 악어 전문가가 출현하여 사회자로부터 이런
말을 들었답니다.
"박사님께서는 악어에 대해 무척이나 많이 아시는 군요."
그러자 그 전문가는
"아뇨, 제가 악어에 대해서 알긴요, 전 단지 악어의 이빨만을
공부하고 있을 뿐 인걸요" 하고 말이죠. ^ ^
지금도 어느 곳에서, 어느 분들은 kernel 작업에 참여하고 계실거고,
어떤 분은 열심히 bug report 하고
patch 만들고자 하는 분도 있으실 거고,
어떤 분들은 또 세계 최초의, 그리고 유용한 무언가를 위해,
그리고 자신의 꿈을 위해 묵묵히 노력하시고 계실 분들이
많을 걸로 저는 믿어 의심치 않습니다. ^ ^
너무 낙심하지 마세요.
보잘것 없는 제 주위에도 그런 분들이 많이 계시거든요.
아래 어느 분의 말씀따나
희망을 잃지 않는게 제일 중요한거 같습니다.
그리고 computer 를 전공하셨거나 전문가가 되시고자
하시는 분은 hardware 나 software 에 너무 한쪽으로 치우치면
안 될 것 같다고 감히 말씀드리고 싶네요.
물론 software 가 공부하기에 수월한 작업환경을 제공한다지만
깊이 들어가면 그 오묘함에 감탄하게 되고,
'hardware 를 어디서 배워' 하시는 분도 계시겠지만...
컴퓨터의 내부가 CPU, RAM, HARD 이런 게 아무렇게나
들어 있지 않죠, 그리고 요즘의 인터넷이 탄생하기 까지
얼마나 많은 과학자와 수학자들의 노력이 있었는지...
저도 전공을 공부하면 할수록 참 오묘합니다.
이것 저것 다 하면 죽도 밥도 안 된다 라는 말도 있지만...
이런 말들이 우리들의 시야를 넓게 가지는데 장애물이 되고 있는지는
않는지 한 번 생각해 보게 되네요.
주절주절 부끄러운 글 많이도 썼네요.
IT분야는 현재까지 진화중이고, 또 앞으로도 계속 진화할겁니다.그러면
IT분야는 현재까지 진화중이고, 또 앞으로도 계속 진화할겁니다.
그러면서 자연스럽게 그 영역자체가 매우 광범위해졌구요..
당연히 각파트의 기능별 분화가 이뤄지는것 같습니다.
어플리케이션 프로그래밍중에서도 콤포넌트를 사용하느냐 혹은
다른 라이브러리를 사용하느냐에 따라 또 다른 세분화된 계층이 만들어
질 수 있습니다.
앞으로는 CBD라고 해서 점차 레고블럭을 조립하는식으로..콤포넌트를 갖
다 쓰는게 일반적인 어플리케이션 개발의 대세를 이룰것으로 봅니다.
그리고 또 콤포넌트만 전문적으로 개발하는 회사들도 많이 생겨날것이고
요.
제가 전산학 공부하면서 느낀건.. 이분야는 진화하면서 계속적으로 또다
른 계층(layer)를 만들어 나간다는겁니다.
아마도 modularity와 porting, independency등을 위해서는 계층적으
로 소프트웨어들을 구성하지 않으면 안되는 이유 때문인것 같습니다.
물론 각계층을 거치면서 늘어나는 처리시간은 하드웨어의 급격한 발전으로
말미암아 무시할 수 있는 수준입니다.
그래서 예전에는 어플리케이션 프로그래머와 시스템 프로그래머가 구분되
지 않았는데.. 어느시점부터 구분되기 시작했고 이제는 어플리케이션 프
로그래머 자체도 더 세분화되기 시작했죠.
요는 이겁니다..
IT분야에서의 계층분화는 필연적이다.
고로 각 계층에 종사하는 프로그래머들은 각각의 위치에서 다른 계층에 신
경쓸 필요없이 자신의 분야에 몰두할 수 있고, 그것이 전체적으로는 바람
직한 발전상이다.
(예를들어 윈도그용 게임을 만든다치면..현재는 Direct-X SDK가
나와있어서 일일이 하드웨어 제어까지 할 필요가 없지만..
예전 도스시절 게임을 만들때는 어셈코드로 비디오카드 자체를
건드려야 했죠. 말하자면 dx가 게임개발자로 하여금 하드웨어에
신경안쓰고 순수히 게임을 이루는 로직자체에 집중할 수 있도록
한겁니다.)
그렇지만..여전히 가장 좋은 상태라고 할 수 있는건..
밑바닥 api를 이해하면서 동시에 Bussiness logic을 익히고 구성할줄
아는 사람이 아닐까 하는군요. 수퍼맨처럼 모두 다 잘할수는 없을겁니다.
하지만.. 개인적으로 할줄아는정도로 익히는건 쉽죠.
큰그림과 작은그림을 동시에 볼수 있다면.. 그것만큼 좋은건 없을겁니다.
저도 그렇게 되기 위해 노력중이지요... ^^
꿈이랄것 까지는 없구여.. 다만 새로운 사업 계획이나 뭔가 새로운 일을
꿈이랄것 까지는 없구여.. 다만 새로운 사업 계획이나 뭔가 새로운 일을
시작해서 기획하는게 꿈이거든요.
근데 프로그래밍 공부를 하려는 이유는 앞으로도 몇년간은 계속 공부하고
프로그래머가 되서 일할 예정입니다.
제가 기획할때 황당한 말도 안되는 일들을 프로그래머 한테 시키거나 하
지 않고 좀더 의사소통도 잘되고 같이 잘 협의해서 하는게 중요할 것 같아
서요.
기획이나 이런거 하는사람이 암것도 모르고 정말 컴퓨터가 뭔지도 인터넷
이 뭔지도 모르는 사람들이 위에 있으면 밑에서 프로그래밍 하는 사람들
머리 빠지는걸 많이 봤구 저두 많이 당했거든요.
하나로 통신 이런거 한달에 5만원 내면 10메가 속도라니까 512K 전용선
선값은 껌값으로 알고 있는 사람이 있지 않나......그런거 설명할려면 정
말로 콱!
정말로 E1 라인 2메가 짜리가 엄청 빠르고 엄청 비싼건지는 모르고 자꾸
하나로 같은 예기만 한다니까요. 그거 2메가 밖에 안되? 하면서 100메
가 전송은 껌이던데 하나로 10메가에서. 그것도 몇만원 안하던데? 20~30
만원만 내면 50메가정도(T3) 전용선 끌어오는거 아니야? 하는사람들 정
말로 많다니까요. 아니라고 하면 자꾸 하나로 예기만 하면서 주절 주절
설명하면 괜시리 열만내고.
암튼 예전에 딴데서 잠시 알바할때 위에서 시키는 사람이 2명 있었는데
한명은 여자거든요. 나이도 얼마 안됐는데 25정도? 어디관지 졸업하고 갓
들어온 사람인데 암것도 모르고 사이트 기획하는 사람이었습니다. 이에
비해 한명은 29정도? 에 남자고 전산학과 나왔고 그 여자 상사였죠. 그사
람도 마찬가지로 기획하고 그런건데 근데 정말로 2명이 시키는게 달랐습
니다. 우선 말을 이해하기도 쉽고 일처리도 더 수월하고 그렇더군요.
그때 확실히 느꼈죠.
저도 요즘 그런분들을 많이 만나게되는데,그런분들중에 진짜 프로그래밍이
저도 요즘 그런분들을 많이 만나게되는데,
그런분들중에 진짜 프로그래밍이 좋아서 자기일을했던 개발자는 한사람도
없었던것 같아요,
대부분 여기 저기서 줏어듣거나 학교에서 또는 책에서 대충 보고 회사에
서 마지 못해(직업상)프로그래밍 몇년 해본거가지고 마치
자신이 왕년에 전설적인 프로그래머라도 되었던거처럼 얘기들을 하죠.
제가 아는 개발자들은 나이를 먹고 회사 근속년수가 높아짐에따라 점점
개발일로 부터 멀어지게되는 현실을 안타깝고 아쉽게 생각하고있었읍니
다.
그사람들에게 시스템 프로그래밍이나 어프리케이션 프로그래밍이 차이가
있을까요?
요즘은 C#인가때문에 한참 시끄럽던데 개발자라면 랭기지도 절대적인건
아닌것 같아요.
리눅스쪽 하시는 분 대부분이 어플리케이션보다는시스템 프로그래밍 쪽을
리눅스쪽 하시는 분 대부분이 어플리케이션보다는
시스템 프로그래밍 쪽을 선호하시고 있는 것 같아서리
남이 만든 API로 개발하는 것을 부끄럽게 생각하시는 줄 모르겠습니다만
어차피 옛날 혼자서 메뉴에서 시작해서, 라이브러리 다 짜서 붙이던
그런 때는 지나지 않았습니까?
프로그래밍 자체가 공동작업이라는 것을 인식하고
자기가 하는 일이 UI 설계이든, 하드웨어 드라이버 설계이든 재미있게
하는 것이 좋지요.
직업의 귀천이 없듯, 개발자의 하는 일에 귀천이 없습니다.
리눅스의 길에 들어선 대부분의 사람들은
프로그래밍의 목적이 시스템 프로그래밍 쪽에 무게중심을 두어서 그런지
커널해킹을 해야, 대단한 실력자라고 대접해주고,
PHP 등등의 웹프로그래머나, 아니면 IDE에서 뚝딱 만들어 내는
프로그래머들을 얕볼련지 모르지만 틀린 생각입니다.
각 영역이 이제는 그 자체로 너무 커져버려서 커널을 읽는데 소요되는
비용이 결코 다른 분야의 베테랑이 되는 것보다 크지 않습니다.
다른 개발자들이 만들어 놓은 API를 쓰는데,
공동작업에서 남이 만든 소스를 쓰는걸 싫어하지 않아야 합니다.
사실 리눅스도 그렇잖아요..?
이상은 저에게 하는 이야기였습니다. :)
이런 생각을 해봅니다.지금 우리가 보고있는 MS,IBM,SUN,Ora
이런 생각을 해봅니다.
지금 우리가 보고있는 MS,IBM,SUN,Oracle...
쟁쟁한 회사들 그리고 Linux,GNU.. 진영
모두 하루 아침에 이루어진 것 들은 아니고
그들의 개발도 과거의 것에 바탕을 둔 것이지
어느 날 전혀 새로운 것이 나오는 것은 아니다.
그냥 개발하는 것을 좋아합시다. 개발자 여러분...
API를 만드는 개발자가 되면 되겠네요.그리고 많은 해커와 함께 개발
API를 만드는 개발자가 되면 되겠네요.
그리고 많은 해커와 함께 개발되는 오픈소스는 그걸
걱정하지 않습니다.
걱정하는건 흥미를 잃는것 뿐.