본문 바로가기

카테고리 없음

책쓰기 일정에 애자일 프로세스 적용해보니

내가 생각하는 글쓰기 최고 높은 단계의 작업은 바로 책쓰기다. 블로그 스피어같은 경우 다시한번 제대로 활동해보려니 필력이 딸리긴 하지만..저번에 '내 인생의 첫 책쓰기'란 책을 읽어보고 글쓰기의 최고 정수인 책쓰기에 도전해보기로 했다. 비유 그대로 못하면 '무'라도 자를 계획이다.

어떤 책을 쓸지 계속 고민되었다. 지금 결론은.. ‘수필 디자인패턴’ 이라고 수필 문체 같은 문학적인 문장에다가 깊은 사색이 필요한 디자인 패턴 내용을 결합하여 뭔가 인문/문학적인 향기가 느껴지는 색다른 디자인 패턴 책..IT서적을 써보기로 했다. 자신 있진 않지만 그냥 쓰는거다. 사실 서점에 객체지향 또는 디자인 패턴 책이 널려 있기때문에 창의적인 아이템은 아니라 갑갑하지만..출판내서 대박나기 보다는 책쓰기 통해 프로그래밍+글쓰기 실력 키우는게 우선이니 개의치 않기로 했다.


꿈에서는 내가 쓴 책이 대박나고 심지어는 외국에 번역되어 세계적인 책을 쓴 작가가 됨을.. 상상 하지만..현실적으로 내가 정말 출판 내서 대박을 내겠다는 욕심은.. 없다.(있긴 있지만 어려우므로 일단 욕심은 버리고...^ ^;). 다만 책한권 쓸 정도의 원고량을 퇴고할 정도로 필력을 쑥쑥~ 길러서 내 플그램 실력과 글쓰기 실력을 동반~ 향상시켜 먼~ 미래에 대비하고자 하는 기대가 깔려있다.

그러나 벌써 한달이 지났고..내가 게으르게 하루하루를 보낸것은 아닌데..아직 진행된것은 아무것도 없다. 책 한권분량의 원고를 퇴고~하는 것이 가능할지 점점 초조해진다. 나는 생각대로 할 수 있을까?

거외 요즘 개발자 커뮤니티의 리더 역할을 하는 개발자 고수들에게서 서서히 전파되는 애자일 프로세스를 보면 프로젝트를 이터레이션~ 식으로 반복 개발하면서 프로젝트를 완수하고 있다. 그러고 보니 책쓰기도 하나의 프로젝트이다. 책쓰기에도 애자일 프로세스를 적용할수 있다는 생각이 들었다. 무엇보다 일정이 팍팍한데 이터레이션 식으로 뼈대를 완성하고 살을 점진적으로 붙여가는 방법이 촉박한 지금의 내 상황과 잘맞아떨어진다. 한번 일주일간 실험해보기로 했다.

잠깐~ 내가 생각하는 애자일의 정의는 급변하는 소프트웨어 개발 업무 요구사항 변화에 빠르고 정확하며 즐겁게 대응하면서 개발하기 위해 개인간 상호협력, 변화, 피드백을 중요시 하는 사상, 방법론, 실천방법의 모음이다. (조금.. 틀릴 수도 있다~!)


   애자일 프로세스 준비물 
 

1. 책을 통한 애자일 프로세스 공부
일단 애자일 프로세스가 뭔지 알아야 실습을 해볼 것이다. 애자일 프로세스 공부가 필요하다. 시중에 여러가지 책이 있다. 내가 여러가지 책을 구입해봤는데..다들 두루뭉실한 이론만 알려주지 구체적인 실전방법을 화끈하게~ 알려주는 책은 없었다..책 뽑기가 제대로 안됐다..특히 번역책들~! 그러나 이책은 낚시할때 그렇게 잡히지 않던 물고기가 갑자기 술술~ 잡히듯 너무도 자세하게 실전방법을 알려주고 있다. 개인적으로 이 책한권이 예전 두루뭉실하게 읽혔던 책보다 백배는 괜찮았다. 엇 그런데 이 책도 번역책이구나..좌우지간 엄지손가락이 저절로 올라올 정도로 훌륭하다.
[이책 전반부의 애자일 프로세스 실습은 내가 당장 실습해볼 정도로 직관적으로 쉽게 알려준다. 다만 후반부에는 SVN, Ant등의 툴사용법도 나오는데..이 툴 사용법들은 대강만 설명한 단점도 있다. 책정가는 29,000원]

2. 화이트보드
[나는 80X120의 화이트보드를 구입했다. 가격은 20,000원대]

3. 화이트보드 주변사무용품(보드마커, 보드마커지우개, 화이트보드자석)
[화이트보드 구입시 기본적으로 딸려오거나 따로 구입한다.]

4. 포스트잇
[포스트잇을 많이 구비한다. 나는 마침 IBM에서 받은 IT스러우면서 멋진 포스트잇을 가지고 있었다.]

5. A4지 반쪽짜리 종이
[나는 A4지를 절반으로 잘라서 사용자 스토리 종이로 활용했다. 이건 쓰는사람 마음]

   애자일 프로세스 구성요소 설명
 

이터레이션 : 고객에게 보여줄수 있는 완성된 최소 프로젝트의 단위 (혹시..약간 틀릴수도 있음 ;)
사용자 스토리 : 수행해야될 작업 단위 (A4지 반쪽)
테스크 : 사용자 스토리 밑에 딸리는 새부작인 작업 단위 (위의 포스트잇)
추정치 : 사용자 스토리/태스크의 완성 예정일
우선순위 : 사용자 스토리의 우선순위, 보통 10,20 의 단위로 해야 직관적으로 우선순위를 받아들인다고 한다.
아이디 : 사용자 스토리/태스크의 고유 아이디

   '시범 이터레이션-일주일간의 책쓰기' 사용자 스토리 작성
 

사실은 애자일 프로세스에 대해 좀 설명을 해야 되는데..그럼 포스팅 덩치가 커지므로 실습위주로 관련 지식을 조금 설명하고..구체적인 설명은 다음으로 미뤄야 겠다. 일단 책쓰기 일정을 일주일동안 시범적으로 짜서 테스트 식으로 진행해보기로 했다.

내인생의 첫 책쓰기-수필 디자인 패턴 시범 이터레이션

사용자 스토리#1 책쓰기 준비작업
책쓰기 전에 이루어져야할 기초 작업
테스크#1.1 애자일 식으로 시범이터레이션 일정짜기
화이트보드에 애자일 현황표 그려보고 사용자 스토리도 만들고 등의..작업 실시
테스크#1.2 책읽기 패턴 포스팅 하기
앞으로 효과적으로 관련 서적을 참고하기 위해 책을 효과적으로 읽는 방법을 블로그에 포스팅 한다.
테스크#1.3 글쓰기 리팩토링 포스팅 하기
여지껏 읽었던 글쓰기 관련책을 체계적으로 정리하여 글쓰기 리팩토링이라는 제목으로 블로그에 포스팅 한다. (실제로는 수영에서 배우는 글쓰기 드릴 연습 포스팅으로 변경되었음)

사용자 스토리#2 기술서적 완독
디자인패턴에대해 쓰려면 관련 기술서적을 머릿속에 꿰차야 한다.
테스크#2.1 헤드 퍼스트 객체지향 분석/설계 완독
객체지향에 대해 잘나와 있는 책을 완독한다.
테스크#2.2 헤드 퍼스트 디자인패턴 완독
디자인패턴에 대해 잘나와 있는 책을 완독한다.
테스크#2.3 기타 참고서적 읽기
기타 참고서적을 읽어보면서 머릿속에 나중에 참고할 내용을 ‘인덱싱’ 한다.

사용자 스토리 #3 목차정리
목차는 프로젝트의 전체 뼈대를 구축하는 것과 같다. 책을 어떻게 구성하고 전개할지 목차를 정리하면서 생각해본다.

사용자 스토리 #4 서문작성
머릿말은 책을 쓰는 목적과 방향을 분명히 해준다. 미리 서문을 써본다.

사용자 스토리 #5 샘플 문장 작성
시범적으로 책 관련 내용을 써보면서 문장을 어떻게 전개할지 가늠해본다.

     '시범 이터레이션-일주일간의 책쓰기'의 구체적인 일정 잡기
 

0. 이번 시범 이터레이션은 화,수,목,금,토,일 6일간으로 하며 백업으로 하루를 비워둔다.
1. 책쓰기 준비작업에 1일 할당, 우선순위 10
2. 기술서적 완독에 2일 할당, 우선순위 20
3. 목차정리에 0.5일 할당, 우선순위 30
4. 서문작성에 0.5일 할당, 우선순위 40
5. 샘플문장 작성에 1일 할당, 우선순위 50
그래서 총 5일 분량의 사용자 스토리를 이번주에 소화한다.

    '시범 이터레이션-일주일간의 책쓰기' 화이트 보드 작성 
 

1. 화이트보드 그리기
[나같은 경우 위와 같이 그렸다. 좌측에 사용자 스토리를 붙일 공간을 만들었다. 옆에 진행중, 완료에 테스크 포스트잇을 붙여서 테스크의 진생상태를 파악한다. 오른쪽위에 소멸 그래프는 따로 설명한다. 오른쪽 중간의 다음 이터레이션은 다음 이터레이션으로 미룰 사용자 스토리를 붙인다. 오른쪽 아래 완료에는 완료된 사용자스토리를 붙인다.]

2. 소멸 그래프 작성
[프로젝트/이터레이션의 진행상황을 한눈에 파악하게 해주는 그래프이다. x축이 이번 이터레이션 추정치의 합..즉 내가 계획한 일정이다. y축은 실제 활용가능한 날짜로 큰숫자에서 마이너스 해간다. 나같은 경우 화,수,목,금,토,일.. 6일의 시간 자원을 쓴다.]

3. 사용자 스토리와 테스크 작성




[사용자 스토리는 A4지 반을 짤랐다. 포스트잇이 사용자 스토리의 하부 구성 요소인 테스크이다. 테스크 왼쪽 하단의 숫자는 테스크의 추정치이다. 테스크 추정치의 합이 부모 사용자스토리의 추정치와 일치하도록 한다. 예) 책쓰기 준비작업, 0.3 + 0.3 + 0.4 = 1일]


   시범 이터레이션-일주일간의 책쓰기 일정, 화요일
 

화요일에 해야될 작업은
애자일식으로 시범 이터레이션 짜기 0.3일
책읽기 패턴 포스팅 하기 0.3일
글쓰기 리팩토링 포스팅 하기 0.4일
이다. 작업 결과..
화이트 보드를 보니 완료 테스크가 2개 있고 진행중인 테스크가 2개 있고 소멸 그래프도 그려져 있다. 자세히 살펴보니..

사용자 스토리 영역에선 [책쓰기 준비작업]에 딸린 테스크가 다 이동되었는데..

진행/완료 현황판을 보니 [애자일 식으로 시범이터레이션 짜기 0.3] 과 [책읽기 패턴 포스팅하기 0.3] 테스크는 완료 되었다. 축하~! 그러나 원래 화요일날 다 끝냈어야 했던 [글쓰기 리팩토링 0.4]를 완수하지 못했다. 에고~

그 결과 화요일 작업결과의 소멸 그래프를 그려보니 0.6일을 완수했으므로 4.4를 소멸그래프에 표시했다. 소멸그래프보다 위에 그리기 시작하면 프로젝트 일정이 슬슬~ 꼬이기 시작했다는 것이다. ^ ^; (또는 소멸 그래프보다 아래에 있으면 추정치를 너무 관대하게 잡았다는 것이다. 제일 좋은것은 소멸 그래프 파란선과 정확히 일치해야 가장 좋다고 한다.)

   시범 이터레이션-일주일간의 책쓰기 일정, 수요일  

수요일에 해야될 작업은
글쓰기 리팩토링 포스팅 하기 0.4일 <- 밀렸음
헤드 퍼스트 객체지향 분석/설계 완독 0.7일
헤드 퍼스트 디자인패턴 완독 0.7일 <-일부만 수행
이다. 작업 결과..

글쓰기 리팩토링 테스크는 없어졌다..근데 오늘 끝내야될 객체지향 완독 테스크는 그대로네..

좌우지간 [책쓰기 준비 작업] 사용자 스토리는 다 끝나서 완료 현황판으로 이동했다. 축하~!

하지만 수요일까지는 Y축 3을 찍었어야 했는데 하루 늦춰져서 4를 찍었다. 프로젝트가 암흑의 세계로 빠지고 있다. ^ ^;

   시범 이터레이션-일주일간의 책쓰기 일정, 목요일 
 

목요일에 해야될 작업은
헤드 퍼스트 객체지향 분석/설계 완독 0.7일 <- 밀렸음
헤드 퍼스트 디자인패턴 완독 0.7일
기타 참고서적 읽기 0.6일
이다. 작업 결과..

목요일 중으로 왼쪽위의 기술서적 사용자 스토리는 모두 끝냈어야 했는데 시작 못한 테스크 하나, 진행중 테스크 하나, 완료중 테스크 하나가 보인다.

기술 서적 완독 사용자 스토리.. 아직 진행중..;

진행/완료 현황판을 보니 디자인패턴 완독은 진행중이고, OOAD(객체지향) 서적 완독은 완료되었다.

그리하여 목요일날 소멸그래프 진행상황은 [OOAD 0.7]짜리 소멸시켰으므로 4-0.7=3.3 을 그래프에 찍는다. 갈수록 정상 소멸 곡선에서 멀어지고 있다. 이터레이션 망하는 환청이 들리는 듯..

   시범 이터레이션-일주일간의 책쓰기 일정, 금요일   

금요일에 해야될 작업은
헤드 퍼스트 디자인패턴 완독 0.7일
기타 참고서적 읽기 0.6일
책 목차작성 0.5일
이다. 작업 결과..

디자인패턴 완독 0.7일 짜리 하나만 끝냈다. 에고~

금요일 소멸그래프에서는 2.6을 찍는다. (그림은 2.5인데 잘못적었음..)

   시범 이터레이션-일주일간의 책쓰기 일정, 토요일   

토요일날은 친구와 약속 있어서 패스..ㅠ.ㅠ

   시범 이터레이션-일주일간의 책쓰기 일정, 일요일   

일요일날은 친구와 등산 가서 패스.. ㅠ.ㅠ

   시범 이터레이션-일주일간의 책쓰기 일정, 결과   

실패했다. ^ ^;

일주일 실습 결과.. 사용자 스토리 현황판을 깨끗하게 마무리 못했다.

최종 소멸 그래프.. 막장 이터레이션 그래프를 제대로 보여주다.

   정리   

이번 시범 이터레이션의 실패 원인은 내가 추정치를 너무 관대하게 잡았다. 특히 글쓰기 리팩토링같은 테스크는 사실은 하루내내 걸리는 작업인데도 0.4로 매우 낮게 추정치를 잡았다.

나의 '속도'를 제대로 반영하지 못했다. 예를들어 내가 하루종일 이 작업만 할것이 아니고 친구도 만나고 등산도 가고 다른 일도 할수 있다는 것을 생각하지 못했다.

사실 '헤드 퍼스트 소프트웨어 개발' 책에서 설명하는 애자일 프로세스에는 '속도'라는 개념도 적용된다. 예를 들어 내가 이번 5일 이터레이션에서 실제로는 2.5일을 완수 했으니 나의 실제 작업 속도는 0.5(50%)이다.

그렇다면 다음 이터레이션에 추정치를 잡을때 예를들어..[서문작성 1일]을 잡았으면 나의 실제 개발속도는 1일/0.5=2일이 된다.

다음 이터레이션에는 이렇게 일정을 잡아서 잘못된 프로젝트 계획을 정밀하게 고쳐갈 수 있다.

그래서 애자일
프로세스가 급변하는 소프트웨어 개발 업무 요구사항 변화에 빠르고 정확하며 즐겁게 대응하면서 개발하기 위해 개인간 상호협력, 변화, 피드백을 중요시 하는 사상, 방법론, 실천방법의 모음이 될 수 있는 것 같다.

실제 책쓰기의 관점에서 보면.. 이터레이션식으로 뼈대를 완성하고 점점 살을 붙여가다 보면 정해진 기간에 내가 원하는 원고량이 나오지 않더라도 최소한 뼈대는 완성될 것 같다. 최소한 '무'는 자를 수 있을 것 같다.

애자일 화이트보드를 프로그램으로 개발하면 어떨까..특히 이 프로그램을 내가 쓰려는 책에 예제로 쓰면 금상첨화가 될것 같기도 하다. 혹시 잘만드면 이 프로그램을 공개로 배포해보는 것은 어떨까? 아니면 저런 화이트보드식의 프로젝트 관리 프로그램이 벌써 나와있나? 여러가지 유익한 생각이 드는 재밌는 실패였다.

덧1) 사용자 스토리 계획할때 포커게임이라는.. 팀원들과 함께 추정치를 정하는 절차도 있는데 나는 혼자 했으므로 생략 했음
덧2) 이 포스팅을 보면..그럼 애자일 프로세스는 소프트웨어 개발뿐만 아니라 다양한 환경에서도 적용될 수 있다는 것인가?

덧3) 바로 전
수영에서 배우는 글쓰기 드릴 연습 에서 얘기한 고쳐야할 문장이 여기 수도 없이 많이 보이지만 지금 포스팅 하는데 지친나머지 생략함..
덧4) 혹시 이 포스팅을 읽고 잘못되었거나 덧붙일 조언 있으시면 고수 애자일 개발자님들의 댓글 부탁드립니다
.