2011년, 이직.

마지막으로 포스팅했던 날짜가 2010년 12월 7일이네요. 그때라면, 발전하지 못하고 있는 것 같은 스스로를 자책하면서 이직을 준비하던때 입니다. 나름 만족하며 다니던 회사였는데, 막상 옮기려니 이런저런 생각이 들어군요. 왜 제가 회사를 갈아타려했는지 이야기해보겠습니다.

우선, 월급이 밀린다거나, 회사의 정치적인 문제라거나, 혹은 회사가 망해버렸거나, 그것도 아니면 잘렸거나…, 이런건 이유에 해당되지 않습니다. 전 한번도 월급을 늦게 받아본 적이 없었고, 회사가 망했던 경우도 없었고, 사내정치나 대인관계로 고민해본적이 없습니다. 그런 점에선 분명히 운이 좋았다고 할 수 있습니다. 여기에 조금 덧붙이자면, 제 여건에 맞춰서 나름 회사를 잘 선택했다고 볼 수도 있고요.

2010년 12월 7일 당시의 회사는 두 번째 회사였습니다. 첫 번째 회사는 2년 동안 다녔고, 당시의 퇴직 사유는 절반 이상이 ‘세계여행’때문이었죠. 나머지 중 상당수는 출근길에 본 눈부신 햇살 때문이었고요. 좀 더 정확히 이야기하면, 그때의 햇살이, 오랜 시간 꿈꿔왔던 ‘세계여행’에 대한 욕구를 자극했던 거죠. 그리고 얼마 안 있어 회사를 그만 두었고, 세 달을 쉬고 떠나려 했는데, 채 세 달을 채우진 못했습니다. 세 달 동안 논다는 것도 어렵더라고요. 제 생각엔, 한 한 두 달이면 충분하지 않을까 싶습니다. 그런 의미에서 회사에서 장기 근속자에게 한 달의 특별 휴가를 주는 건 직원을 붙잡아둘 수 있는 아주 좋은 수단이라는 생각이 듭니다. 어쨌든 그리고 정말 여행을 떠났습니다. 2년 간 일을 했으니 어느 정도는 돈이 있었고, 따라서 굳이 돈에 스트레스 받으며 돌아다니지 않아도 됐죠. 또, 1년을 예상했으니 시간 때문에 서두를 필요도 없었고요. 근데, 그도 6개월 여 만에 그만 두었습니다. 여기에 대해서는 어떤 식으로 든 따로 이야기할 기회가 있으리라 믿고, 끝내죠.

한국에 돌아와서 일주일 동안은 매일 면접을 봤는데, 그 중 한 회사에 입사하기로 했지만, 이후에 다른 회사에서 연락이 오는 바람에, 먼저 회사에 양해를 구하고 저의 두 번째 회사에 입사하게 되었죠. 그렇게 두 번째 회사에서 거의 4년을 일했습니다.

환경, (대부분의)사람들, 보수. 이 모두에 대해서 큰 불만이 없었습니다. 적어도 처음 2년은 상당히 만족스럽게 느꼈고, 그래서 타 회사의 제의도 고민 없이 거절해 버렸죠. 돌이켜 생각해보면, 팀장이 바뀐 이후부터 아쉬움이 조금씩 늘어나지 않았나 싶습니다. 우선, 팀 내의 사소한 일들이 공정하게 처리되지 않는다고 느끼게 되었고요, 팀원들의 업무 성과에 대해서 신경 쓰지 못하는 모습이 눈에 띄었죠. 또 하나 결정적인 건, 그런 아쉬움이나 불만들을 제대로 들어주지 않는다는 것이었습니다. 즉, 팀원은 팀원들끼리 불만을 이야기하고, 팀장은 팀장 나름의 불만을 이야기하는 형국이었던 겁니다. 이런 상태로 시간이 흐르니, 팀원이 어떤 문제를 발견했을 때도, 굳이 고치려 하지 않게 되더군요. 혼자 해결 할 수 있는 일이면 당연히 그렇게 하겠지만, 아시다시피 회사 업무라는 게 부서간, 또 사람간에, 얽히고 설킨 관계인 지라, 어디 그게 쉽습니까. 이렇게 되니, 팀이 스스로 발전하는 기회를 놓쳐버리게 된 것입니다. 이 말은요…, 팀원이 팀의 구성원으로서 느낄 수 있는 성취감을 없애버렸다는 말이기도 합니다. 회사는 그냥 회사가 되어버린 거고, 팀은 그냥 팀이 되어버린 겁니다. 조직을 위해서 하고자 하는 동기부여가 제대로 되지 않았던 거죠.
일이 재밌으면, 사람을 붙잡을 수 있습니다. 수많은 오픈소스 프로젝트가 이를 증명하고 있습니다. 동시에, 소리 없이 사라지는 상당수의 오픈소스 프로젝트가, 일에 대한 열정이 얼마나 쉽게 사라지는지, 또 동기부여가 부족한 일이 얼마나 쉽게 중단되는 지를 증명합니다.

돈을 많이 주면, 사람을 붙잡을 수 있습니다. 다른 의견도 있겠지만, 대부분의 직장인에게 연봉을 두 배로 준다고 하면, 군말 없이 자리에서 일어날 겁니다. 그러나, 이 많다는 기준이 천차만별인데다, 계속 변하는 지라, 돈으로만 사람을 붙잡으려면, 상당한 손해를 감수해야 할 수도 있겠죠.

이 모든 것을 뛰어넘을 수 있는 게 ‘사람’이라고 생각합니다. 단순히 좋은 술친구를 의미하는 것 말고, 서로의 고민을 이야기하고 해결해 줄 수 있는 사람 말입니다. 사람이 좋으면 일이 재미없을 리 없을 테죠. 그렇다면, 돈이 다소 모자라도 좀 더 견딜 수 있을 겁니다.

비슷한 처지의 사람들과는 이것이 쉽습니다. 친구 간에 고민을 털어놓는 것 처럼요. 최소한 같이 고민해 줄 수는 있죠. 그러나 이를 해결해 줄 수 있는 열쇠를 가진 사람에게는 그것이 어렵습니다. 그래서, 책임 있는 자리에 앉아있는 사람의 역할이 중요합니다. 안타깝게도, 자리가 높아질 수록, 이런 생각을 점점 잊더군요. 그래서 이런 사람은 찾기 힘듭니다. 전, 지금까지 한 번 봤습니다. 위에 언급했던 첫 번째 팀장이요. 팀원을 위해 상사나 다른 부서와 싸워줄 수 있는 탐장은 많지 않습니다. 근데, 그 팀장은 싸우더군요. 싸운다기 보다는, 할 말을 하는 거죠. 누가 봐도 옳은 생각을요.

이쯤 해서 정리하는 게 좋겠습니다. 2011년이 얼마 남지 않았거든요. 제가 회사를 옮기려고 했던 이유는, 모두가 옳다고 생각하는 의견이 제대로 반영되지 못하는 것 때문이었습니다. 그렇게 5-6개월 동안 몇 군데에 이력서를 넣었고, 지금 일하는 곳으로 옮기게 되었습니다.

어쩌면, 새로운 회사에서는 제 고민이 해결됐는지 궁금한 분도 있을지 모르겠네요. 그것에 대해서는, 나중에 기회가 되면 다시 쓰도록 하겠습니다.

2011년을 포스트 하나 없이 그냥 넘길 수 없어서, 원래 쓰려 던 주제는 이게 아니었는데, 괜스레 개인적인 이야기만 늘어놓아 버렸습니다. 새해에도, 프로그래밍을 좋아하시는 모든 분들이 계속 프로그래밍 할 수 있었으면 좋겠습니다.

킨들3 사용기

동기는 가격이 너무 싸다는 것이었다. 단돈 139달러. 배송비(20불)와 관세(약 32,000원)를 포함해도 20만원이 조금 넘는다. 와이파이까지 지원되는데, 이정도 가격이면 정말 만족스럽다. 20만원이면, 겨우(?) IT관련 서적 몇 권이다. 게다가, 무려 한글도 지원한다. 배송은 출발 4일만에 도착. 그것도 토요일과 일요일이 낀 상태. 아마존에서 책을 받는 속도와는 비교 불가. 다만, 당시에는 품절이라 대기시간이 있었다.

생김새는 깔끔하다. 그냥 군더더기 없는 수준. 키보드의 질감은 약간 거칠어서, 만지면, 키보드구나 알 수 있다. 페이지를 넘기는 버튼이 좌우에 두 개씩 있는데, 오른쪽으로 넘기는 버튼이 더 크다. 처음에는 페이지버튼이 좌우 대칭이 더 좋지 않았을까 생각했지만, 책을 읽다가 뒤로 가는 경우가 적은 만큼, 앞으로 넘기는 버튼이 더 커야 하는 게 맞는 것 같다. 240g의 무게는 어떤 자세로 사용해도 부담 없을 정도로, 충분히 가볍다.

화면은 아주 편안하게 다가온다. 해상도가 아주 뛰어나진 않지만(600×800), 그것을 무시할 수 있을 만큼 부드럽게 보인다. 일반 책을 읽는 느낌과 상당히 흡사해서, 모니터화면으로 문서를 읽는 것과는 확실한 차이를 느낄 수 있다. 전자잉크의 특성상, 페이지전환시 잔상이 생기지만, 사용에 문제를 줄만한 수준은 아니다. 다만, 화면의 부분적인 갱신이 일어날 경우(예를 들어 사전을 찾아보는 경우 등), 갱신전의 화면이 깨끗하게 지워지지 않았다. 페이지를 전부 갱신하는 경우는 이런 현상이 생기지 않는다. 북큐브 B-815와 비교해보니, 콘트라스트와 전환속도 모두 두드러질 정도로 차이가 났다(긍정적 의미).

한글을 포함해서 일본어와 중국어도 지원한다. 그러나, 그것뿐이다. 뒷면의 한국 전파인증 마크와 한글 지원은, 배송국가에 한국을 포함시키기 위한 것일 뿐이다. 아마존의 변환 서비스를 이용하면 좀 더 괜찮은 한글폰트를 볼 수 있다지만, 그게 아니라면, 평생 사용해본 적도, 사용할 일도 없는 한글폰트를 맞닥뜨릴 것이다. 이에 비해, 일본어와 중국에는 읽을만한 수준이다.

을 구입하는 과정은 정말 간단하며, 많은 킨들 책들이 무료로 제공되기도 한다. 적어도 아마존에서 책을 사려한다면, 킨들에디션은 매력적인 선택이다. 내가 산 9.99불짜리 책을 새 책으로 사려면, 최소한 9불이상 줘야 한다. 비슷하다고? 아마, YES24에서 구입하는 것이라면, 선뜻 구입하지 않았을 것이다. 내가 북미에 산다고 해도 비슷할 것이다. 킨들로 10불이 넘을 배송비와 보름가량의 배송시간을 아낄 수 있으므로, 분명히 이는 괜찮은 선택이었다. 그러나 일부 책들은, 가격이 비싸다. 아마존에서 개인셀러가 파는 책들의 가격은, 아마존이 파는 가격보다 일반적으로 더 저렴하다. 새 책이라면 그 차이가 큰 경우는 많지 않지만, 그렇지 않다면 이야기가 달라진다. 예를 들어, 위시리스트에 담긴 ‘A Lion Called Christian’은 킨들에디션이 9.06불이다. 페이퍼백이 10.07불이니 그럭저럭 봐줄 만 하지만, 개인셀러가 파는 중고 하드커버는 단돈 0.01불이다. 여기에 해외배송을 하면 대략 14불정도의 금액이 나오는데, 이런 경우는 매우 망설여 진다. 중고 책이기 때문에 어쩔 수 없다면, 최소한 개인셀러가 파는 새 책보다는 저렴해야 한다. 아마존에서 개인셀러가 파는 중고 책들은 상태가 완벽한 경우가 많다. 적어도 내 경험에 Like New라고 설명된 중고 책은 새 책이나 다름 없었고, 이것이 더 싸다면, 난 중고로 산다.

앞으로도 킨들을 계속 사용할 것이다. 단, 내가 줄을 그으면서 읽는 책이 아닌 경우에 한해서다. 나에게 있어서 소설이나 에세이가 바로 그런 책들이다. 학습서를 읽을 때면, 난 언제나 책에 줄을 긋는다. 물론, 킨들에서도 줄을 그을 수 있고, 또 주석을 달 수도 있다. 책갈피를 꽂아둘 수도 있지만, 그것이 내가 원하는 것을 종이 책처럼 빨리 찾을 수 있게 하지는 못한다. 템플릿 파라미터를 갖는 C++ 템플릿을 찾아보기 위해서 수백 번 다음페이지 버튼을 누를 수는 없지 않은가(목차에서 링크를 제대로 지원하지 않으면 정말 이래야 할 수도 있다). 그게 아니라면, 킨들은 정말 쓸만하다. 물론, 책을 읽지 않는 사람이 킨들을 산다고 책을 읽을 가능성은 그다지 많지는 않겠지만 말이다.

Ruby On Rails & 생각

짧은 시간 이었지만, 태어나서 처음으로 웹 프로젝트를 끝냈다. 나에게 ‘끝냈다’는 남들이 사용할 수 있을만한 결과물을 내 놓았다는 의미이다. 이를 기념 삼아 간단히 소회를 풀어보고자 한다.

내가 웹 프로그래밍을 해본 것이라고는 한 십 년쯤 전에 PHP로 뭔가 간단히 끄적여 본 것이 전부였다. 그러다가 Ruby를 접하고 내친김에 Ruby On Rails(이하 RoR)도 시작했지만, 태생이 태생인지라 웹서버와 브라우저간의 통신이라는 다소 미묘한 세계를 이해하는데 상당히 애를 먹었다. 서버프로그래머인 나에게 있어서, 웹 프로그래밍 – 나의 경우에는 좀 더 구체적으로 RoR이 되겠다 – 에서 사용하는 서버와 클라이언트간의 정보전달방법은, 그 추상화의 정도가 너무 심했던 것 같다. 이런 이유로 RoR에 관한 책을…, 그러니깐 다섯 권을 샀다. 물론, Ruby에 관한 책은 별도고. 세 번째 책쯤에서 느낌이 왔고, 네 번째 책에서 감을 잡았다. 그래서 다섯 번째 책은 아직 그냥 있다. 언젠간 읽겠지. 꽤 빨리 읽을 수 있을 것이다.

회사에서 게임데이터를 엑셀로 관리하고 있었다. 같은 실수가 몇 번이고 반복되고 있었고, 기획자는 툴의 필요성을 강조했다. 그래서 내가 RoR을 꺼냈다.

어느 게임회사나, 시간이 넉넉한 곳은 없다. 따라서 게임개발에 사용되는 툴은 그 중요도에 따라 완성도가 결정되는 경우가 많다. 프로그래밍지식이 없는 기획자나 그래픽담당자는 자신이 하는 일이 막노동인줄도 모르고 그냥 열심히 하며, 설사 이를 프로그래머가 알게 되었다 하더라고 전담자가 배치되지 않는 이상 제대로 된 툴이 나오지 않는다. 어지간한 규모가 아니라면, 툴을 전담하는 개발팀을 두는 회사는 거의 없다. 결국, 툴 개발은 게임프로그래머에게 추가작업을 요구하게 된다.

게임데이터를 다루는 툴은 단순해 보이지만, 이것이 DB와 연결되고 데이터 검증과정이 들어가고, 또 사용자 인증 및 히스토리기능까지 넣으려 한다면, 이를 독립된 어플리케이션으로 만드는데 꽤 많은 시간이 소모될 것은 뻔한 일이다. 더구나 원활한 편집을 위한 UI는 게임프로그래머가 구현하기엔 결코 간단한 기능이 아니다.

나는 조인을 사용하는 쿼리문을 제대로 작성할 줄 못하고, 서로 다른 DBMS의 특성도 잘 모른다. Ajax는 거의 들어만 본 수준이다. HTML은 기본적인 것만 알고, 당연히 웹 표준은 딴 세상 이야기다. 프로젝트 시작전이나 지금이나 이 사실은 변함이 없다. RoR이 멋진 것은, 이런 상태에서도 프로젝트를 끝낼 수 있었다는 것이다. 물론, 아는 것이 많을수록 더 괜찮은 프로그래밍을 할 수 있는 것이 당연하겠지만, 그렇지 않아도 in-house툴로는 충분한 결과물을 만들어 낼 수 있다.

이후에, 테스트 삼아 만들어본 또 다른 프로젝트는, 반나절 만에 동작하는 프로토타입을 만들어 낼 수 있었다. 서버의 덤프파일이 생기면 이를 모아서 관리하고 그 통계를 보여주는 웹 프로그램이었다. 이를 웹으로 구현하지 않으면, 파일전송을 위해서 FTP를 사용하든가 아예 이를 구현해야 한다. 그리고 또 이를 정보화하기 위한 작업도 필요하다. 개발자가 덤프분석을 위해 이를 다운받는 건 또 어떻게 할 것인가.

대부분의 게임프로그래머는 웹 프로그래밍에 대해 알지 못한다. 게다가 웹 프로그래밍에 대한 기술적 하대는 게임프로그래머로 하여금 웹 프로그래밍에 대한 관심을 점점 더 멀게 한다. 안타까운 점은, 동일한 목적에 대해서, 어플리케이션개발보다 웹 개발이 훨씬 더 빠르고 효율적인 경우가 많다는 것이다. 더구나, RoR처럼 생산성이 높은 웹 프레임워크를 사용한다면, 그 효과는 배가되기 마련이다. 이 일을 사내의 웹팀에게 넘기지 않고 직접 해야 하는 이유는, 그들도 바쁘거니와, 프로그래밍을 할 줄 아는 사람 중에서는 게임프로그래머가 그 게임과 만들 툴을 가장 잘 이해하고 있기 때문이다. 웹팀이 각 팀에 특화된 툴을 만들어 줄 수 있을 리도 요원하다.

나의 경우는 Ruby가 마음에 들어서 RoR을 사용한 것이지만, 어떤 언어든, 어떤 프레임워크든, 어떤 방식이든, 빨리, 그리고 사용자가 편하게 사용할 수 있는 물건을 내놓는 것이 최고 아니겠나.

마지막으로, 그 툴이 지금 어떻게 지내고 있는지 살짝 덧붙인다. 툴만 완성되면 실수가 없을 것처럼 이야기하던 기획자는 아직 그 툴을 제대로 사용하고 있지 않다. 요청한지 몇 주가 지나도록 툴 설정에 관련된 자료는 오지 않고 있으며, 그럴 의지가 있는지도 잘 모르겠다. 스크립트에 관련된 각종 자료를 정리해주는 것보다, 실수를 하더라도 지금까지의 방식을 고수하는 것이, 차라리 더 편하다고 생각하는 것 같다.

툴이 사용되지 못해도, 이를 통해서 내가 배운 것들로 충분히 행복하다. 애당초, 거기에 더 큰 비중이 있었다. 다만, 계속 부지런 떠는 그들이 마음에 걸릴 뿐이다.

아이러브스쿨은 왜 잊혀졌는가?

한창 주가를 올리던 시기엔, 원하는 친구는 아이러브스쿨을 통해서 다 찾을 수 있을 정도였다. 그러다 좀 있으니 다모임이라는 사이트가 그 자리를 대신하기 시작했고, 동시에 아이러브스쿨은 내리막길을 향해 발걸음을 내딛고 있었다.

보통, 이렇게 회사가 어려워지면, 여러 이유로 회사를 그만두는 사람이 늘어나기 시작한다. 그들 대부분은 그 길로 또 다른 삶을 시작한다. 그 중에는 드물게 스스로의 뒤를 돌아보는 사람도 있기 마련인데, 바로 아이러브스쿨의 개발팀장이었던 서영수님이다.

오늘, 뒤늦게 발견한 그의 소중한 회고는 몸담고 있는 회사에 대해서 많은 것을 생각할 수 있게 해주었다.

다운로드 PDF: 아이러브스쿨은 왜 잊혀졌는가?

애플의 혁신 – iPhone OS 4

iPhone OS 4

Multitasking, Folders, Unified inbox, iBooks, Enterprise, Game Center, iAd.

‘겨우 이걸 신기술이라고 발표한 거야? 멀티태스킹은 애플의 모바일 디바이스에서만 안 되는 거고, 폴더도 니들만 없던 거고, 오죽하면 통합이 메일을 Top7에 포함시켰냐. iBooks는 자기들 책 팔아먹으려고 만든 게 뻔하고, 엔터프라이즈기능은 니들이 안 해도 아이폰을 사용할 기업이라면 어느 정도 당연히 하지 않겠어? 게임센터는 기존의 서비스를 죽일 테고, 콰트로를 인수했다더니 결국 광고기능을 넣는구먼.’이라고 쓰려고 했다. 스티브잡스가 대단한 건 알았지만, 이 정도로 일반적인 것들로 미디어의 대서특필을 이끌어 낼 수 있다는 게 어이없다고 생각했다. 나 또한 아이폰의 열렬한 지지자인동시에 사용자이지만, 솔직히 이건 아니라고 생각했다. 스티브잡스가 소개하는 iPhone OS 4의 대표적인 7가지 기술에 대한 수많은 기사와 글들을 봤을 땐, 정말인지 저렇게 쓰려고 했다. 진정하고, 키노트 동영상을 보기를 잘했다. 안 그랬으면 난 바보 될 뻔했다.

다른 건 제쳐두고, 세 가지에 놀랐다.

멀티태스킹이 어떻게 배터리킬러가 되지 않을 수 있는지에 대한 건 관심 없다. 그냥 그럴 수도 있다고 생각한다. 정말 그렇다면, 그것도 쬐끔 대단하긴 하다. 개발자에게 이에 대한 API를 제공한다는 것도 괜찮은 아이디어 같다. 내 아버지의 경우라면, 멀티태스킹이 없는 것이 오히려 이익이다. 윈도폰을 사용하시는, 나이에 비해서 매우 기술 친화적인, 작은아버지는 윈도폰의 인터페이스를 전혀 이해하시지 못하시는 듯 하다. 좀 더 정확히 말하면, 노력은 하시지만 이해가 안 된다고 해야겠다. 수십 년 젊은 나도 모르는 판에 오죽하겠나. 삼성이 만든 거지 같은 UI가 없었다면 그나마 나았을 수도 있었겠다. 과거에 내가 사용하던 WM6.1을 OS로 사용하던 스마트폰에서는 현재 어떤 프로그램이 실행 중인지 알 수가 없었다, 물론 설정으로 들어가서 메모리를 확인하면 어떤 프로그램이 돌고 있는지 찾을 수는 있다. 아니면 배터리소모를 감수하고 서드파티앱을 설치하면 PC용 윈도 비슷하게 구현되긴 했다. MS는 이런걸 누구나 알고, 또 할 수 있다고 생각한 것 같다. 그런데 말이지, 스티브잡스는, 혹은 애플은 그렇지 않다는 걸 알고 있었던 듯싶다. 아이폰의 몇 안 되는 버튼인 홈버튼을 더블클릭(이것도 나이가 있는 분들에겐 어려울 수 있지만, 버튼을 하나 늘리는 것보단 훨씬 낫다)하면 실행중인 프로그램이 보인다. 현재화면을 가리지도 않는다. 이건 윈도모바일 세계에선 상상도 할 수 없는 일이다. MS라면 새로운 창을 띄웠지 않았을까. 아니면 좀 더 복잡한 방법을 골랐을 것이다. 물론, 이것도 현재의 것을 버린다는 가정하에서나 가능하지만. 어쨌든, 이런 식의 멀티태스킹이라면 누구나 이해할 수 있을 것이다. 더 이상 언제 실행시켰는지도 모르는 앱을 발견하는 일은 없어지고, 또 그것을 확인하기 위한 복잡한 과정도 없어졌다.

여러 개의 앱을 폴더에 넣어둔다는 개념은 너무 당연해서 그걸 새로운 기능이라고 말하는 것조차 우습지만, 잡스가 보여준 대로라면, 이건 새로운 기능이 맞다. 자꾸 WM이랑 비교하게 된다. 어쩔 수 없다. 지금까지 너무 당연하게 생각하던 것들조차 애플은 더 단순하게 만들었다. WM에서 폴더란 것은, 그리고 모든 PC환경의 폴더는 별도로 만드는 것이다. 그래서 빈 폴더가 존재할 수 있다. 곱씹어보면, 빈 폴더가 존재해야 할 이유는 없다. 그래서 iPhone OS 4의 폴더기능에는 빈 폴더가 없다. 죽이는 발상이다. 서로 다른 앱의 아이콘을 합치면 자동으로 폴더가 만들어진다. 게다가 폴더이름은 앱의 카테고리를 참조해서 자동으로 기본값이 정해진다. 폴더를 펼치면? 기존의 화면에 폴더의 내용이 보인다. 지금까지 폴더를 클릭하면 그 내용이 그 창에서 표시되는 것이 일반적이었다. 당연히 기존의 화면은 보이지 않는다. 적어도 WM6.1에서는 그랬다. ‘화면이 작아서’라고 이해했지만, 아이폰에서는 그렇지 않다. 작은 화면은 여전해도, 폴더의 내용은 팝업으로 펼쳐진다. 폴더의 앱이 많으면? 그래서 9개로 최대개수를 제한하는 듯 하다. 확실치는 않지만, 그렇다고 하더라도, 아이콘의 수를 제한하는 것이 기존의 화면을 가리는 것 보단 훨씬 낫다. 더 이상 뒤로 가기 위한 버튼을 만들지 않아도 되니깐.

애드몹을 이용하여 앱에 광고를 게재하면 클릭당 0.01불을 준단다. 10원이 조금 넘는 돈이다. 근데 이걸 누가 클릭하지. – -; 누구도 광고로부터 방해 받고 싶어하지 않는다. TV에서 광고를 보지 않아도 된다면 누가 광고를 보겠는가. PC에서라면, 어쩌다 광고를 클릭하기도 한다. 화면이 넓으니깐, 팝업이 튀어나와도 그 정도를 참아줄 아량은 있다. 그러나 스마트폰이라면 얘기가 달라진다. 더 느려질게 뻔하고, 더욱이 튀어나온 브라우저를 꺼야 한다. 당연히 난 한번도 아이폰에서 광고를 클릭해 본적이 없다. 그러나 잡스가 시연한 iAd형식의 광고라면 얘기가 좀 달라진다. 여전히 광고를 클릭하려고 하진 않겠지만, 실수로라도 클릭하는 것에 대한 짜증은 훨씬 덜할게 분명하다. 광고에 방해 받고 싶지 않다는 말에는 광고로 내가 사용하던 앱의 실행을 중단해야 한다는 것도 포함된다. 그런데, 간단히 ‘X’버튼을 누르는 것으로 끝난다면? TV광고보다는 훨씬 좋다. 최소한, 클릭에 대한 부담을 상쇄시킬 수 있을 것이다. 이 정도라면, 정말 관심이 있는 건 클릭할 것 같다. 게다가 광고료의 60%를 개발자에게 준단다. 분명, 구글보다는 100배쯤 너그러운 조치다. 구글이 뭔가 바구지 않는다면, 앱개발자는 더 이상 애드몹을 사용하지 않을 것이다. 안드로이드 개발자라면 또 모르겠지만.

키노트 초반, 잡스가 iPad의 성과를 소개하기 전에 보여준 USA Today의 Ed Baig라는 사람의 iPad리뷰는 다음과 같다.

“The iPad is not so much about what you can do – browse, do e-mail, play games, read eboks and more – but how you can do it. That’s where Apple is rewriting the rulebook for mainstream computing.”

잡스횽이 how를 힘주어 말했다. 그럴 만 했다. 애플의 디바이스에 구현된 기능은 대단치 않지만, 그 기능을 사용하기 위한 UI는 분명 ‘혁신적’이라 할만하다.

아이폰과 상상력

개발자로서 꽤 괜찮은 점이라면, 다른 사람이 만든 프로그램을 사용할 때, 대략의 사용법을 짐작할 수 있다는 것이다. 예를 들어 마우스 오른쪽 버튼을 누르면 당연히 팝업메뉴가 튀어나온다. 프로그래머가 제정신이라면 당연히 그렇게 만든다. 이점은 스마트폰에서도 비슷하게 동작한다. 윈도 모바일6.1을 운영체제로 사용하는 m480(미라지)에서는 화면을 누른 상태를 유지하면, 팝업메뉴가 튀어나왔다. 즉, 윈도모바일에서는 마우스 왼쪽, 오른쪽 클릭을 탭핑 시간으로 구분한다. 그것도 아니라면, 어딘가 관련된 메뉴를 화면에 보여줘야 한다. 이런 식으로, 윈도기반 UI에는 기본적인 룰이 있고, 대부분의 프로그래머는 이 룰을 잘 따른다. 사실, 그것을 거스르기가 더 힘들다.

이제, 아이폰 얘기다. 사람들이 애플의 UI는 직관적이라고 한다. 이 말이 사실로 받아들여질 수 있었던 데에는 하드웨어적 완성도와 운영체제가 받쳐줬기 때문이지만, 확실히 익히기 쉽다. 아마, 내가 개발자가 아니었다면, 그리고 MS의 UI에 익숙하지 않았더라면 더 쉬웠을 것이다. 아이폰에서 iTunes의 다운로드 목록을 지우는 방법을 모르겠다. 또 다운받은 Podcast를 지우는 방법을 모르겠다. 구글을 뒤져보니 혹자는 PC와 연결해서 iTunes에서 지워야 한단다. 그렇게 했다. 그렇지만 다운로드 목록은 지우지 못했다. 사용자 편의성이 좋아 그렇게 호평 받는다는 iTunes를 욕하며 구글을 좀 더 뒤졌다. 해당 항목을 좌우로 쓱~ 문질러주면 된다 길래 해보니 정말 삭제 메뉴가 떴다. 이로서 애플은 지저분한 ‘삭제’메뉴나 버튼을 만들지 않을 수 있었다. 이는 클릭, 클릭으로 동작하는 윈도모바일(적어도 6.5.2까지는)에서는 애당초 구현이 불가능한 방법이다. 윈도개발자인 나로서는 상상하기 힘들다. 그리고 그런 사용자는 분명히 많다.

어느 것이 좋고 나쁘고를 떠나서, 한가지 분명한 점은 MS의 UI가 나 상상력의 울타리로 작용했다는 점이다. 그리고 그것을 아이폰이 약간 걷어줬다. 이런 경험을 나뿐만이 아닌 많은 사람이 하게 되면서 더 많은 것이 바뀔 것이다. 나는 이런 변화를 즐겁게 바라볼 것이고, 좀 더 변하기 위해서 맥북도 질러야겠다. ㅋㅋ

WPTouch 설치

시대적 요구(?)에 의해서 WPTouch 를 설치했다. 이제는 아이폰에서 아주 예쁘게 보인다. 단, 소스코드는 잘리는 문제가 있는데…, 이런때에는 하단의 옵션을 끄면 일반 브라우저에서 보는대로 보인다.

이상은 대체로 아이폰 유저들을 위한 얘기.
결론? 대세는 아이폰.
이 포스트도 아이 폰에서 WP2어플로 작성 ㅋㅋ

앞으론, 아이폰앱 개발과 관련된 포스트도 쓸 수있는 기회가 있기를…

나의 프로그래밍 언어 사용기

YDN 블로그 오픈 이벤트도 있고 하니, 블로그에 포스트 수라도 늘릴 겸, 내가 사용한 프로그래밍 언어들에 대해서 이야기하고자 한다. 심각하지 않게~

대략 87년쯤? 애플이라고 구라 치는 컴퓨터가 집에 들어왔다. 맞다. 교육용 컴퓨터라고 붐이 일어났던 그때다. 여기저기 컴퓨터학원이 생기고, 컴퓨터라는 물건은 공부하기 위해선 꼭 필요한 그런 거였다. 물론, 그런 게 아니라는 사실이 밝혀지는 데는 아주 짧은 시간만이 필요했다. 어쨌든, 그렇게 해서 내가 처음 접한 프로그래밍 언어는 BASIC이었다. 뭐, 사실은 그게 뭔지도 몰랐다. 그냥 컴퓨터를 사면서 딸려온 책에 나온 내용을 그대로 치면 화면에 몇 가지 간단한 도형이 그려지는 그런 프로그램이었다. 몇 년이 지나서는 BASIC으로 간단한 텍스트 게임을 만드는 수준이 되었다. 상황에 따라 몇 가지 선택이 주어지고 이야기가 진행되는 그런, – -; 그 다음은? 컴퓨터는 교육용이 아니라는 사실이 밝혀졌으므로 사용시간에 제한이 가해졌고, 중간에 잠깐 Borland C++을 접할 기회가 있었지만, 도무지 알 수가 없어서 포기. 그리고 대학에 갔다.

요즘은 Java를 먼저 배우는 게 일반적인 것 같던데, 내가 대학교에 입학했을 때는 C가 그 자리에 있었다. 내가 할 수 있었던 건 별로 없었다. 결정적으로 대학은 시간을 너무 많이 줬고, 그래서 감사히 놀았다. 그나마 다행인건 C++에 관심을 가지고 찝접댔다는 건데, 덕분에 1학년 겨울방학에는 Borland C++ Builder를 사용해서 뭔가 제대로 동작하는 프로그램을 만들 수 있었고, 당시 천리안에서만 5000회 이상의 다운로드를 기록했다. 이때부터 조금씩 프로그래밍 공부에 불이 붙기 시작했던 것 같다.

이후에 Borland Delphi를 잠깐 했지만, C++에 이미 익숙해진 터라 Object Pascal의 낯섦으로 인해 군대 가기 전까지의 숙제는 모두 Borland C++ Build로 처리했다. 일단, GUI가 들어가면 먹어줬다.

군입대 전까지 잡아둔 두 가지 목표가 있었는데, 하나는 Borland C++ Build로 세금계산서를 프린트하는 프로그램을 만드는 것과 Assembly로 바이러스를 만드는 거였다. 세금계산서는 실패했다. 내 수준으로는 쉽지 않았다. 그럼 바이러스는 성공했나? 굳이 말하자면 그렇다. 집에 있는 책과 자료란 자료는 다 뒤져서 만든 한 페이지짜리 Assembly코드는 간단히 자신의 디렉터리의 다른 COM파일을 간염 시킨다. 끝. 그래서 굳이 말한 거다.

웃기지만, 군대에서 프로그래밍을 공부하는 제대로 된 방법을 터득했다. 난 극적으로 Borland C++ Builder에서 Visual C++로 전향했다. 이미 Borland는 지는 해였다. 놀랍게도 MSND을 누군가가 우편으로 보내줬다. 고맙다고 전화했더니, 살다 보면 이런 행운도 있는 거란다. 그렇게 MSDN을 보는 방법을 알았고, 물어볼 사람이 따로 없기에 될 때까지 반복해야 했다. 그런 노력으로 빌 형의 품에 안겼다.

내가 웹을 처음 접한 게 정확히 95년이다. 모자익으로 겨우 접속한 배트맨 사이트의 그림은 엄청나게 감동적이었는데, 당시 나에게 도메인이라는 개념이 있었다면, 지금쯤 떵떵거리며 살 수 있었을 지도 모른다. 내 첫 번째 웹 스크립트는 PHP가 당첨됐다. C와 문법이 비슷하다는 게 이유였다. 근데, 이건 웹에 대한 개념을 이해하는 것이 더 힘들다. 결국 간단한 방명록 정도까지가 한계였다.

제대후의 주 무기는 Visual C++이었다. 아 물론 여전히 Borland C++ Build도 사용했고. 나중에 C#이 추가됐다. C#은 전천후처럼 생각하는 건 다 .Net Framework에 들어가있었다. 그리고, 지금에 와서는 그게 너무 많아서 감당이 힘들 지경이다. 현재도 C#은 유용하게 사용되고 있으며, 대부분의 툴 작업에는 C#을 쓰려고 한다. 왜? 빨리 만들 수 있으니깐~

아, 이제서야 말하지만 난 게임 서버 프로그래머다. 대학 때 졸업한 선배에게 우연히 게임 프로그래밍을 배우기 시작한 것이 계기가 되어서 여기까지 왔다. 아마 나의 사회생활 경험을 이해하기 위해서는 이런 배경이 약간 필요할 것 같아서 말해둔다.

첫 번째 직장에서는 Visual C++도 아닌 리눅스에서 g++, gdb, vi로 작업했다. 결론부터 말해서, 이거 매우 큰 도움이 됐다. g++이야 그렇다 치고, gdb라는 건 꽤 특이한 경험이었다. 그래서 난 요즘도 리눅스를 쓸 때 굳이 X-Window를 깔지 않는다.

이때쯤부터 Ruby가 우리나라에서 인가를 얻기 시작했다. 자고로 프로그래머는 잘 쓰는 스크립트언어 하나는 있어야 한다는 생각에 Ruby를 배웠다. 이때부터 단순 반복작업이나 루비로 할 수 있는 건 죄다 루비로 했다. 게임 클베의 DB내용을 가공할 일이 있었는데, 내가 SQL에 능통하지 않은 관계로 루비로 작업을 했다. 퇴사 후에 회사에서 전화가 와서 그때 그 통계를 어떻게 뽑았는지 물었다. 아마 그건 SQL로 작업하기 힘들거나 불가능 했던 것 같다.

더불어 RoR(Ruby On Rails)에도 손을 대기 시작했는데, 이 관심은 이내 사그라지다가 최근에서야 다시 타올랐다. 그리고 다시 사그라지는 중이다. – -;

세상은 멀티코어의 시대가 되었고, 함수형 프로그래밍언어가 새롭게 각광을 받기 시작하면서 이런 시류에 휩쓸려 Erlang에 손을 댄다. 절차 형 언어와는 전혀 다른 개념에 도무지 이해가 쉽지 않다. CouchDB같은 게 나오는걸 보면 분명히 확산추세인 것 같긴 한데, 다음 책을 기다리는 중이다.

‘실용주의 프로그래머’에서 매년 하나의 언어를 배울 것을 권장하는 바람에 못이기는 척 따라고 있는 중이다. 대학교 때 코볼수업 – 나 때는 이런 것도 있었다! – 을 담당하시던 교수님이 ‘가능한 많은 언어를 접해보는 것이 좋다’라고 했던 말이 기억난다. 마스터할 필요는 없다. 새로운 언어는 새로운 사고방식을 키워준다. 내 경험이 그렇게 말해주고 있다. C/C++만이 전부였을 때는 포인터와 템플릿이 당연했다. 당연히 컴파일 해야 했고 약간의 속도와 메모리에도 신경이 쓰였다. 스크립트언어로는 왠지 그런데 좀 덜 신경 쓰고 코딩을 해도 괜찮을 것 같다. 게다가 많은 스크립트 언어들이 OOP를 느슨하게 적용한다. C++에서는 당연히 안 되는 것도 Ruby나 Python에선 가능했다. C/C++도 Java도 또 다른 언어도 어느 정도 비슷한 면이 있었기에 배우는데 걸리는 시간이 길지는 않았다. 그렇지만 Erlang는 완전히 다른 세상이었다. 학교에서 배우고 별로 생각해보지 않았던 ‘재귀’라는 개념에 대해서 다시 생각해봐야 했고, 재할당이 불가능하다는 황당한 원칙도 있었다. PHP나 RoR을 들여다 보면, 웹이라는 분야가 얼마나 방대한지 알게 된다. 나 같은 사람이나 다루는 줄 알았던 C/S개념은 웹에서는 너무 당연하게 사용하고 있다. 게다가 훨씬 더 복잡하다.

앞으로도 계속 새로운 언어에 도전해볼 생각이다. 이것은 마치 새로운 외국어를 배우는 느낌인데, 차이점이라면 프로그래밍 언어가 훨씬 더 쉽고 더 빨리 배울 수 있다는 것이다. 그리고 확실하게 자리잡은 생각이 있다. 프로그래밍 언어에 좋고 나쁨은 없다. 할 수 있는 언어로 빨리 일을 하기만 하면 그만이다. 바로 이것.

C/C++ 주 언어
Ruby GUI가 필요 없는 작업 및 각종 단순작업
PHP 첫사랑 웹 스크립트
Java 왠지 별로 정이 가지 않음
C# 모든 툴은 C#으로!
Python Ruby를 대체하기엔 특별히 잘난 게 없어 보임
Erlang 첫 번째 함수형 언어

‘못해요~’

단언컨대, 프로그래밍이란 분야에서 할 수 없는 것이라곤 없다.

아이디어에 문제가 있을 수는 있을지언정, 분명, 그것을 구현할 수는 있다.

‘이런걸 만들 수 있을까요?’라고 물었을 때, 무턱대고 ‘그런 건 만들 수 없어요.’라고 대답하는 프로그래머는 그것을 구현할 능력이 없는 것이다.

그래서 난, 함부로 못하겠다고 대답하지 못한다.

Google Chrome

모자익으로 영화 배트맨의 웹사이트를 열 때, 그 희열을 아직 잊지 못한다. 당시에는 모뎀을 통해서 그렇게 화려한 이미지가 화면으로 바로(지금 생각하면 무척 느린 속도지만) 보여질 수 있다는 것 자체가 놀라움이었다. 모자익 이후에 웹브라우저 시장을 장악해 버렸던 넷스케이프의 제작자는 제 2의 빌게이츠가 확실한 것 처럼 떠들어댔지만, 빌게이츠의 익스플로어에 의해서 더 이상 넷스케이프를 보기 힘들어진 요즘에는 뭘 하는지 모르겠다.

그렇게, 오페라가 가끔 노래 부르고 사파리도 자기가 재미있다며 불렀지만, 인터넷을 하기 위해선 당연히 익스플로어가 필요한 줄 알고 지냈다. 영원할 줄 알았던 익스플로어의 점유율은 파이어폭스가 공개되면서 흔들리기 시작했다. 파이어폭스의 탭브라우징을 처음 사용해본 나는 너무 감동해서, 티셔츠와 스티커, 포스터를 주문해버렸다. 액티브액스때문에 가끔은 익스플로어가 필요할 때도 있긴 했지만, 그 잠깐의 결제순간을 빼고는 언제나 파이어폭스를 사용하게 됐다. 익스플로어에도 탭브라우징이 기본으로 추가됐지만, 이미 늦었다.

파이어폭스3가 나왔다. 다운로드회수 신기록을 세웠지만, 어찌된 영문인지 나의 컴퓨터에서는 멈추는 현상이 꽤 자주 생겼다. 메모리 누수현상도 고쳐졌다는데, 왜 유독 나에게만큼은 많은 메모리를 요구하는지도 모르겠다. 확실히 이에 관련한 문제가 보고되고 있는 듯 했지만, 확실한 해결책을 찾지는 못했다. 그래도 익스플로어보단 좋으니 계속 사용했다.

Google Chrome 크롬? 구글에서도 웹브라우저를 만들었다. 그냥 한 번 다운받아서 실행했다. 지금에서 생각해보면, 만약, 그러지 않았으면 정말 후회했을 뻔했다. 체감속도가 파이어폭스보다 빠르다. 그리고 구글답게 정말 필요한 기능만 눈에 띈다. 기존의 웹브라우저 인터페이스에 익숙해져 있으니, 이게 웹브라우저가 맞는가 싶기도 하다. 구글의 웹사이트를 열어보면 데스크톱 어플리케이션의 실행되고 있는 것처럼 보인다. 그만큼 인터페이스가 단순하고 색감이 통일되어있다.

통계의 의하면 (http://marketshare.hitslink.com) 2008년 9월의 웹브라우저 시장점유율은 익스플로어가 70%를 간신히(?) 넘는 수준이고 파이어폭스가 20%정도이다. 얼마나 빠르게 크롬이 그 틈을 비집고 들어갈 수 있는지의 가장 중요한 요소는, 얼마나 빨리 베타딱지를 떼어내는가에 달려있다고 본다. 그 후에는 꽤 빠른 속도로 점유율을 늘려갈 수 있을 듯 하다. 유럽에 비해 높았던 북미의 익스플로어 점유율이 떨어질 날도 많이 남은 것 같지 않아 보인다.

빨리 정식버전을 내놔라!