좋은 소프트웨어를 작성하는 것은 결코 쉽지 않은 일이다. 우리는 기계가 실행할 수 있는 쉽고 효율적으로 돌아가야만 하는 명령을 제공하고자 코드를 작성한다. 여기서 더 중요한 사실은 코드에는 다른 근본적인 목적이 있다는 점이다. 즉, 코드는 현재와 미래에 우리 코드와 상호작용할 사람들과 명확히 의사소통하기 위한 수단이라고 할 수 있다. 따라서 코드는 기계에 명령을 내리는 도구라는 역할을 초월해, 여러 사람이 협력해 기계에 명령을 내리기 위한 도구가 되고 있다.
나는 상대적으로 어릴 때부터 코딩을 해왔다. ZX 스펙트럼(ZX Spectrum)에서 베이직(BASIC) 코드를 작성을 시작으로, 이후 코모도어 64(Commodore 64)에서 기계어 코드를 작성했다. 오랫동안 이런저런 컴퓨터와 언어를 전전한 끝에 결국 열정적인 자바 개발자가 됐다. 그 시점까지 내가 배워왔던 프로그래밍 지식은 모두 프로시저 기반이었으며, 컴퓨터에게 할 일을 지시하는 명령어 단계를 나열한 것이었다. 2000년대 초 자바가 제시한 객체지향 개념은 나를 아주 놀라게 했다. 이제 컴퓨터 메모리상에서 객체를 통해 실제 세계의 개념을 모델링할 수 있게 됐기 때문이다! 또한 자바를 통해 컴파일 시점에 특정 규칙을 강제함으로써 실행 시점의 문제를 줄여주는 정적 타입 시스템의 가치도 배웠다.
시간이 지나면서 소프트웨어에 대해 생각하는 다른 방식을 발견했다. 이런 깨달음은 다른 정적 타입 언어인 스칼라로 프로그래밍을 시작하면서 내 안에 자리 잡기 시작했다. 함수형 프로그래밍은 완전히 새로운 패러다임으로, 내 마음은 클래스와 객체에 대해 생각하는 것에서 벗어나 클래스나 객체 안에 있는 함수와 메서드를 강조하는 것으로 이동했다. 운 좋게도 스칼라를 배울 때는 내게 몇 가지 환상적인 자료가 있었다. 첫 번째는 코세라(Coursera)에 있는 마틴 오더스키(Martin Odersky)의 훌륭한 'Functional Programming Principles in Scala(스칼라로 배우는 함수형 프로그래밍 원리)'라는 비디오 코스였다. 두 번째는 2014년에 출간된 『스칼라로 배우는 함수형 프로그래밍』(제이펍, 2015))였다. '빨간 책'으로 잘 알려진 이 책은 루나르 비아르드나손(R?nar Bjarnason)과 폴 치우사노(Paul Chiusano)가 수년간 자신들의 경험과 노력을 쏟아부은 결과물이었다. 이 두 가지는 내 생각을 형성하는 데 크게 기여했으며, 오늘날 내가 프로그래밍을 인식하는 방식을 바꿔놨다.
코틀린을 배우기 시작했을 때는 코틀린이 스칼라와 비슷한 성능을 가졌음에도, 실용성을 특별히 강조하는 데 비해 타입 시스템을 사용하는 함수형 프로그래밍이라는 학문적 측면은 그다지 강조하지 않는다는 사실을 깨달았다. 몇몇 친구와 코세라에서 'Kotlin for Java Developers(자바 개발자를 위한 코틀린)' 코스를 마친 다음, 우리는 그 스터디 그룹을 유지하면서 코틀린에서 타입을 사용하는 FP에 대해 탐구하는 토대로써 빨간 책의 내용을 사용하자고 이야기했다. 슬프게도 이 모임을 실제로 진행하지는 못했지만, 내 나름대로 연구를 더 진행해서 새로운 코틀린 FP 책의 개념을 매닝출판사에 제안했다. 초기 아이디어는 폴과 루나르의 책과 똑같은 내용을 다루되 모든 코드를 스칼라가 아닌 코틀린으로 변환하는 것이었다. 이 제안을 받아들여졌을 때 나는 매우 기뻤다. 하지만 일단 집필을 시작하자 책은 그 자체로 생명력이 있는 존재가 됐고, 기존의 제안에서 많은 것이(코드뿐 아니라 본문까지도) 달라졌다. 그럼에도 이 책은 원본인 빨간 책의 구조를 매우 충실히 따르고 있다.
코틀린 개발자를 위해 이 책을 쓰면서 나 자신도 엄청나게 성장할 수 있었다. 그 과정은 훌륭한 배움의 경험이기도 했으며, 이전보다 이 책의 개념을 더 심오하고 풍부하게 이해할 수 있게 됐다. 이 책을 통한 여행을 시작하는 여러분도 내가 각각의 페이지를 적을 때마다 느끼고 배웠던 내용을 최대한 많이 얻어가길 바란다. 소개하는 개념을 이해하면, 여러분이 코드를 작성하는 방식과 그 아이디어를 여러분의 발자국을 따라오는 다른 사람들에게 제시하는 방법을 영원히 바꿔줄 것이다. 이 책이 내게 효과가 있었듯이 여러분에게도 효과가 있길 바란다. 무엇보다 내가 그랬던 것처럼 여러분도 이 책의 모든 페이지에서 재미를 느끼고 즐기게 되길 기대한다.