"데이터 wrangle 할 줄 아는 사람" 에서 "데이터 엔지니어" 로의 전환은 지금 돌아가는가 최적화에서 월요일 아침에 살아남는가 최적화로 옮겨간 날이야. 세 가지 속성이 둘을 가르지.
Rerunnable (다시 돌릴 수 있는)
아무나 — 6개월 후의 너, 내일의 동료, 새벽 3시의 on-call 엔지니어 — clean checkout 에서 임의의 historical input window 에 대해 파이프라인 돌리고 같은 결과 얻을 수 있어. 즉: hard-coded 경로 없음, "화요일에 upstream feed 후에만 돌아" 같은 묵시 없음, "step 4 는 항상 손으로 해" 없음. 설정은 명시적, 입력은 주소 가능, 진입점은 한 명령어.
Observable (관찰 가능한)
파이프라인이 성공하면 증명할 수 있어 (row count, freshness, 분포 metric, lineage). 실패하면 어느 단계, 어느 입력, 어떤 에러인지 행동할 만큼 빠르게 알아. 로그는 구조화돼 있고, metric 은 emit 되고, 대시보드는 첫 사고 전에 존재해 — 후에 말고.
Reviewable (리뷰 가능한)
모든 변경이 코드 리뷰를 거쳐. Diff 가 리뷰어한테 어떤 코드가 아니라 어떤 비즈니스 의미가 바뀌는지 말해. 테스트가 새 동작이 새 기대와 일치함을 증명. Migration 은 명시적. "4년 전 누가 대시보드 SQL 바꿨는데 왜인진 아무도 몰라" 의 무덤은 review 안 거친 변경으로 깔려 있어.
문화적 전환
이건 도구 선택이 아니야 — 자세야. 똑같은 Pandas 스크립트가 rerunnable + observable + reviewable 일 수도 있고, 누군가의 home directory 안 notebook 일 수도 있어. Disk 위 byte 는 비슷해 — 시스템과 fragile artifact 를 가르는 건 둘러싼 규율이야. 좋은 소식: 규율은 배울 수 있고, 이 quest 의 대부분이 그걸 가르치는 거야.