Ruby에서는 Boolean을 반환하는 메서드를 작성할 때 empty?처럼 이름 마지막에 ?를 붙이는 암묵적인 규칙이 있습니다. 아무래도 다른 언어에선 볼 수 없는 특이한 규칙이라 할 수 있습니다. 만약 다른 언어를 주로 사용하다가 이런 규칙을 본다면 이상하게 보일 수 있다고 생각합니다.

Ruby는 인간 중심적인 코드를 지향한다고 합니다. 예전엔 인간 중심적인 코드가 대체 무엇을 말하는지 이해할 수 없었지만 지금 생각해보면 ‘일을 해결하는 여러 방법이 있다’라는 Ruby의 철학 아래 즐겁게 코딩하는 방법을 찾아보라는 의미가 아닐까 싶습니다. 어쩌면 앞서 말한 규칙도 사람이 보기 편안한 네이밍을 찾기 위해 틀에서 벗어나 이것저것 시도하다 정착된 관례일지도 모르겠습니다.

요즘은 코드에 유일한 정답이 있는 것처럼 여겨지는 경우가 많습니다. 그런 분위기 속에서 정답이라 여겨지는 틀을 조금이라도 벗어난다면 고쳐야 할 코드라고 얘기합니다. 심한 경우엔 코드가 전체적으로 잘못됐다며 처음부터 다시 만들어야 한다고 주장하는 사람도 있습니다. 정답이라 여겨지는 규칙이 나쁜 것은 아닙니다. 다만, 사람마다 자신의 정답이 다른 것이 가장 큰 문제입니다. 내가 생각하는 정답과 다르다고 느끼면 불안감에 거부하게 되는 것이죠. 팀으로 작업한 결과물에 ‘나의 정답’을 투영했기에 생기는 일이라 생각합니다.

저 또한 앞서 말한 Boolean 메서드에 물음표를 붙이는 규칙에 불편함을 느낀 적이 있습니다. 마치 잘못된 방식으로 코딩하는 것처럼 느껴지고 정답이 아니라는 생각에 불안감을 느꼈습니다. 그렇지만 거부하지 않고 받아들인 후엔 가독성이 좋다는 것을 깨달았고 Ruby를 사용하지 않는 지금도 종종 생각날 정도로 애착이 생겼습니다. 만약 그때 정답이 아니라는 생각에 거부했다면 지금까지도 좋은 점을 몰랐을 겁니다.

어쩌면 불편함이란 조금만 이해하려 노력하면 쉽게 없앨 수 있는 것일지도 모릅니다. 추상적인 방법론 하나에 구체적인 실행 방법은 셀 수없이 많고 100개의 팀이 있다면 100개의 정답이 있다고 생각합니다. 답은 하나가 아니라는 Ruby의 철학처럼 서로 이해하려 노력하고, 불편함을 제거해나가며 끝에 만들어진 ‘우리 팀의 정답’이 즐거운 마음으로 작성할 수 있는 ‘인간적인 코드’라고 생각합니다.

오늘은 같이 작업하는 팀원들과 소통하여 서로 어떤 코드를 좋아하는지, 어떻게 만들고 싶은지 이야기하면서 모두 만족할 수 있는 ‘인간적인 코드’를 만들어보면 어떨까요?