Hacker News에서 배운 것들
2009년 2월
지난주 Hacker News가 2주년을 맞았습니다. 처음에는 Arc를 연마하고 현재 및 미래의 Y Combinator 창업자들이 소식을 교환하는 사이드 프로젝트로 시작했습니다. 예상보다 더 커지고 더 많은 시간을 차지했지만, 그 과정에서 많은 것을 배웠기 때문에 그것을 후회하지 않습니다.
성장
2007년 2월에 서비스를 시작했을 때, 주중 트래픽은 일일 순방문자 약 1600명이었습니다. 이후 약 22,000명으로 성장했습니다. 이 성장률은 제가 원하는 것보다 약간 높습니다. 사이트가 적어도 천천히라도 성장하지 않으면 아마 죽은 것이나 다름없으므로, 사이트가 성장하기를 바랍니다. 하지만 Digg나 Reddit만큼 커지기를 원하지는 않습니다. 주로 사이트의 특성을 희석시킬 수 있기 때문이며, 또한 스케일링 문제에만 모든 시간을 쓰고 싶지 않기 때문입니다.
저는 이미 그 문제로 충분히 골머리를 앓고 있습니다. 기억하시겠지만, HN의 원래 동기는 새로운 프로그래밍 언어를 테스트하는 것이었고, 게다가 성능이 아닌 언어 디자인 실험에 중점을 둔 언어였습니다. 사이트가 느려질 때마다 저는 McIlroy와 Bentley의 유명한 인용구를 떠올리며 마음을 다잡습니다.
성능의 핵심은 우아함이지, 특별한 경우들의 집합이 아니다.
그리고 가장 적은 코드로 제거할 수 있는 병목 현상을 찾습니다. 지금까지는 14배 성장을 했음에도 불구하고 성능이 꾸준히 평범한 수준을 유지했다는 점에서 잘 버텨왔습니다. 다음에는 무엇을 할지 모르겠지만, 아마 뭔가 생각해낼 것입니다.
이것이 제가 사이트에 대해 일반적으로 가지고 있는 태도입니다. Hacker News는 매우 젊은 분야의 실험입니다. 이런 유형의 사이트는 생긴 지 겨우 몇 년밖에 되지 않았습니다. 인터넷 대화 자체는 겨우 수십 년밖에 되지 않았습니다. 따라서 우리는 결국 발견하게 될 것의 극히 일부만을 발견했을 뿐입니다.
그래서 저는 HN에 대해 매우 낙관적입니다. 기술이 이렇게 젊을 때는 기존 해결책들이 대개 형편없습니다. 이는 훨씬 더 잘할 수 있다는 뜻이며, 해결 불가능해 보이는 많은 문제들이 그렇지 않다는 뜻입니다. 여기에는 이전의 많은 커뮤니티를 괴롭혔던 문제, 즉 성장에 의해 망가지는 문제도 포함되기를 바랍니다.
희석
사이트가 생긴 지 몇 달 만에 사용자들은 그 문제에 대해 걱정했습니다. 지금까지 이러한 경고들은 거짓이었지만, 항상 그렇지는 않을 수도 있습니다. 희석은 어려운 문제입니다. 하지만 아마도 해결 가능할 것입니다. 개방형 대화가 성장에 의해 "항상" 파괴되었다는 것이 "항상"이 20번의 사례에 불과할 때는 큰 의미가 없습니다.
하지만 우리가 새로운 문제를 해결하려고 노력하고 있다는 것을 기억하는 것이 중요합니다. 왜냐하면 이는 우리가 새로운 시도를 해야 할 것이고, 그중 대부분은 아마 성공하지 못할 것이기 때문입니다. 몇 주 전 저는 평균 댓글 점수가 가장 높은 사용자들의 이름을 주황색으로 표시하는 것을 시도했습니다. [1] 그것은 실수였습니다. 갑자기 거의 통합되어 있던 문화가 가진 자와 가지지 못한 자로 나뉘었습니다. 문화가 얼마나 통합되어 있었는지 그것이 나뉘는 것을 보기 전까지는 깨닫지 못했습니다. 지켜보기가 고통스러웠습니다. [2]
그래서 주황색 사용자 이름은 다시 돌아오지 않을 것입니다. (죄송합니다.) 하지만 미래에는 마찬가지로 엉망으로 보이는 아이디어들이 있을 것이고, 성공하는 아이디어들도 실패하는 아이디어들만큼이나 엉망으로 보일 것입니다.
아마도 희석에 대해 제가 배운 가장 중요한 것은 사용자 수보다는 행동에서 더 많이 측정된다는 것입니다. 나쁜 사람보다는 나쁜 행동을 막고 싶다는 것입니다. 사용자 행동은 놀랍도록 유연하다는 것이 밝혀졌습니다. 사람들이 잘 행동할 것으로 기대되면, 그렇게 행동하는 경향이 있습니다. 그 반대도 마찬가지입니다.
물론 나쁜 행동을 금지하는 것은 나쁜 사람들을 멀리하게 하는 경향이 있습니다. 왜냐하면 그들은 잘 행동해야 하는 곳에서 불편하게 제약받는다고 느끼기 때문입니다. 하지만 그들을 막는 이 방법은 노골적인 장벽보다 더 온화하고 아마도 더 효과적일 것입니다.
이제 깨진 유리창 이론이 커뮤니티 사이트에도 적용된다는 것이 꽤 분명해졌습니다. 이 이론은 사소한 나쁜 행동이 더 나쁜 행동을 부추긴다는 것입니다. 즉, 낙서와 깨진 유리창이 많은 동네는 강도 사건이 발생하는 곳이 된다는 것입니다. Giuliani가 깨진 유리창 이론을 유명하게 만든 개혁을 도입했을 때 저는 뉴욕에 살고 있었고, 그 변화는 기적적이었습니다. 그리고 Reddit에서 정반대의 일이 일어났을 때 저는 Reddit 사용자였고, 그 변화는 마찬가지로 극적이었습니다.
저는 Steve와 Alexis를 비판하는 것이 아닙니다. Reddit에 일어난 일은 방치 때문에 일어난 것이 아닙니다. 처음부터 그들은 스팸 외에는 아무것도 검열하지 않는 정책을 가지고 있었습니다. 게다가 Reddit은 Hacker News와 다른 목표를 가지고 있었습니다. Reddit은 사이드 프로젝트가 아니라 스타트업이었고, 그 목표는 가능한 한 빨리 성장하는 것이었습니다. 빠른 성장과 무검열이 결합되면 그 결과는 무법천지가 됩니다. 하지만 그들이 다시 한다고 해도 크게 다르게 하지는 않을 것이라고 생각합니다. 트래픽으로 측정하면 Reddit은 Hacker News보다 훨씬 더 성공적입니다.
하지만 Reddit에 일어난 일이 HN에도 필연적으로 일어날 것이라는 보장은 없습니다. 여러 개의 지역 최댓값(local maxima)이 있습니다. 현실 세계에 무법천지인 곳과 더 사려 깊은 곳이 있듯이, 온라인에서도 그럴 수 있습니다. 그리고 현실 세계에서처럼 사람들은 자신이 있는 곳에 따라 다르게 행동할 것입니다.
저는 이것을 실제로 관찰했습니다. Reddit과 Hacker News에 교차 게시하는 사람들이 실제로 수고스럽게 두 가지 버전을 작성하는 것을 보았습니다. Reddit용으로는 격렬한 비난 글을, HN용으로는 더 차분한 버전을요.
게시물
Hacker News와 같은 사이트가 피해야 할 두 가지 주요 문제: 나쁜 게시물과 나쁜 댓글입니다. 지금까지 나쁜 게시물의 위험은 더 작아 보입니다. 지금 프론트페이지에 있는 게시물들은 HN이 시작했을 때 있었을 법한 것들과 거의 같습니다.
한때 저는 쓰레기 같은 게시물이 프론트페이지에 올라오지 않도록 투표에 가중치를 두어야 할 것이라고 생각했지만, 아직 그럴 필요는 없었습니다. 프론트페이지가 이렇게 잘 유지될 것이라고는 예측하지 못했고, 왜 그런지는 확실하지 않습니다. 아마도 더 사려 깊은 사용자들만이 링크를 제출하고 추천하는 데 충분히 신경을 쓰기 때문에, 무작위 신규 사용자 한 명의 한계 비용이 0에 가까워지기 때문일 수도 있습니다. 또는 프론트페이지 자체가 어떤 종류의 게시물이 기대되는지 알려줌으로써 스스로를 보호하는 것일 수도 있습니다.
프론트페이지에 가장 위험한 것은 너무 쉽게 추천될 수 있는 것들입니다. 누군가 새로운 정리를 증명한다면, 독자가 그것을 추천할지 말지 결정하는 데는 약간의 노력이 필요합니다. 재미있는 만화는 덜 필요합니다. 선동적인 제목을 가진 비난 글은 0의 노력이 필요합니다. 사람들은 읽어보지도 않고 추천하기 때문입니다.
따라서 제가 솜털 원칙(Fluff Principle)이라고 부르는 것이 있습니다. 사용자 투표 기반 뉴스 사이트에서는 특정 조치를 취하지 않으면 판단하기 가장 쉬운 링크들이 사이트를 장악할 것입니다.
Hacker News는 솜털 같은 콘텐츠에 대한 두 가지 보호 장치를 가지고 있습니다. 가장 흔한 유형의 솜털 링크는 주제에서 벗어난 것으로 금지됩니다. 고양이 사진, 정치적 비난 등은 명시적으로 금지됩니다. 이것은 대부분의 솜털 콘텐츠를 막지만, 전부는 아닙니다. 어떤 링크는 매우 짧다는 의미에서 솜털이면서도 주제에 맞습니다.
그것에 대한 단일 해결책은 없습니다. 만약 링크가 그저 내용 없는 비난 글이라면, 편집자들은 해킹에 관한 것이라는 의미에서 주제에 맞더라도 때때로 삭제합니다. 왜냐하면 그것은 지적 호기심을 자극하는 것이라는 진정한 기준에는 맞지 않기 때문입니다. 만약 사이트의 게시물들이 전형적으로 이런 유형이라면 저는 때때로 해당 사이트를 금지합니다. 이는 해당 URL의 새로운 게시물이 자동으로 삭제된다는 의미입니다. 만약 게시물이 낚시성 제목을 가지고 있다면, 편집자들은 때때로 그것을 더 사실적으로 다시 작성합니다. 이것은 제목이 선동적인 구호인 링크에 특히 필요합니다. 그렇지 않으면 그것들은 암묵적인 "이러이러한 것을 믿는다면 추천하세요" 게시물이 되기 때문입니다. 이것이 가장 극단적인 형태의 솜털 콘텐츠입니다.
링크를 다루는 기술은 링크 자체가 진화하기 때문에 함께 진화해야 합니다. 애그리게이터(aggregator)의 존재는 이미 그들이 수집하는 내용에 영향을 미쳤습니다. 이제 작가들은 애그리게이터, 때로는 특정 애그리게이터로부터 트래픽을 유도하기 위해 의도적으로 글을 씁니다. (아니요, 이 진술의 아이러니를 놓치지 않았습니다.) 그리고 링크재킹(linkjacking)과 같은 더 사악한 변종들도 있습니다. 다른 사람의 기사를 의역하여 원본 대신 제출하는 것입니다. 이것들은 많은 추천을 받을 수 있습니다. 왜냐하면 기사의 좋은 점 중 많은 부분이 살아남기 때문입니다. 사실, 의역이 표절에 가까울수록 더 많은 내용이 살아남습니다. [3]
게시물을 삭제하는 사이트는 사용자가 원할 경우 삭제된 게시물을 볼 수 있는 방법을 제공해야 한다고 생각합니다. 이것은 편집자들을 정직하게 유지하고, 마찬가지로 중요하게는 편집자들이 정직하지 않게 행동하더라도 사용자들이 알 수 있을 것이라는 확신을 줍니다. HN 사용자들은 프로필에서 showdead라는 스위치를 켜는 것으로 가능합니다. [4]
댓글
나쁜 댓글은 나쁜 게시물보다 더 어려운 문제인 것 같습니다. HN 프론트페이지의 링크 품질은 크게 변하지 않았지만, 중간 댓글의 품질은 다소 저하되었을 수 있습니다.
댓글의 두 가지 주요 나쁜 유형: 비열함과 어리석음입니다. 둘 사이에는 많은 중복이 있습니다. 비열한 댓글은 어리석을 가능성이 불균형적으로 높습니다. 하지만 그것들을 다루는 전략은 다릅니다. 비열함은 통제하기 더 쉽습니다. 비열하게 행동해서는 안 된다는 규칙을 만들고, 그것을 시행하면 비열함을 억제할 수 있을 것 같습니다.
어리석음을 억제하는 것은 더 어렵습니다. 아마도 어리석음은 그렇게 쉽게 구별되지 않기 때문일 것입니다. 비열한 사람들은 자신이 비열하다는 것을 아는 경향이 어리석은 사람들이 자신이 어리석다는 것을 아는 경향보다 더 높습니다.
가장 위험한 형태의 어리석은 댓글은 길지만 잘못된 주장이 아니라, 멍청한 농담입니다. 길지만 잘못된 주장은 사실 매우 드뭅니다. 댓글 품질과 길이 사이에 강한 상관관계가 있습니다. 커뮤니티 사이트의 댓글 품질을 비교하고 싶다면, 평균 길이가 좋은 예측 변수가 될 것입니다. 아마도 그 원인은 댓글 스레드에 특정한 것이 아니라 인간 본성일 것입니다. 아마도 어리석음은 잘못된 아이디어보다는 아이디어가 거의 없는 형태로 나타나는 경우가 더 많기 때문일 것입니다.
원인이 무엇이든, 어리석은 댓글은 짧은 경향이 있습니다. 그리고 전달하는 정보의 양으로 구별되는 짧은 댓글을 쓰기 어렵기 때문에, 사람들은 대신 재미있게 만들어서 구별하려고 합니다. 어리석은 댓글의 가장 유혹적인 형식은 소위 재치 있는 비난입니다. 아마도 비난은 가장 쉬운 형태의 유머이기 때문일 것입니다. [5] 따라서 비열함을 금지하는 것의 한 가지 장점은 이러한 것들도 줄여준다는 것입니다.
나쁜 댓글은 칡과 같습니다. 빠르게 퍼져나갑니다. 댓글은 새로운 댓글에 게시물이 새로운 게시물에 미치는 영향보다 훨씬 더 큰 영향을 미칩니다. 누군가 시시한 기사를 제출하더라도 다른 게시물들이 모두 시시해지지는 않습니다. 하지만 누군가 스레드에 멍청한 댓글을 달면, 그것이 그 주변의 분위기를 설정합니다. 사람들은 멍청한 농담에 멍청한 농담으로 답합니다.
아마도 해결책은 사람들이 댓글에 응답하기 전에 지연 시간을 추가하고, 그 지연 시간을 댓글 품질 예측에 반비례하게 만드는 것입니다. 그러면 멍청한 스레드는 더 느리게 성장할 것입니다. [6]
사람들
제가 설명한 대부분의 기술은 보수적이라는 것을 알 수 있습니다. 그것들은 사이트의 특성을 향상시키기보다는 보존하는 데 목표를 둡니다. 이것이 저의 편견이라고 생각하지 않습니다. 그것은 문제의 형태 때문입니다. Hacker News는 운 좋게도 좋게 시작했으므로, 이 경우에는 말 그대로 보존의 문제입니다. 하지만 이 원칙은 다른 기원을 가진 사이트에도 적용될 것이라고 생각합니다.
커뮤니티 사이트의 좋은 점은 기술보다는 사람에게서 나옵니다. 주로 나쁜 것을 방지하는 데 기술이 작용합니다. 기술은 분명히 토론을 향상시킬 수 있습니다. 예를 들어, 중첩 댓글이 그렇습니다. 하지만 저는 원시적인 기능과 똑똑하고 좋은 사용자를 가진 사이트를, 사용자가 바보이거나 트롤인 더 발전된 사이트보다 선호합니다.
따라서 커뮤니티 사이트가 할 수 있는 가장 중요한 일은 원하는 종류의 사람들을 유치하는 것입니다. 가능한 한 커지기를 목표로 하는 사이트는 모든 사람을 유치하고 싶어 합니다. 하지만 특정 사용자 집단을 목표로 하는 사이트는 바로 그들을 유치해야 하며, 마찬가지로 중요하게는 다른 모든 사람들을 배척해야 합니다. 저는 HN에서 이를 위해 의식적인 노력을 기울였습니다. 그래픽 디자인은 가능한 한 단순하며, 사이트 규칙은 극적인 링크 제목을 지양합니다. 목표는 HN에 처음 방문하는 사람의 흥미를 끌 유일한 것은 그곳에 표현된 아이디어여야 한다는 것입니다.
특정 사람들을 유치하도록 사이트를 조정하는 것의 단점은, 그 사람들에게는 너무 매력적일 수 있다는 것입니다. 저는 Hacker News가 얼마나 중독성이 강한지 너무나 잘 알고 있습니다. 저에게는 많은 사용자들과 마찬가지로, 일종의 가상 광장입니다. 일하다가 잠시 쉬고 싶을 때, 물리적인 세계에서 Harvard Square나 University Ave로 나가는 것처럼, 저는 그 광장으로 들어갑니다. [7] 하지만 온라인 광장은 물리적인 광장보다 더 위험합니다. 만약 제가 University Ave에서 하루의 절반을 빈둥거린다면, 저는 그것을 알아차릴 것입니다. 그곳에 가려면 1마일을 걸어야 하고, 카페에 앉아 있는 것은 일하는 것과는 다른 느낌입니다. 하지만 온라인 포럼을 방문하는 것은 클릭 한 번이면 되고, 표면적으로는 일하는 것과 매우 흡사하게 느껴집니다. 시간을 낭비하고 있을지 모르지만, 게으른 것은 아닙니다. 인터넷에 누군가 틀린 말을 하고 있고, 당신은 그 문제를 해결하고 있는 것입니다.
Hacker News는 분명히 유용합니다. 저는 HN에서 읽은 것들로부터 많은 것을 배웠습니다. 그곳의 댓글에서 시작된 여러 에세이를 작성했습니다. 그래서 저는 이 사이트가 사라지는 것을 원하지 않습니다. 하지만 그것이 생산성에 순손실을 주지 않는다는 것을 확실히 하고 싶습니다. 수천 명의 똑똑한 사람들을 끌어들여 그들이 많은 시간을 낭비하게 만드는 사이트가 된다면 얼마나 큰 재앙이겠습니까. 그것이 HN에 대한 설명이 아니라고 100% 확신할 수 있다면 좋겠습니다.
게임과 소셜 애플리케이션의 중독성은 여전히 대부분 해결되지 않은 문제라고 생각합니다. 지금 상황은 1980년대 크랙 코카인과 같았습니다. 우리는 끔찍하게 중독성 있는 새로운 것들을 발명했고, 아직 그것들로부터 우리 자신을 보호할 방법을 진화시키지 못했습니다. 우리는 결국 그렇게 할 것이고, 그것이 제가 다음에 집중하고 싶은 문제 중 하나입니다.
주석
[1] 저는 평균 및 중앙값 댓글 점수 모두로 사용자 순위를 매겨보았는데, 평균 (최고 점수를 제외한)이 고품질의 더 정확한 예측 변수처럼 보였습니다. 하지만 중앙값은 저품질의 더 정확한 예측 변수일 수 있습니다.
[2] 이 실험에서 제가 배운 또 다른 것은 사람들을 구별할 생각이라면, 제대로 해야 한다는 것입니다. 이것은 빠른 프로토타이핑이 통하지 않는 문제입니다.
사실, 이것이 다양한 유형의 사람들을 차별하지 않는 것에 대한 지적으로 정직한 주장입니다. 그렇게 하지 않는 이유는 모든 사람이 같아서가 아니라, 잘못하는 것은 나쁘고 제대로 하는 것은 어렵기 때문입니다.
[3] 지나치게 링크재킹된 게시물을 발견하면 저는 URL을 그들이 복사한 원본의 것으로 바꿉니다. 상습적으로 링크재킹하는 사이트는 금지됩니다.
[4] Digg는 투명성 부족으로 악명이 높습니다. 문제의 근원은 Digg를 운영하는 사람들이 특별히 교활해서가 아니라, 프론트페이지를 생성하는 데 잘못된 알고리즘을 사용하기 때문입니다. Reddit처럼 더 많은 투표를 받으면서 아래에서 위로 떠오르는 것이 아니라, 게시물은 위에서 시작하여 새로운 도착물에 의해 아래로 밀려납니다.
이러한 차이의 이유는 Digg는 Slashdot에서 파생되었고, Reddit은 Delicious/popular에서 파생되었기 때문입니다. Digg는 편집자 대신 투표가 있는 Slashdot이고, Reddit은 북마크 대신 투표가 있는 Delicious/popular입니다. (그래픽 디자인에서 그들의 기원의 흔적을 여전히 볼 수 있습니다.)
Digg의 알고리즘은 조작에 매우 취약합니다. 왜냐하면 프론트페이지에 올라온 모든 게시물은 새로운 최고 게시물이 되기 때문입니다. 이는 Digg가 극단적인 대응책을 내놓도록 강요합니다. 많은 스타트업들이 초기에 의지해야 했던 속임수에 대한 어떤 비밀을 가지고 있는데, 저는 Digg의 비밀은 최고 게시물들이 사실상 인간 편집자들에 의해 선택되었다는 정도일 것이라고 추측합니다.
[5] Beavis and Butthead의 대화는 주로 이런 것들로 구성되었고, 정말 나쁜 사이트의 댓글을 읽으면 그들의 목소리가 들리는 듯합니다.
[6] 어리석은 댓글을 억제하는 대부분의 기술은 아직 발견되지 않았다고 생각합니다. Xkcd는 IRC 채널에서 특히 영리한 방법을 구현했습니다. 같은 것을 두 번 허용하지 않는 것입니다. 누군가 "fail"이라고 말하면, 아무도 다시는 그 말을 할 수 없습니다. 이것은 짧은 댓글에 특히 불이익을 줄 것입니다. 왜냐하면 충돌을 피할 여지가 적기 때문입니다.
또 다른 유망한 아이디어는 바보 필터입니다. 이것은 확률적 스팸 필터와 같지만, 어리석은 댓글과 어리석지 않은 댓글의 코퍼스(말뭉치)로 훈련됩니다.
문제를 해결하기 위해 나쁜 댓글을 삭제할 필요는 없을 수도 있습니다. 긴 스레드의 맨 아래에 있는 댓글은 거의 보이지 않으므로, 댓글 정렬 알고리즘에 품질 예측을 포함시키는 것만으로도 충분할 수 있습니다.
[7] 대부분의 교외 지역이 그렇게 사기를 저하시키는 이유는 걸어갈 만한 중심지가 없기 때문입니다.
이 초고를 읽어준 Justin Kan, Jessica Livingston, Robert Morris, Alexis Ohanian, Emmet Shear, Fred Wilson에게 감사합니다.
이 에세이에 댓글 달기.