글에 앞서서

  1. 이 글은 제 개인적인 의견에 지나지 않습니다. PHP 사용자들을 비난할 생각은 없습니다.
  2. 인터뷰 내용 중 제 글과 관련 있는 부분을 모두 번역해서 올리고 싶었으나, 원본 출처에서 허가해주지 않기에 번역한 내용 중 일부분만 본문에 적었습니다.

이 글을 쓰게 된 이유

지난번에 Rasmus의 개발론을 비판하는 글을 썼었는데 어느 분께서 너무 편향적인 자료를 가져다가 평가하는 것 아니냐고 하시더군요. 제가 인용한 것은 wikiqoute의 자료들이었습니다. 어떻게 된 것인지 Rasmus의 (제가 보기엔)이상한 발언들이 잔뜩 놓여 있던 곳이죠. Rasmus가 좋은 말을 안했을 수도 있지만 실리지 않았을 수도 있죠. 그곳의 편집이 악의적이라고 주장한다면 그럴 수도 있긴 하다고 생각합니다.

그래서 Rasmus의 최신 인터뷰를 볼 기회가 온다면 지금도 그렇게 생각하는가를 검증해보고 싶었습니다. 마침 Modern PHP 그룹에 Rasmus가 2015년 12월에 일본에서 인터뷰한 내용이 올라왔습니다. 댓글에도 Rasmus의 사상에 공감한다는 댓글들이 많이 보였죠. 기회다 싶어서 읽어보았습니다.

1페이지는 자신에 대한 이야기, 2페이지는 자식 교육에 대한 이야기입니다. 이 부분은 그냥 건너 뛰었습니다. 개발에 대한 내용이 보고 싶으시면 3페이지부터 보시면 됩니다.

"개발은 필요악"

Rasmus는 프로그래밍을 여행을 위해 비행기를 타는 것에 비유하면서 비행기 타는게 불편하고 싫듯 자신도 프로그래밍이 싫다고 말합니다. 예전부터 Rasmus는 개발이 싫다고 말해왔고, Rasmus 본인이 개발을 좋아하고 싫어하고는 저한텐 별 문제가 아니라고 생각합니다. 제가 기분이 이상해지는 부분이라면 그가 개발을 싫어하듯 자신도 개발을 싫어하는 개발자들이 많다는 점이겠죠. 저는 여기서 요리를 싫어하는 요리사, 콘티 짜기 싫어하는 만화가 같은 느낌을 받았습니다. 왜 좋아하지 않는 일을 억지로 계속 하고 있는 것일까라는 생각이 들었죠.

저도 개발에서의 모든 부분을 좋아하진 않습니다. 가령 남이 잘못 만든 프로그램에 수정을 가해야 한다던가 하는 이름바 똥치우기 작업은 싫어합니다. 하지만 그것은 전면적 리팩토링을 할 수 없는 상황으로 인한 불쾌함이지, 개발이 주는 불쾌함은 아닙니다.

Rasmus가 말한 것 처럼 프로그래밍이 여행의 한 과정이라고 쳐봅시다. 그럼 그 여행은 어떤 프로그램을 만들지 생각하는 과정, 그것을 프로그램으로 옮기는 프로그래밍, 자동화된 테스팅, API에 대한 문서화, 프로그램의 배포등의 작업이 포함되어 있을 것입니다. Rasmus 본인은 문제 해결을 위한 수단일 뿐이라고 말했는데, 그는 인터뷰에서 말한 것 처럼 그저 "일본에 가서 대화를 하는 것", 즉 문제가 해결된 상태만을 좋아하는 것이지 여행의 여정들을 좋아하는게 아닙니다.

모든 작업이 다 흥미로운 자극으로 가득 차있을 순 없습니다. 하지만 모든 중간 과정은 다 싫고 결과물만 필요로 한다면 개발을 좋아하는건 아니지 않을까요? 어쩌면 중간 과정을 다른 사람이 해주면 더 즐거울지도 모르죠. 물론 그렇게 되면 자기 자신도 개발자가 아니게 되지만 오히려 즐거움은 증가하지 않겠습니까? 그럼 굳이 중간 과정이 싫은 사람이 굳이 중간 과정에 들어가야할 이유가 있는지 모르겠습니다.

개발이 필요악이라고 생각할 정도라면 왜 개발을 하는 것인지 이해할 수 없습니다. 프로그래밍이라는 과정에서 아무런 보람도 느끼지 못하는데 프로그래머로써 행복할 수 있을까요?

"PHP는 바보같은 솔루션으로 가득하다"

제가 만들어낸 말이 아닙니다. Rasmus 본인의 말입니다. 이 발언 자체는 3페이지에 있고, 그 뒤로 제가 인용할 발언들은 4페이지에 있습니다.

PHP는 수직적으로 일관성이 있다는 말을 합니다. 자신이 모든 것을 다 잘 알 순 없으니까 Oracle이면 Oracle, MySQL이면 MySQL 개발자가 직접 만들어서 넣음으로써 문제가 없다는 식의 해명이죠. PHP 안티들이 수평적 일관성이 없다는 것 가지고 뭐라 하지만 수직적으로 확실하게 일관적이라고 주장하죠.

Rasmus는 strchr를 예로 들었습니다. PHP의 strchr는 C의 strchr과 인자 순서조차 동일한데, 그 이유는 사용한 C API랑 인자 순서를 맞췄기 때문이라고 합니다. 그러면서 PHP의 함수는 그저 사용된 기술의 숏컷에 지나지 않는다고 말하더군요.

이 이야기 전에 Rasmus는 PHP는 C보다는 좀 나은, 좀 덜 괴로운 비행기라고 표현했습니다. 그런데 이건 누굴 기준으로 덜 괴로운 비행기인 것일까요? 수평적 일관성을 요구하는 이유는 PHP를 처음 배운 사람들로 하여금 보다 편하게 쓸 수 있게 해달라는 것인데, Rasmus 말대로면 PHP 개발자들은 결국 기술의 실제 C API의 인자 순서까지 이해해야하는 것이죠.

개발에서 쓰이는 개념 중에 interface라는 것이 있죠. 딱히 객체지향적이지 않더라도 하나의 가스레인지에서 바로 옆의 화구의 불 세기를 조절 하는데에 다른 모양의 스위치나 버튼 따위가 있는 것은 사람 입장에서 interface가 친절하지 못한 것입니다. 하지만 Rasmus 본인은 그래도 원래 내부적으로 그리 생겼었으니 그렇게 만드는 것이 실용적이라고 생각하는 것 같습니다. Rasmus에게 동의한다는 분들도 마찬가지일 것이라고 생각하구요.

결론

이 글을 쓰면서 참 많은 생각을 했습니다. 제 관점에서 볼 때 Rasmus의 개발에 대한 사고 방식은 이해할 수 없었습니다. 제목에 적은 것처럼 Rasmus의 생각에 동의할 수 없었습니다. 제 관점에서 보면 Rasmus의 발언들은 지금도 여전이 이상하고 그로 인한 파장이 노이즈라고 생각합니다. 하지만 저처럼 생각하지 않는 분들에게 제 생각을 강요할 생각은 없습니다.

그리고 Rasmus의 생각에 동의하는 개발자분들과 이런 주제에 대해 대화를 하면 상당히 껄끄러울 것 같습니다. 저는 Rasmus를 포함한 "프로그래밍을 싫어하는 개발자"분들과 명백하게 개발에 대한 가치관이 다르다라는 생각을 하게 되었습니다. 좀 더 깊게 들어가면 직업과 일에 대한 가치관도 다를 것이라고 생각합니다.

저는 개발은 즐거울 수 있는 작업이고, 보다 즐겁게 할 수 있는 방법이 존재한다고 생각합니다. 정말 하기 싫은 개발이라면 안 하느니만 못할 수 있다고 생각하는 것이죠. 하지만 개발 자체가 하기 싫다고는 생각하지 않으므로 이 관점 차는 좁혀지지 않을 것 같네요.