Review
코틀린 아카데미: 이펙티브 코틀린 후기

코틀린으로 플러그인을 만들어 보면서 코틀린에는 유용한 기능들이 아주 다양하게 많이 있다는 것을 알게 되었다. 그런데 나는 코틀린을 처음부터 제대로 공부해서 쓰는 게 아니라, 필요한 문법을 그때그때 찾아서 쓰다 보니까 놓치고 있는 문법들이 많이 있겠다는 생각이 들었다. 그래서 이참에 한 번쯤은 제대로 공부해보기 위해서 이 책을 읽어보기 시작했다. 코틀린을 다루는 책 중에서 고민하다가 이 책을 봤는데, 내가 읽기에 적절한 난이도인 것 같고 이펙티브 시리즈의 서술 방식이라면 좀 더 익숙하게 느껴질 것 같아서 이 책을 골랐다.
책에서는 대상 독자가 숙련된 자바 또는 코틀린 개발자라고 이야기하고 있다. 나는 내가 ‘숙련된’ 개발자는 아니라고 생각하는데, 이 책을 읽으면서 전혀 어려움은 없었다. 그렇지만 코틀린의 기초적인 문법, 예를 들면 상속이나 위임 등의 문법은 알고 있다는 가정하에 설명하고 있다. 그외에는 객체지향이나 멀티스레딩에 대한 아주 간단한 지식만 있다면 문제 없이 전부 이해할 수 있을 것 같다. 제목은 이펙티브 코틀린이지만 코틀린에만 국한되지 않는 일반적인 개발 지식도 많이 다루고 있기 때문에, 초보 개발자가 읽기에도 유용할 것이라는 생각이 든다.
이 책으로 코틀린을 공부하면서 코틀린은 정말 잘 설계된 언어라는 생각이 들었다. 책에 나오는 아이템 대부분이 ‘A보다 B가 무조건 좋다’는 내용이 아니라 ‘A보다 B가 나을 수도 있으니 B를 고려하라’는 식의 내용이다. 왜냐하면 전자와 같은 상황은 코틀린에서 문법적으로 불가능하거나 자연스럽게 B를 사용하도록 기본값이 설정되어 있기 때문이다. 그리고 후자와 같은 상황도 IntelliJ IDEA에서 검사하여 수정을 제안해주는 경우가 많기 때문에, IDE의 지원까지 합쳐진다면 초보 개발자도 숙련된 개발자처럼 품질이 좋은 코드를 만들 수 있는 언어라고 생각한다. 그렇다고 해서 코틀린이 완벽하고 모든 기능이 있는 언어인 것은 아니지만, 기존에 사용되던 언어들의 단점을 해결하고 장점을 모은 안정적인 언어인 것 같다. 또한 JetBrains에서 구체적인 기준으로 코딩 컨벤션을 제공해주고 있기 때문에 이를 잘 따른 프로젝트라면 쉽게 접근할 수 있을 것 같다.
책에서는 각각의 경우에 유용한 코틀린의 기능들을 소개해준다. 가장 마음에 들었던 점은 예제에 불필요한 코드가 거의 없으면서도 실전적인 사례를 제공한다는 점이었다. 좋은 예제들 덕분에 내용을 더 쉽고 빠르게 이해할 수 있었다. 또한 코틀린 공식 라이브러리의 구현 방식을 핵심적인 부분만 남기고 보여주는 등의 방식으로 내부 구현을 간접적으로 이해할 수 있어서 좋았다.
읽기 전에 기대한 것보다는 일반적이고 기본적인 내용 위주였지만, 코틀린으로 코드를 작성할 때 유의해야 하는 점들을 정리할 수 있어서 좋았다. 번역도 꼼꼼하게 잘 되어 있기 때문에 이해하는 데 불편함은 거의 없었다. 코틀린의 기초 문법보다는 코드의 품질을 위한 활용법을 알고 싶은 경우, 그렇다고 해서 너무 특정한 상황만을 위한 내용은 아니었으면 좋겠는 경우에는 이 책이 아주 적절할 것 같다. 앞으로 코틀린으로 개발할 때 꽤 도움이 될 만한 정보들이었다.