2016년 10월 30일 일요일

[나쁜 프로그래머] 4. 업햄 상병 구하기.

영화 '라이언 일병 구하기' 에 업햄 상병으로 나오는 병사가 있다.
(아는 사람은 아는 빡침의 3대 대장)

원래 전투병은 아니었지만 짬밥으로 상병 계급을 가진 사람인데

원리원칙을 (좆나게) 따지고 , 아군이 칼빵에 맞아 죽게생겼는데 울고만 있다.

게다가 자기 일을 잘하는것도 아니다. 맨날 허공에 총질만 해댈뿐인 인본주의자 였으니까.
(총알 아까워 이새키야)



비슷하다고 보면 된다.

경력은 나름 있는데, 이런 양반이랑 기획회의나 개발회의를 하다보면 이런 성향이 나온다.

굉장히 원론적인 주장만 하고, 타협이 없으며, 기계적인 중립을 추구한다.

게다가, 결국 본인이 주장하는 내용대로 진행되지 않으면 책임소재를 분명히 제시한다.

" 이거 대로 안해서 사고 터지면 당신이 책임져. " (해석: 내책임 아니다. 난 반대했어.)

시발 이런식으로 회의할거면 뭣하러 회의 씩이나 하나. 그냥 모두다 책임을 지는 사장시키는대로 하지.




타협이 없고 기계적인 중립은 그렇다 치는데

원론적인 주장은 괜찮은것 아닌가? 라고 반문 할수 있겠다.

예를 들어보자.

(고객 정보의 보안을 위해서 여러가지 안은 제시하는 회의 중이다.)

팀장 : 기본적으로 고객의 정보의 보안을 위해서는 필요한 정보만을 최소한으로 유지하는것이 시작이다. 통신방법이나 데이터베이스 암호화 이전에 먼저 필요하지 않는 정보를 분석해서 제외하는 작업을 먼저 진행해야 하겠다.

팀원 : 현재 보관하고 있는 고객의 정보는 이름 이메일 전화번호 카카오톡계정 이다. 우리측 서비스는 기본적으로 이메일과 메신저를 통해 정보가 제공되고 전화번호는 가입시 개인확인만을 위해서만 존재하므로 전화번호는 제외해도 서비스에 큰 문제는 없을것 같다.

업햄 : 우리회사의 CSO(정보보안책임자) 는 따로 있는데 그분이 없이 이런 회의는 의미가 없다.

팀장 : 우리 회사는 CSO 와 CEO(대표) 가 겸임하고 있으므로 개발파트에서 논의후 내용을 전달하는것이 합리적이다.

업햄 : 그것은 팀장의 월권행위이다. 모든 결정은 과정에서 나오는 것이므로 CSO 를 맡고있는 CEO 와 함께 회의를 해야한다.

팀장 : 알았다. 하지만 CSO 가 참석하기 전에 우리끼리 회의를 통해 정보를 정리할 필요가 있다.

업햄 : 하지만 대표님은 개발쪽 파트도 아니고 정식적으로 보안관련 지식이 많은것도 아니다. CSO 부터 제대로 구성해야 한다.

팀장 : (이새끼 뭐라는거야.) 무슨말인지 모르겠다. 일단 CEO 가 CSO 를 겸임하고 있다는거 부터가 문제라는것인가?

업햄 : 우리회사에 CSO 를 담당할 사람이 없다는것을 말하는것이다.

팀장 : ...... 그럼 CSO 을 담당하는 사람이 없는 이시점에서 어떤식으로 보안에 대해 논의해야 하나.

업햄 : 그것은 내가 할일이 아니다. 난 내 의견을 낸것 뿐이다. 그런 회의이지 않는가.

팀장 : 업햄상병 그럼 당신이 맡은 업무는 무엇인가?

업햄 : 고객 데이터베이스 설계 및 운용이다.

팀장 : 그럼 씨발 니가 CSO 하면 되겠네 이 새끼야.

업햄 : 난 고객 데이터베이스 설계 운용 담당이지 CSO 가 아니다. 논점을 흐리지 마라. 우리에겐 보안에 대해 능통한 CSO 라는 자리가 반드시 필요하다. 내말에 틀린게 있으면 지적해 달라.

( 실제로 2008년 직원수 20명 이내의 IT 회사에서 실제로 있었던 이야기를 각색한 내용이다. )



위의 대화에서 알수 있듯 빡침의 3대 요소를 모두 갖추고 있다.

1. 원론적인 주장
2. 타협이 없음
3. 기계적인 중립
4. 책임소재 요구

원론적으로 보면 맞는 얘기이긴 하다.

IT 서비스내의 고객정보보안은 매우 중요하고 민감한 이슈이며 이를 담당할 보안책임자 역시 법적으로도 정해놓아야 한다.

하지만 현실적으로 작은 기업에선 보안계통의 전문가가 없게 마련이고 그 책임자만 명시해 놓는 경우가 많다. (정부에서 제공하는 간단한 교육 수료과정도 사실은 큰 의미없다.)

그래서 책임자는 세워놓고 그 뒤의 엔지니어들이 보안에 대해서 최대한 법령 혹은 기술력에 맞는 대책을 마련하고 실행하고 있는게 현실이다.

그런걸 싸그리 무시하면서 보안에 능통한 보안책임자를 요구하고 그 외적인 내용은 타협시도 조차 없으며 그것은 내 책임이 아니라는것을 노골적으로 어필한다.


사실 저 회의에서 정말 원론적인 대안을 제시하는 쪽은 팀장이다.

그것을 이해하려고 하지 않는 업햄상병은 회의 이전에도 이미 그런 사람으로 낙인 찍혀 있을 가능성이 매우 높다.


다른 작은 기업에서도 마찬가지겠지만 (큰 기업도 부서단위로 일하다 보면 어쩔수없는 경우가 있다.)

모든 제반사항을 다 갖추고 일을 시작하는 경우는 단언컨데 일 시작전에는 없다고 봐도 된다.

다 갖추고, 준비되었다 하더라도 일을 하다보면 무언가 필요한 요소가 새로 생기기도 하고 없어지기도 한다.

그런 작은 틈새를 보완(혹은 방지)하기 위해서 회의를 하고 대안을 제시하고 각자의 생각을 정리한다.

그 생각의 정리는 모두의 생각을 귀로 듣고 뇌로 분석해서 목에서 걸러 내 생각으로 표출되는것이 상식이고 기본이다.

물론 그 내 생각이 다른 의견들 보다 최우선이고 제일 근본이 되는 말이라고 판단될 수 있다.

그렇다면 그것을 극복할 대안을 제시하거나 혹은 설득시켜야 한다.

위의 대화에서 업햄은  ' CSO 가 필요하다. ' 라는 본인의 생각에 대해

CSO 가 없는 이 상황에서 회의를 하는것은 무의미하다. 라는 의제로 이끌어 갈것이 아니라

CSO 가 없는 이 상황에서 문제점이 무엇인지 부터 의견을 개진했으면 훨씬 더 매끄러운 회의가 되었을것이다.
(시발 보안강화 에 관련된 회의를 하는데 CSO 타령이 왠말이여.)



자. 여기까지 얘기 했으면 업햄이 영화에서나 현실에서나 주위사람들을 피곤하게 하는 일등공신에 이 글에서 말하는 나쁜 프로그래머 라고 생각하게 유도했으리라 믿는다.

하지만 이글에서 말하는 나쁜 프로그래머는 저 업햄상병이 아니다. (두둥!!)

제목에서 부터 스포일링을 했지만 '업햄상병 구하기' 이다.



결론부터 말하자면 저 업햄상병은 회사 조직뿐 아니라 개발조직에서도 매우 중요한 인력이다.
(뭐?! 시발?)

물론 주위사람들을 피곤하게 하는 재주가 출중하지만 그의 말은 근본적인 문제 혹은 앞으로 닥쳐올 위기에 대한 문제를 지속적으로 제기한다.
(결국 시간이 흐르고 나면 그의 말이 필요한 때가 반드시 온다.)

저런 업햄상병을 분위기파악 못하는놈, 뭣이 중헌지 모르는 놈 으로 치부해버리는 개발자들이 가장 나쁜 개발자 라는것

이것을 이 글의 핵심으로 쓰고 싶었다.

위의 대화로 다시 돌아가 보자.

그는 이미 이 회의의 내용을 알고 있고 바로 앞에 닥친 문제보다는 근본적으로 먼저 해야하는 일을 경고하고 있다.

CSO 라는 자리는 물론 임원이 하면 좋겠지만 보안을 담당하고 그에 맞는 지식이 충분한 사람이 바로 눈앞의 사태 해결만큼 중요하고 그것을 잊으면 되지 않는다.
( 당장 눈앞에 닥친 문제 보다 근본적인 문제에 집중하라고 )

라는 말을 하고 있다.

(개발) 조직내에서의 업햄상병 같은 인력은 스마트폰의 알람 혹은 경고의 역할을 수행한다.

저장공간을 거의다 소비 해가고 있다. 혹은 데이터사용량이 매우 많아지고 있다.

라고 경고 하지만, 사용자는 이미 알고 있으니까 그만 닥쳐! 라고 하곤 그냥 까먹고

사태가 벌어지고 나면 그제서야 깨닫는다.

" 아.. 씨발. 맞다 데이터 경고 나왔는데 깜빡했네. "

조직내에 업햄상병 같은 인력을 두고 있다는것은 매우 좋은일이며 중요한 사안이다.

이런 애들이 많다면 좀 곤란하겠지만 아예 없다면 문제가 닥쳐야만 대처하는 식으로 조직의 흐름이 이끌어 질수 밖에 없을 것이다.

원론적이고 기계적인 중립을 지키는 사람이 항상 옳지는 않다.

하지만 그들의 가치는 그들 스스로가 불편하지만 흔들리지 않는 선에서 경고를 할수 있는 환경과 분위기가 된다면

언제나 뭣이 중헌지 그때 그때 (개 빡치지만) 경고로서 계속 알림을 지속적으로 주게 될것이다.

프로그래머들은 기본적으로 무슨 프로젝트든 단기이든 장기이든 설계를 상상하고 일을 시작하게 된다.

그 상상은 언제나 오류를 동반하고 있고 그 오류를 추적하다 보면 나무가 아닌 가지에만 집중하게 되는 경우가 있는데.

그런 상황에 있어 가지의 문제는 근본적으로 뿌리에서 오는 영양분이 문제라는 것을 그들이 일깨워 주는 상황이 깨나 자주 일어난다.

비록 사람 빡치게 만들고 당장 중요하지 않아보이는 것들을 주장하는 업햄의 말을

언제나 기억하고 그들을 설득할 수 있는 플랜을 제시하자.

경고를 단순히 배제한다고 해서 경고가 없어지는것은 아니다.



처음에 말한 영화에서 업햄이 주장한 " 포로를 이런식으로 살인하는것은 옳지않다. "

라는 말은

당시 그 상황과 결과적으로 따져봤을때엔 동료를 죽게 만들고 사람 환장하게 만들 뿐이었지만

결국 그러한 포로에 대한 처우의 의견이 모여 인권보호 라는 거대한 숲을 만들게 되는것이다.

그리고 업햄이 삽질하는 것도 다 따져보면 업햄의 잘못이 아니다.
(원래 걔는 전투병이 아니라고!!)



경고를 무시하지 말자.

그리고 그 경고에 대한 알림을 배제하지 말자.

정말 중요한것을 내가 모르고 있을수도 있다는 점을 항상 기억하자.








시작하는 글


1. 투덜이 스머프

2. 인디아나존스

3. 인턴에서 나쁜프로그래머까지

4. 업햄 상병 구하기

5. 흥선대원군

6. 듀크 뉴캠 포에버

7. 아르센 뤼팽

8. 질데로이 록허트

9. 사루만

10.과거의 나에게 보내는 편지

마무리 하는 글