그래서 재미가 없어진 건가요?

커널 관점에서는 특정 태스크나 워크로드에서 0.5~1% 아끼는 게 전체적인 면에서는 그다지 중요하지 않습니다. 커널 개발 프로젝트 입장에서는 그렇게 아끼는 것보다 장기적으로 봤을 때 코드가 관리, 지속 가능하고 장기 목표를 얼마나 잘 성취할 수 있을까 하는 것이 중요하죠. 아껴서 돈을 버는 게 아니라 프로젝트를 건강하게 오래 유지하는 것이 목표니까요. 서로 목표가 다른 것이라고 볼 수 있습니다. 서비스 제공사는 서비스 개선에 우선순위를 두고 개발하는 것이 중요하지만 저는 아무래도 업스트림 커널 개발자이다 보니 장기적인 목표에 관심이 더 많았습니다.

커널 개발자들이 회사에 소속되어 있는 경우가 많은데 업스트림 프로젝트 목표와 회사의 요구 사항 간의 조율은 어떻게 하나요?

구글은 그런 면에서 충돌이 많지 않은 회사라고 볼 수 있습니다. 개발자 개인이 하고 싶은 일을 충분히 할 수 있는 편이기도 하고요. 예전에 비해 지금은 오픈 소스가 워낙 많이 쓰이다 보니 개발자들의 영향력이 강해진 편입니다. 오픈 소스는 특성상 코드가 회사 소유가 아니고 해당 개발자 또는 해당 프로젝트에 속해 있으니까요. 적어도 미국 회사들의 경우 오픈 소스 개발자들은 자율적으로 잘 하도록 미세한 간섭을 하지 않는 편이 효율이 더 높다는 사실을 깨달아가고 있고 오픈 소스 활동을 많이 하는 회사들은 그런 갈등이 별로 없습니다. 한국은 아직도 ‘오픈 소스가 우리 회사에 도움이 어떻게 되는데?’ 하는 인식이 회사에 적지 않게 남아 있는 것 같습니다. 사내에서 그런 인식을 바꾸기 위해 노력하는 것도 중요하지만 여의치 않으면 상황이 더 나은 회사로 옮기는 것도 한 방법일 겁니다.

 우선 자신이 하는 일과 자아를 분리할 필요가 있습니다. 개발자들은 대체로 자신이 쓴 코드에 애착도 많고 자기 코드가 공격을 받으면 자신에 대한 공격으로 느끼는 경향이 있는 것 같습니다. 물론 기분이 나쁘지만 거리를 두고 자아에 대한 공격으로 받아들이지 않아야 할 것 같습니다. 개인적인 공격을 받았더라도 그 일이 다른 건으로 이어지는 경우는 별로 없어서 한 번 공격을 받았다고 절망할 일은 아닙니다. 처음에는 상대방의 의견을 좀 들어야 합니다. 기분 나쁘게 표현했든 부드럽게 표현했든 간에 지적한 문제점들은 대체로 맞습니다. 물론 항상 맞지는 않지만 오래 활동하면서 쌓은 지식과 장기적인 계획에 따라 나온 의견이니 겉으로 드러난 표현과는 별개로 요점을 집어내고 확실하지 않은 부분은 다시 물어보고 받아들일 부분은 반영해 다시 보내면 됩니다. 즉 안 좋은 말이 나왔을 때 기분은 분리하고 요점만 잡아서 반영하면 패치가 대부분 들어갑니다. 메인테이너 입장에서는 지적한 문제가 고쳐져 왔으면 그걸로 되거든요. 그러다 보면 신뢰가 쌓이고 마찰도 줄게 됩니다.

아이디어는 현실 요구 사항을 잘 파악하는 데서 온다고 봅니다. 요구 사항을 충분히 파악하면 구현 아이디어는 자동으로 따라오는 경우가 많더군요. 소프트웨어 엔지니어링은 어찌 보면 목공과 비슷한 것 같습니다. 목수가 주어진 나무로 무엇을 어떻게 만들지는 숙련도에 크게 좌우되니까요.

리눅스 개발은 최종 결정 권한이 흔히 ‘자비로운 종신 독재자(benevolent dictator for life)’라 부르는 한 사람에게 주어진 모델인데 큰 패착 없이 잘 유지되어온 비결은 무엇일까요?

리누스가 독재(?)를 워낙 잘하는데 그 영향이 큰 것 같습니다. 전 세계 이곳저곳에 흩어진 수백 명의 사람들을 일정한 흐름으로 끌고 가는데요. 그렇게 움직일 수 있는 문화를 리누스가 잘 만든 것 같습니다. 어떤 코드를 받아들일 수 있는지, 어느 방향으로 갈 건지, 개발 철학은 어떤지 하는 내용이 이제는 상위 개발자들 사이에서는 상당히 공유된 상태입니다. 이런 공통된 문화가 있어서 코드를 리뷰할 때나 개발 방향을 정할 때나 누군가가 이상하다고 하면 다른 사람들도 이상하다고 할 교감 같은 것이 있습니다. 다양한 사람이 모여 있지만 개발을 관리하는 사람들 간에는 균질한 문화가 형성되어 있는 거죠.

사람이 상처를 받고 나면 그 일에 다시 손대기도 싫고 상처 준 사람과 이야기하기도 싫은데 그런 것에 너무 신경 쓰지 말고 꾸준함을 유지하는 것이 중요합니다. //백번정도의 시도 후 실패는 가볍게 용인 될 정도의 끈질김이 필요한 분야

Advertisements