파이썬 역설
2004년 8월
최근 강연에서 많은 사람들을 불쾌하게 한 말을 했습니다: 자바 프로젝트에 참여시킬 수 있는 프로그래머들보다 파이썬 프로젝트에 더 똑똑한 프로그래머들을 참여시킬 수 있다는 것이었죠.
이 말은 자바 프로그래머들이 멍청하다는 뜻이 아니었습니다. 파이썬 프로그래머들이 똑똑하다는 뜻이었죠. 새로운 프로그래밍 언어를 배우는 것은 많은 노력이 필요합니다. 그리고 사람들은 파이썬을 배우는 것이 일자리를 얻는 데 도움이 되기 때문이 아닙니다. 그들은 진정으로 프로그래밍을 좋아하고 이미 알고 있는 언어에 만족하지 못하기 때문에 배웁니다.
이것이 바로 기업들이 고용하고 싶어 할 만한 프로그래머들입니다. 따라서 더 나은 이름을 찾지 못해 제가 '파이썬 역설'이라고 부를 만한 것이 생깁니다: 만약 어떤 회사가 비교적 난해한 언어로 소프트웨어를 작성하기로 선택한다면, 그들은 더 나은 프로그래머들을 고용할 수 있을 것입니다. 왜냐하면 그 언어를 배우기 위해 충분히 신경 쓴 사람들만을 끌어들일 것이기 때문입니다. 그리고 프로그래머들에게 이 역설은 더욱 두드러집니다: 좋은 일자리를 얻고 싶다면 배워야 할 언어는 사람들이 단순히 일자리를 얻기 위해 배우지 않는 언어입니다.
지금까지는 소수의 회사만이 이를 깨달을 만큼 똑똑했습니다. 하지만 여기에도 일종의 선별이 작용합니다: 그들은 프로그래머들이 가장 일하고 싶어 할 만한 회사들입니다. 예를 들어 구글(Google)이 그렇습니다. 그들은 자바 프로그래밍 일자리를 광고할 때, 파이썬 경험도 원합니다.
거의 모든 널리 사용되는 언어를 아는 제 친구는 대부분의 프로젝트에 파이썬을 사용합니다. 그는 주된 이유가 소스 코드의 모습이 마음에 들기 때문이라고 말합니다. 이는 다른 언어보다 특정 언어를 선택하는 데 있어 사소한 이유처럼 보일 수 있습니다. 하지만 들리는 것만큼 사소하지 않습니다: 프로그래밍을 할 때, 코드를 작성하는 시간보다 읽는 시간이 더 많습니다. 조각가가 찰흙 덩어리를 밀고 당기듯이, 당신은 소스 코드 덩어리를 다룹니다. 따라서 소스 코드를 보기 흉하게 만드는 언어는 덩어리진 찰흙이 조각가에게 그러하듯이, 꼼꼼한 프로그래머에게는 미치게 하는 일입니다.
보기 흉한 소스 코드 이야기가 나오면, 사람들은 물론 펄(Perl)을 떠올릴 것입니다. 하지만 제가 말하는 것은 펄의 표면적인 추함이 아닙니다. 진정한 추함은 거칠게 보이는 문법이 아니라, 잘못된 개념으로 프로그램을 만들어야 하는 것입니다. 펄은 욕설을 하는 만화 캐릭터처럼 보일 수 있지만, 개념적으로 파이썬을 능가하는 경우도 있습니다.
어쨌든 아직까지는 그렇습니다. 두 언어 모두 물론 움직이는 목표물입니다. 하지만 루비(Ruby) (그리고 아이콘(Icon), 조이(Joy), J, 리스프(Lisp), 스몰토크(Smalltalk))와 함께, 이 언어들은 프로그래밍에 진정으로 관심 있는 사람들에 의해 만들어지고 사용된다는 공통점을 가지고 있습니다. 그리고 그런 사람들이 보통 프로그래밍을 잘하는 경향이 있습니다.