기본 콘텐츠로 건너뛰기

역시 세상은 자동화되어야 한다.

1. 오늘 아침 오랜만에 뱅뱅사거리에 가야 할 일이 있었다. 뱅뱅사거리보다 조금 북쪽에 있는 강남역 근처는 아침부터 사람이 많지만, 뱅뱅사거리는 보통 사람이 그닥 많지 않다. 보통 강남역에서 오는 방향으로 차가 조금 있을 뿐이지 다른 방향에는 차가 거의 없다.
 그런데 오늘은 뭔가 달랐다. 뱅뱅사거리에 도착하기 한참 전부터 차가 밀려있었다. 전 직장이 뱅뱅사거리에 있어서 거의 1년 반을 출퇴근했지만 이렇게 밀린 적은 처음이었다. 이유가 뭔지는 뱅뱅사거리에 도착해서야 알 수 있었다. 뱅뱅사거리의 신호등이 네 방향 모두 정지되고 경찰관 두 분이서 교통정리를 하고 있으셨다. 두 분이 수고하고 계셨지만, 역시 교통은 신호등이 있을 때 만큼 잘 정리되지 않았고, 결국 네 방향 모두 차가 밀리는 상황이 되었던 것이다.
 평상시에 별로 신경 쓰지 않고 지나가는 신호등이지만, 교통량을 기반으로 대기 시간을 최소화하기 위한 최적의 시간으로 설계되어 있다. 문제가 생길 때까지 그 존재를 신경 쓰지 않아도 된다는 점에서 보면, 가장 잘 구현된 자동화 시스템의 하나가 아닐까 한다.

2. 자동화. 좋은 울림이다. 다른 사람들은 모르겠지만, 프로그래머에게 자동화는 세상 무엇보다 중요한 단어이다. 모든 프로그래머는 자동화를 위해 존재한다고 할 수 있다. 워드나 유틸리티는 물론이고, 게임조차 과거 주사위를 돌리고 판을 정리하던 것을 자동으로 할 수 있도록 자동화한 것이라고 볼 수 있다.

3. 좋은 프로그래머가 갖춰야 하는 덕목으로 무엇 하나만 고를 수는 없다고 생각한다. 하지만 자동화는 분명 좋은 프로그래머가 갖춰야 할 덕목 중 하나라고 생각한다. 아니 덕목 중 하나가 아니라 최소 조건이라고 생각한다. 내가 사용하는 도구의 장점과 한계를 인식하고, 내가 해야 할 작업 중 반복적인 패턴을 찾아내서 자동으로 반복될 수 있는 일을 추출해내는 것을 할 수 없다면 다른 일을 잘하더라도 결국 좋은 퍼포먼스를 낼 수 없다. 사소하고 중요하지 않은 일에 너무 많은 시간을 뺏기기 때문이다.

4. 작업을 자동화하는 것만큼 중요한 것이 작업을 간소화시키기 위한 적절한 도구다. "장인은 연장 탓을 하지 않는다."라는 말을 빌려서 도구는 중요한 게 아니라고 말하는 사람도 있다. 하지만 절대 아니다. 틀렸다. 저런 말 절대 믿지 마라. 자신이 갈고 닦은 칼을 쓰지 않는 주방장을 봤는가? 자신의 끌을 가지고 있지 않은 목수를 믿을 수 있겠는가? 만화 그리는 사람이 고액의 펜촉을 사거나, 그림을 그리는 사람이 좋은 붓을 사는 데는 다 이유가 있다. 물론 장인이라면 좋은 도구가 없어도 어떻게든 작업을 완성할 것이다. 하지만 그렇게 나온 작품이 그 장인의 실력 전부라고 생각하면 안 된다.

5. 도구 얘기를 하니까 갑자기 전에 알바로 일했던 회사가 생각나서 화난다. 그 회사는 뭐랄까 도구를 잘못된 방향으로 사용했다. 뭐랄까 툴로 해결 해야 할 문제를 손으로 해결하고 사람의 손으로 해야 하는 것을 툴로 해결했다.
 버전 컨트롤 시스템으로 Source Safe라는 구시대의 유물을 사용했는데, 그나마도 제대로 사용하지 못했음은 물론이고, 유지보수라는 명목으로 추가 요금을 받기 위해 파견을 많이 나갔는데, 파견 나간 회사에서는 SourceSafe를 사용할 수 없어 이메일로 코드를 주고받았다. 당연히 파견지의 소스와 회사에서 가지고 있는 소스가 달라졌고, 이 차이때문에 꾸준하게 문제가 발생하면서 그 상황을 당연한 상황이라고 인식하고 해결하려는 노력도 하지 않았다.
 IDE로는 Visual Studio를 사용했는데, 솔직히 내가 Vim과 GDB를 이용하는 것보다 더 간단한 기능들만 사용했다. bookmark나 함수의 선언을 찾아가는 단축키는 당연히 몰랐고(일부는 그런 기능이 있다는 것도 몰랐다.) 리팩토링 관련된 기능은 설명을 해줘도 왜 필요한지 이해를 못 했다.
 가장 짜증 나는 것은 손으로 해야 할 것을 도구를 이용해 했다는 것이다. 코드의 작성을 템플릿 코드만을 이용하기 때문에 자신이 작업하는 코드가 어떻게 돌아가는지 실제 디버거를 붙여서 돌려보지 않으면 모르고, SQL이나 Regular Expression은 쓰기는커녕 읽지도 못해서 GUI 툴을 이용해야만 작업이 가능한 사람이 절반은 됐다.
 3년도 넘은 이야기지만 아직도 그 회사만 생각하면 자다가도 열 받아서 잠이 깬다.

p.s. 뭔가 말하다 보니 다른 사람 욕하는 얘기로 새버렸다. 욕을 더 하고 싶은데 길어질 것 같으니 다음 기회에 다른 글로 적도록 하겠다.

댓글

이 블로그의 인기 게시물

노트북 하판에 구멍내기

지난번 상판을 뜯어냈던 것 으로는 온도가 딱히 내려가지 않았다. 그래서 조금 더 극단적인 방법을 취해보기로 했다. 노트북 아래 바람구멍을 내서 발열을 돕는 것이다. 당연히 하판에 구멍을 뚫는 것만으로는 크게 소용없겠지만, 쿨링 패드를 사용해서 아래쪽에서 끊임없이 바람을 보내고 있기 때문에 구멍을 뚫는 것만으로 꽤 효과가 있을 거라고 기대됐다. 말하고 보니 이게 노트북에서 모니터를 뜯는 것보다 더 극단적인 방법인지 모르겠지만, 손이 더 많이 가기 때문에 가능하면 하기 싫었던 일이다. 우선 본격적인 작업에 앞서 간단하게 할 수 있는 작업으로 키보드를 분리해냈다. 어차피 모니터도 없는 노트북 USB로 키보드를 연결 못 시키는 상황이 오면 그때는 정말 버려야 할 때라고 생각하고 뜯어버렸다. 당연히 아무 곳에나 구멍을 뚫는 것은 크게 소용없다. 어디까지나 발열을 돕기 위한 것이므로 열이 많이 날 것 같은 곳에 구멍을 뚫어야 한다. 그래서 찾은 타깃은 다음과 같다. 1. 하드디스크 해봐야 40~50도 정도이긴 하지만 그래도 HDD의 발열도 생각보다 크다. 특히 금속 재질이기 때문에 노트북같이 밀폐된 공간에서는 다른 부품의 열을 받아 자체적으로 발생하는 열보다 온도가 더 올라가기도 한다. 2. SSD 사실 SSD는 발열이 그리 크지 않다. 냉정하게 생각해봤을 때 굳이 구멍을 낼 이유는 없을 것 같지만, 기왕 작업하는 김에 같이 구멍을 뚫었다. 3. 배터리 평소 배터리는 발열이 심한 파트는 아니다. 특히 내가 쓰는 환경과 같이 24시간 전원을 꽂아놓고 쓰는 경우 더더욱 배터리는 크게 영향을 주지 않는다. 하지만 온도가 올라가면 위험한 파트이기 때문에 특별히 구멍을 뚫었다. 4. RAM RAM은 특별히 오버클럭을 하지 않으면 딱히 발열이 심하지 않다. 그래서 아무 작업도 안 하려고 했다. 하지만 RAM 교체를 위해 부분적으로 열릴 수 있는 구조로 돼 있었기 때문에 판을 여는 것만으로 소기의 목적을 달성할 수 있었기 때문에 그냥

[책] 이상한 나라의 사각형

이상한 나라의 사각형 이라는 제목 때문에 이상한 나라의 앨리스 의 짝퉁 소설처럼 보일 수도 있지만, 원제는 Flatland: A Romance of Many Dimensions 로, 앨리스와는 전혀 상관이 없다. 소설의 주인공은 Flatland 의 수학자인 사각형(Square) 이다. 그는 어느 날 우연히 Lineland 에 발을 들였던 것을 계기로 Spaceland 의 주민인 구(Sphere) 의 도움을 받아 Spaceland 라는 이상한 나라를 여행하며 새로운 지식을 깨닫게 된다. 자신의 세상에 돌아와서 이 지식을 널리 퍼트리려 하지만, 2차원인 Flatland 에서 3차원인 Spaceland 를 묘사할 수 없었다. 결국 다른 사람들을 설득하는 데 실패하게 되고 질서를 어지럽힌다는 죄목으로 감옥에 수감되며 소설은 끝난다. 2차원 세계인 Flatland에 대한 설정뿐 아니라 2차원의 주민이 3차원을 보고 이해하게 되는 과정과 1차원의 주민과 다른 2차원의 주민들을 설득하려고 하는 과정의 묘사가 훌륭하기로 유명하다. 덕분에 SF소설로서도 유명해 다른 SF소설에 영향을 주기도 하고, 여러 차례 영상화가 된 적도 있다. 하지만 이 소설은 본질적으로 빅토리아 시대의 폐쇄적인 지식인 사회와 엄격한 계급 사회를 비판하는 풍자 소설이다. 그래서 소설에서 묘사되는 Flatland 를 당시의 영국 사회와 연결하여 생각해 볼 때 제대로 볼 수 있다. Flatland를 사회 풍자 소설로 볼 때 우리는 구 와 사각형 의 행동을 제대로 이해할 수 있다. 주인공 사각형 입장에서 구 는 자신이 몰랐던 세상을 알려주는 스승이자 선구자다. 하지만 그도 그저 자신이 본 것을 알 뿐이다.  Spaceland 의 주민이라면 한낱 소매치기라도 Flatland 에서 신과 같은 능력을 가질 수 있을 뿐 그가 특별했던 것은 아니다. 그래서  사각형 이 3차원 이상의 세계를 유추해냈을 때  구 는 그의 생각을 허황된 생각이라고 무시한다. 사각형 또한 마찬가지다. 그의 지성은 구보다 날카롭

노트북 상판 뜯기

4년쯤 전에 노트북을 산 적이 있다. 지금도 그렇지만 작은 모니터에서 코드 보는 걸 매우 싫어해서 일단 큰 화면이 최우선사항이었다. 다음은 크롬이 원활하게 돌아갈 수 있도록 16GB 이상의 RAM이 들어있는 것이었고, 마지막은 OpenCL과 OpenGL이 적당한 성능으로 돌아갈 수 있도록 nvidia GPU가 있는 것이었다. 그중에서 가장 저렴한 모델을 고르니 무게가 2kg이 넘고 사용시간은 4시간이 안 되는 Gigbyte의 U35가 나왔다. 결국 너무 무거운 무게 때문에 들고 다니지 않고 일반 컴퓨터보다 저전력, 저소음이라는 이유로 집에서 서버 대용으로 사용하고 다음 노트북 을 구매할 때는 무게를 제일 우선으로 고르게 됐다. 문제는 이 노트북이 최근 발열이 잘 안 되기 시작했다. 오래 써서 수명이 다 돼가서 그런지 1년 가까이 거의 24시간 켜놓은 것이 문제인지 모르겠지만, 조금이라도 발열을 시키기 위해서 상판을 열고 사용한다. 근데 이렇게 쓸 거면 상판을 떼고 모니터가 필요하면 외부 모니터를 사용하는 게 어떨까 싶었는데 이래도 GPU가 잘 동작하는지 확인하기 귀찮아서 안 하고 있었다. 근데 기종은 다르지만 어떤 컴갤러가 망가진 노트북 분해해서 쓰는 글 을 보고 별문제 없을 것 같아 분해해버렸다. 이 노트북은 이미 부품 교체하느라 여러 번 뜯어봤던지라 별문제 없을 거로 생각했는데 하나 예상치 못한 문제가 생겼다. 무선 랜카드의 안테나가 모니터 쪽으로 연결된 것이었다. 위 이미지의 붉은 네모가 안테나에서 나온 케이블인데 이게 노란 원으로 표시한 부분에 연결돼 있었다. 잠시 망설이기는 했지만, 네트워크는 그래도 최악의 경우에는 유선을 이용하면 되기 때문에 분리했다. 예상했던 대로 무선 네트워크는 제대로 동작을 안 했다. 수신율이 떨어져서인지 패킷 유실이 많거나, 응답시간이 너무 길었다. 처음에 계획했던 대로 유선 랜을 사용하면 되지만, 이대로 무선을 포기하기는 약간 아쉬웠다. 그래서 일단 모니터에 안테나가 어떻게 설치돼 있는지 확인해보기로 했다.