brunch

매거진 IT 20년 썰

You can make anything
by writing

C.S.Lewis

by 야옹이버스 Apr 23. 2017

IT 15년 썰 - 9

프로젝트 진행 방법론 2부 - 리더를 위한 4원칙

지난 글에,

프로젝트 진행 방법론 1부 - '팀'을 위한 4원칙을 정리했고,

1. 먼저 보이고, 그 후에 고치자
2. 테스트 환경을 구축해서, 평화를 찾자
3. 매일 배포하자
4. 내가 유저고, 내가 책임자다

https://brunch.co.kr/@greenful/16


이번 글에서는 '리더'를 위한 4원칙을 얘기해 본다.

(흑.. 이어서 써야하는 글을 4개월만에 쓰다니 -ㅠ-)






1. 핵심을 보자


프로젝트를 진행하다 보면 매우 다양한, 생각하지 못했던 일들이 수두룩하게 터진다.

항상 정신을 바짝 차리고 있지 않으면, 어느샌가 산으로 달려가고 있다.

혹은 정말 사소한 것에 다 같이 목숨 걸고 있다.

모든 것이 바뀌고, 온갖 것이 정신을 혼란스럽게 만들지만, 그때 중심을 잡아야 하는 것이 리더다.


이 주제와 깊이 관련된 것이 일정 관리다.

일정관리와 관련된 다양한 방법과 툴들이 있지만, 툴은 일이 되게 하는데 도움을 주는 도구일 뿐이다.

방법론이나 툴에 휘둘려 목적을 잃으면 안 된다.

일정관리를 하는 궁극적인 이유는,

뚜렷하게 정한 목표를 이루기 위해서 가장 먼저 해야 할 일부터 하기 위해서 이다.


화이트보드에 포스트잇으로 정리하기,

공유문서(위키, 닥스,  등)에 이모티콘을 사용해서 정리하기,

트렐로(trello.com) 나 지라(atlassian.com/software/jira)를 사용하기,

를 시작으로, 정말 다양한 툴들이 있는데...


이 툴을 통해 얻어야 하는 것은 딱 2가지.

1. 우선순위대로 진행한다

2. 모두가 진행상황을 한눈에 본다

이 두 가지만 챙길 수 있으면 어떤 방식을 써도 상관없다.


이 두 가지에 대해서 더 쓰면 군더더기일까, 더 써야 설명이 충분할까 고민하다,

군더더기라고 생각하고 이 정도에서 마무리.

필요하다 싶으면 따로 쓰는 걸로 :)


이 원칙에 대해서는 아래 질문에 YES라고 답할 수 있으면 된다.


- TODO List를 중요도 순으로 일렬로 나열할 수 있나요?
- 서비스 최종 목표가 무엇인지 공유되어 있나요?
- 모든 팀 멤버가 역량을 최대한 활용하며 일하고 있나요?
- 프로젝트 진행사항을 한눈에 볼 수 있는 곳이 있나요?


2. 모든 것을 기록하자


우리는 잊는다.

그러니, 적자. 업무 관련된 것은 사소한 것도 모두 적자.


예를 들어보자.

어느 날 나는 우리 로고가 왜 귀여운 물방울 모양인지 궁금해졌다.

문서를 찾다 보니 초기에 로고 콘셉트, 아이데이션 문서를 찾았다.

거기에 쓰인 콘셉트에,

'동그란 이미지 아닐 것, 귀여운 이미지 아닐 것'이라고 분명히 적혀있었다.

그런데 결과는 귀여운 물방울무늬!

뭔가 되어있는데, 왜 그렇게 되었는지 기억하는 사람은 없다.

의미 없는 존재가 되어버린 그디자인, 그 기능, 그 네이밍.

불쌍해~


또 다른 예,

한창 개발을 하고 있는데, 테이블 두 개를 조인해서 쓰고 있으니 불편함이 많았다.

멤버들도 이 테이블을 합치는 게 맞지 않냐는 의견이 다수였다.

오케이, 합쳤다.

그리고 2주 뒤, 그 두 테이블을 분리했어야만 했던 그 사건이 터졌다.

'아 맞다 그래서 분리해뒀었지'

그래서 다시 테이블 분리하는 작업을 했다는.

분명 이유가 있었는데 기록이 없었기에 잘못된 방향으로 결정하고, 나중에 되돌리는 일.

꼭 개발이나 프로젝트가 아니라도 살면서 이런 일 아마 많이 겪었을 걸...


개인적으로는 위키 스타일 문서에 정리하는 것을 좋아한다.

옛날 옛적 기록 인덱스만 살짝 볼까나? ㅎㅎ

9월 10일, 11일은 주말인데 나왔나보다...

그리고, 업무 관련 없는 것도 모두 적어보자.

소풍 간 일, 팀원 중에 중요했던 개인사, 야식 중에 있었던 일...

나중에 쓸 일이 생긴다.

플젝 후기, 서비스 소개, 인터뷰에... 적어도 좋은 추억이 남는다.

(웬만해서는 지나면 좋은 기억으로 남는다. 적어도 나는 그랬다 ㅎ)


또 하나, 하나의 프로젝트는 한 페이지에 모두 정리되어 있어야 한다.

당연히 한 페이지에 모든 내용은 못 넣지~

다만, 한 페이지에 모든 인덱스는 넣을 수 있다.

웬만한 것의 인덱스를 담고 있는 그 첫 페이지를 제외하고는, 그 어디에 뿌려져 있어도 상관없다.

인덱스 통해서 가면 그만이니까.

내 경우는 플젝을 하게 되면 그 첫 인덱스를 잘 가꾸는 편이다.

(이런 습성에는 내가 잘 까먹는 것도 큰 역할을 한다. 내가 편하려고 그런 거다... ㅜ.ㅜ)

찾지 못하는 데이터는 없는 것과 마찬가지다.


이 원칙을 확인할 질문은 이것.

- 매일매일의 있었던 모든 정보를 남기고 있는 곳이 있나요?
- 찾고자 하는 데이터를 검색 없이 바로 찾아낼 수 있나요?


3. 먼저 생각하고, 그다음에 행동하자


바로 눈앞을 봤을 때의 결정과, 전체를 봤을 때 결정이 다를 때가 종종 있다.

조금 큰 변화를 주어야 하는 결정을 할 때는,

그 부분과 관련된 모든 서비스 플로우와, 그것과 관련해서 진행되었던 일들과,

서비스의 목표에 대입해서 생각한 후에 결정한다.


생각을 하면서 차곡차곡 탄탄하게 다지는데 도움을 주는 것이,

룰(기준)이다. 예를 들면 정책, 공통 코드, 디자인 가이드 등이다.

이런 기준을 세우기 시작하면,

함께하는 멤버들도 한번 더 그 기준에 맞추어 생각하게 되고, 즉흥적으로 결정하지 않게 된다.

좀 더 탄탄히 하자면,

개발자라면 DB 모델링 관리를 하는 사람, 전반적으로 코드를 관리하는 사람을 정해두면 큰 도움이 된다.


아래 질문에 모두 YES 라면 통과!

- 구조(비교적 큰) 변화가 있을 때 진행 flow를 처음부터 모두 다시 따져보았나요?
- 컨벤션들이 통일되어 있나요? 모든 공통 코드가 한 곳에 정의되어 있나요?
- 소스를 총괄 관리하며 정리하는 사람이 정해져 있나요?


4. 한 박자 숨을 돌리자


프로젝트를 진행하다 보면 온갖 일이 다 생긴다. (이 얘기 이미 앞에서 한 거 같지?)

정신이 1도 없다.

멤버들은 정신없이 달려야 한다(맡은 부분에 집중한다는 뜻이다). 그리고 리더가 방향을 잡으면 된다.

리더도 바쁘다. 다만, 마음으로 나마 한 숨 돌릴 시간을 짬을 내어 가져야 한다.

찬찬히 잘 가고 있나 챙겨보면 의외로 많은 것을 건지게 된다. 좋은 것도, 고칠 것도.


이 질문의 체크는 이렇게.

- 일정 기간마다 프로젝트 전체 윤곽을 살펴보나요?
- 이 서비스는 성공할 것인가요? 아니면 Stop이라고 말할 수 있나요?



무엇보다 리더의 가장 큰 역량은 '동기부여 능력' 이라고 생각한다.

자세한 내용은 다음 기회에...


자, 모두들 즐 플젝!


- 똘똘하게,

- 일이 되도록,

- 그리고, 즐겁게!!




부록 나갑니다 ㅎㅎ

프로젝트 진행에 따른 체크 리스트, 공유 :)

2005년 버전이라 지금과 안 맞는 내용도 중간중간 보이지만, 맥락 이해만 하면 될 듯.


A. 시작 전

A-1. Commitment

- 프로젝트가 (서비스적으로/일정에 있어서) 성공할 것 같은가요?

A-2. 준비

- 필요한 모듈들에 대한 리스팅이 되었나요? (DB, 인증, 결제, map_server, counter_server, file_server, caching_server, etc...)

- 타 팀과 협업 가능성에 대해 리스팅이 되었나요?

- 외주 가능 요소에 대한 리스팅이 되었나요?

- 기존 데이터 마이그레이션이 필요한 것이 있는지 체크하였나요?

- 사용할 charset에 대해 정했나요?

- 다국어 가능성에 대한 고려를 하였나요?

- 특허를 낼 수 있는 부분이 있는지 체크하였나요?

A-3. 예측

- DB, 트래픽, Disk(+Backup) 량에 대해 예측 완료되었나요?

- 필요 서버량과 구조에 대해 그림을 그렸고, 시스템 담당과 커뮤니케이션을 완료하였나요?

         

B. 초반

B-1. 서버

- 서버 발주를 하였나요?

B-2. 작업방식 통일

- 컨벤션을 정의하고 진행하고 있나요? (exception, logging, page name,  Action name, MVC 의 담당 로직 분배 방식, Bean 의 사용 방식, db table-field 명, 공통 code  네이밍, etc...)

- 공동작업 경우 머지 방식과 flow에 대해 협의한 후 진행하고 있나요?

B-3. DB 모델링

- DB, disk는 분산을 고려해서 모델링하였나요?

B-4. UI

- 웹페이지, 앱 구조는 정하였나요?

- user 의 이동 flow를 총괄적으로 고려하고 진행하고 있나요?

- login 필요 여부 관련 로직은 정리되었나요?

B-5. 디플로이 로직 확립

- 디플로이 로직을 만들었나요?


C. 중반

C-1. Commitment

- 프로젝트가 (서비스적으로/일정에 있어서) 성공할 것 같은가요?

C-2. 타 팀

- 타 팀 협업이 순조롭게 진행 중인가요?

C-3. 외주

- 외주 관리가 순조롭게 진행 중인가요?

C-4. 주기적 체크

- 중요 로직에 대해 코드를 살펴보았나요?

- 쿼리 플랜을 살펴보았나요?

- config로 분리할 것들이 추가적으로 있는지 살펴보았나요?

- 시나리오를 한 번 다시 체크하였나요? (한 박자 쉬기)

C-5. 피처링

- 피처링될 데이터들에 대해 개발 중인가요?

C-6. 백업

- 형상관리 저장소에 히스토리, 백업 남겨야 할 파일들 정돈, 등록하였나요?

C-7. 서버

- 테스트 서버와 파일럿 서버를 분리하였나요?

- 서버 발주가 정상적으로 진행 중인가요?


D. 중후반

D-1. Commitment

- 프로젝트가 (서비스적으로/일정에 있어서) 성공할 것 같은가요?

D-2. 관리 툴

- 통계 툴은 진행 중인가요?

D-3. 서버

- 서버 발주는 완료되었나요?

- 실서버에 실 서비스 모드로 세팅이 다 되었나요?

- cron 작업들 정돈, 세팅이 되었나요? (date 맞추기, 로그 관리, 모니터링, etc...)

- 데이터 백업은 세팅되었나요?

D-4. 타 팀

- 타 팀작업 결과물이 본 프로젝트로 머징이 완료되었나요?

D-5. 외주

- 외주 결과물이 본 프로젝트로 머징이 완료되었나요?  

D-6. 에러 처리

- 에러 메시지 내용, 취합 방식, 로깅 방식을 정리하였나요?

D-7. UI

- escapeHTML, encodeURL, flash caching, userid 노출된 것 정리를 모두 하였나요?

- js, css 정리되었나요?

- user 지향 activeX flow 체크되었나요?

- 오픈 시에 image 들의 다운로드 부하 몰리는 것에 대한 대비가 되었나요? (미리 내려 주기 등)

D-8. 오픈

- 프로모션, 이벤트 준비는 되고 있나요? (타 팀 협업 필요시에 일정 더 많이 잡아야 함 - 서비스 이해도가  떨어지므로 수정 요소 많음)

- 인트로, 도움말 은 충분히 공들여 준비되고 있나요?

D-9. 주기적 체크

- 중요 로직에 대해 코드를 살펴보았나요?

- 쿼리 플랜을 살펴보았나요?

- 시나리오를 한 번 다시 체크하였나요? (한 박자 쉬기)


E. 후반

E-1. Commitment

- 프로젝트가 (서비스적으로/일정에 있어서) 성공할 것 같은가요?

E-2. 관리 툴

- 통계 툴은 진행 중인가요?

- 스팸 툴은 진행 중인가요?

E-3. 오픈

- 덜 된 부분은 덜 되었다고 확실히 보여주고 있나요? (테스터들의 오해 없게 '구현중' alert 등)

- 로그 분석되고 있나요?

- 주요 로직의 코드 인스펙션을 하였나요?

- 모든 쿼리 플랜을 한번 살펴보았나요?

- 시나리오를 한 번 다시 체크하였나요? (한 박자 쉬기)

- 의견 받을 통로(게시판)가 준비되었나요?

- 필요 없는 로그들은 삭제하였나요?

- 필요한 로그들은 충분히, 매우 충분히 남겼나요?

- User 의 입장에서 사용해 보았나요? (한 박자 쉬기)

- 테스트 모드, 사내 오픈 모드, 오픈 모드에 대한 컨트롤 준비가 되었나요?

E-4. 테스트

- 스트레스 테스트를 하였나요?

- 브라우저 테스트를 하였나요?

- 펑셔널 테스트를 하였나요?


F. 사내(내부) 오픈 후

F-1. Commitment

- 프로젝트가 서비스적으로 성공할 것 같은가요?

F-2. 오픈

- 테스트 모드 모두 걷어내었나요?

F-3. 문제 찾기

- slow query를 살펴보았나요?

- exception 로그를 살펴보았나요?

- 의견을 반영, 바로바로 수정하고 있나요?


G. 오픈 후

G-1. 오픈

- 사내 오픈 모드 모두 걷어내었나요?

G-2. 문제 찾기

- slow query를 살펴보았나요?

- exception 로그를 살펴보았나요?

- CS 의 말은 한 개도 무시하지 않고 확인하고 있나요?

- 방문 수, 사용자 수, 기타 사용성을 체크할 수 있는 데이터를 분석하고 있나요?

G-3. 관리

- 모니터링이 잘 되고 있나요?

- 모든 관련자에게 오픈 노티를 주었나요?

- 백업이 잘 돌고 있나요?

- 크론 작업이 잘 돌고 있나요?

- 로그들이 잘 남고 분석되고 있나요?


매거진의 이전글 IT 15년 썰 - 8
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari