나는 운이 좋은 사람이다. 1980년대에 처음 프로그램이란 것을 만들어 봤다. 컴퓨터 전원 버튼을 누르는 것은 1초도 걸리지 않았고, 코드 두 줄을 쓰고 RUN을 입력하면 ‘짠’하고 결과가 나왔다. 화면에 갑자기 내 이름이 가득 찼고, 나는 이런 게 가능하다는 사실에 깜짝 놀랐다. 두 줄로 이런 게 가능하다면 여섯 줄, 아니 스무 줄로는 무엇을 할 수 있단 말인가! 아홉 살이었던 내 머리 속은 도파민으로 가득 찼고, 그 순간 프로그래밍에 중독되었다.
오늘날 소프트웨어 개발은 훨씬 더 복잡하다. 사용자 상호 작용이 ‘Press any key to continue(계속하려면 아무 키나 누르십시오)’면 충분하던 1980년대의 단순함과는 거리가 멀어졌다. 비록 가끔 어떤 사람들은 키보드에서 ‘any’라는 키가 있는지 찾느라 애를 먹었지만 말이다. 창도, 마우스도, 웹 페이지도, UI 요소도, 라이브러리도, 프레임워크도, 런타임도, 모바일 장치도 없었다. 명령어들과 정적 하드웨어 구성이 전부였다.
현재 모든 추상화 수준에는 이유가 있다. 그렇다고 우리가 마조히스트라는 것은 아니다. 하스켈1 프로그래머라면 예외지만 말이다. 이러한 추상화는 현재의 소프트웨어 표준을 따라잡을 수 있는 유일한 방법이며, 그렇기에 아직도 존재한다. 프로그래밍은 더 이상 단순히 자기 이름을 화면에 출력하는 것이 아니다. 이름을 출력하더라도 올바른 글꼴을 사용해야 하며, 끌어다 놓고 크기를 조정할 수 있도록 어떤 창 안에 있어야 한다.