Rath World » Personal

Archive

Archive for the ‘Personal’ Category

블로그 휴면 해제 기념

October 11th, 2012 4 comments

쇼펜하우어님이 문장론에 말하길, 이미 사고과정이 다 끝난후 그것을 주르르 뱉는 것만이 옳고 나머지는 다 쓰레기라고 하셨다. 나는 오늘 쓰레기 글을 만들 예정이니, 바쁜 일정에 치이는 분이라면 이 글을 더이상 읽지 않기를 바란다.

근 3달간 글을 안썼는데, 어이없는 개발 이야기나 짦은 단상, 책을 통채로 인용하는 등의 글을 빼면 반년넘게 아무 글도 안썼다고 보는게 옳다. 그동안 나는 예전의 나에 비해 소통을 많이 하고 다녔다. SNS 에서 하는 그런 가식적인거 말고, 실제로 사람을 만나서 이야기하거나 1:1로 레코딩없이 나누는 이야기들 말이다. 서로 마음을 완전히 열어도 상관없는 그런 자리.

사람들마다 나에 대해 하는 이야기는 조금씩 다 다르지만, 공통점을 하나 뽑아 내 맘대로 요약하자면 이거다. “너 이상해”.

안타깝게도 나는 중학교 1학년때부터 대부분의 반 친구들로부터 “너 미친거 같애”, “야이 또라이야”, “변태새끼” 이런 이야기를 항상 들어왔기 때문에, 나를 향한 ‘이상하다’는 피드백은 식상하다못해 내 입장에서는 상대방의 표현력을 의심하게 될 정도로 재미없는 반응이다. 그분들을 위해 다시 한 번 말하지만, 나는 당신들 기준에서 이상한 것이 맞고 이 사실을 본인도 20년넘게 숙지하고 있다. 나는 당신들이 생각하는 그 이상한 것을 교정할 의지가 눈꼽만큼도 없다. 그냥 저새끼는 원래 저런거라고 보면 나와 관계를 유지하기가 훨씬 더 수월해질 것이다. 실제로 나와 20년넘게 관계를 유지하는 분들, 혹은 연차는 5년도 안됐지만 나와 깊은 관계가 되어있는 분들은 나를 “저 인간은 원래 저런 인간” 으로 생각한다. 걱정마시라, 나는 나의 이상함을 상대에게 전염시키지 않는다 훗. 알만한 사람은 다 알텐데 굳이 블로그에 왜 이런 글을 쓰냐할 수 있는데 그 이유는 3주전에 제주도로 날라가서 초등학교 절친을 만났다. 그 친구가 나보고 이상하다는 말을 하는건 당연히 괜찮은데, 그 말 하기를 본인 스스로 어려워했다는 점이 참 안타까웠기 때문이다. 그냥 뱉으시라 친구.

딴 얘기 1. 2012년초 어찌어찌 하다보니 SK Planet 에서 일을 하고 있었다. 실제로 겪어보지 않았음에도 불구하고 대기업에 대한 극심한 편견이 있었는데 여기에서 일하면서 그게 다 깨졌다. 어쩜 이리 사람들이 착하고 괜찮을까. 어디가든 직원 나부랭이는 그렇다고 클레임을 걸 수도 있겠지만 적어도 내가 보고 들은 팀장 이상급들은 문제가 아예 없다고는 할 수 없지만 변화하려는 의지가 강했고 실제로 변화를 조금씩 이루어나가고 있었다. 그래서 만족했다. 아, 대한민국 미래가 시궁창 끝은 아니구나. 이제 다시 일 얘기. 프로젝트를 진행하며 임원들의 간섭이 심할거라 추측했는데 누구도 간섭하지 않았다. 간간히 핀트가 많이 빗나간 요청이 들어오기도 했었지만 대화를 통해 합리적으로 풀어나갈 수 있었다. 대기업이라 당연히 더 개판일줄 알았는데 웬만한 중소기업보다 훨씬 더 일 진행하기가 좋았다. 누구든 이 아름다운 SK Planet 에 가서 이들의 강한 의지를 도와줄 의향이 있다면 냅다 입사지원하시기를 진심 추천한다. 내가 있는 팀에 오면 IaaS 도 할 수 있고, Ruby, Python, Java, Linux C 를 동시에 쓸 수 있는 짜릿함을 느낄 수 있고 MySQL, PostgreSQL, 각종 NoSQL 군들을 설치/운영하는 즐거움도 느낄 수 있다. 그런데 나는 “원래 이상하니까” SK Planet 에 오래 있지는 않을것 같다. 그래도 “아이 몰라 그만둘꺼야 뷁!” 하는 20대의 무책임함이 조금은 없어졌기에 팀에 들어오시고 충분히 업무에 숙달되실때까지 옆에서 같이 놀아줄거다. 만약 관심이 있어 어떻게든 내게 컨택하시면, 간단한 채팅으로 서로 간을 보고 -_- 양념이 적절하다 싶으면 본격적으로 진행을.

딴 얘기 2. 어언 재택근무 4년차가 됐다. 이쯤되면 명확하게 말할 수 있다. 아이디어고 프로그래밍 실력이고 뭐고 다 필요없다. 내게 핵심키워드는 오직 하나, 자기관리다. 터치하는 사람이 아무도 없다고 할지라도 매일 아침 정해진 시간에 일어나서 샤워를 하고 옷을 정갈하게 차려입고…. 이런 개소리를 하고자하는게 아니다. 비겁하게 책임을 전가할 대상이 없다. 상상이 되시는가. 얼마나 끔찍할지. 있는 그대로의 자기 자신을 지켜보는 괴로움을 즐겨보시라. 오만과 편견없이 있는 그대로를 볼 수만 있게되면 그 다음은 알아서 다 풀린다. 그 상태를 얼마나 잘 유지하느냐, 그리고 그 상태에서 벗어났을때 얼마나 빨리 그 상태로 다시 복귀할 수 있느냐, 그것이 내게 제일 큰 이슈다. 뜬금없는 이야기가 아니라 지극히 현실적인 이야기이다.

딴 얘기 3. 불안한 상태가 끊임없이 유지되는 것. 이게 나의 행복인 거 같다.

Categories: Daily, Personal Tags:

스택 기반 시간 관리

May 31st, 2012 13 comments

프로그래밍을 하다보면 초심을 잃게 되는 경우가 많다. 세계 각지에 퍼져있는 정보들에 대한 접근성이 기하급수적으로 높아졌기 때문이다. 라고 썼지만 그 근원은 지적 욕심 때문이다.

그런데 지적 욕심을 버릴 생각은 없다. 자기가 뭘 제대로 모른다는 사실을 자각했고, 어느정도의 시간을 투자해서 그것을 내것으로 만들 수 있을것만 같다면 당연히 공부하고 직접 해봐야 한다고 생각한다.

2달째 사용중인 시간관리 도구가 있다.

이 앱을 실행하면 텅빈 메모장과 타이머가 하나 나온다. 메모장에는 진행중인 task 에 대한 context 들을 자유롭게 쓴다. 타이머는 00:00:00 부터 1초씩 증가한다. 몇년간의 시간관리 노력에서 내가 깨달은 것이 있다면 마감기한은 내게 결코 동작하지 않는다는 것이다. 그래서 이 도구는  사용자가 소요시간을 예측하는 능력이 전혀 없다고 가정한다. 마감기한이 주는 효과는 ‘압박’ 과 ‘퀄리티 제한’ 이다. 증가하는 타이머도 ‘압박’ 을 줄 수 있다. 내가 nn 분이나 썼다니! 를 알려주기 때문이다. 마감기한에 비해 증가하는 타이머가 가지는 장점이 하나 더 있다. 마감기한을 3일 후로 잡았을 경우, 당장 그 일을 시작하는 경우는 거의 없다. 늦게 시작한다. 어찌됐든 3일안에 끝나기만 하면 되기 때문이다. 그리고 그 일을 일찍 마쳤다고 하더라도 심리적으로 얻는 보상이 전혀 없다. 반면 증가하는 타이머를 썼을 경우, 3분안에 끝낼 수도 있고 30분안에 끝낼 수도 있다. 게다가 실제로 시작하지 않은 일에 대해 ‘진행중’ 이라는 개소리를 하지 않게 된다.

‘블로그에 MMM 글쓰기’ 일을 30분간 진행했다. 일을 마치지 못했는데 갑자기 배가 고프다. 그러면 타이머를 멈추고 밥을 먹으러 간다? 아니다. 그냥 새로운 일을 시작하기로 한다. 새 일의 이름을 ‘식사’ 로 정한다. 그러면 타이머가 00:00:00 로 리셋된다. context 메모장도 비워진다. 맛있게 밥을 먹는다. 15분정도 밥을 먹었다고 치자. 밥을 먹고 자리에 돌아왔다. context 메모장에는 아무것도 없다. 기분이 좋다. 체하지 않는다. 그래서 웹서핑도 하고 미투데이도 하고 페이스북도 하면서 40분정도 놀았다. 이제 그만 일을 해야겠다. ‘식사’ Task 를 종료한다. 그러면 자동으로 ‘블로그에 MMM 글쓰기’ task 로 전환되고 context도 이전으로 돌아가고 타이머는 01:10:00 이 된다. 00:30:00 이 아니다. 블로그에 글을 쓰기로 한지 1시간 10분이 지난것이다. 맞지않나. 관리자들의 사고방식이 그대로 반영된다. 어떤 일을 시작하고 삼천포로 3번 빠져서 실제로 그 일을 하는데 걸린 시간은 3시간 이였지만 총 2일이 걸렸다고 치자. 관리자가 그거 3시간 걸렸다고 인정해주나? 아니다 2일이다. 변명은 필요없다. 그것은 2일이다. 괜히 3시간 걸린다고 얘기했다가 나중에 밥먹을 시간에 밥도 못먹고 technical debt 왕창 끌어쓰고 잠도 제시간에 못자면서 스트레스 받을 일이 없다. 그것은 그저 2일 걸리는 일이다.

아무튼 이제 소화도 다 됐고, 블로그 글쓰기 일을 30분 더 진행해서 끝냈다. 그럼 작업 끝났다고 마킹한다. 이제 스택이 비워졌다. ‘블로그 글쓰기’ task는 총 100분이 걸린걸로 회계처리 된다. 이제 새 타이머가 시작된다. task 의 이름은 ‘Idle’ 이다. Idle task 에만 예외적으로 반영되는 규칙이 있는데, 다른 일을 하다가 Idle 로 돌아오면 타이머가 00:00:00으로 리셋된다는 것이다. 내가 얼마나 놀고(Idle) 있었는지 타이머가 계속 표시해준다. Idle task 의 context 에는 평소 하고 싶었던 일들을 마구 적었다가 지웠다가, 뭐 마음대로 한다. 눈치챘겠지만 이 프로그램의 타이머는 결코 멈추지 않는다. 끊임없이 돌아간다. 마감기한이 전혀 없음에도 불구하고 엄청난 압박을 받는다. 퀄리티 제한을 할만한 핑계도 없다.

이 툴을 쓰기 시작하고나서 처음 2-3주 동안은 말도 안되게 과로를 했다. 시간이 계속 흘러간다는 것이 계속해서 느껴지는데 그 시간이 너무 아깝게 느껴졌기 때문이다. 마감기한 타이머는 압박의 칼이 내게 향해있는 것같은 느낌을 받는 반면 증가하는 타이머는 ‘넌 놀든지 말든지 나는 간다.’ 의 느낌을 준다. 사람을 아쉽게 만든다. 결국 더 주도적으로 일을 하게 만들어준다.

업무중에 들어오는 인터럽트를 다루는 데에도 효과가 있다. 누가 말을 걸면, 일하면서 수동적으로 ‘ㅇㅇ’ 질하지 말고, 그냥 새 task 를 만든다 (혹은 무시하거나). task 이름은 ‘채팅, 홍길동’ 정도가 좋겠다. 이제 채팅에 집중한다. 타이머는 채팅을 얼마나 했는지를 계속 표시한다. 증가하는 타이머 덕분에 상대방에게 ‘나 대화시간이 5분밖에 남지 않았어’ 라는 자기중심적인 이야기를 전달하는 것이 아니라 ‘우리 대화한지 벌써 30분이 넘었다’ 를 공유할 수 있게 된다.

자러 갈 때도 ‘침실’ task 를 하나 만든다. 몇시에 일어나라고 강요하지 않는다. 그냥 속편히 잔다. 자고 일어나서 타이머를 확인하면 ‘내가 6시간 잤구나..’ 를 알 수 있다. 이제 task 를 종료한다. 전날 밤에 하던 일의 타이머가 나타나고 6시간이나 흘러가있다. 슬프지만 현실이다. 시간관리툴에게 내가 먹고 자고 놀아야 하는 인간임을 확실히 알려줘라. 장기적으로 보면 훨씬 더 편해질 것이다.

p.s. 이 프로그램 역시 릴리즈 계획이 없다. 만드는데 기술적인 어려움은 없을테니 자급자족하시길 추천한다.

Categories: Personal, productivity Tags:

자급자족 개발자

May 31st, 2012 4 comments

언젠가부터 만든 프로그램을 외부에 노출하지 않기 시작했다.

제작년에 만들었던 Android 용 MSN 클론 때문이다. public release 는 대단히 고통스럽고 에너지가 많이 소모되는 일이다. Total Installation 수는 360만정도였고, Active Installation 수는 내가 이 프로젝트를 버린지 1년이 넘었기도 하고 Microsoft 가 ‘왜 앱이름에 MSN이 있니? 마켓에서 내려라’ 해서 Market 에서 사라지고 이름을 바꿔 새로 올렸기 때문에 지금은 50만대 밖에 안된다. 50만대밖에라는 표현을 하긴 했지만, 혼자 감당하기에는 큰 숫자다. 배포 한 번 할 때마다 가슴 졸이며 받았던 스트레스는 어마어마했고 사용자 피드백도 많았다. 부정적인 피드백은 그 순간의 내 에너지를 빼앗아가고, 긍정적인 피드백은 당장은 기분이 좋지만 더 잘해야겠다는 생각으로 내 미래 에너지를 빼앗아간다. 어찌됐든 내 에너지가 소모된다.

나는 너무 지쳤고, 업데이트 시마다 받는 관심 리젠을 받지 않기 위해 업데이트를 1년째 안하고 있다. 성공했다. 제품이 만들어내는 수익은 1/10 수준으로 떨어졌지만 나는 에너지를 다른 곳에 쓸 수 있게 됐기 때문이다.

지난 3월경에 만든 버스앱이 있다. 2월 중순에 집을 이사했고, 여기는 지하철역과 15분이나 떨어져있지만 버스정류장과는 1분 거리기 때문에 버스앱이 필요했다. 런던에는 Transport for London 이란 사이트에서 각 버스정류소의 지리적 위치, 실시간 버스 도착 시간 등을 제공한다. 1-2주 정도의 시간을 들여 만들었고 쓸만한 수준이다. 이렇게 1달 정도를 쓰다보니 Google Maps 타일 이미지 때문에 3G 트래픽이 많아진 것을 발견했다. 그래서 OpenStreenMapMapnik 을 이용하여 런던 전체 지도를 렌더링하여 SD 카드에 넣었다. 줌레벨 14~18 PNG 타일을 다 넣었지만 670MB 정도면 되고 앱 반응속도도 빨라져서 좋다. 이렇게 또 1달 정도를 썼다. 아직 불만이 없다. 며칠전에 버스로 30분을 이동해야하는 헬스장을 끊었으니 조만간 앱도 개선이 될 듯 하다.

우리집 인터넷은 무지막지하게 느리다. 아내가 유튜브로 드라마를 보기만 해도 업무에 지장이 올 정도다. 그런데 내가 즐겨듣는 몇몇 음악은 유튜브에서만 들을 수 있다. 그래서 유튜브 다운로더를 만들었다. 나는 커멘드라인 중독자라 CLI로 만들었다. 다운로드 후 오디오만 ffmpeg 으로 뽑아서 Apple Script 으로 iTunes ‘YouTube’ 플레이리스트에 넣는다. 개발에 걸리는 시간은 수시간이였고, 여태까지 아무런 불만도 없었다. 이거 릴리즈한다고 생각해봐라. 일단 YouTube 컨텐트를 다운로드 하는 것 자체가 불법이다. 사람들이 다 Mac 을 쓰는 것도 아니고, Mac 사용자라 하더라도 iTunes 을 메인으로 쓸지 안쓸지 모른다. 그들의 플레이리스트 이름이 과연 ‘YouTube’ 일까? 게다가 ffmpeg 바이너리도 재배포해야한다. 내 ffmpeg 은 –enable-gpl 에 –enable-nonfree 다. ffmpeg 바이너리 재배포만 해도 불법이다. Mac 쓰는 사용자중에 몇명이나 Terminal.app 을 항상 띄워둘까?

Michael T. Nygard의 Release it: Design and Deploy Production-Ready Software도 읽어보았지만 내겐 효과가 없었다. 아니 역효과만 났다. 책 제목만 보고 ‘릴리즈 못하는 병이 없어질지도 몰라’ 했지만 Production Ready 의 눈높이만 올려줘서 릴리즈 안하는 이유를 더 잘 만들어 낼 수 있게 됐기 때문이다.

내 릴리즈 기준을 충족하는 제대로 된 제품을 만들어 릴리즈하려면 훌륭한 엔지니어(디자이너 포함)가 적어도 4명은 필요한 것 같다. 그런데 나는 내 밑에 사람을 두는 것을 끔찍히도 싫어하고, 협동을 하는데 꼭 필요한 희생의 미덕이 부족하다. 갈 길이 멀다. 그렇기 때문에 인생은 살만한 가치가 있다.

Categories: Development, Life, Personal Tags: