프로그래머 면접을 볼 때 코딩 테스트를 하거나 질문을 던지면서 프로그래머로서의 지식과 태도 같은 것을 보는 경우가 많다. 그런데, 개인적으로 여기에 한 가지 더 확인했으면 하는 것이 있다. 바로 논리력이다. 프로그래머에게 중요한 역량 중 하나가 논리적인 사고라고 생각하기 때문이다.
수학과 출신이 코드를 간결하게 짠다고 들은 적이 있다. 사실인지 확인한 적은 없지만, 그럴듯하다고 생각했다. 프로그래밍이라는 것이, 본질적으로는 논리적인 글쓰기와 다를 바 없기 때문이다. 정해진 규칙에 맞게 문장을 작성하면서, 논리적으로 완벽한 글을 작성하는 것이 프로그래밍이다.
오류를 일으키지 않고 잘 돌아가는 프로그램은 모두 논리적으로 문제가 없는 글이다. 하지만, 문제가 없다고 해서 좋은 구조를 가지고 있는 것은 아니다. 논리적으로 문제가 없는 글이라도 좋은 구조를 가지고 있는 글과 그렇지 않은 글이 있다. 논리적인 사고에 능한 사람은 좋은 구조를 가진 글을 만들어 낸다.
논리적으로 좋은 구조를 가진 프로그램은, 아직 발견되지 않은 버그가 존재할 가능성이 낮다. 그리고 버그가 발생했을 때 원인을 빨리 찾아낼 수 있다. 게다가, 한번 수정된 버그가 다시 재발하는 경우도 드물게 된다. 그래서 논리적인 사고를 잘하는 프로그래머는 조직에 귀중한 자원이 된다.
채용 과정에서 스도쿠나 러시아워 같은 간단한 논리 퍼즐이라도 한 번 풀게 해 보는 것이 어떨까 생각한다. 그리고 이미 조직의 일원으로 몸담고 있는 프로그래머들에게도 논리적인 사고와 관련된 교육이 이루어지면 좋을 것 같다.
좋은 인력을 확보하기 위해서는, 직무의 본질을 이해하고, 각 직무에 맞는 역량을 정확히 정의하는 것부터 시작해야 할 것 같다.