프로그래밍 언어와 선호

학생이던 시절, 나는 어떤 언어는 좋아하고 어떤 언어는 싫어했다. 요즘은 되도록 그런 선호나 기호를 멀리하려고 노력한다.

Be Pro

학생에서 현업 엔지니어가 된다는 것. 그것은 프로가 되어야 한다는 것이라고 생각한다. 프로와 아마추어의 차이는 돈을 받는지 여부이다. 한편, 이 차이 때문인지는 몰라도 거의 대부분의 경우 프로는 “전문가” 혹은 “최고”의 의미로 사용되는 것 같고 아마추어는 “미숙한 사람”이라는 의미로 사용되는 것 같다. 그런 측면에서 볼 때 프로는 “돈을 받고 주어진 일을 하는 사람이며, 그것을 통해 성과를 책임지는 사람”이라고 생각한다.

어떤 프로그래밍 언어를 사용해야 할지 선택하는 일은 많은 경우 자신에게 달려있다기 보다는 회사에 달려있다. 팀 내 다른 엔지니어들의 해당 언어에 대한 숙련도, 요구사항, 해당 언어에 능숙한 엔지니어가 구인구직 시장에서 충분히 확보 가능한지 등 외부적인 요인을 종합적으로 고려해 언어를 선택해야 하므로, 좋아하기 때문에 그 언어를 사용하겠다는 것은 어려운 일일 수 있다.

싫어하는 언어로 작업을 해야하는 경우도 생길 것이다. 물론 이직을 하는 것도 답이겠지만, 나는 엔지니어는 기술을 이용해 문제를 푸는 사람이고, 특정 도구나 특정 기술에 종속되는 사람이 아니어야 한다고 믿긴 한다. 그래서 어떤 언어든 주어지면 그 언어로 문제를 풀 수 있는 사람이 더 좋은 엔지니어이지 않을까 생각한다.

호불호를 떠나 상황에 적합한 언어로 능숙하게 문제를 풀어내는게 진짜 엔지니어 같다. 마틴 파울러나 켄트 벡도 선호하는 언어가 있을 지도 모른다. 하지만 그들은 Java를 쓰기도, Python을 쓰기도, JavaScript를 쓰기도 한다. 그리고 능숙하게 목표로하는 것을 달성한다.

자세히 보면 모든 언어가 제각각 “이쁘다”

이런 생각도 든다. 언어마다 장점도, 단점도 있고, 긍정적으로 보려고 하면 긍정적으로 보인다. 단점을 보면 단점만 크게 보인다. 사람과 같다. 자세히 보아야 예쁘다. 오래 보다보면 사랑스럽다. 긍정적으로 보려고 하다보면, 어느새 그 언어를 사랑할 수 있다.

학생시절 나는 Java를 싫어했다. public static void main처럼 쳐야할 타이핑 횟수가 너무 많다고 생각해서였다. 한 때는 Python을 싫어했다. 당시 타입이 없었고, 그것이 버그의 온상이자 유지보수의 헬이라는 생각이 들어서였다. 하지만 지금은 둘 다 사랑한다. Java는 대규모 협업에 최적화된 언어다. 클래스와 인터페이스로 OOP의 원칙을 배우는 데도 너무 좋은 언어다. 자꾸 보다보니 문법조차 너무 아름답다고 생각한다.

파이썬은 직관적이고 생산성이 높은 언어다. 스크립트 언어의 장점도 있다. 표현이 간결해서 이해하기 쉽고 읽기 편하다. pseudo code 작성할 때 쓰기에도 좋다. 데이터 전처리를 하거나 PoC(Proof of Concept, 개념증명)를 빠르게 구현해볼 때 정말 매력적인 선택지다. 나는 파이썬의 간결하고 직관적인 문법을 사랑한다.

쓰다보면, 관심을 갖다보면 언어마다 매력적인 포인트들이 한가득씩 있다. 예쁘게 봐 주려고 노력해 보는 건 어떨까? 그런 긍정적인 관점이 종종 인생에서 꽤 도움이 되기도 한다.