설명하지는 않지만 "우발적 복잡성"은 "필수적"복잡성에 비해 문제의 고유하지 않은 복잡성으로 정의됩니다. "Taming"에 필요한 기술은 출발지에 따라 다릅니다. 다음은 대부분 불필요한 복잡성을 이미 얻은 시스템을 나타냅니다.
나는 다수의 대규모 다년간 프로젝트에서 경험 한 경험을 통해“우발적 인”구성 요소가“필수”측면을 능가했으며 그렇지 않은 프로젝트도있었습니다.
실제로, Feynman 알고리즘은 어느 정도 적용되지만,“진정하게 생각하라”는 것은 성문화 될 수없는 마법만을 의미한다는 의미는 아닙니다.
두 가지 접근 방식이 필요하다는 것을 알았습니다. 둘 다 가져 가십시오 – 대안이 아닙니다. 하나는 단편적인 문제를 해결하고 다른 하나는 주요 재 작업을 수행하는 것입니다. 확실히,“문제를 적어 라”. 코드 모듈, 상태 (냄새, 자동화 된 테스트 수준, 이해하는 직원 수), 전체 아키텍처 (문제가있는 경우에도 하나 있음) 등 시스템 감사 형식이 될 수 있습니다. ), 요구 사항 상태 등
"우발적 인"복잡성의 특성 때문에 해결해야 할 문제가 하나도 없습니다. 따라서 심사해야합니다. 시스템을 유지하고 개발을 진행할 수있는 능력면에서 어디가 아파요? 어쩌면 일부 코드는 실제로 냄새가 나지만 우선 순위가 높지 않으므로 기다릴 수 있습니다. 반면에 리팩토링에 소비 된 시간을 빠르게 반환하는 코드가있을 수 있습니다.
더 나은 아키텍처가 될 계획을 정의하고 새로운 작업이 해당 계획과 일치하는지 확인하십시오. 이는 점진적인 접근 방식입니다.
또한 문제의 비용을 설명하고이를 사용하여 리 팩터를 정당화하는 비즈니스 사례를 작성하십시오. 여기서 중요한 것은 잘 설계된 시스템이 훨씬 강력하고 테스트 가능하여 변경을 구현하는 데 훨씬 더 짧은 시간 (비용 및 일정)이있을 수 있다는 것입니다. 이는 실제 가치가 있습니다.
중대한 재 작업은 "실제로 생각하기"범주에서 이루어집니다. 제대로 이해해야합니다. 이곳은 "Feynman"(작은 것 중 일부는 괜찮을 것입니다)을 갖는 것이 크게 돈을 지불하는 곳입니다. 더 나은 아키텍처를 제공하지 않는 주요 재 작업은 재난이 될 수 있습니다. 전체 시스템 재 작성은 이것으로 유명합니다.
어떤 접근 방식이든 "우발적"과 "필수"를 구별하는 방법을 알고 있습니다. 즉, 시스템과 그 목적을 실제로 이해하는 훌륭한 건축가 (또는 건축가 팀)가 필요합니다.
모든 것을 말했듯이, 나에게 가장 중요한 것은 자동 테스트 입니다. 충분하면 시스템이 제어됩니다. 당신이하지 않으면. . .