예전에는 이런 IT관련 에세이들이 별로 없었는데 언젠가부터 폭발적으로 나오기 시작하는 것 같다.
“꿈을 실현하기 위해서가 아니라 사실은 ‘재미’가 있어서 그 꿈을 따라 갔다. 정말 하고 싶은 것이라면 누가 말려도 하는 것이다.”
이 얘기는 초등학교 시절 컴퓨터를 만지고 잡지(마소)에 빠져 살던 시절 얘기를 하는 중에 나온 얘기다. 문득 나도 국민학교 시절 잡지를 보면서 몇페이지에 걸친 소스를 일일이 보고 치면서 밤을 새던 기억이 나서… (에러가 나면…. 지금 생각해도 눈물이… ㅠㅠ)
지금에 와서 생각해보면, 프로그래밍의 기본은 3가지라고 생각한다.
– 자료를 선언하기
– 크기를 비교하기
– 정해진 자료를 이동하기
100% 동감하진 않지만 프로그래밍은 본질적으로 데이터를 생성(입력)하고 가공(계산)하고 출력하는 일련의 작업이라고 생각한다.
“대부분의 프로젝트는 ‘분석’에 의해서 ‘일정’을 만들지 않고 ‘일정’을 통해, ‘품질’을 선택한다고 봐야 한다.”
안타깝지만…. 사실인 것 같다. 상황에 따라 정도의 차이는 있지만…
“그리고 대부분은 그 분야를 제대로 습득하는 것이 아니라, 그 분야에서 ‘놀기에 바쁜 경우’가 많다.”
축구를 좋아한다고 해도 대부분은 그냥 ‘놀이’에 빠져들 뿐이라는 예를 설명하는 글. 유희에 집중하는 자세만으로는 그 자체에 빠진 것이라고 보기 힘든 것이라는 점. 특정 분야에 미친다는 것은 그 선을 넘어서는 것이며 그런 스펙을 필요로 한다는 글.
“‘사람이 코딩하면 버그가 생긴다.’ 그렇다면, 어떤 소프트웨어를 만든는 데 있어서 가장 오류를 적게 만드는 이상적인 방법은 바로 사람의 개입을 최소화하는 것으로 생각한다.”
“논리적으로 동작 가능한 소프트웨어를 만드는 것과 실제 사용이 가능한 소프트웨어를 만들어 서비스하는 것은 전혀 다른 이야기다.”
“이러한 사례는 그동안 너무도 많다. 가장 인터넷에서 잘 알려진 사례인 @TARGET이라는 회사의 사례를 보아도 알 수 있다. 어느 날 10대 딸에게 쿠폰북들이 왔는데 ‘임산부용품’만 잔뜩 안내가 되어서 왔고 이에 분노한 아버지가 항의하려 했지만, 사실, 실제 ’10대 딸’이 임신했다는 사실이다. 데이터가 주변 사람보다 더 빠르게 인식한 것이다.”
“무엇이든 ‘직관적인 목표’가 앞에 있고 ‘구체적인 분석’이 따라야 한다.”
“측정할 수 있어야 한다. 달성하기 쉽도록 액션을 쉽게 연상하게 해야 한다. 빠르게 계산할 수 있는 방법이어야 한다.”
“‘형식에 얽매이는 행위야 말로 삽질이다.’가 스프트웨어 개발의 정론이다.”