개발자를 위한 10가지 철학

전문가 칼럼입력 :2016/02/22 08:45    수정: 2016/02/22 08:52

임백준 baekjun.lim@gmail.com

소프트웨어 엔지니어링 데일리라는 팟캐스트에 등장한 에피소드의 제목이다. 호스트인 제프 메이어슨이 최근에 올린 방송은 철학이라기보다 도발적인 선언에 가깝다. 소프트웨어 개발자 선언이라고 불러도 좋을 것이다. 한국의 현실과 맞지 않는 부분도 있는데 전체적으로 참고할만하여 소개한다. 여기에서 ‘그대’는 이 글을 읽는 독자, 즉 ‘개발자’를 의미한다.

1. 그대 자신을 증명할 필요가 없다.

개발자는 자기가 회사에 얼마나 큰 기여를 하는지 증명할 필요가 없다. 메이어슨은 연봉 8만 달러를 받으면서 ‘허접한’ 유지보수 일을 하는 개발자가 회사에 백만달러를 벌어주고, 연봉 15만 달러를 받으면서 조금 나은 일을 하는 개발자가 오백만 달러를 벌어준다고 주장한다. 실제 통계에 근거한 주장은 아니지만 개발자가 회사에 기여하는 정도와 개발자가 실제로 받는 급여 사이에 커다란 차이가 존재한다는 그의 주장은 일리가 있다.

2. 그대는 단순한 상품이 아니다.

개발자는 생산라인에서 부품을 조립하는 노동자가 아니다. 프로그래밍은 개발자 고유의 개성이 살아 숨 쉬며 중요한 역할을 담당하는 창조적 노동이기 때문에 개발자 A를 B로 손쉽게 대체할 수 없다. 회사가 그럴 수 있을 것처럼 행동하는 것은 엄포에 불과하며, 개발자가 회사를 떠나면 똑같은 사람을 시장에서 쉽게 구할 수 없음을 안다.

3. 소프트웨어 엔지니어링은 기술(art)과 과학(science)의 두 측면을 갖지만 두 개가 공존하는 경우는 거의 없다.

기획이나 설계의 단계에서 개발은 기술(art)이고, 일단 설계가 완료되면 나머지 작업은 일정한 규칙을 따르면 동일한 결과를 낳는 과학(science)에 가깝다. 이 항목은 간단하지 않은 내용을 담고 있어서 별도의 칼럼이 필요하다. 메이어슨은 기술(art)이라는 측면이 음악, 문학, 미술 같은 일련의 창작 활동과 닮은 점을 부각시키기 위해서 소프트웨어 엔지니어링에 담긴 두 속성을 분리했다.

4. 그대와 그대의 직업은 동일한 것이 아니다.

그대가 오늘 직장상사에게 엄청 깨졌다고 하자. 깨진 것은 그대라는 사람, 그대의 인격이 아니라 그대의 직업이다. 메이어슨은 이렇게 말한다. “자신의 직업을 자기 자신과 동일시하는 사람은 자신의 직업 속에서 (일에 대한) 평가를 내리는 사람들에게 자기 자신에 대한 가치판단까지 맡기는 우를 범하는 것이다. 직업은 우리가 가진 더 높은 목적을 이루기 위한 수단에 불과하다.”

5. 세상은 분산시스템이다.

이 항목은 개발자로서 어떤 선택을 내릴 때 최악의 경우가 어떤 결과를 초래할지에 대해 신중하게 생각하라는 내용이다. 전체적인 맥락과 크게 연관되지 않은 내용이니까 넘어가자.

6. 그대는 로또가 아니다.

운에 기대지 말라는 항목이다. 메이어슨은 운이라는 것이 우리가 최선의 노력을 기울이지 않았을 때 마음의 위안을 얻기 위해서 기대는 언덕일 뿐이라고 주장한다. “얄팍한 사람은 운이나 환경을 탓하고, 강한 사람은 오직 원인과 결과만 생각한다.”는 랄프 왈도 에머슨의 이야기도 인용한다. 개발자에게 노력은 다양한 형태로 나타날 수 있다. 깃헙에 개인 프로젝트를 만들어놓고 매일 1번씩 커밋하는 것이 될 수도 있고, 출퇴근길에 기술서적을 읽을 수도 있고, 오프라인 모임에 적극적으로 참여하는 것이 될 수도 있다. 회사에서 맡은 일을 정해진 시간보다 빨리 끝내고 다른 사람의 일을 도와주는 것이 될 수도 있고, 기술인터뷰 준비를 위해서 100개의 알고리즘 문제를 푸는 것이 될 수도 있다. 핵심은 온힘을 다해서 노력하지 않으면서 욕망만 키우지 말라는 이야기다.

7. 계획보다는 행동이다.

행동은 계획이 없어도 성립할 수 있지만, 계획은 행동이 없으면 성립할 수 없다. 행동이 더 중요하다. 아마존에서는 이것을 “행동을 위한 편견(bias for action)”이라고 부르고 페이스북에서는 “재빨리 움직여서 파괴하라(move fast and break things)”고 말하면서 직원들의 행동을 장려한다. 말하지 말고 행동하라. 세상 사람들이 그대의 말에 귀 기울이지 않는 이유는 말은 행동이 아니기 때문이다.

8. 소프트웨어 엔지니어링은 그대를 착취하려는 자들의 거짓말로 가득 차 있다.

맨 앞에서 보았던 항목과 비슷한 내용이다. 비즈니스 인사이더의 통계에 의하면 애플은 직원 1명당 20억 원 가량의 수익을 올리고, 구글은 13억 원, 마이크로소프트는 9억 원, 그리고 아마존은 7억 원 정도의 수익을 올린다고 한다. 하지만 이러한 회사에 다니는 개발자의 연봉은 많아도 대개 2억 원을 넘지 않는다. 나머지는 회사의 몫이다. 메이어슨은 이러한 통계가 심지어 엔지니어를 대상으로 한 것이 아니라 일반직원까지 포함하는 전체적인 통계라는 사실을 지적하면서 분노한다.

이 지점에서 나는 한국의 현실을 생각하지 않을 수 없다. 메이어슨의 말처럼 미국의 개발자들에게 돌아가야 하는 몫이 부당하게 회사로 돌아가고 있는 것이 사실이라고 해도, 어쨌든 미국에서 개발자들은 사회 전체적으로 보았을 때 (경제적으로나 심리적으로나) 부유한 편에 속한다. 한국은 다르다. 일부 대기업이나 스타트업의 개발자를 제외한 나머지 개발자들은 (경제적으로 혹은 삶의 질이라는 측면에서) 가난하다. 가난한 정도가 아니다. 폐도 잘라내고, 이혼을 당하고, 병원에 실려 간다. 이런 현실은 하루빨리 개선되어야 한다.

9. 그대는 그대의 학력 혹은 과거에 의해서 규정되지 않는다.

전에 '개발자에게 자격증은 모욕이다'라는 글을 쓴 적이 있다. 학력도 비슷하다. 학력은 모욕까지는 아니지만 최소한 거추장스럽다. 메이어슨에 의하면 제대로 된 코딩을 할 수 있는 개발자라면 학력은 의미가 없다. 나는 그의 말에 동의한다. 세스 고딘(Seth Godin)같은 사람은 현재의 교육 시스템이 엉망이므로 대학에서 학위를 따는 것이 의미가 없다고 이야기한다. 학벌에 목숨을 거는 한국의 현실에서 얼마나 설득력 있는 이야기가 될지 모르겠다. 분명한 것은 개발이 가방에 대학졸업장을 넣은 채 양복을 입고하는 점잖은 일이 아니라는 점이다. 개발은 팬티만 입고 옥타곤에 올라가서 맨몸으로 싸우는 거다. 무지막지한 실전이다. 그대의 대학졸업장이 줄 수 있는 도움은 아마 터진 코피를 닦는 일뿐일 것이다.

10. 소프트웨어 엔지니어로서의 그대는 최악의 경우라는 것이 근본적으로 제한되어 있기 때문에 마음껏 모험적인 선택을 내릴 수 있다.

관련기사

재밌는 항목이지만 지면 관계상 선언을 액면 그대로 받아들이기로 하자. 최악의 경우가 제한되어 있다는 주장이 미국에서는 어느 정도 사실이지만 한국에서도 그런지는 모르겠다. 실패를 용납하고 심지어 장려하는 문화가 한국에는 없기 때문이다. 실패한 사람에게 새 생명이 주어지지 않고 그대로 게임이 끝난다면 모험을 감수하는 사람은 나올 수 없다. 실패를 경험으로 인정해주는 문화의 정립이 핵심이다.

이러한 10개의 항목 중에서 어떤 것을 선택하고 어떤 것을 버릴 지 결정하는 것은 그대의 몫이다. 더 자세한 내용을 직접 읽거나 듣고 싶은 사람은 여기(http://softwareengineeringdaily.com/2016/02/12/10-philosophies-for-developers/)를 방문하면 된다.

*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.