Mission
이 문서는 우리가 이 방법론을 설계할 때 어떤 목표를 가지고 있는지,
그리고 실제로 적용할 때 어떤 한계가 있는지를 설명합니다.
이 방법론의 목표는 이념적 완벽함과 실용적인 단순성 사이의 균형을 맞추는 것입니다.
모든 사람과 모든 프로젝트에 100% 들어맞는 만능 해결책은 존재하지 않습니다.
그럼에도 불구하고, 이 방법론은 다양한 개발자들이 쉽게 접근할 수 있고, 실제 업무에서 충분히 쓸 만해야 합니다.
목표
다양한 개발자에게 직관적이고 명확하게
방법론은 프로젝트에 참여하는 대부분의 팀원들이 쉽게 이해하고 사용할 수 있도록 설계되어야 합니다.
새로운 도구나 개념이 추가되었을 때, 시니어나 리더급 개발자만 이해할 수 있다면 그 방법론은 충분하지 않습니다.
일상적인 문제 해결
방법론은 실제 개발 과정에서 자주 맞닥뜨리는 문제들에 대해
명확한 기준과 해결책을 제시해야 합니다.
이를 위해 CLI, 린터(linter) 같은 도구도 함께 제공하는 것이 중요합니다.
이런 도구들을 통해 개발자들은
- 아키텍처 설계나 구현 과정에서 반복적으로 발생하는 문제를 줄이고,
- 이미 검증된 접근 방식을 자연스럽게 사용할 수 있습니다.
@sergeysova: 방법론을 기반으로 코드를 작성하는 개발자는
이미 많은 문제에 대한 “해법 세트”를 가지고 시작한다고 상상해 보세요.
문제 발생 빈도가 10배 정도 줄어든다고 생각할 수 있습니다.
한계
우리는 특정 관점을 강요하지 않으려 하면서도,
동시에 개발자로서 기존 습관이 오히려 문제 해결을 방해할 수 있다는 점도 인지하고 있습니다.
개발자마다 시스템 설계 경험과 개발 경력이 다르기 때문에,
아래 내용을 이해하는 것이 중요합니다.
-
항상 통하지는 않음
단순하고 명확한 접근법이라고 해서
모든 상황, 모든 사람에게 항상 효과적이라고 볼 수는 없습니다.@sergeysova: 어떤 개념은 직접 문제를 겪고,
오랜 시간 고민하며 해결해 보는 과정을 거쳐야만
비로소 직관적으로 이해할 수 있습니다.- 수학: 그래프 이론
- 물리학: 양자 역학
- 프로그래밍: 애플리케이션 아키텍처
-
가능하고 바람직한 방향
이 방법론은 단순함과 확장 가능성을 지향하는 방향으로 설계되었습니다.