제목 쓰기 귀찮은 글들.
일기장/2009-10-29
안드로이드 개발을 한 지 9일째. 오늘은 같이 일하는 다른 개발자한테 존경한다는 이야기를 들었다. 안드로이드 한 지는 한 달 가량 되어 간다는데 그 이전에 개발 경험이 거의 없는 개발자라고. 자신이 일주일 걸렸던 일인데 30분 만에 끝냈다고 놀라워했다. 어제부터 이틀 간 짝 프로그래밍을 했는데 하면서 이클립스 단축키 누를 때마다 신기해하고 물어본다. 잠깐 나가서 이야기하는 동안 자기가 돈 문제 상관 없는 20대라면 그냥 돈 안 받고 우리 회사 들어와서 일하고 싶다는 이야기까지 한다. 지금까지 항상 동료들에게 개발 잘한다는 이야기는 들었지만 이렇게까지 이야기하는 사람은 처음이라 뭐 일단 기분은 좋다.
태근이도 그 사이 몇 번 공을 세워서 인정을 받은 분위기다. 그래서 우리 코드를 가져가서 좀 보더니 이제는 우리랑 업무가 엮이지 않은 개발자도 우리한테 물어보는 상황이 되었다. 외주 용역에서 이 정도로 인정 받은 건 이콜레모로서는 처음 있는 일이다.
사실 나도 내가 학습 능력에 있어서는 남들에게 지지 않는다고 자부하기는 하나, 이번처럼 빨리 학습이 된 건 처음이다. 이번 경험과 아이폰 개발 경험을 토대로 아이폰 개발 vs 안드로이드 개발 비교를 한 번 해봤다.
일기장/2009-10-11
나 뿐만 아니라 트위터/미투데이를 쓰는 사람들 대부분이 블로그 포스팅이 아주 뜸해졌다. 그리 좋은 현상은 아닌 듯 하다. 차분하게 생각하면서 글을 쓸 때 얻을 수 있는 것을 마이크로블로그에서는 얻기 힘들다. 나는 블로깅을 하는 가장 큰 목적이 글을 쓰면서 생각을 정리하기 위함이다. 나 뿐 아니라 많은 사람이 그럴 것이다. 그런데 트위터에서 하면 그런 정리에 이르지 못한다. 트위터의 함정에 빠지지 말아야겠다.
두어 달 NHN에서 HTML/CSS 작업을 하다보니 사이트 전체를 개발할 때는 그렇게 재미 있던 작업이 그렇게 재미 없을 수가 없었다. NHN은 이미 널리 알려진 것처럼 프로세스를 상당히 잘게 나눈다. 웹 사이트를 띄울 때 자바 비즈니스로직 개발자, JSP 개발자, Ajax 개발자, HTML/CSS 개발자가 다 따로 있다. 팀마다 차이는 조금씩 있지만 대부분 이 정도로 나누게 된다. 기획자가 기획안을 내면 디자이너가 그대로 디자인하고 PSD 파일이 넘어온다. 그러면 퍼블리셔가 HTML/CSS 작업해서 웹 개발자에게 넘겨준다. 이렇게 단계가 명확하게 분리되어 있다보니 개발자들이 기획에 참여할 기회는 거의 봉쇄되어 있다. 내가 있던 팀도 그나마 교차기능팀을 구성한 팀이었지만 일하는 프로세스는 똑같았기 때문에 대부분의 개발자는 기획에 관심조차 없었고, 관심이 있는 개발자도 발언권을 행사하기는 힘든 듯 했다. 거기에 나는 팀원도 아니고 외주 직원이다보니 프로젝트에 대해 아무 말도 할 수 없고 그저 PSD 파일대로 찍어내는 것 뿐이었다. 이러니 웹 사이트를 만드는 재미는 전혀 느낄 수 없었다. 태근이가 이런 포지션을 아주 멋진 말로 표현해주었다. 프린터. 태근이도 한 달 반 정도 일하더니 자기가 프린터가 된 것 같았다고 했다. 프린터의 속도가 PPM(page per minute)로 측정된다면 퍼블리셔는 PPD(page per day)로 측정되는 차이가 있을 뿐. 실제로 대부분 그렇게들 일하고 있었다.
NHN이 팀을 그렇게 나누는 논리는 많은 개발자들이 생각하는 것과 비슷하다. 전문화다. 기능을 세분화해서 각 분야별로 팀을 만들고 그 일만 하게 하면 그 일에 대한 전문성이 높아질 것이기 때문에 생산성이 높아질 것이라는 논리다. 거기에 공유가 더해진다. 기능별로 중복되는 것들이 많으니까 기능별로 사람을 모아놓으면 그런 중복으로 인한 낭비가 없어질 것이라고 생각하는 것이다.
이런 생각에 대해서는 이미 내_블로그/2007-09-30를 통해서 비판한 바 있다. 거기에 조금 더 할 이야기가 생겼다. 우선, 기능을 지나치게 세분화하면 전문성을 높여도 별반 생산성의 차이가 없는 분야까지 전문화시키게 될 수 있다는 것이다. HTML/CSS가 그랬다. 분명히 전문성이 필요한 기술은 틀림 없고 간단한 일은 아니지만 몇 년씩 전문성을 높여갈 만한 일은 결코 아니다. 1~2주 교육하고 2~3개월 실무로 사이트 하나 다 해보면 모든 것을 다 배울 수 있다. 물론 전문성에 따라 속도 차이는 나겠지만, 그렇다고 CSS 몇 년씩 한 사람이 하루에 10 페이지씩 찍어내는 것도 아니었다. 오히려 개발자에게 필요한 기술들(예를 들면 리팩토링)이 부족해서 생산성이 더 쳐진다는 느낌도 받았다.
하지만 웹 퍼블리셔들은 대개 HTML/CSS가 중요하고 어려운 일이라고 광고해서 하나의 직종으로 인정 받고자 하는 전략을 쓰는 것 같다. 그렇게 중요하고 어려운 일로 인정 받게 되면 개발자와 같은 대우를 받을 수 있다고 생각해서일까? 좋은 전략으로 보이지는 않는다. 그 전략대로 이제 많은 회사들이 웹 퍼블리셔를 하나의 직종으로 인정하고 있고, 하나의 중요한 역할로 대우해준다. 그럼 원하는 바를 얻었을까? 그렇지 않다. 여전히 웹 퍼블리셔의 임금은 개발자의 70% 수준도 안된다. 네이버, 다음처럼 제대로 인정해주는 듯한 회사들도 연봉을 보면 그렇지 않다는 것을 알 수 있다. 중요하고, 전문화할 가치가 있는 일이긴 한데 개발자가 하는 일처럼 중요한 일은 아니라고 보는 것일까? 그보다는 오히려 개발자의 짐을 덜어주는 역할로 보는 것이 맞을 것이다. 개발자의 일을 30% 줄여줄 수 있다면 싸게 웹 퍼블리셔 한 명 더 고용하는 게 낫다고 보는 시각인 것이다. 이 점을 웹 퍼블리셔들도 알아야 한다. 스스로를 프린터로 만드는 일이다.
어쩌면 전문화의 미신이 퍼져 있는 업계의 특성일지도 모르겠다. HTML/CSS 하던 사람이 개발도 할 줄 안다고 해도 쉽사리 인정해주려 하지 않기 때문에 한 번 발을 들여놓으면 다른 분야로 넘어가기가 쉽지 않은 것이다. 개발자들도 상황은 좀더 낫지만 비슷한 상황을 겪는다. 웹 개발 하던 사람이 C++도 할 줄 안다고 해봤자 높은 임금을 주면서 C++ 시키려고 하지는 않는다. 그래서 많은 개발자들이 처음 배운 기술로 끝까지 가는 것 같다. 그런 상황에서라면 지금의 전략이 그나마 최선일지도 모르겠다.
기능 세분화의 또 다른 나쁜 점은 중복이 발생할 가능성이 높아진다는 것이다. HTML/CSS의 경우, 자바스크립트 개발자와 분리되어 있으면 class, id 명의 중복이 발생할 가능성이 아주 크다. 웹 퍼블리셔는 일단 완성된 HTML을 줘야 하는데 id는 보통 자바스크립트에서 필요로 하는 속성이기 때문에 id가 붙을 것 같은 엘리먼트에도 그냥 class로 붙이게 된다. 예를 들면 인라인 팝업(레이어라고도 부르는)의 경우 대개 띄웠다 숨겼다를 스크립트로 하기 위해 id를 부여한다. 그런데 웹 퍼블리셔도 스타일을 주기 위해서 팝업 별로 unique한 class 이름을 주게 되는 경우가 있다. 그러면 십중 팔구 그 팝업에 필요한 id명과 class명은 아주 비슷해진다. 이런 경우 그냥 id만 쓰면 되는데도 분리된 구조에서는 그럴 수 없어 중복이 발생하게 된다. 그 외에도 개발자 입장에서 class를 써야할 때도 있는데 여러 개로 중첩된 엘리먼트의 경우 어느 레벨의 엘리먼트에 class를 붙일 것인가도 고민거리가 되는데, 이 때도 자바스크립트 개발자 따로, 웹 퍼블리셔 따로 class를 붙여서 코드가 중복으로 넘쳐나게 된다. 이 뿐만이 아니다. 서버 사이드 개발자가 서버측 템플릿을 이용하면 쉽게 중복을 제거할 수 있는 경우인데 웹 퍼블리셔는 거기까지 볼 수 있는 상황이 아니기 때문에 CSS 수준에서 중복 제거를 하느라고 더 복잡해지는 경우도 있고, 문자열 일부만 바뀌는 화면인데도 웹 퍼블리셔는 전체 화면을 다 만들어서 줘야 한다.
자잘한 문제들도 많다. 이를테면, input type="image"가 뭐가 다른지 정확하게 아는 웹 퍼블리셔는 많지 않다. 실제로 submit을 눌러서 무슨 데이터가 가는지 보지 못하기 때문이다. 그래서 원하지 않는 파라미터가 전송이 되기도 한다. 동적인 레이아웃을 구성하는 경우도 자바스크립트 개발자가 CSS를 조금만 알면 쉬운 작업임에도 늘 협업을 해야 한다. Ajax로 데이터가 오가야 하는데 서버를 전혀 모르는 Ajax 개발자와 자바스크립트를 전혀 모르는 서버측 개발자가 협업을 해야 한다면 낭비가 얼마나 심할까.
개발자에게도 통섭이 필요하다. 웹 개발을 하는데 적어도 HTML/CSS, 자바스크립트, 서버 사이드 언어 하나 정도는 알아야 한다. 이거 다 배우는데 몇 년이 걸리는 것도 아니다. 통섭으로 얻는 이득은 전문화로 얻는 이득의 몇 배는 넘을 것이다.
단순히 생산성의 문제만 있는 것은 아니다. 개발이라는 게 또 즐거움이 중요한 일 아니겠는가. NHN에서 본 것 중에 하나는, 사람들이 일을 참 재미 없어하는 것 같다는 것이다. 외주 직원인 나에게 재미 없다는 불만을 대놓고 이야기한 사람도 여럿 있을 정도였으니 내가 잘못 본 것은 아닐 것이다. 웹 사이트 개발이 창조적이면서도 참 즐거운 일이다. 그런 일을 프린터처럼 만들어버리고 있으니 안타까울 뿐이다.
일기장/2009-09-05
트위터를 쓰면서부터 블로그가 뜸해졌다. 나 뿐 아니라 다른 사람들도 그런 듯. 간만에 이것저것 끄적여본다.
켄트 벡이 왔다. 예전 같으면 꽤 흥분했을 텐데 이젠 별 감흥이 없다. 켄트 벡이 이콜레모가 겪고 있는 문제들에 뭔가 도움을 줄 수 있을까? 아마도 아닐 것이다. 애자일에 대해 이야기하는 것도 이전처럼 재밌지 않다. 뭐랄까, 성공에 있어 애자일은 거의 필요조건임은 틀림 없지만 충분조건은 아니다. 그 간격을 메울 수 있는 것들이 요즈음의 관심사다. 그러다보니 xper 모임도, 켄트 벡도, 내 입장에서는 뻔한 이야기 뿐이다.
그래도 켄트 벡 미리보기?는 그런대로 재미있었다. 별로 얻은 것은 없지만 지루한 시간이 아니었다는 점에서 점수를 줄 만하다. 4인 1조로 나눠서 상황극을 통해서 질문을 한다는 방식은 꽤 괜찮았다. 즉석에서 나온 것이라 집중도가 떨어진다거나, 질문과 답변 모두 깊이가 얕은 문제는 있었지만 아주 재미있는 방법임은 틀림 없다. 하필 우리 조에 맘에 안 드는 인간이 있어서 좀 짜증이 나긴 했지만. 어딜 가나 남들에게 피해를 주는 사람이 하나 씩은 있는 것 같다.
정말 오랜만에 직원이 4명으로 늘었는데 그 네번째 직원이 잠수를 탔다. 벌써 2주 째. 처음에는 혹시 사고라도 난 게 아닐까 걱정을 했는데 며칠 전에 그 사람 블로그에 글이 올라왔다. 그래서, 이제 다시 3명으로 줄었다고 생각하는 중이다. 이콜레모에 들어왔다 나간 사람은 많지만 이렇게 아무 말도 없이 나간 사람은 처음이다. 물론, 이전에 다른 회사에서는 흔하게 경험했던 일이지만, 아무 강제 사항도 없는 이콜레모에서 무슨 사정이 그렇게 복잡하길래 말 한 마디 없이 잠수를 타면서 나갈까 싶다.
NHN에서 웹 표준 코딩 일을 하고 있다. 하다보니 이제 나도 어디 가서 웹 표준 할 줄 안다고 해도 되겠다는 생각이 든다. NHN 웹표준화팀이 그래도 이 분야 국내 최고의 전문가들일 텐데 나와 실력에서 큰 차이가 있는 것 같진 않다. Java, Python, JavaScript에 이어 80점 이상 줄 수 있는 스킬이 또 하나 는 듯.
일을 하다보니 기능 분화의 전형적인 문제점들이 많이 보인다. 그 중 하나는 템플릿. 여기 팀에서 일하는 방식을 보면 디자인이 나오면 웹 퍼블리셔가 받아서 그대로 HTML로 코딩을 해서 서버 사이드 개발자에게 넘긴다. 그런데, 웹 애플리케이션에서는 비슷비슷한 페이지들이 많고 전역 네비게이션, 헤더, 푸터, 메뉴 등의 부분이 다 공통인데 이 각각이 다 개별 psd 파일로 따로 넘어오고 그걸 보고 퍼블리셔는 또 각각을 html 파일로 만들어서 준다. 그러다보니 중복된 부분들을 전부 copy & paste로 만들기 때문에 바뀌거나 할 경우 파일을 다 찾아서 바꾸어야 하는 사태가 많이 발생한다. 서버 사이드 스크립트로 바로 작업하면 이런 중복을 쉽게 제거할 수 있을 텐데 팀이 나눠져 있고 팀간 협업을 권장하지 않기 때문에 그게 잘 안된다. 그나마 지금 있는 미투데이팀은 일종의 TF를 구성해서 상황이 훨씬 좋지만 카페 팀과 협업해야 될 때는 역시 마찬가지다. 그러다보니 이 문제를 해결하기 위해 자체적인 템플릿 시스템까지 만들어서 쓰고 있었다. 공통으로 쓰이는 부분들을 한 파일에 몰아넣고 그걸 가져다 쓰는 방식이다. 나름대로 주어진 한계 안에서 상황을 개선하는 방법이긴 하지만 이 방식 역시 copy & paste이기 때문에 근본 대책은 될 수 없다.
기획, 디자인의 진행에서도 이런 점이 많이 보인다. 먼저 기획서가 다 나오고 나서 디자인이 나오고 그게 HTML 코딩까지 끝나야 개발자에게 전달된다. 그런데, 개발자가 개발하다보면 기획이나 디자인의 허점을 발견하는 경우가 많다. 그러면 다시 이 루프를 돌아야 되는데 보통 직종간 일이 넘어가는데 하루는 걸리는 것처럼 보인다. 게다가 Ajax 팀도 따로 있고 서버 사이드도 비즈니스 로직 담당과 뷰 담당이 따로 있다. 사실 Ajax UI를 개발하다보면 HTML에서부터 서버까지 넘나들면서 문제를 해결해야 할 때가 부지기수인데 이 때마다 최소 4명이 협업을 해야 하는 것이다.
그렇지만 여전히 교차 기능 조직에 대한 시각은 좋지 않은 모양이다. 미투데이팀은 어떻게 교차 기능 조직을 구성했고, 내가 보기에는 꽤 괜찮아 보이는데 거기에도 비판 세력이 있는 듯하다.
제주도에 휴가를 갔다 왔다. 휘닉스 아일랜드의 힐리우스라는 호화 별장에서 지냈다. 건물간 거리가 워낙 멀다보니 전기 카트를 준다. 면허 없는데도 운전해도 되는 모양. 운전하고 다니는 재미가 쏠쏠해서 운전 배울까 하는 생각이 들었다. 처음 해본 건데 의외로 쉬웠다. 그런데, 마지막 날 공항 가는 길에 택시를 타면서 생각이 바뀌었다. 아저씨가 상당히 운전을 잘하는 것 같았는데 보니까 주기적으로 좌우와 위에 있는 거울을 보면서 전후좌우를 살피면서 운전을 했다. 저게 운전의 정석 쯤 되는 걸까? 그런데 옆으로 트럭들이 씽씽 지나가니까 무서웠다. 이런 상황에서 내가 운전대에 앉아 있다면? 별로 기분 좋은 경험은 아닐 것이다. 전기 카트 타고 다니는 게 재미있었던 것은 사고날 가능성이 거의 없었기 때문일 게다.
섭지 코지와 올레길, 우도를 둘러봤다. 이미 세번째로 온 거라 별로 특별한 건 없었다. 올레길 요새 유명한 모양이지만 별 거 없었다. 그 정도 길은 대한민국 전체에 수도 없이 많다. 역시 과대포장되었다는 생각이 들었다. 올레길에서 섭지 코지를 차지한 휘닉스 아일랜드를 많이 비판하는 모양이던데, 자연이고 뭐고 다 알겠는데, 이번 휴가에서는 올레길보다 휘닉스 아일랜드가 나에게 준 가치가 훨씬 컸다. 사실 이번 휴가는 여행보다 휴식의 의미가 더 컸다. 난 원래 여행가면 하루에 10시간씩 걸어다니는 타입이지만 이번에는 휴식하러 온 거라 느긋하게 책도 읽고 하기에 힐리우스가 너무 좋았다. 비록 무선인터넷이 안되는 단점이 있었지만 선화가 T로그인을 가져와서 나름 잘 써먹었다. 최근 몇 년간 해외 여행에서는 숙소에 무선인터넷이 안되는 경우를 본 적이 없는데, 국내에서는 되는 걸 본 적이 없는 것 같다. 다 유선으로 라인은 들어와 있고 컴퓨터도 있는 경우가 많은데 무선은 안된다.
우도에 가서 자전거 타면서 살이 좀 탔다. 태국에서 그렇게 태우려고 해도 안 탔는데 흐린 날에 더 잘 탄다는 말이 사실인 듯, 단 두 시간만에 팔이 벌게졌다. 하지만 껍질이 벗겨지거나 하지는 않는 걸로 봐서 심하게 타지는 않은 듯. 휴가 갔다온 티 좀 내려고 했는데 얼굴은 거의 안 탔다. ㅠ.ㅠ
일기장/2009-05-20
하루 평균 방문자 1명이 안되는 내 블로그, 과연 홍보 효과가 있을런지는 모르겠으나 홍보 띄워봄.
인터넷 보면서 멍 때리는 사이트.
참고로 django로 만들었음.
일기장/2009-05-16
어제는 출근하기 귀찮아서 그냥 집에서 일했다. 일하면서 어쩌다 유튜브에 걸렸다. 유튜브를 보다가 문득 베토벤 바이러스의 들리나요가 생각났다. 태연으로 검색하니까 많이 나온다. 하나씩 듣는데 정말 노래가 심금을 울린다. 나 정말 요즘 아무 슬픈 일도 없는데 들리나요, 만약에를 이어서 듣는데 나도 모르게 눈물이 날 정도로.
얼마 전 불후의 명곡에서 양희은 노래 부르는 거 보면서 역시 연륜이 쌓이니까 노래의 호소력이 다르다는 그런 생각을 했는데 양희은의 노래에서 느꼈던 그런 느낌을 이제 갓 스무 살이 된 태연에게서 느끼는 것이다. 계속 찾아서 듣다보니 강인이랑 하는 라디오 프로에서 애인 있어요를 부르는데 너무 잘 부르니까 강인이 놀랍다는 말투로, "태연이 이제 스무살이예요"라는 말을 한다. 강인도 아마 비슷한 느낌을 받지 않았을까.
문득 이창호 생각이 났다. 이창호가 세계 바둑계를 재패하기 시작할 때, 그 때까지만 해도 연륜이 쌓여야 바둑이 깊어진다는 생각이 강했다. 실제로 당시 바둑 최강국인 일본의 주요 강자들은 40대가 넘어서야 전성기를 구가할 수 있었다. 그런데 10대의 이창호가 세계의 강자들을 연파하고 우승을 차지하게 되면서 바둑계는 크나큰 충격을 받았다. 바둑의 깊이가 과연 어린 아이가 다다를 수 있는 것인가 하는 회의를 느꼈던 것이다. http://baduk.ohmynews.com/Column/CBoard/view.asp?seq=448&pagec=&gubun=C004 이 글을 보면 어떤 느낌인지 와 닿으려나.
그런 느낌을 태연을 보면서 일부 받았다. "스무 살이 이렇게 노래를 잘해도 되는 거야?" 하는 느낌. 하지만, 바둑인들이 착각했던 것처럼 나이 어린 이창호가 경지에 올랐다고 바둑의 깊이가 얕은 것도 아니고 스무 살 짜리가 심금을 울리는 노래를 부른다고 노래란 것이 가벼운 것도 아니다. 그저 그들은 어릴 때부터 아웃라이어가 되기에 필요한 deliberate practice 1만 시간을 쌓았던 것 뿐. 태연이 노래를 부르는 표정을 보면 정말 노래를 좋아하는구나 하는 느낌이 전해져 온다. 그런 열정이 1만 시간이 쌓이면 저렇게 잘할 수 있는 게 아닐까.
내가 프로그래밍을 접한 것은 10살 때, 스무 살까지 10년의 시간이 있었지만 내 스무 살 때의 프로그래밍 실력은 형편 없었다. 그로부터 10년이 더 지난 지금에야 겨우 expert에 접근해 가고 있다. 생각해보면 나도 프로그래밍을 참 좋아한다고 생각했지만 태연이 노래를 좋아하는 것만큼은 아니었던 것 같다. 뭔가 억울한 느낌도 좀 든다. 더 파이팅의 일보가 첫번째 타이틀 매치에서 지고 나서 받은 그런 느낌이랄까. 일보는 자기가 권투를 좋아하는 마음에 있어서는 누구에게도 지지 않는다고 생각했었다. 하지만 타이틀 매치 비디오를 찬찬히 보면서 자기가 챔피언에게 기술이나 파워에서 진 것이 아니라 권투를 좋아하는 마음에서 졌다는 것을 깨닫고 분한 마음을 이기지 못한다. 뭐 난 그 정도는 아니지만 뭔가 살짝 분한 느낌이다.
참 노래 하나 가지고 별 생각을 다한다. 어쨋든 좋은 노래를 들려준 태연에게 감사한다.