회사를 다니면 나에게 요구사항이 생긴다. srs 같은 게 따로 오지 않는다
뭔가를 만들고 싶다는 말이 올뿐
기획을 거치지 않고 오거나 내가 기획을 같이 고려해야 하는 등의 경우가 빈번하게 생긴다
그리고 언제까지 가능하냐고 나에게 묻는다. 일정을 관리할 땐 내가 대표던 신입사원이던 중요하지 않다
일정은 주변의 일까지 생각해서 답변해야 한다. 이해가 쉽게 예시를 들어 설명해 보자
내가 "오늘부터 자동차를 만들어야 한다는 업무"가 생겼다고 가정하자
어떻게 해야 할까? 그럼 내가 해야 할 일을 알아야 한다. 어떤 일인지 알지 못하면 일정을 산정할 수 없다
다짜고짜 나에게 날아오는 "언제까지 가능할까요?"를 대처하려면 논리적으로 대응해야 한다
pert나 cpm 같은 일정 산정 방법론도 참고하면 좋다
다만 말하고자 하는 부분은 양산형 양복 입기가 아니다
맞춤형 슈트 입기다
priority
- 부여받은 일정이 얼마나 되는지?
- 문제가 명확하게 정의되어 있는지?
- 문제 정의 시 불확정 요소가 존재하는지?
- 내가 해야 할 일이 얼마나 시간을 소요하는지?
- 그 사이에 나에게 다른 업무가 존재하는지?
- 나 이외의 인력이 존재하고 내 일정이 그 사람과 관련이 있는지?
서버 개발자를 기준으로 예시를 들어보자. "우리 회사는 지사가 많은데 사원들이 사용할 멀티테넌시 게시판을 만들고 싶다"
라는 요청이 나에게 들어온다. 개발자는 물어볼게 많아질 것이다
- 계정은 있는지?
- 멀티테넌시인데 게시판을 공유할 수 있는 회사가 있는지?
- 어드민 계정으로 모든 게시판을 다 볼 수 있는지?
- 무한 대댓글이 가능한지?
- 이미지 업로드 가능한지?
내가 왜 priority를 명시했을까. 우리가 가장 먼저 물어봐야 하는 건 1번이다
완성이 언제까지 되어야 하는가?
고용하는 시간을 비용이라고 봤을 때 대표는 비용을 주고 웹사이트를 구매하고 싶다는 말이다. 그럼 우리가 할 말은 정해져 있다
"얼마까지 알아보고 오셨을까요?" 이 멘트를 해야 할 거 아닌가!
대표는 4개월의 비용을 내고 싶다고 가정하자. 4개월을 18주의 기간으로 계산하자
이 일정이 과연 가능할까? 고민을 시작해야 한다
priority의 2~6번을 진행하기 전에 일정을 확답하는 건 안된다
짧게 말했다가 약속을 못 지키거나 촉박하게 일을 진행해야 될 수 있다
일정 산정을 위한 일정을 받자. 1주일을 일정산정에 사용한다
프로젝트 규모에 따라 본인 역량 따라 일정을 정해야 한다. 모르겠으면 질러보면서 근사치를 찾아야 한다
allWeek: 1
2번을 보자
문제를 정의하는 데에 가장 많은 시간이 소비된다고 생각한다. 이제 물어보는 시간이다
뭐가 얼마나 필요한지 말이다. 내가 생각에는 요구사항이 쉽게 변하는 상황이 아니라면
문제 정의 시 api정의와 db설계를 동시에 하는 것이 좋다고 본다. 그리고 만약 새로운 project라고 가정한다면?
domain을 구분하고 sourceCode의 fileStructure도 고민해야 한다
git flow정책을 적용하고 git action deploy 및 aws 관련 등의 인프라 작업이 필요하다
그리고 ubiquitous language정리까지 해야 한다. 이런 추가적인 작업에 1주일이 사용될 것이다
allWeek: 2
api동작에 맞게 url design과 input, output을 정의하자. postman 등의 tool로 작성하면서 진행한다
db table을 설계할 때 domain을 정리하고 어떤 column이 들어갈지 보자. aQueryTool, erdCloud 등을 이용하자
이렇게 2번을 하는 동안 db설계는 끝난다. api가 25개 생긴다고 가정하자
1개에 2일 정도 걸린다고 가정하자. api하나에 드는 flow는 아래와 같다
- api adapter
- service logic
- persistence
- front에게 공유할 swagger 등
- validation 처리
- code review를 통한 코드 정리
10 주가 소요된다
allWeek: 12
2번이 이쁘게 완료됐다면 3번도 고려한다. 불확정함을 일정에 명시하자
이 기능이 추가적으로 시간이 걸릴 수 있다는 말이다
일정에 min과 max가 생긴다고 보면 된다. 진짜 모르겠고 해 봐야 아는 거라면 그렇게 말하자
지금은 불확정 요소 때문에 1주일 추가될 수도 있다고 가정하자. 4번은 12주가 걸리는 것이다
allWeek: 13
5번을 보자
만약 내게 3주짜리 업무가 중간에 들어온다고 가정하자
allWeek: 16
6번을 가정할 때 front를 생각해 보자. api가 완성되기 전까지 할 수 있는 부분을 다했다고 치자
그리고 순차적으로 api 정리 문서를 공유한다고 가정하자
중복되는 시간을 고려해도 api가 끝나고 2주 정도 추가적으로 걸린다고 생각하자
allWeek: 18
이제 2주 동안 테스트를 진행하면 된다
allWeek: 20
이때 kick off를 기준으로 첫 1주일을 일정 산정에 사용하였다. 그리고 대표한테 혹은 pm한테 질문하러 가는 것이다
일정 산정 기간 포함 20 week plan이 나오는데 괜찮을까요?
이제 네고시간이다. 어떤 기능을 빼서 기간을 맞출까요? 야근이 필요할까요? 등의 개념이 들어간다
대화가 원만하게 마무리되어 20 week plan으로 마무리되면 제일 좋다. 나의 일정은 이렇게 산정된다
내가 정의한 대로 나의 업무가 진행되지 않는다면 시행착오가 필요하다
일정은 본인역량이 기준이기 때문이다. 꾸준히 시도하는 것이 중요하다