﻿1
00:00:00,000 --> 00:00:02,000
코드가 돌아가면 안심하고 싶어집니다.

2
00:00:02,000 --> 00:00:08,000
하지만 The Pragmatic Programmer 6장은 그 순간을 조심하라고 말합니다.

3
00:00:08,000 --> 00:00:12,000
코드가 돌아간다는 사실과 내가 그 이유를 이해한다는 사실은 다릅니다.

4
00:00:12,000 --> 00:00:16,000
이 차이가 사라질 때 우리는 우연에 의한 프로그래밍을 하게 됩니다.

5
00:00:16,000 --> 00:00:18,000
이 장의 핵심은 코딩 중의 태도입니다.

6
00:00:18,000 --> 00:00:22,000
Programming by Coincidence는 생각보다

7
00:00:22,000 --> 00:00:23,000
흔합니다.

8
00:00:23,000 --> 00:00:24,000
샘플 코드를 조금 고쳤더니

9
00:00:24,000 --> 00:00:26,000
돌아갑니다.

10
00:00:26,000 --> 00:00:28,000
AI가 만들어 준 코드를 붙였더니

11
00:00:28,000 --> 00:00:29,000
테스트 몇 개가 통과합니다.

12
00:00:29,000 --> 00:00:31,000
그런데 왜 맞는지 설명하지 못합니다.

13
00:00:31,000 --> 00:00:33,000
그러면 다음

14
00:00:33,000 --> 00:00:35,000
변경에서 그 우연은 빚이 됩니다.

15
00:00:35,000 --> 00:00:37,000
AI 시대에는 이 문제가 더 커집니다.

16
00:00:37,000 --> 00:00:39,000
LLM이 만든 코드는 그럴듯합니다.

17
00:00:39,000 --> 00:00:42,000
변수 이름도 자연스럽고 구조도 있어 보입니다.

18
00:00:42,000 --> 00:00:43,000
그래서 더 위험합니다.

19
00:00:43,000 --> 00:00:44,000
직접 쓴 코드보다

20
00:00:44,000 --> 00:00:46,000
더 쉽게 믿게 됩니다.

21
00:00:46,000 --> 00:00:48,000
하지만 실용주의 개발자는 질문해야 합니다.

22
00:00:48,000 --> 00:00:50,000
이 코드는 어떤 가정 위에 서 있는가.

23
00:00:50,000 --> 00:00:52,000
실패하면 어디서 드러나는가.

24
00:00:52,000 --> 00:00:54,000
테스트가 그 가정을 잡고 있는가.

25
00:00:54,000 --> 00:00:56,000
리팩터링도 이 장의 중요한 축입니다.

26
00:00:56,000 --> 00:00:59,000
리팩터링은 기능 개발을 멈추는 일이 아닙니다.

27
00:00:59,000 --> 00:01:02,000
오히려 기능 개발을 계속 가능하게 만드는 비용입니다.

28
00:01:02,000 --> 00:01:03,000
구조를 방치하면 다음

29
00:01:03,000 --> 00:01:05,000
기능은 점점 비싸집니다.

30
00:01:05,000 --> 00:01:09,000
결국 기능 개발 시간이 아니라 구조 부채를 갚는 시간으로 바뀝니다.

31
00:01:09,000 --> 00:01:12,000
테스트하기 쉬운 코드라는 말도 오래 남습니다.

32
00:01:12,000 --> 00:01:15,000
테스트가 어렵다는 것은 보통 설계가 흐릿하다는 신호입니다.

33
00:01:15,000 --> 00:01:20,000
의존성이 숨어 있고, 책임이 섞여 있고, 입력과 출력이 명확하지 않습니다.

34
00:01:20,000 --> 00:01:23,000
테스트는 품질 검사이면서 동시에 설계 피드백입니다.

35
00:01:23,000 --> 00:01:24,000
오늘의 적용은 간단합니다.

36
00:01:24,000 --> 00:01:27,000
AI가 만든 코드에는 왜 맞는지 검증 메모를 남깁니다.

37
00:01:27,000 --> 00:01:30,000
성능 문제는 느낌이 아니라 측정으로 봅니다.

38
00:01:30,000 --> 00:01:33,000
리팩터링 전에는 행동을 보존하는 테스트를 먼저 둡니다.

39
00:01:33,000 --> 00:01:37,000
코딩 중 가장 위험한 순간은 코드가 돌아가지만 내가 아직 이해하지 못했을 때입니다.
