Make the component specific in purpose, yet flexible in use.
기능을 추가하다가 누더기게 되게 하지 말라. 요구사항이 증가하면 컴포넌트는 변모하게 되어 있다. 그래서 리팩토링이 필요하고, 클래스 수준에서 보면 역할을 적절하게 분배하여 효과적으로 협업(collaboration)하게 해야 한다.
여기서 다소 느닷 없는(?) 길로 들어서보자. 성인이면 여러 가지 역할을 부여 받기 마련이다. 가령, 직장인이라면 회사에서 하나 이상의 역할을 수행하게 되고, 부모님이 계시면 자식으로써의 역할, 결혼한 분들은 배우자로써의 역할, 아이가 있다면 부모의 역할이 있다. 이러한 역할이 만만치 않은 이유는 동시에 수행해야 한다는 점이다.
이러한 책임 사이에서 적절하게 조화를 이루지 못하는 사람이 소프트웨어 설계를 맡게 되면 잘 할 수 있을까? 둘은 완전히 다른 문제인가?
Separate the concerns of interface, interaction, and content.
model view controller 아키텍처 패턴이 떠오른다. 하지만, 도리어 interface, interaction, content가 더 어감이 좋다. 앞서 말한 초점을 분명히 하는 기법 중 하나로 볼 수 있다.
Document the interface and use the component before releasing it.
당연한 것이지만 개발자 입장에서 늘 간과하기 쉬운 요소이다. 쓰지 않으면 컴포넌트로써의 가치가 없게 된다.
오픈시드에 참여하면서 커뮤니티 활동과 지식 공유에 열심인 이들은 새로운 문서화(Documentation) 방법을 고민하고 있음을 알 수 있다.
문서 하면 종이나 텍스트 형태의 전자 문서를 떠올리게 된다. 그러나, 음성이나 영상 형태로 문서화를 하는 것이 더 효과적인 경우가 있는 것 같다. 요약이 어렵다는 것이 최대의 약점이지만, 전달의 효율성 입장에서는 텍스트 문서에 비할 바가 아니다.
동영상 제작에도 여러 가지 기법이 있다. 직접 촬영을 할 수도 있지만, 화면 캐스팅을 할 수도 있고, 온라인 회의와 병행한 화면 캐스팅도 가능하다.




























