scala는 여러가지 좋은 특징을 가지고 있고 자바에 비해 코드도 간결한 편이다. 자바 이후 또는 보조 언어로 우리 팀에 도입해 볼까 생각하며 공부해 봤지만 아래의 이유로 아직 전면적으로 쓰기에는 이른 듯 하다.
첫째로는 기존 자바 프로그래머가 scala에 익숙해지려면 공부해야 할 께 꽤 많다는 점이다. 함수형 패러다임과 용례에 익숙해지는 것부터가 만만치 않으며, 자바보다 복잡한 타입 시스템도 알아야 하고 여러가지 함축적 표현도 익혀야 한다.
둘째 IDE 지원에 문제가 있다. scala 이클립스 플러그인이 있긴 하지만 Syntax Highlighting 정도만 되는 수준이다. 자동 완성과 리팩토링 지원 정도는 되어야 한다. 이것이 안 되는 환경에서 코드를 작성하려니 갑자기 석기 시대로 이동한 기분이다.
세째 웹 개발의 경우 scala 웹 개발 프레임워크인 Lift가 꽤 난해(?)하다는 점이다. 서블릿 API 또는 JSP를 가지고 Front Controller 스타일 위주로 개발하는 것과는 사못 다른 방식을 취하고 있어서 개념을 잡기가 쉽지 않다. 더구나 환경 구성에 maven을 이용하는 법만 제시하고 있어서 maven을 모르는 경우 진입 장벽이 만만치 않다. 한 권밖에 없는 해설서도 난해한 편이어서 프레임워크를 이해하기가 쉽지 않다.
첫째 문제는 scala의 본질적인 문제라서 어찌 해결할 방법이 없다. 다만 scala 언어가 담고 있는 여러 개념들은 더 나은 개발자가 되려면 알아야 할 것들이라는 협박(?)으로 해결하는 수밖에 없다.
둘째와 세째 문제는 시간이 지나면 나아질 거라 기대해 본다. scala는 정적 타입 언어이기 때문에 동적 타입 언어보다 자동 완성과 리팩토링 지원 기능 구현이 상대적으로 쉽다 - 하지만 scala 언어가 상당히 복잡해서 구현이 쉽지는 않다 - 고 한다. scala 커뮤니티에서도 IDE 지원 문제가 꽤 논의되는 거 같다. 웹 프레임워크 문제도 시간이 지나면 좀더 많은 프레임워크가 등장하리라 기대한다.
능력과 시간이 되는 팀이라면 둘째, 세째 문제는 자체적으로 해결할 수도 있을 것이다. 우리 팀은 그럴 능력이 되지 못해서 거인의 어깨를 기다릴 수밖에 없다.