사용자인터뷰를 진행했다.
이에 대해 회고하며 어떻게 하면 최초의 인터뷰를 잘 구성하고 진행할 수 있을지 정리해 봤다.



분석 단계 최초 인터뷰 구성
인터뷰를 구성하면서 고통스러웠다. 질문은 곧 질문자의 수준을 나타내기 때문이다. 얼마나 고민했는지 드러날 수 있다는 생각 때문에 고통스러웠다. 그러나 생각을 바꿨다. 질문을 던질 수 있는 건 우리 일의 장점이 아닐까 생각했다. 모르는 걸 물을 수 있게 자유이자 곧 의무이기도 하다. 하지만 그렇다고 그냥 궁금한 걸 물을 순 없다. 필요한 질문을 해야 한다는 것이다.

그럼 필요한 질문이란 무엇인가?
가장 먼저 해야 할 것은 개념에 대한 확인이다. 이 개념은 명확히 정의가 되어 있는지 만약 프로세스에 중요한 개념이라면 반드시 개념 확인이 필요하다.

개념 다음은? 우리 일의 목적에서 필요한 질문은 무엇인지 생각해 볼 수 있다. 우리는 결국 AS-IS의 프로세스를 개선시키는 것이다. 프로세스라는 건 시스템에서 진행되던 것뿐 아니라 수기로 진행되던 것을 포함한다. 그래서 AS-IS는 어떻게 진행됐는지에 대한 질문이 이뤄져야 한다. 프로세스는 무엇이 있고, 이 프로세스 전의 프로세스는 무엇이며, 또 이후 프로세스는 무엇이고, 이 프로세스와 저 프로세스는 뭘 기준으로 나눠지는지에 대해 확인하는 내용이어야 한다.

그럼 프로세스만 물어야 할까? 이렇게 생각해 보자. 프로세스에 영향을 미치는 건 프로세스뿐인가? 어떤 사전조건이 있고 뭘 기준으로 프로세스가 나눠지는지로도 나아가야 한다.

사실 이렇게 생각해도 내가 생각하는 가장 좋은 방법은 하나다. 일단 궁금한 걸 적어 보는 것. 궁금한 걸 리스트업 하고 주어진 자료 속에서 답을 또 찾아본다. 자료 속에 답이 있을 수도 있고, 이건 이래서 저럴 것이다라고 추정할 수도 있다. 이렇게 가설을 세워놓고 그 가설에 맞지 않는 내용이 자료 속에서 발견되면 그것도 질문 포인트가 될 수 있다.



인터뷰 시작
인터뷰를 진행 시작하기 전에 해야 할 일은 무엇일까?
상황을 생각해 보자. 현업은 자신의 업무를 하다 구축팀이 요청한 인터뷰에 응하기 위해 시간을 내어 회의실에 참석했다. 지금 현업의 머릿속은 어떨까? 인터뷰 때문에 회의실에 왔다만, 현업 머릿속에는 이전까진 진행하던 업무 내용뿐일 것이다. 결국 현업 머릿속을 업무 맥락이 아닌 인터뷰의 맥락으로 바꿔줄 필요가 있는 것이다. 그렇기 때문에 이 인터뷰의 목적과 내용에 대해 설명해 줄 필요가 있다.
"나는 누구이고 / 오늘 인터뷰는 무엇을 목적으로 요청했으며 / 따라서 오늘 인터뷰는 어떠한 내용을 주제로 / 무엇에 대해 질문할 것이다"에 대한 내용이다.
이러한 과정을 모두발언이라 할 수 있을 것 같다.

인터뷰 진행
현업의 머릿속도 인터뷰 맥락으로 가져왔겠다 그럼 질의서만 읽고 대답을 들으면 될까?
우선 생각해 보자. 질의서는 누가 가장 잘 아는가? 질문을 작성한 사람이 가장 잘 안다. 이 질문을 왜 하고, 나는 어떤  부분을 확인하기 위해 하는 질문인지, 즉 질문의 맥락과 목적은 질문을 구성한 내가 가장 잘 안다. 원하는 답을 얻어내려면 인터뷰어는 이 부분에 대한 설명도 첨언해야 한다.

답변 정리
이렇게 잘 질문했다면? 현업이 모든 질문을 원하는 형식이 딱딱 맞게 답해주면 좋으련만.. 얘기하다 보면 그렇지 않은 게 부지기수다. 따라서 질문마다 원하는 답을  얻었다면, 답변 내용을 요약하며 이와 같이 정리하겠다고 짚고 넘어가는 게 좋다.

인터뷰 종료
인터뷰는 단순 묻고 답하는 역할극이 아니다.
정해진 시간 동안 업무를 진행함에 있어 필요한 정보를 묻고 답하는 시간이다. 나의 시간만큼이나 인터뷰에 성실히 답해준 인터뷰이도 소중한 시간이었을 것이기에 인터뷰의 끝에는 항상 감사 인사와 함께 앞으로 이후 진행할 업무, 예를 들어 세부사항에 대해 어떻게 질의를 이어갈 것인지 또 질문 과정에서 얘기된 자료는 어떻게 전달받을 것인지 등을 정리하며 마치면 깔끔한 마무리가 될 것이다.



내재화
남은 문제.. 이것들을 어떻게 내 것으로 만드냐?
질문을 구성할 때는 생각하기 쉽다. 자가검열과 동료와 소통을 거치며 질문을 발전시킬 여유가 있는 편이다. 근데 인터뷰 진행 과정에서 이런 거 챙기면서 할 수가 없다. 정신이 없기 때문이다. 그렇게 때문에 인터뷰 전 질의서를 꼼꼼히 읽고 시뮬레이션을 해 볼 수밖에 없다. 내가 썼어도 결국 인터뷰하다 보면 내가 이걸 왜 썼지 싶은 순간들이 올 수 있기 때문에 맥락과 목적을 생각하면서 연습하는 것이 더 높은 수준의 질의서를 만들어가는 과정이기도 하다.



회고
오늘 인터뷰를 마치고 파트 시니어분과 기획 PL 그리고 개발 PL님께 좋은 말씀을 들었다. 열심히 한 것 같다고 잘해줘서 고맙다고.
사실 긴장을 엄청 많이 했다. 이전 인터뷰에 거의 삼사십 명이 들어오다 보니 숫자에서 오는 부담과 평가에서 오는 부담이 컸다. 연차가 좀 쌓여서 그런지 일 못한다는 소리는 정말 듣기 싫다..
질의서 만들 때부터 꽤나 고통스러웠는데, 파트 시니어분이 리뷰도 잘해주시고 질문 방향도 함께 잘 잡아주신 덕분에 좋은 질문이 많이 나왔다. 정독해보라는 조언도 그분의 조언이었다. 내 인터뷰 때도 이삼십 명 정도의 사람들이 들어왔지만 초반은 그래도 연습 덕분에 꽤나 순조롭게(?) 흘러갔다. 인터뷰가 진행되며 현업의 태도가 점차 호의적으로 바뀌어갔다. 근데 인터뷰 후반부로 갈수록 체력 이슈와 질의서를 통달하지 못했던 나의 기억력 감퇴(?)로 내가 이걸 왜 썼지 싶은 순간들이 몇 개 있었다. 그래도 망하진 않은 것 같아 다행이다 생각했다. 다만, 파트 시니어분과 기획 PL님이 안 계셨다면.. 이걸 기회로 다음 미팅에는 홀로 리딩할 수 있겠다 스스로 인정할 수 있도록..!

제목 그대로...

피그마-구글 스프레드 시트 연동이 안됐다.

  • 피그마 인스턴스 이름에서 맨 앞에 #을 빼면 구글스프레드 시트의 컬럼명과 동일한가?
  • 구글 스프레드 시트의 권한을 누구에게나 보여지도록 설정했는가?
  • 구글 스프레드 시트의 링크를 복사해서 피그마의 Google Sheets Sync 플러그인에 붙여넣었는가?

근데 붙여넣을 때마다 객체의 눈은 감기고 값도 다 지워져서 출력된다...


그래서 Fetch를 통해 확인해봤다.

값을 잘 불러오는가? 아니요...

???

문제의 원인을 찾아버렸다.

시트가 여러개 있어서 그랬던 것이었다.


구글 스프레드 시트는 시트마다 URL이 다르다.

정확히는 #gid 파라미터 값이 다르다

그러나 피그마에서는 #gid 파라미터 값은 인식하지 않는 것 같다.

그럼 무슨 현상이 발생하냐? 

#gid를 떼고 시트에 접근해보면 해답을 얻을 수 있다.

바로 첫 시트가 나오는 것이다.

그렇다. 구글 스프레드 시트가 여러 장 있을 때는 첫번째 시트의 값을 가져온다.


즉 피그마-구글 스프레드 시트 연동은 정확히 말해 "피그마-구글 스프레드 첫번째 시트 연동"인 것이다.

바로 화면상으로 가장왼쪽에 있는 시트 혹은 gid를 빼고 검색했을 때 나오는 시트라는 것!!


오늘도 하나 배웠다..

 

 

 

 

https://youtu.be/CRKwszz6l2M

서비스기획자에게 성과란 무엇일까 항상 고민했다.
결국 고객 가치를 창출하고 고객 만족을 달성하는 것.
인터뷰 중 HR담당자에게 결국 고객은 직원들이라는 내용에서 힌트를 얻었다.

누가 기획자의 산출물을 보고 활용하는가
이런 관점에서 결국 기획자의 고객은 개발자가 아닐까?

기획자의 분석과 설계가 개발되는 것이고
고객사는 개발된 결과물을 이용하는 것이다.
따라서 기획자의 고객은 개발자가 아닐까 생각했다.

면접왕 이형이 최고의 지점장이 누구인지를 알기 위해 알바생이 되어 설거지를 했듯,
나는 개발자를 이해하기 위해 개발을 공부하는 게 아닐까?
화면설계서와 프로세스를 분명하게 작성하고 이를 통해 개발에 기여하는 것. 이것이 결국 일정과도 연결될 것이고 품질로도 이어질 것이다.



이번 프로젝트에서 요구사항 정의서를 정리하며 느낀 점이 있습니다.

그건 바로 공식 요구사항정의서와 별도로 개인용 요구사항 정의서를 정의하는 것이 편할 수 있다는 점입니다.(어쩌면 더 효율적일 수 있습니다.)

일반적으로 프로젝트는 모듈별로 담당 기획자가 나뉩니다. 그리고 요구사항정의서 작성은 모듈별 담당 기획자가 완성한 후 취합하는 형식으로 완성됩니다.

이 부분에서 공식 버전과 별도로 개인용 요구사항 정의서 문서의 필요성을 경험했습니다.

공식버전의 경우 요구사항의 중복없이 완성됩니다. 그래서 취합하는 과정에서 유관하다 판단해 제 모듈에서 작성되었더라도 타 모듈과 내용이 중복될 경우 둘 중 하나의 모듈에선 빠지게 됩니다. 이 사실을 프로젝트 기간 동안 계속 염두하고 있으면 좋지만..시간은 언제나 부족하고..그럼 요구사항 정의서에서도 제 모듈에 정의된 요구사항 정의서만 보는 상황이 발생합니다. 물론 기획자라면 자신의 모듈것만 볼 게 아니라 타 모듈이라도 관련된 내용이라면 계속 확인하는 게 당연하지만 놓치는 상황이 분명 발생할 수 있습니다. 따라서 저는 이번 프로젝트를 통해 개인용과 공식 버전 요구사항 정의서의 필요성을 느꼈는데요.

다만 이렇게 문서를 분리하다보면 요구사항 정의서가 수정될 경우 문서를 2개 업데이트해야하는 상황이 발생하기에 이 경우에도 역시 업데이트가 되었음에도 놓치는 요구사항이 생길 수 있습니다. 그럼 어떻게 해야하나?

여기서 "개인용"이라는 부분을 놓치면 안되는데요. 즉, 공식 요구사항의 양식을 따를 필요가 없다는 점입니다. 모든 컬럼을 따를 필요없이 개인용 요구사항정의서에는 요구사항ID만 기록해두는 것입니다. 이러면 내용을 관리할 필요도 없기에 요구사항 내용 혹은 협의된 내용이 수정되어도 이를 따로 개인용 문서에 반영해야할 일이 생길리 없겠죠. IA를 관리하듯 요구사항 ID만 관리하면 되는 것입니다. 그럼 타 모듈에 정의된 요구사항이라도 놓칠 염려를 덜 수 있겠죠?


이 글은 제 개인적인 경험을 바탕으로 작성되었습니다. 댓글을 통해 부족한 부분은 채우고, 다른 부분은 맞춰갈 수 있길 희망합니다.

요구사항 정의서는 고객사의 요구사항을 정의한 문서이다.

해당 문서는 결국 이번 프로젝트에서 뭘 할 것이냐를 공식적으로 약속한 내용을 담고 있다. 따라서 프로젝트 진행에 있어서 범위를 정의하는데 근간이 되는 문서이기도 하다.

요구사항 정의서는 사용자 인터뷰 등을 통해 도출된 요구사항을 분석하여 정리된 문서이다. 여기서 "분석"이라는 점이 중요한데, 수행사 관점에서는 결국 해당 문서에서 이행하기로 약속한 기능을 "구현"해야하는 의무를 갖고 있다. 따라서 모든 요구사항을 기능 단위로 분리하고, 구현 관점에서 제한된 인력과 기간 내에 수용 가능한 요구사항인지를 분석해야 한다. 

*기획자 입장에선 현업의 요구사항을 상당 부분 수용해주고 싶다. 그러나 프로젝트 입장에선 기한 내 불가능한 요구사항을 수용할 경우, 수행사 프로젝트팀의 고생을 떠나서 기한 내 아예 오픈을 못해버리는 불상사가 발생할 수도 있다. 그리고 기한 초과는 곧 예산 초과로 이어진다. 이러면 최악의 경우 법적 다툼으로까지 이어질 수 있다..

기능 단위의 분석이라 하면 요구사항 하나에 2가지 이상의 기능을 담는 걸 지양해야 한다는 것을 의미한다. 이는 요구사항에 따라 수용할 수 있을 수도, 없을 수도 있기 때문이다. 즉, 요구사항A에 기능A와 기능B 개발을 포함할 때, 기능A는 수용 가능한데 기능B는 그렇지 못할 수 있다. 물론 이 경우, 요구사항 정의 단계에선 부분 수용이라하고 고객사와 협의를 통해 요구사항을 수용 가능한 요구사항으로 수정할 수 있는 여지가 있다. 그러나 요구사항 다 확정하고 구현 단계에서 수행사가 막상 개발하려니 기능A는 되는데 기능B는 안된다고 해버릴 순 없는 노릇이다. 따라서 기능 단위의 요구사항 분리가 개인적으로 중요하다고 생각한다.

*이는 개발 관점에서 기능단위이다. 요구사항을 가령 체크박스 옵션 단위나 지나친 세분화하는 것 또한 지양해야한다. 요구사항이 너무 많아질 경우 관리가 어려워지기 때문이다.

요구사항 정의서는 또한 분석된 내용을 토대로 작성되는데, 여기서 중요한 점은 단순히 프로젝트 범위만 정의하면 안된다는 점이다. 요구사항은 수행사가 검토 후 고객과 협의를 결정되는데, 여기서 수용하기로 했다면 구체적으로 어떤 기능을 수용했는지, 그리고 미수용으로 결정되었다면 무엇 때문에 어떤 걸 미수용하기로 했는지 구체적으로 정의되어 있어야 한다.

이러한 사유들을 정의서에 포함해야 하는 이유는 아무리 워터폴 방법론을 채택하더라도 설계 또는 구현 단계에서도 여전히 요구사항은 추가되기 때문이다. 물론 모든 요구사항을 반영할 수 있다면 좋겠지만, 프로젝트는 제한된 자원 안에서 진행되기에 끊임없이 추가되는 요구사항은 프로젝트의 실패를 야기할 가능성이 높다.

따라서 추가되는 요구사항에 대해 가능한 범위를 한정지어야 하는데, 이때 요구사항 정의서에 정의된 사유를 통해 미수용했던 요구사항, 즉 이번 프로젝트에서 진행불가한 요구사항을 받아들이는 사고의 발생 가능성을 줄일 수 있다.


+ 요구사항 정의서를 정리하는 순서는 아래와 같다

  1. 사용자 인터뷰 등을 통한 요구사항 조사
  2. 기능 단위 요구사항 정의
  3. 수행사 검토를 통한 요구사항정의서 정리
  4. 고객사-수행사 협의를 통한 요구사항 확정
  5. 수행사 검토를 통한 수용여부 확정 - 수행사의 프로젝트팀 전체가 함께 검토함
  6. 수행사-고객사 협의를 통한 최종 요구사항 확정

이 글은 제 개인적인 경험을 바탕으로 작성되었습니다. 댓글을 통해 부족한 부분은 채우고, 다른 부분은 맞춰갈 수 있길 희망합니다.

SI에선 주로 워터폴 방법론을 채택해 프로젝트가 진행된다.

SI프로젝트에서 워터폴 방법론에 따른 프로젝트 진행은 아래와 같다.

분석 ➡ 설계 ➡ 구축 ➡ 시험 ➡ 이행 및 안정화

아직 주니어 레벨이라 참여한 프로젝트가 많진 않지만, 참여했던 프로젝트에서 서비스기획자가 관여하거나 작성했던 산출물은 아래와 같았다.

분석 - 요구사항 정의서

 

[서비스기획] 수행사의 요구사항 정의서(기능, 사유)

요구사항 정의서는 고객사의 요구사항을 정의한 문서이다. 해당 문서는 결국 이번 프로젝트에서 뭘 할 것이냐를 공식적으로 약속한 내용을 담고 있다. 따라서 프로젝트 진행에 있어서 범위를

whatilearned.tistory.com

 

 

[서비스기획] 요구사항 놓치지 않기 - 개인 버전과 공식 버전

이번 프로젝트에서 요구사항 정의서를 정리하며 느낀 점이 있습니다. 그건 바로 공식 요구사항정의서와 별도로 개인용 요구사항 정의서를 정의하는 것이 편할 수 있다는 점입니다.(어쩌면 더

whatilearned.tistory.com

설계 - 정보구조도(IA), 프로세스정의서(BPD), 서비스정책서, 화면설계서(또는 스토리보드, SB)

시험 - 테스트시나리오 또는 매트릭스

*QA, QC분들이 하시는 게 맞지만, 없거나 일손이 부족하면 기획자가 한다..(기획자가 오류 발견 → 개발자가 오류 처리)

이행 및 안정화 - 사용자매뉴얼

 

+ Recent posts