개발 영어 문법

회고의 가정: would have caught

일어나지 않은 과거를 가정하고, 사람 대신 시스템을 주어로

10장 · Unit 10 · 과거 가정 · 읽는 시간 약 10분

목차 · 진행 0%

    지난주 배포 뒤 주문 목록 API가 30분 동안 느려지는 장애가 있었다. 원인은 빈 필터 값을 처리하지 못한 쿼리였고, 그 경우를 다루는 테스트는 없었다. 포스트모템(장애를 돌아보는 회고 보고서)에 "그때 테스트가 있었다면 이 버그를 잡았을 것"이라고 쓰려 한다. 지난 일이니 과거형(past simple)을 섞으면 될 것 같은데, 어디에 무엇을 써야 할지 헷갈린다.

    이 장에서 쓰는 문법 용어
    용어뜻
    과거형(past simple)지난 일을 말하는 동사 꼴. 규칙 동사는 끝에 -ed를 붙이고, 불규칙 동사는 따로 외운다(take → took). 예: The rollback took five minutes.
    과거분사(past participle)동사의 셋째 꼴(write–wrote–written의 written). 규칙 동사는 과거형과 꼴이 같다(added). have나 be 뒤에 붙여 쓴다. 예: The alert was sent to the wrong channel.
    동사 원형(base form)-s, -ed, -ing를 붙이지 않은 동사의 기본 꼴(run, add, be). 예: Run the job again.
    조동사(modal verb)will, would, should, could, might처럼 동사 원형 앞에 붙어 추측·가능·의무 같은 뜻을 더하는 말. 예: This change could break the build.
    if 절(if clause)문장에서 if로 시작해 조건을 말하는 부분. 나머지 부분이 그 조건의 결과를 말한다. 예: If the build fails, the deploy stops.에서 If the build fails
    예측먼저 답해 보세요

    포스트모템에 쓸 문장으로 문법이 맞는 것은?
    "If we had had a test for the empty filter, it ___ this bug."

    규칙: 일어나지 않은 과거를 가정한다

    A. 지난 일을 반대로 가정하면 If + had + 과거분사, would have + 과거분사로 쓴다. 이른바 과거 가정(third conditional)으로, 지금과 다른 과거를 상상해 그랬다면 결과가 어땠을지 말한다(British Council: Conditionals: third and mixed). would have는 과거에 일어나지 않은 일을 말한다(British Council: will have and would have).

    • If we had had a test for the empty filter, it would have caught this bug.
    • If the alert had fired, we would have rolled back within minutes. (roll back: 이전 버전으로 되돌리다)
    • We wouldn't have lost any data if the backup job had run.

    had had의 앞 had는 '그보다 전에'라는 때를 만드는 have의 과거형, 뒤 had는 '가지다' have의 과거분사다. 어색해 보여도 맞다. would have는 결과 쪽에 쓰고 if 절에는 쓰지 않는다. If we would have had a test는 틀린다(Cambridge Dictionary: Conditionals: if). if 절 안에 will을 넣지 않는 Unit 9의 규칙과 같은 모양이다.

    B. should have·could have·might have + 과거분사로 지난 일을 평가하거나 추측한다. 조동사(modal verb) 뒤에 have + 과거분사를 붙이면 지난 일을 말한다(British Council: Modals with have).

    C. 지난 일이 지금에 미치는 결과는 would + 동사 원형(base form)으로 쓴다. 조건은 과거, 결과는 지금인 혼합 가정(mixed conditional)이다(British Council: Conditionals: third and mixed). 이 유닛의 중심은 A와 B이니 C는 모양만 알아 둔다.

    • If we had added an index last month, this query would be fast now.

    표현: 포스트모템의 항목과 사람 탓 없이 쓰기

    Google SRE 책의 예시 포스트모템은 배운 점(Lessons Learned)을 What went well, What went wrong, Where we got lucky로 나누고, 끝에 Action Items 표를 둔다. 항목들은 Update playbook …처럼 명령형(imperative)으로 시작한다(Google SRE: Example Postmortem). 앞의 세 항목은 지난 일이라 과거형이 중심이고, 이 유닛의 가정 문장은 주로 What went wrong과 Where we got lucky에 들어간다.

    표현언제예
    What went well잘 돌아간 점. 과거형The rollback took less than five minutes.
    What went wrong잘못된 점과 그 원인. 과거형, should haveThe alert didn't fire because the threshold was too high.
    Where we got lucky운 덕분에 피해가 작았던 점. 가정 문장이 잘 어울린다If it had happened at peak time, far more users would have been affected.
    Action items다음에 할 일. Unit 1의 명령형Add an alert for queue size

    같은 책의 Postmortem Culture 장은 포스트모템이 사고의 원인을 찾는 데 집중하되 개인이나 팀을 탓하지 않아야 하고, 관련된 모두가 선의로 행동했다고 전제해야 한다고 쓴다. 사람은 고칠 수 없지만 시스템과 절차는 고칠 수 있다는 것이다(Google SRE: Postmortem Culture). 영어 문장에서는 주어(subject)를 바꾸는 것이 가장 쉬운 방법이다.

    • 사람이 주어: The on-call engineer missed the alert. → 시스템이 주어: The alert was sent to a channel that nobody monitors.
    • 사람이 주어: You should have checked the migration. → 절차가 주어: The deploy pipeline should have blocked an unapplied migration.

    팀이 함께 돌아보는 자리 자체를 어떻게 꾸리는지는 회고 노트에 있다.

    한국어 다리'-었더라면', '-었어야 했다'를 영어로
    한국어로는'테스트가 있었으면(있었더라면) 잡았을 거예요', '알림을 추가했어야 했어요'처럼 '-었으면 … -었을', '-었어야'로 지난 일을 가정합니다.
    영어로는If we had had a test, it would have caught it., We should have added an alert.처럼 had + 과거분사와 조동사 + have + 과거분사를 씁니다.
    같은 점둘 다 실제로 일어나지 않은 과거를 말하고, 그 안에 아쉬움이 담깁니다.
    그대로 옮기면'있었으면'을 If we had a test로 옮기면 지난 일이 아니라 지금 사실과 반대되는 가정이 됩니다. '-었어야 했다'를 We had to add로 옮기면 '실제로 해야 했다(그리고 했다)'는 뜻이 되어, 하지 않아 아쉽다는 뜻이 사라집니다.

    함정 찾기: AI가 다듬어 준 포스트모템

    함정 찾기이 포스트모템 초안에서 고쳐야 할 줄은?
    내가 AI에게 한 요청
    지난주 장애 포스트모템의 What went wrong 부분을 영어로 다듬어 줘.
    • 사람 탓하는 느낌 없이

    의심스러운 줄을 모두 눌러 표시한 뒤 “검토 끝”을 누르세요. 함정은 3개입니다.

    연습

    확인 문제연습

    1. 백업 작업이 실제로는 돌지 않아 데이터를 잃었다.
    "If the backup job ___, we would not have lost the data."

    2. 디스크 사용량 알림을 추가했으면 좋았을 텐데 하지 않았다. 포스트모템에 쓸 말은?
    "We ___ an alert for disk usage."

    3. 사람 탓 없이(blameless) 쓴 문장은?

    4. 지난달 인덱스를 추가하지 않은 결과로 지금 쿼리가 느리다.
    "If we had added an index last month, this query ___ fast now."

    다음Unit 11. 동사와 명사: set up과 setup로컬 환경을 준비하라고 안내할 때 set up과 setup은 쓰는 자리가 다릅니다.

    『개발 영어 문법』 Unit 10. 회고의 가정: would have caught · younggeun0. Claude와 함께 썼습니다. 사실 주장은 공식 문서로, 데모 결과는 실제 브라우저로 확인했습니다.

    보기 옵션