어느 저녁 후배와 고깃집에서 소주잔을 기울이고 있었다 이런저런 이야기가 오가다 자연스럽게 소프트웨어 개발로 주제가 옮겨갔다. 내가 먼저 입을 열었다.
"결국 소프트웨어는 사용자가 무엇을 원하는지 알고 만들어야 해. 개발자 머릿속에서만 만들면 현장에서 다시 만들게 돼."
후배가 소주잔을 내려놓으며 고개를 끄덕였다.
"맞아요. 예전에 혼자서만 프로그램 코딩하던 친구 있었잖아요. 본인만 아는 프로그램 만들어서 이해하는 데 엄청 힘들었잖아요."
"네가 그렇게 말하는 거 보니까 이제 개발자가 뭔지 좀 알게 된 거 같네. 허허허"
"선배님과 함께한 시간이 얼마인데요, 하하하"
웃으며 잔을 부딪쳤지만, 후배의 그 한마디가 머릿속에서 맴돌았다. 본인만 이해하는 프로그램. 사실 예전의 나도 그랬다. 나뿐만 아니라 어떤 개발자는 결과만 보여주면 되지, 내부 코딩은 어떻게 되든 상관없지 않냐는 생각을 하는 이도 있었고, 특별히 필요하지는 않지만 새로운 기능(디자인 같은)을 우리만의 기술이라면서 내세우던 시절도 있었다.
그런데, 25년이 지나오면서 깨달은 것이 있다. 정말 가치 있는 기술은 누구나 쉽게 쓸 수 있고, 사용하는 사람이 필요한 것을 채워주는 기술이라는 것이다. 그러려면 사람들이 무엇 때문에 불편하고, 어디서 막히는지를 먼저 이해해야 한다.
세상을 바꾼 기술들도 결국 그 자리에서 나왔다. 접힌 지도를 펼치고 이정표를 찾아 헤매던 운전자가 있었기에 내비게이션이 태어났다. 코드 규칙만으로는 잡아낼 수 없는 미세한 결함이 있었기에 머신러닝이 검사 현장에 들어왔다. 누군가의 불편함을 눈여겨본 사람이 고민하고, 시행착오를 거치며 만들어낸 결과물이다.
그렇게 생각하면, 기술과 일상은 우리 생각만큼 멀지 않다.
나는 일상생활에 직접 쓰이는 소프트웨어를 만들지는 않는다. 하지만 우리가 매일 보는 TV, 손에 쥔 스마트폰, 손목 위의 워치, 자동차를 움직이는 이차전지 배터리 — 이 제품들의 품질을 위해 비전검사 소프트웨어가 조용히 일하고 있다. 공장 어딘가에서 카메라가 쉬지 않고 촬영하고, 내가 짠 코드가 양품과 불량을 가려내고 있다. 일상의 끝자락에 내 코드가 닿아 있는 셈이다.
고깃집을 나서며 후배가 물었다.
"선배님, 그럼 좋은 소프트웨어가 뭐예요? 한마디로요."
찬 바람을 맞으며 잠깐 생각했다. 나도 한때는 핵심 기술을 가졌다고 자부했으나 사람들의 생활에 영향을 주지 못하면 아무 의미가 없었다. 일상, 가장 가까운 곳에서 사용되는 기술들 이미 삶의 일부가 되어 있다.
"쓰는 사람을 생각하며 만든 거. 코드 한 줄에도 누군가를 향하는 마음이 있으면, 그게 좋은 소프트웨어 아닐까."
후배는 고개를 끄덕이더니 웃었다. 나도 웃었다. 소주 한 병에 나온 답 치고는 꽤 괜찮았다.