프로그래머는 건축가와 비슷하다.
견고한 성을 만들어야 하는 건축가가 있다고 하자.
그는 방어자의 입장에서 최대한 방어가 잘되는 성을 만들어야 한다.
그런데 방어를 잘 하려면 어디가 취약할 지 알아야 한다.
따라서 때로는 공격자의 입장에서 생각해야 한다.
어디를 때리면 잘 부서질까?
어느 벽이 가장 타고 오르기 쉬울까?
어느 문을 따고 들어갈까?
프로그래머의 딜레마도 여기에 있다.
내 프로그램의 장점을 살려서 성능 좋은 프로그램을 만들어야 하지만
내 프로그램의 약점도 찾아서 안전하고 최악의 case에도 그리 느리지 않게 만들어야 한다.
이렇게 두 가지 역할을 번갈아 수행하다보면 정말 혼란이 온다.
나는 방어자일까? 공격자일까?
내가 뭘 해야 되는 걸까?
잘 만들기 위해 잘 부서지는 법을 연구하다보니
너무 깊게 빠져들어 만들기보다 부수기를 더 잘하는 사람이 되기도 한다.
아군과 적군 모두에게 도움이 되는 정보와 기술도 가지게 된다.
범인의 심리와 그들의 세계를 추적하고 잠복하고 때로는 잠입하다가
범죄의 달인이 된 경찰이 될 수 있다. 그러다가 어느 순간 자신이 범죄를 저지를 수도 있다.
누구보다 뛰어난 범죄자가 될 가능성이 있으니까.
아무튼 이렇게 자신의 역할을 혼동하게 되고
결국은 내가 뭘 만들어야 했는 지도 잊어버리게 된다.
이런 양면적인 일을 해내야 하는 직업을 가진 사람들은 마치
지킬박사와 하이드가 된 기분이 든다.
점점 분열돼 가는 가치관과 심리적 역할의 혼동.
나는 개발자일까? 기획자일까?
나는 팀장일까? 팀원일까?
주주인가? 사원인가?
나는 매니저일까? senior였나? junior였나?
programmer? validator? tester? administrator? user?
댓글 없음:
댓글 쓰기