1 전체 프로그래밍 불변의 사실 - ChoDragon9/posts GitHub Wiki

뒤로가기

1. 전체: 프로그래밍 불변의 사실

1.1 프로그래밍에 은제 탄환은 없다 (No Silver Bullet in programming)

서구 전설에 늑대인간이라는 무서운 마물이 나온다. 늑대인간은 평범한 일상을 영위하던 이들을 갑자기 무시무시한 괴물로 둔갑시킨다. 늑대인간을 진정시킬 방법은 단 하나, 바로 은제 탄환을 쏘아 맞추는 것이다.

소프트웨어는 본질적으로 복잡성, 호환성, 변경 가능성, 비가시성(프로세스, 의사결정)이 4가지 성질 때문에 난해성을 갖고 있다. 이를 결과물로 하는 프로그래밍 작업 역시 난해해진다. 상황이 복잡하고 문제가 너무 다방면에 걸쳐 있기 때문에 모든 것을 해결하는 특효약은 존재할 수 없다.

1.2 코드는 설계서다

기본 설계부터 상세 설계, 프로그래밍, 테스트, 디버깅까지 모든 과정이 설계이다.

1.3 코드는 반드시 변경된다

소프트웨어는 본질적으로 복잡하며 완벽해질 수 없다. 배포된 후에 반드시 오류가 발생하고 문제를 해결해야 한다. 배포 후에 사용자로부터 요구사항이 늘어나 기능을 확장할 때도 있다. 사업 환경의 변화에 의해 요구사항이 변화해 간다. 즉, 변경에 강한 코드에 작성한다는 뜻이다. 그렇게 하려면 코드가 읽기 쉬워야 한다.