2015.02.20 13:11

정확한 단어 사용에 대해서 편집증 환자처럼 집착하는 경향이 있다. 덕분에 사람이 지나치게 까칠한 것이 아니냐고 타박을 듣기도 한다. 이런 태도에는 나름의 배경이 있다. 완벽주의 성향의 성격과 나름의 작은 철학 때문이다.


내 철학은 복잡하지 않고 심오한 고민 보다 어쩌다 꺼낸 얘기가 그대로 굳어진 것이다. 예전에 사회학을 전공하던 인문학도였던 전 여자친구와 밥을 먹다, 어떤 사상에 대한 이야기를 나눈 적이 있다. 내 입에서 저절로 배어나온 것이 '말(언어)'가 사고를 낳고, 사고가 사상을 낳는다... 라는 표현이다.


불분명한 어휘와 사고는 결국 불확실하거나 모순된 논리를 만들게 된다. 그렇기에 정확한 어휘 구사가 좋은 소프트웨어를 설계하고 개발하는데 큰 밑거름이라고 여기게 되었다. 사람마다 상황에 따라 하나의 단어를 다른 의미로 사용할 수 있다. 그것을 완벽히 통제할 수 없거니와 그래서도 안된다. 다만, 하나의 팀으로 움직일 때는 하나의 프로젝트 안에서는 하나의 단어에 단 하나의 의미를 부여해야 한다. 이러한 철학은 프로젝트 내에서 용어나 어휘에 대해서 만큼은 토론과 자의적인 해석을 철저히 금하는 지독한 결벽주의를 낳기도 한다. 허나, 소프트웨어를 제대로 구현하기 위해서는 이러한 비인간적(?) 처사가 때로는 옳다고 생각한다.


소프트웨어는 분명 자유로운 사고 덕분에 발전한다. 하지만, 개개인의 자유로운 사고가 무질서하게 뒤엉킬 때 수많은 버그와 장애 그리고 품질 저하가 발생하는 것도 분명한 현실이다. 이에 대해 내가 생각하는 유일한 통제 수단은 프로젝트 팀(공간)과 일정(시간) 내에서의 '통제된 용어 해석과 사고, 그리고 사상(원칙)'이 필요하다는 것이다.


오해하지 말아야 하는 것은 개인의 역량과 자유를 제한하는 것이 아니라 전체의 목표를 위해 '자율에 따라 능동적으로 감수'해야 한다는 것이다. 팀원 구성원 다수의 이해와 눈높이가 다른 상태에서 단지 의사결정권자가 독단적으로 팀원의 경험과 인식에 맞지 않는 용어를 선택하는 것은 엄청한 부작용을 불러오게 된다. 인간은 자신이 스스로 선택했다고 여기지 않는 상황에 대해서는 본능적으로 책임을 회피하려 들게 마련이다. 좋은 코드는 늘 프로그래머의 적극적인 자세에서 나오기 마련이다. 억지로 행동을 통제한들 좋은 - 가독성, 성능, 재활용성 - 코드가 생산되기는 어렵다. 인간이라는 '코딩 머신'은 단지 '밥과 술'로 움직이는 것이 아니라, '감성과 공감'이라는 윤활유를 적당히 뿌려줘야 하는 까다로운 엔진이라는 말이다.


Posted by 善 곽중선