기본 콘텐츠로 건너뛰기

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

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

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

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

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

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

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

댓글

이 블로그의 인기 게시물

Tesla smart HDMI KVM Switch

KVM 스위치라는 것은 하나의 Keyboard/Video/Mouse를 여러 개의 컴퓨터에서 사용할 수 있게 해주는 장치를 말합니다.집에서 사용하고 있는 컴퓨터가 많은데, 책상에 그 수만큼 모니터를 올릴 수 없어서 언제나 키보드 마우스의 USB나 모니터 케이블을 뽑았다 끼기를 반복했는데, 이게 생각보다 귀찮아서 게임을 하면서 중간중간 개발을 한다거나 하는 건 할 수 없었다. 게다가 언제나 컴퓨터의 뒷면에 쉽게 접근할 수 있도록 컴퓨터를 두어야 했기 때문에 컴퓨터 배치도 한정적일 수밖에 없습니다. KVM 스위치는 이런 문제를 한 번에 해결해줍니다. 위 사진은 작년에 구매한 Tesla smart라는 HDMI 2.0이 지원되는 4 port 제품입니다. Elon Musk테슬라와는 관계없는 평범한 중국의 제조업체이지만, 제가 원하는 사양을 가장 저렴한 가격에 판매하고 있어 구매했습니다.사실 원래는 Dual-link DVI만 지원되는 모니터를 썼는데, Dual-link DVI 지원되는 KVM 스위치는 너무 비싸 HDMI 지원되는 스위치를 사면서 모니터까지 새로 사게 됐는데 그럼에도 작년에 구매한 물건 중 가장 만족도가 높은 물건을 꼽으라면 아마 이것을 꼽지 않을까 합니다.

Poker X 스위치 교체

키보드덕후들 사이에서 유명한 Poker X라는 키보드가 있다. 해피해킹과의 미니키보드중에서 tilde(~)와 backspace의 위치가 신경쓰여 못들고 다니겠다고 하는 사람들을 위한 레이아웃으로 꽤나 인기있어 생산이 중지되고 다음 버젼이 나오고 있는 지금도 주문 요청이 꾸준하게 들어오고, 중고시장에서도 없어서 못팔고 있는 물건 중의 물건이다. 이놈을 몇달 전부터 휴대용으로 사서 들고다니고 싶다고 IRC에서 소리치고 다녔더니, P형이 자신이 가진 청축 Poker X를 업어가라고 하였다. 처음에는 청축 특유의 소음때문에 휴대용으로 쓸 수 없는 관계로 재생산만을 기다리다가 4월에 수입하겠다던 레오폴드로부터도 딱히 긍정적인 반응을 볼 수 없어서 결국 포기하고 P형의 청축포커를 가지고 왔다.
보강판이 없는 모델인 덕분에 보강판을 때리는 거친음은 나지 않았지만, 그래도 청축특유의 딸깍음은 어쩔 수  없어 집밖에서 쓰려면 욕먹을 각오를 해야한다.(실제로 써보고 욕먹었다.) 집에서만 쓸거라면 미니키보드의 장점이 사라지기 때문에 스위치를 조용한 적축과 흑축의 조합으로 바꾸기로 하였다. 앞에서 말했듯이 보강판이 없기 때문에 기판을 분리하는건 매우 쉽다. 그냥 키캡을 빼서, 나사만 풀어주면 기판이 들린다.
문제는 desoldering이라고 부르는 납을 제거하는 작업인데, 포커는 녹는점이 높은 무연납을 사용하고 있다. 일반납이라면 적절히 녹여서 스위치를 밀어내는것만으로 가능하였겠지만, 무연납에 그런 묘기를 부릴 자신이 없었기 때문에 desolder pump가 있는 학교로 이동하여 작업을 계속하였다. 하지만 desolder pump도 기본적으로 유연납을 제거하기 위한 장치기 때문에, 결국 2시간에 걸친 중노동을 해야만 했고,  LED가 납땜 되어 있는 곳은 열을 충분히 가할 수 없어 결국 포기하고 말았다.
이번 컨셉은 조용한 차등키보드였기 때문에 흑축과 적축의 조합을 리얼포스 차등의 조합을 참고하여 키를 조합하였다. 기본적으로는 리얼포스의 키 배치를 배꼈지만, 포커에서 방향…

노트북 하판에 구멍내기

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