이 코드가 얼마나 고수준인지에 주목하라. 이 코드는 이 작업에서 기대하는 내용을 설명할 뿐 각 부분의 저수준 구현 세부 사항은 들어 있지 않다. 예를 들어 MessageRepository가 전송할 메시지 목록을 반환한다는 사실은 알지만, 그 과정이 어떻게 이루어지는지는 알 수 없다. UserDirectory가 이메일로부터 사용자 ID를 가져온다는 사실은 알지만, 그 방법은 모른다. Bot 인터페이스도 마찬가지다. 이 인터페이스가 어떤 일을 하는지는 알지만, 어떻게 하는지는 알 수 없다.
이 코드 조각을 본 개발자는 누구나 이 작업이 무엇을 하는지는 쉽게 이해할 수 있다. 물론 개발자가 구현 세부 사항을 알지 못할 수도 있다. 하지만 세부 사항을 굳이 알아야 할까? 비즈니스 흐름의 모든 세부 사항을 알아야 할 필요는 거의 없다. 보통 유지보수 작업에서는 변경하려는 흐름의 작은 부분을 찾아 수정하면 된다. 소프트웨어 시스템의 모든 세부 사항을 이해해야만 시스템을 변경할 수 있다면 소프트웨어 개발이 얼마나 복잡해질지 상상해보라.