제가 exper 에서도 몇번 언급한 적이 있는것 같은데요, 도메인 드리븐 디자인 (Domain-Driven Design) 에서
Eric Evans 가 설명하는 Ubiquitous Language 라는 부분입니다.
서로 다른 도메인의 사람들과 의사 소통을 하기 위해서는 우선 하나의 언어로서 얘기를 하는 것이 바람직하다라는 것이 그 내용입니
다. 그리고 주 도메인의 사람들이 사용하는 용어를 변경없이 사용해야 한다는 것이고요.
저도 윤경록님과 비슷한 경험을 하고 있고 또 해봤습니다만 이 부분이 아마 가장 근본이 되면서도 중요한 부분이라고 생각합니다.
컨설팅을 하거나 같은 조직에서 다른 부서, 특히 엔지니어링 부서가 아닌 마케팅이나 비지니스 부서 사람들과 대화를 할 때는 단어
의 사용에도 주의가 필요하다고 생각합니다.
서로 같은 단어를 얘기하면서 다른 걸 생각하고 있는 적도 있었거든요. 그래서 저는 프로젝트를 시작하는 시점에서는 이 단어는 이
걸 뜻하는 것이다라는 정의를 하려고 노력합니다.
그렇다고 거창하게 용어 정의 문서를 작성하는 것은 아니구요.
회의때나 전화 통화로 대화를 할 때, "너 방금 한 말이 ~를 말하는 거지?" 라고 확인을 하는 수준이죠. 그리고는 다음번에 그
것을 언급할 필요가 있으면 그 단어를 사용합니다.
제 예를 들어 드리자면, PDF 파일이 두가지 종류가 있었습니다. 하나는 그냥 읽기만 할 수 있는 것이고 하나는 채워넣을 수 있
는 PDF 폼이었죠. 읽기만 하는 PDF 를 놓고 어떤 사람은 Flat PDF, 어떤 사람은 Static PDF, 또 어떤 사
람은 Read-only PDF 이런식으로 불렀습니다. 채워넣을 수 있는 것은 fillable pdf, pre-populated
pdf, submitable pdf... 새로 투입된 개발자가 하루는 물어 보더군요. flat pdf 하고 static pdf
하고 어떻게 다른거냐구요...
그리고 한가지 덧 붙여서, 비슷한 엔지니어링 부서 사람들과 일 할 때는 윤경록님의 예와 같은 경우 그것을 진행하는 주체가 되는
쪽의 용어를 사용하는 것이 바람직하다고 생각합니다. 비지니스 쪽 사람들과는 달리 같은 프로젝트를 진행하는 엔지니어들 사이에서는
확실한 용어 정의가 필요하다고 생각하구요.
> MSN : steveyoon77@지메일.com <steveyoon77@%EC%A7%80%EB%A9%94%EC%9D%BC.com>
> Nateon : steveyoon77@네이트.com <steveyoon77@%EB%84%A4%EC%9D%B4%ED%8A%B8.com>
안녕하세요? 윤경록입니다.
몇 일 전에 회사에서 있었던 일 입니다.
저희 팀은 하나의 솔루션을 제공하기 위해 다양한 경력의 팀원들이 협업을 합니다.
방송 클라이언트 솔루션을 만드는데, 하드웨어 아트워크 엔지니어, 하드웨어 전파 분석 (안테나 정합) 엔지니어, 전송 표준 구현 엔지니어, 디바이스 드라이버 개발 엔지니어, PC 응용 프로그램(emulator) 개발 엔지니어가 한 팀 입니다. 저는 그 중 PC 응용 프로그램 개발을 하고 있습니다.
전송 표준 구현 엔지니어와 제가 대화를 자주 나누면서 일을 진행해야 하는데 (전직한지 다섯달 째임에도) 너무 부담이 느껴졌습니다.
저도 이전 직장에서 전송 표준 구현을 해봤었기에, 표준의 이해도가 서로 달라서 부담을 느끼는게 아니라 그저 대화하는 방법에 어려움을 느꼈던 것 입니다.
'불안하다'라고 생각하고만 있고 해결을 딱히 못하고 있던 차에 문제가 드디어 터졌습니다.
필드 테스트를 위해 중간 릴리즈를 하고 팀장님과 몇몇 분들이 유럽으로 출장을 나갔는데, PC 응용 프로그램과 방송 모듈 칩과의 통신이 일부 기능에서 이상하게 동작하는 것이었습니다.
알고보니 칩 모듈에서 프로토콜이 일부 바뀌었던 것이었습니다. 문제점을 수정하고 재배포를 하며 '마지막까지 확인하지 못해서 죄송합니다'라고 했지만, 불편한 마음이 들었습니다.
이해를 돕기 위해 도메인을 간단한 그림으로 표현하면 아래와 같습니다.
[PC emulator] --> UART serial(IPC communication) <-- [ARM9 based chip module(with broadcast functionality)]
불편한 마음의 정체를 생각해보다가, 문득 저는 두 도메인 사이의 통신이 '프로토콜'로 이루어진다고 했는데 전송 표준 구현 엔지니어는 거창하게 '프로토콜'이 아니라 그냥 IPC 통신일 뿐이라고 했던 기억이 떠오르네요.
저는 프로토콜은 규약, 즉 약속이니까 어느 한 쪽이 상대쪽에 공지 없이 바꿀 수 없다고 계속 생각하고 있던 것이었습니다.
그러니까, 대화를 시작하는 주체는 변경을 가하는 쪽이어야 한다고 생각했던 것 같습니다. 그래서 가만히만 있던 것 같았구요.
그래서 이런 불편함을 없애줄 무언가 실천해볼 수 있는 게 있다면 좋겠다는 생각이 들어 질문을 올려봅니다.
실천법이 아니라 제게 부족하게 보이는 부분을 알려주시거나 제가 생각해보지 못했던 화두를 주셔도 고맙겠습니다.
그럼 이만 줄이겠습니다.
윤경록 드림
--
-----------------------------------------------------------------
Name : 윤경록
Mobile : +팔이-일공-삼공공팔-칠사칠구
MSN : steveyoon77@지메일.com
Nateon : steveyoon77@네이트.com
Blog : http://steveyoon77.tistory.com
twitter : @steveyoon77
- 日新又日新
--
Google 그룹스 'Agile Beginners' Q&A' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ab...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 abqna+un...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/abqna?hl=ko에서 그룹을 방문하세요.
전송 표준 구현 엔지니어는 프로토콜을 변경시키고 그 행동이 다른 사람에게 어떤 영향을 줄지(그리고 그 이후 어떤 일이 일어날지) 예측을 못했던 것인가요?
그 분은 당시 프로토콜 변경 후 왜 다른 사람들에게 그 사실을 알리지 않아도 된다고 생각을 하셨을까요?
이런 것들을 그 분과 직접 이야기 해보셨나요?
그 분은 당시 왜 그런 결정을 했는지 아시나요?
그 분의 사고(reasoning)가 어떠했는지 설명을 들어보셨나요?
문제는 한 개발자의 변경사항이 다른 개발자의 일에 영향을 미친다는 것인데, 이를 의사소통의 "문제"라고 보기에는 너무 확대해석
일 수도 있겠다는 생각이 듭니다. 이런일 한두번 겪어보지 않은 개발자가 있겠습니까.
어떤 부분이 바뀌어 다른 개발자에 영향이 미친다면 (첫번째 영향이 일어나기 전에는 모르는 경우가 많죠) 아주 간단하게는 그 부분
의 변경사항에 대해서는 알림 메일을 보내기로 약속을 하는 방법도 있을것 같고요. 약속이 잘 지켜지지 않는 다거나 이런 약속을 하
기에 껄끄러운 상황이 있을 때는 자동화된 시스템을 사용하는 것도 바람직하지 않을까요. 소스 컨트롤 시스템이 지원을 한다면 그 부
분의 소스가 변경되면 알림메일을 보내게끔 설정을 하는 방법도 있구요. (저는 이 방법을 사용하고 있습니다.)
자신의 변경사항이 다른 개발자에게 영향이 없을 거라 생각하고 변경을 한 분에게 왜 그렇게 생각을 했냐고 물어보는 건 자칫 잘못하
면 책임소재를 묻는 것 같은 느낌도 줄 수 있을것 같네요. 이런 종류의 사고는 프로젝트를 관리하거나 리드하는 분의 중재로서 충분
히 미연에 방지될 수도 있다고 보여집니다.
실천법같은 건 잘 모르지만 그냥 웃으면서 다음에 그 부분이 또 바뀌면 얘기해달라고 하면 되지 않을까요... :=)
On Sep 5, 4:30 am, 김정훈 <wond...@gmail.com> wrote:
> 소심한 사람을 위한 커뮤니케이션 실천법으로 NVC(비폭력 대화)를 추천합니다.
>
> 내 느낌 혹은 의견을 상대에게 전달하고 싶은데 행여나 오해하지는 않을까?
> 기분 나쁘게 받아들이진 않을까? 관계가 오히려 악화되진 않을까? 그런 걱정을 하신다면
> 상당히 도움이 되실 것으로 생각됩니다. 저의 경우 많은 도움이 되었습니다.
>
> 다만 비폭력 대화를 실천하다보면 본인의 생각이 처음과 다르게 바뀌게 되는 경우가
> 많더군요. 즉 상대가 변화하지 않아도 자신이 스스로 변화하면서 문제라고 생각했던
> 부분이 문제가 아니게 되거나 다른 해결책을 생각해내기도 합니다.
>
> 10. 9. 5., Steve Yoon <steveyoo...@gmail.com>님이 작성:
>
>
>
>
>
> > 안녕하세요? 윤경록입니다. 아래에 김창준님께서 물으신 내용에 답변을 달아봅니다.
>
> > 전송 표준 구현 엔지니어는 프로토콜을 변경시키고 그 행동이 다른 사람에게 어떤 영향을 줄지(그리고 그 이후 어떤 일이 일어날지) 예측을
> >> 못했던 것인가요?
>
> > 문제점을 들었던 시점에 원인을 알아낸게 아니라, 함께 디버깅을 하다가 알게 된 것으로 보아 예측하지 못했던게 아닌가 해요. 요즘 그 분
> > 아이가 돌이 막 지나고 계속 아파했기(아이가 최근 유행하던 병들은 다 걸렸던 것 같습니다;) 때문에 정신이 없는 것 처럼 보였습니다.
> > 그리고 제가 작업하는 PC emulator의 중요도를 조금 낮게 보고 있는 것 같이 느끼기도 했습니다. 얼마 전 고객사에 중간 솔루션을
> > 배포할 때(칩 모듈이 포함된 evaluation board, 서비스 솔루션 바이너리, 칩 모듈 테스트를 위한 PC emulator) 부담
> > 갖지 말고 배포 바이너리(PC emulator)를 만들라며 안되면 나중에 재배포는 쉽다는 뉘앙스로 얘기했었기 때문에 그렇게 느꼈습니다.
>
> > 그 분은 당시 프로토콜 변경 후 왜 다른 사람들에게 그 사실을 알리지 않아도 된다고 생각을 하셨을까요?
>
> > 아마도 변경에 따른 영향에 대해 미처 생각치 못했기 때문에 알릴 생각도 못한 것 같습니다.
>
> > 이런 것들을 그 분과 직접 이야기 해보셨나요?
>
> > 어떤 식으로 이야기를 풀어가야 할지 고민되어서 아직 하지 못했습니다.
>
> > 그 분은 당시 왜 그런 결정을 했는지 아시나요?
>
> > 그 분의 업무에 대한 열정이 약해진 것으로 보여서 대화를 했던 적이 있었는데, 제가 알지 못하는 히스토리가 있어 보이기는 했습니다.
> > 하지만 술자리에서 물어본 것이라 깊게 파고들어 묻지는 못했습니다. 제가 일찍 취해버렸거든요;
>
> > 그 분의 사고(reasoning)가 어떠했는지 설명을 들어보셨나요?
>
> > 요즘 더 친해져보려고 노력 중입니다만, 아직 어떤 식으로 사고를 하시는지 파악하기에는 덜 친한 것 같습니다; 친해져야만 이런걸 물어볼
> > 수 있는걸 보니 제가 많이 소심한 모양입니다.
>
> > 소심한 사람도 커뮤니케이션을 잘 할 수 있는 실천법이 있다면 좋겠습니다.
>
> > 그럼 이만 줄이겠습니다.
>
> > 윤경록 드림
>
> > --
> > Google 그룹스 'Agile Beginners' Q&A' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> > 이 그룹에 게시하려면 ab...@googlegroups.com(으)로 이메일을 보내세요.
> > 그룹에서 탈퇴하려면 abqna+un...@googlegroups.com<abqna%2Bunsu...@googlegroups.com>로
> > 이메일을 보내주세요.
> > 더 많은 옵션을 보려면http://groups.google.com/group/abqna?hl=ko에서 그룹을 방문하세요.- Hide quoted text -
>
> - Show quoted text -
--
Google 그룹스 'Agile Beginners' Q&A' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ab...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 abqna+un...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/abqna?hl=ko에서 그룹을 방문하세요.
당시 그분이 상황파악(sensemaking)을 어떻게 했는지, 어떤 결정을 왜 내렸고(왜 다른 일련의 행동은 선택을 안했고), 어떤 예측을 했는지 등에 대한 이해가 중요하다고 생각이 듭니다. 이것이 문제/갈등 해결의 출발점입니다.
...
하지만 근본적인 원인을 이해하지 못하면 다른 쪽에서 이런 류의 문제가 다시 나오는 경우가 있습니다.