두 달 전 기사가 오늘 뉴스인 척 떠 있었다

업종마다 최신 헤드라인을 하나씩 붙였는데, 석 달 지난 기사가 오늘 뉴스인 척 떠 있었다. "목록의 첫 번째가 가장 최신일 것"이라는 착각에서 시작된 문제.

  • 뉴스
  • 데이터 신뢰
  • 삽질

주도 업종 화면에 업종별 뉴스 헤드라인을 한 줄씩 붙였다. “반도체” 옆에 반도체 관련 기사 제목이 뜨는 식이다. 오늘 왜 이 업종이 강한지 짐작하는 데 도움이 될 것 같았다.

구글 뉴스가 제공하는 공개 목록을 썼다. 검색어를 넣으면 기사 목록을 받아올 수 있다.

며칠 쓰다 보니 이상했다. 운송장비 업종에 엔비디아 관련 기사가 붙어 있었다. 클릭해 보니 46일 전 기사였다.

첫 번째가 최신이 아니었다

내 프로그램은 받아온 목록에서 맨 위 기사 하나를 가져다 썼다. 목록이 당연히 최신순일 거라고 생각했기 때문이다. 블로그 구독 목록은 다 그러니까.

구글 뉴스는 아니었다. 관련도순이었다.

생각해 보면 당연하다. 구글에서 뭔가를 검색하면 결과가 시간순으로 나오지 않는다. 큰 언론사의 많이 읽힌 기사가 위로 올라온다. 그 기사가 두 달 전 것이어도.

확인해 보니 이랬다.

업종 붙어 있던 기사 나이
운송장비 46일 전
유통 97일 전
건설 85일 전

석 달 전 기사를 오늘의 업종 동향인 것처럼 보여주고 있었다. 이건 화면이 깨진 것보다 나쁘다. 틀린 정보를 사실인 것처럼 띄운 것이기 때문이다.

날짜를 직접 봤다

목록에는 기사마다 발행 날짜가 같이 들어 있다. 그걸 안 보고 순서만 믿은 게 잘못이었다. 방식을 바꿨다.

  1. 맨 위 하나만 받지 않고 여러 건을 받는다 스물다섯 건까지 후보로 가져온다
  2. 기사마다 발행 날짜를 확인한다 날짜를 읽을 수 없는 기사는 아예 후보에서 뺀다
  3. 사흘보다 오래된 기사는 버린다 업종 동향을 짐작하는 용도라 그보다 오래되면 의미가 없다
  4. 남은 것 중 가장 새 것 하나를 고른다 하나도 안 남으면 아무것도 표시하지 않는다
순서를 믿는 대신 날짜를 직접 확인한다.

2단계의 “날짜를 읽을 수 없으면 버린다” 가 생각보다 중요했다. 처음엔 “날짜를 모르면 일단 후보에 넣어두자”고 짰다. 그런데 날짜 형식이 특이한 기사가 하필 오래된 기사일 수도 있다. 신선한지 확인할 수 없는 것은 후보에서 빼는 게 맞다.

검색어를 두 개 시도하는 것도 이때 넣었다. “○○ 관련주”로만 찾으면 최근 사흘 안에 결과가 하나도 없는 업종이 생긴다. “○○ 주가”로 한 번 더 찾아본다.

그래도 없으면 뉴스를 아예 표시하지 않는다. 억지로 오래된 기사를 채우는 것보다 빈칸이 낫다.

화면에 나이를 적었다

고치고 나서 하나를 더 넣었다. 기사 제목 옆에 “· 3시간 전”을 표시했다.

이건 기능이라기보다 내가 다시 속지 않기 위한 장치였다. 나이가 화면에 찍혀 있으면 다음에 또 걸러내기가 새면 눈에 바로 띈다. 실제로 이 표시를 넣고 며칠 뒤 한 업종에 “· 60시간 전”이 뜬 걸 보고 검색어를 조정할 수 있었다.

걸러내는 장치를 만들었으면, 그 장치가 통과시킨 값도 화면에 보여주는 게 좋다. 안 보이면 언제 망가졌는지 알 수 없다.

덤 — 고쳤는데 화면이 안 바뀌었다

이걸 다 고치고 새로고침했는데 여전히 옛날 기사가 떠 있었다. 5분쯤 또 헤맸다.

브라우저가 예전 화면 파일을 붙잡고 있었다. 특히 아이폰에서 심했다. 홈 화면에 추가해서 앱처럼 쓰는 방식은 파일을 더 오래 들고 있는다.

그래서 화면 파일만큼은 매번 새로 받아오도록 설정을 바꿨다. 나 혼자 쓰는 대시보드라 그래도 부담이 없다. 방문자가 많은 사이트라면 이렇게 하면 안 되고 다른 방법을 써야 한다.

남은 교훈

  1. 목록의 순서를 믿지 마라. 어떤 순서로 줄지는 주는 쪽 마음이다. 순서를 가정하지 말고 값을 직접 보고 골라라.
  2. 신선한지 확인할 수 없는 데이터는 버려라. 날짜를 모르는 기사를 후보에 남겨두는 것은 위험을 남겨두는 것이다.
  3. 빈칸이 틀린 정보보다 낫다. 화면의 칸을 채우려고 낡은 데이터를 밀어 넣으면, 그건 버그가 아니라 거짓말이 된다.
  4. 걸러낸 결과를 화면에 드러내라. “3시간 전”이라는 다섯 글자가 나중에 여러 번 도움이 됐다.
  5. 고쳤는데 안 바뀌면 캐시부터 의심해라. 특히 모바일에서.

이 글은 개인 프로젝트의 개발 기록입니다. 투자 자문이나 종목 추천이 아니며, 글에 등장하는 종목명은 프로그램의 동작을 설명하기 위한 예시입니다. 투자 판단과 그 결과에 대한 책임은 투자자 본인에게 있습니다.