기본 콘텐츠로 건너뛰기

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

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 교체를 위해 부분적으로 열릴 수 있는 구조로 돼 있었기 때문에 판을 여는 것만으로 소기의 목적을 달성할 수 있었기 때문에 그냥

노트북 상판 뜯기

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

[게임] 단간론파 - 희망의 학원과 절망의 고교생

각 분야에서 특출난 재능을 가진 고등학생들을 모아 교육하는 키보가미네 학원. 평범한 학생이던 주인공 나에기 마코토 는 추첨에 뽑혀 입학이 결정된다. 주인공을 포함한 열다섯 명의 신입생이 입학 전 오리엔테이션을 위해 학교에 방문하지만, 곧 정신을 잃고 쓰러진다. 정신을 찾은 신입생들은 자신들이 키보가미네 학원 에 갇혀 있다는 것을 깨닫는다. 그 순간 모노쿠마 라는 움직이는 곰 인형이 나타나 학원장을 자칭한다. 당황한 학생들에게 모노쿠마 는 충격적인 말을 전한다. 들키지 않고 살인을 한 사람만 학교에서 나갈 수 있다. 단간론파 - 희망의 학원과 절망의 고교생 은 납치된 학생들이 살아남기 위해 살인사건을 해결하는 추리 게임이다. 弾丸論破(탄환논파) 라는 제목답게 증거나 증언을 탄환으로 비유한 연출을 많이 사용한다. 플레이타임은 엔딩을 보기까지 20시간, 도전과제 수집까지 하면 약 40시간 정도 걸린다. 챕터는 살인 사건을 기준으로 나누어진다. 한 챕터는 다시 세 개의 파트로 나누어지는데, 사건이 일어나기 전을 일상 , 사건이 일어난 뒤를 비일상 으로 구분하고 마지막에 범인을 지목하는 재판 파트 로 챕터다. 일상 파트 에서는 생존자들과 친목을 도모할 수 있다. 여기서 친해진 동료들은 재판에 유용한 스킬을 주기도 하고, 친밀도가 올라가면 스토리와 별개로 이벤트가 발생한다. 비일상 파트 에서는 사건을 조사한다. 살인 사건이 벌어진 장소는 물론이고 연관 있는 장소들을 조사하며 정보를 수집한다. 필요한 정보를 다 모을 때까지 재판이 시작하지 않으니 차분히 진행해도 된다. 재판 파트 에서는 범인을 지목하면 되는데, 플레이어와 몇몇 생존자들은 이미 범인을 눈치챈 상태지만 나에기 를 비롯한 나머지 사람들은 감도 못 잡고 있다. 이들을 설득하여 범인을 지목하면 범인의 처형과 함께 챕터가 끝난다. 자극적인 살인 장면에 비하여 트릭 자체는 다른 추리 게임에 비하면 약간 심심하다. 일단 주인공인 나에기 가 수사의 주체가 아니다. 수사는 언제나 다른 인물이 진행한다.