← 전체 글로 돌아가기

웹 개발

인터넷 검색으로 찾은 해결책 검증하기

StackOverflow나 GitHub이슈에서 찾은 해결 방법이 정말 자신의 문제에 맞는지 확인해야 합니다. 무분별하게 따라 하면 다른 문제가 생길 수 있습니다.

에러 메시지를 검색했고, StackOverflow에서 찾은 답을 따라 했다. 그런데 진짜 이게 맞는 해결책일까? 아니면 증상만 가린 건 아닐까?

내 상황과 비교하기

검색 결과가 정말 자신의 상황과 같은가?

  • 같은 에러 메시지인가?
  • 같은 버전의 라이브러리를 쓰는가?
  • 같은 OS나 환경인가?

예를 들어 2018년 Node.js 8 버전의 답을 2024년 Node.js 20에서 따라 하면 안 될 수 있다.

작은 것부터 시도하기

전체 코드를 갈아치우기 전에, 제안한 한 가지만 먼저 시도한다.

// 방법 1: 작은 변경
// 뭔가 이상하면 되돌리기 쉽다
setTimeout(() => { /* ... */ }, 100);

// 방법 2: 큰 변경
// 뭔가 이상한데 어디가 문제인지 모른다
refactor entire codebase

해결책이 증상을 치료하는가, 증상만 가리는가?

"이 에러는 없어졌다"와 "이 문제가 정말 해결됐다"는 다르다.

// 나쁜 예: 에러 무시
try {
  // 뭔가
} catch (err) {
  // 에러를 무시한다
  console.log('무시');
}

// 낫다: 실제 문제를 해결한다
try {
  // 뭔가
} catch (err) {
  // 왜 에러가 나는지 확인하고 고친다
  if (err.code === 'ENOTFOUND') {
    // DNS 문제를 해결한다
  }
}

답변의 시간대 확인

StackOverflow 답변이 최근인가?

  • 2024년 답변? 최신 정보
  • 2015년 답변? 구식일 가능성 높음
  • 댓글에서 "이건 안 되요" 같은 수정사항이 있나?

가장 추천 많은 답변이 항상 맞는 건 아니다. 최신 댓글도 함께 본다.

다른 해결책과 비교

같은 문제에 대한 다른 해결책은 뭔가?

  • 방법 A: 라이브러리 업그레이드
  • 방법 B: 설정 변경
  • 방법 C: 코드 수정

세 방법을 모두 읽고, 자신의 상황에 맞는 것을 고른다.

공식 문서 확인

Google 검색 결과보다 공식 문서가 최신이다.

# React 공식 문서
https://react.dev

# Next.js 공식 문서
https://nextjs.org/docs

# Node.js 공식 API
https://nodejs.org/docs

공식 문서가 있으면 먼저 거기서 찾는다.

실제 프로젝트에서 테스트

검색으로 찾은 해결책을 바로 프로덕션에 적용하지 말자.

  1. 로컬에서 먼저 시도
  2. 작은 테스트 브랜치에서 확인
  3. 문제가 정말 해결됐는가 확인
  4. 다른 부작용은 없는가 확인
  5. 그 다음 병합

문제 재현 후 적용

StackOverflow 방법을 따라 하기 전에, 자신의 환경에서 문제를 재현했는가?

// 먼저 에러를 재현한다
// "이 조건에서 확실히 에러가 난다" 확인

// 그 다음 해결책을 적용
// "적용 후 에러가 안 난다" 확인

문제를 재현할 수 없으면, 자신이 겪은 문제와 다른 문제를 해결한 거일 수 있다.

원인까지 이해하기

"왜 이렇게 해야 하는가?"를 이해해야 한다. 그래야 다음에 비슷한 문제가 나올 때 스스로 해결할 수 있다.

// 이 방법이 왜 작동하는가?
await somePromise.catch(() => {}); // 에러를 무시한다

// 그 원인:
// Promise 기반 라이브러리에서 에러를 처리하지 않으면 "unhandled rejection"이 된다
// 이를 무시하는 방법이다

최종 확인: 버전 호환성

라이브러리나 프레임워크 버전이 맞는가?

# 현재 설치된 버전
npm list react
npm list nextjs

# package.json과 비교
cat package.json | grep -E 'react|next'

버전이 크게 다르면 검색 결과가 적용되지 않을 수 있다.

마지막으로, 검색으로 찾은 답은 빠른 응급처치일 뿐이다. 실제로 문제를 이해하고 해결하려면 공식 문서와 본인의 코드를 자세히 봐야 한다.