개발자가 말을 못 해도 된다는 건 편견인걸요
개발자가 말을 못 한다고, 말을 못 해도 된다는 생각의 절반은 편견이다. 확실히 유창할 필요는 없다. 그러나 끊임없이 말하고, 한 말에 책임지는 것 역시 개발자의 일이다.
얼핏 보면 코드는 암호처럼 보이지만, 저수준 언어가 아닌 이상 알고 보면 사람에게 가깝다. 가령 장바구니에 상품을 담고 결제하는 기능을 만들다고 할 때, 보통 장바구니, 상품, 결제에 해당하는 코드를 먼저 만들고 이름을 붙인다. 그리고 다음부터는 코드를 만드는 것이 아니라 코드에 붙여놓은 이름들을 이용해 자연어에 가깝게 코드를 짤 수 있다.
customer.charge(cart)
꼭 레고 같다. 하나의 장난감을 만들 수 있는 레고 블록들을 먼저 만들고, 블록들을 조립해 원하는 장난감을 만든다. 차이점이라면 어린이들은 조립만 하지만, 개발자는 블록부터 만든다는 점이다. 그리고 자신이 만든 블록이 담고 있는 것, 하는 일, 맡은 역할에 따라 적절한 이름을 붙인다. 엄밀히 말하면, 필요한 이름을 먼저 만들고 정확하게 구현한다.
우리가 쇼핑몰에서 주문한 물건이 실제 상품과 같을 것이라고 신뢰할 수 없다면, 그 쇼핑몰에서 아주 싼 물건 하나라도 안심하고 주문할 수 있을까? 블록을 만들고 조립할 때도 중요한 것은 신뢰가 아닐까? 각 블록이 이름처럼 내용물을 담고, 동작하고, 역할을 할 것이라는 신뢰. 그 신뢰가 한 번 무너지면 사실상 안정적인 개발이 불가능할 테니까.
그런 맥락에서 개발자가 이름을 잘 지어야 한다고 이야기하는 것이 단순히 가독성 때문만은 아닐 것이다. 개발자는 끊임없이 값에, 자료구조에, 함수에, 객체에 이름을 붙인다. 그리고 그 이름에 책임을 진다. 이름처럼 코드를 짜고, 내부 코드를 보지 않더라도 저 사람이 짠 코드와 이름이 일치할 것이라는 신뢰를 쌓는 것이 개발자의 일이다.
중요한 건 “신뢰감 있게 말하는 법”과 같은 프레이즈가 아닐 것이다. 자기 의견이 얼만큼 신뢰할만한 것인지를 솔직하게 전달하는 일, 신뢰할만한 의견을 가지는 일에 관심을 기울이는 일이지 않을까.
일상에서 없는 일을 만들어내거나 있는 일을 과대 포장하는, 혹은 지키지 못할 약속이 많이 일어난다. 그러나 누군가의 말을 있는 그대로 받아들일 수 없다는 것은 얼마나 비극적인가. 더군다나 그게 나의 친구, 동료, 그리고 연인이라면?
언어와 행동의 일관성을 끊임없이 검증하는, 자기 말에 책임지는 연습이 일상적인 개발자의 사랑은 조금 다를 것을 믿는다. 조금도 더하거나 빼지 않고, 있는 그대로 말하려고 애쓰는 모습이 가끔은 답답할 수는 있겠다. “저 사람은 왜 사랑한다는 말을 자주 안 해줄까?”, “왜 내가 듣고 싶어 하는 말만 해주지 않을까?”와 같은 고민이 들 수도 있을 테고.
그러나 훈련된 개발자가 말하는 모든 문장에는 진심과 정확성이 깃들어있다. “저 사람이 사랑한다고 말할 때는 정말로 사랑하기 때문에 그렇게 말하는 거야”라고 믿을 수 있다. 속으로 어떤 다른 생각을 하는지 의심할 필요가 없다는 것이 주는 특유의 매력과 안정감이야말로 개발자가 줄 수 있는 가치가 아닐는지.
자기 일에 최선을 다하는 태도는 일상과 연애에도 영향을 미친다고 생각합니다. 일에서 얻는 배움이 삶도 나아지게 할 것을 믿으며, ‘엔지니어는 어떻게 사랑을 할까?’라는 질문으로 글을 연재합니다.