편(編)/책

Clean Architecture - 2장. 두 가지 가치에 대한 이야기

쪼랩전사 2021. 11. 3. 20:31
728x90

모든 소프트웨어는 이해관계자에게 서로 다른 두 가지 가치를 제공한다.

행위(Behavior)와 구조(Structure)이다.

행위

누군가가 프로그래머를 고용하는 이유는 아래와 같다.

  • 수익 창출
  • 비용 절약

이해관계자는 기능 명세서와 요구 사항 명세서를 고용된 프로그래머에게 제공한다.

프로그래머는 이러한 요구 사항들을 만족하도록 코드를 작성하며, 요구 사항을 위반할 때 디버깅을 진행한다.

구조

소프트웨어(software)는 부드러운(soft)과 제품(ware)의 합성어이다. 여기서 부드럽다는 변경하기 쉽다는 것을 뜻한다. 즉, 소프트웨어는 변경하기 쉬운 제품을 의미한다.

프로그래머는 변경하기 쉬운 제품을 만들기 위해 소프트웨어의 구조를 잘 만들고, 이 구조를 향상하거나 유지해야 한다.

더 높은 가치(행위 vs 구조)

프로그래머는 두 가지 가치 모두를 최상으로 유지해야 한다. 하지만, 시간이 없거나 시간이 없거나 시간이 없어서 둘 중 하나를 포기하는 경우가 많다. (정말 그냥 시간이 없다. 중요해서 여러 번 썼다.)

그리고 프로그래머 대부분은 구조를 포기하게 된다. 그러면서 소프트웨어는 변경하기 불가능할 정도로 점점 딱딱해지기 시작한다. 결국에는 소프트웨어 변경이 불가능해서 행위 가치마저도 포기하게 된다.

다시 말하지만, 소프트웨어는 변경하기 쉬운 제품이다. 그러므로 구조가 더 중요하다.

마치며...

원래 이 장의 마지막에는 "구조를 지키기 위해 투쟁하라."라고 적혀있다. 그것도 꽤 길게...

맞다. 그래야 한다. 하지만 어떻게 투쟁해야 하는지를 모르겠다. 두 가지 가치 중 하나를 선택하는 것은 분명 프로그래머이다. 즉, 내부에 적이 있다. 제거해야 하나...