TEXT

Domain Knowledge VS Technical Knowledge

앱팀장 2008. 3. 18. 22:48
무엇인가?
Domain Knowledge
: 일반적으로는 사람또는 컴퓨터 활동의 영역에 미리 선별되는 유효하고 직관적인 지식들을 말한다.
software engineering에서는 시스템 운영의 환경에 대한 지식을 이야기 한다. - wikipedia
즉, 다시말해 software 개발시 개발내용에 대한 업무적인 배경지식이라 이야기 할 수 있다.
Technical Knowledge
: 전공지식을 이야기 하며 software engineering에서는 IT 자체의 지식을 의미한다고 할수 있다.

언제 습득하나?
Domain Knowledge
: 말그대로 엔지니어의 Domain이 정해지면서 부터 습득되기 시작하며 조직 내에서 리더 역할이 커질수록 올라갈것으로 예상된다
Technical Knowledge
: 사람마다 다르긴 하겠지만 그래프를 그린다면 critical point는  아마도 학교를 다니면서 혹은 직장을 다니기 시작하는 때가 아닐까 싶다

왜 생각해야 하나?
습득의 시기가 다르기 때문에 서로간의 balance를 조절할 필요가 있다. 따지고 보면 Technical Knowledge은 습득하여야 하는 것이고 Domain Knowledge는 습득되는 것이기때문에 이해배타적일 가능성을 내제하고 있는 것이다. 허나 분석을 위해서는 Domain Knowledge가 역할을 해야 하며 설계를 위해서는 Technical Knowledge가 역할을 해야 한다. 비중을 어느쪽으로 두느냐에 따라 회사의 색깔을 결정한다고 생각할 수 있겠다.

어떻게 할것인가?
software engineer중 양쪽 다 높은 수준의 밸런스를 가지고 있는 사람이 있을까?습득 시기로 따졌을때 프로그램에 대한 기초가 튼튼한 사람이 꾸준한 기술적인 자기계발을 한 상태로 하나의 업무영역에서 지속적으로 일한 경우에 해당한다 할 수 있겠다. 알다시피 우리나라 엔지니어들은 적당한 나이가 되면 코드작업에서 손을 떼게 되므로 비율로 따졌을때 극소수의 사람만이 달성한다고 생각된다. 하지만 balance를 맞추는 것은 가능하다. 정답은 바로 "신뢰성 협업"이다. 각각의 지식을 가진 사람이 약속된 방법으로 프로젝트를 진행함에 있어 서로의 밸런스를 조절하는 것이다. 그러기 위해서는 일단은 "존중의 미학"이 필요하지 않을까? 아마도 둘은 상생의 관계이며 양립해야할 가치 요소일 것이다.

사용자를 만족시키고 프로그래머들도 만족할 수 있는 프로그램은 존재할 수있는 가능성이 있을 거라 생각한다.