"우리가 모른다는 사실을 알고 있는 것들"
미국 국방부장관 도널드 럼즈팰드의 연설에서 유래한 것으로,
정보를 다룰 때 무엇을 알고 무엇을 모르는지 구분하는 유용한 사고틀이다.
이는 후에 철학, 심리학, 정책, 소프트웨어 개발 등 다양한 분야에 영향을 끼쳐,
리스크 분석, 전략적 판단, 기술 문서 작성, 기획 등에서 불확실성을 체계적으로 정리하는데 활용된다.
"There are known knowns. There are things we know that we know.
There are known unknowns. That is to say, there are things that we know we don’t know.
But there are also unknown unknowns—the ones we don’t know we don’t know."
상기 연설 원문의 3가지 방식을 번역해서 정리하면 아래와 같다.
Known knowns – 우리가 알고 있고, 그것을 알고 있는 것
Known unknowns – 우리가 모른다는 걸 알고 있는 것
Unknown unknowns – 우리가 모른다는 사실조차 모르는 것
각 항목에 대해 조금 더 자세히 다루면 아래와 같다. (챗GPT의 도움을 받았다.)
1) 정의
이미 잘 알고 있는 정보
검증되었고, 의심할 여지 없이 확실한 것
필요한 데이터를 가지고 있으며, 그 데이터를 잘 활용할 수 있는 상태
2) 예시
정렬 알고리즘은 입력 크기가 커질수록 시간이 오래 걸린다.
퀵정렬의 평균 시간복잡도는 O(n log n)이다.
3) 특징
불확실성이 없음
계획이나 판단의 기초 자료로 활용됨
→ "이 부분은 아직 연구가 부족하다", "이건 테스트해봐야 안다"
1) 정의
정보가 부족하거나 확인이 필요하다는 것을 인지하고 있음.
아직 해결되지 않았다는 사실을 인지하고 있음.
2) 예시
이 알고리즘은 소량의 데이터셋에선 잘 작동하지만, 대규모 분산 환경에서 어떻게 동작할지는 아직 실험해보지 않았다.
극단적인 데이터 분포(예: 거의 정렬되어 있거나 완전 역순)의 처리 효율은 아직 테스트되지 않았다.
3) 특징
리스크는 있지만 예측 가능.
추가 실험이나 검증을 통해 해결 가능.
→ "문제라는 것조차 모르는 숨은 리스크"
1) 정의
문제나 변수의 존재 자체를 인지하지 못하고 있는 상태.
지금 당장은 전혀 눈에 보이지 않지만, 나중에 치명적인 영향을 줄 수도 있음.
2) 예시
사용하는 라이브러리에 심각한 보안 취약점이 숨어 있었지만 아무도 모름.
특정 입력 조합이 알고리즘을 무한 루프로 빠뜨리는 문제가 있었으나 테스트 범위를 벗어나 발견되지 않음.
3) 특징
예측도, 통제도 불가능.
많은 사고나 실패는 여기서 발생함.
Google Technical Writing Course의 Pre-class 자료에 이 표현이 나오는데,
새로 발명한 알고리즘에 대한 심층 분석 파트에 "Known unknowns"가 등장한다.
[새 알고리즘에 대한 기술 문서 예시]
1. 알고리즘의 개요
- 퀵정렬과의 비교 및 대조 (BigO 비교 포함)
- 퀵정렬에 대한 위키피디아 링크 첨부
- 알고리즘에 가장 적합한 데이터셋
2. 알고리즘 실행하기
- pseudocode를 통한 알고리즘 구현
- 구현 팁 (흔한 실수에 대한 내용 포함)
3. 알고리즘 심층 분석
- Edge cases
- Known unknowns
즉 문서 마지막에 있는 "더 알아보기", "추가로 확인해야 하는 것들" 파트 정도에 해당한다고 보면 된다.
아래와 같은 내용들이 담길 수 있을 것 같다.
아직 성능을 평가해보지 않은 데이터 유형
특정 상황에서의 안정성이나 메모리 사용량
경쟁 알고리즘과의 비교 실험이 부족한 부분
미래에 문제를 일으킬 수 있는 잠재적 리스크
구글 TW 해당 파트에 대한 글 전문은 하기 링크에서 확인할 수 있다.