Flying Mate

'애자일'에 해당되는 글 2건

  1. 2008/09/04 하루 4시간 근무 (6)
  2. 2007/10/21 린 소프트웨어 개발에서 말하는 낭비요소 (4)

하루 4시간 근무

소소하지 않은 일상 2008/09/04 22:17 by FlyingMate

투잡 생활을 두 달째 하고 있다. 하루 4시간은 레일스 개발자로, 하루 6시간은 레일스 창업자로. 이건 정말 흥미로운 체험이다. 4시간과 6시간의 경험을 간단하게 적어볼까. 일단 오늘은 4시간.

10시에 출근해 기획팀 개개인과 개발팀 개개인이 돌아가면서 자신들이 어제 한 일과 오늘 할 일을 브리핑한다. 자신이 할 일은 자신이 정하고 우선순위도 자신이 정한다. 개개인의 역할이 커지고 책임도 커진다.

다 함께 수정할 문서는 위키를 활용하고 기획문서 교환과 피드백은 지메일을 포럼 쓰레드처럼 활용한다. 개발팀은 신중한 작업에는 언제든 페어 프로그래밍을 하고 작업량이 많을 땐 인덱스카드에 테스크를 시간 단위로 분할해서 분담해 작업하고 SVN으로 통합한다.

레일스의 MVC는 커뮤니케이션에 유리하다. 커뮤니케이션에 유리하다는 말은 사고하는 것에도 유리하고 결국 개발하는 데도 유리해지니 다 같은 말이긴 한데, 대화를 하다보면 MVC이기 때문에 소통에 이익을 얻는다는 느낌을 받는다.

'그 코드는 컨트롤러에서 자주 쓰이니 모델로 빼는 것이 좋겠다', '그건 뷰에서 일단 테스트한 다음에 컨트롤러로 옮기자' 등 모델에서 할 작업인지 컨트롤러에서 할 작업인지 뷰에서 할 작업인지를 언급하는 것만으로도 내가 말하는 의도가 전달이 된다.

커밋을 할 때면 내가 수정한 파일이 무엇이고 어떤 내용의 작업이었는지 다른 개발자에게 간단하게 브리핑하고, 업데이트할 때 머지된 부분이 있으면 설명을 요청한다. Trac 등을 사용하면 더 정확한 파악이 가능하겠지만 커밋과 업데이트가 워낙 빈번해서 상대방의 코드를 봐야 할 정도로 큰 수정은 없어서 안 쓰고 있다.

페어는 상황에 따라 이 PC에서 할 때도 있고 저 PC에서 할 때도 있는데 두 PC의 개발 도구가 완전히 달라서(압타나 vs. VI) 극과극의 체험을 빈번하게 할 수 있다. 냉탕과 온탕을 왔다갔다 하는 기분? 페어의 가장 큰 장점은 타인의 습관을 관찰하고 학습할 수 있다는 것이다.

상대방의 코딩을 눈으로 따라가면서 의도를 파악하고 잘 파악되지 않는 부분은 질문을 하거나 다른 방식을 제안하기도 한다. 내가 코드를 작성할 때는 '이렇게 하려고 한다'는 의도를 설명하면서 상대방의 제안을 귀담아 듣고 해결책을 잘 모를 때는 힌트를 요청하기도 한다.

문제를 해결할 수 있는 방법이야 수없이 많지만 가장 좋은 방법을 찾기 보다는 합리적이고 괜찮은 꽤 많은 방법 중에 먼저 떠오른 방법을 택한다. 약간의 타협인데 최고의 코드 보다는 합리적인 수준의 코드와 빠른 속도를 따르자는 암묵적인 합의.

미래의 재사용성을 고려해 메서드를 많이 만들어내기 보다는 가급적 쉽고 단순하게 구현한 뒤 그 코드를 2번 이상 똑같이 반복해야 할 상황이 왔을 때야 메서드로 뽑는다. 모듈화는 코드 재사용을 쉽게 하고, 잘 설계되었다는 인상과 프로그래머로서의 뿌듯함을 주지만, 타인이 코드를 이해하는 데 시간을 많이 걸리게 한다.

언젠가 또 사용하게 될 것 같다고 생각해서 미리부터 설계에 머리를 싸매기 보다는 가장 중요한 기능을 가장 빨리 구현할 수 있는 방법으로 코드를 작성하고, 같은 코드를 여러 번 반복하고 앉아있다는 자각이 일고 나서야 점차 코드를 리팩토링해 나가는 게 좋다고 생각한다.

4시간은 번개같이 지나가지만, 4시간이 지나놓고 보면 만들어 놓은 결과물이 결코 작지 않다. 6명 정도의 작은 팀이고 고개만 돌리면 기획팀과 개발팀이 소통을 할 수 있다. 꼭 필요한 커뮤니케이션을 30분 이내로 하고 간식을 자주 먹는다(중요). 기획팀이든 개발팀이든 하루 동안 많은 일을 한다.

하루동안 내가 작업할 수 있는 시간이 8시간이라면 일단 마음이 느긋해진다. 음악을 듣고 웹툰을 본다. 누군가 강제하지 않는다면 30분 단위로 테스크를 분할하게 되지는 않을 것이다. 아마도 오전에 할 것, 오후에 할 것, 퇴근 전까지 할 것 정도로 나누겠지.

오전 2시간 오후 2시간 사이에 식사 시간이 한 시간 있기 때문에 체감되는 시간은 더 빠듯하다. 화장실 가거나 물 마시는 시간 이외엔 따로 쉬는 시간도 안 챙긴다. 바빠서가 아니라 쉬고 싶다는 생각을 할 틈이 없을 정도로 높은 집중력을 유지할 수 있는 짧은 시간이다.

오늘은 처음으로 초과근무를 해서 총 8시간을 앉아있었는데 5시간 째 이후로는 확실히 집중력이나 작업속도가 절반 이하로 떨어졌다. 일한다는 느낌 보다는 버틴다는 느낌이 들었다. 알찼던 하루가 도로 풀려버리는 듯한. 보통의 개발자들이 이런 느낌으로 일하겠지 싶었다. 다음 글엔 '6시간' 이야기.

TRACKBACK :: http://flyingmate.net/trackback/52 관련글 쓰기

  1. Subject: 성훈의 생각

    Tracked from quezina's me2DAY  삭제

    말할 수 없는 비밀. 보충제 끊고나서 운동 잘 안 되네. 은하수를 여행하는 히치하이커를 위한 안내서 2권. 스포어 육지로. 아샬님의 군더더기 없는 레일스 코드 보고 감탄. 두 개의 서비스. 월R 킹왕짱. 오랜만에 UI만 개발. 보라매공원으로 조깅하러. 리만 안습.

    2008/09/16 18:44

댓글을 달아 주세요

  1. niceThink  댓글주소  수정/삭제  댓글쓰기

    오! 4시간 근무라,.
    12시간씩 일하면 역시 업무 능률이 현저하게 떨어지는 게 맞네요..

    힘듭니다.

    2008/09/04 23:36
  2. 정의의소  댓글주소  수정/삭제  댓글쓰기

    바쁘고 열심히 생활하시는군요.. .잘 지내시죠? ^^

    2008/09/05 17:05
  3. 일렉트릭아이즈  댓글주소  수정/삭제  댓글쓰기

    좋은 글을 맛있게 잘 쓰시는 군요. 부러워요.
    또 저보다 젊으신데 저보다 더 바쁘고 알차게 지내시는 모습을 보면
    저 자신에 대한 위기감을 느끼기도 하네요.

    저의 팀도 오전에 한일과 할일을 회의하고 SVN으로 통합하고 , Trac도 활용해요.

    근무시간은 오전 9시 부터 저녁 6시까지 점심시간 빼고 8시간...

    4시 이후에는 정말 집중력이 떨어지는 건 사실이에요 ㅎ

    2008/10/17 17:35
    • FlyingMate  댓글주소  수정/삭제

      맛있다는 표현 감사드립니다.
      저 역시 제가 쓴 포장된 글들을 보고
      위기감을 느끼곤 합니다 ㅎ

      짧은 근무 시간은 분명 집중도를 유지해주지만
      팀과 소통하고 함께 호흡할 시간은
      분명 줄어들기 때문에 장단이 있는 것 같습니다.

      개발자들 입장에서는 기획자들 얼굴 덜 보는게
      마음이 더 편할 수 있지만
      전체 프로젝트의 관점에서 보자면
      소통할 타이밍이나 소통 채널(도구, 방식)에 대해
      더 많은 고민이 필요한 것 같아요.

      2008/10/19 15:22


소프트뱅크 손정의 대표님에 관한 책을 몇 권 사러 가까운 대형 서점에 갔는데, 모두 재고가 없었다. 그래서 대신 '린 소프트웨어 개발'을 집어왔다. 집에 이미 사용자 스토리, 익스트림 프로그래밍, 테스트 주도 개발, 소프트웨어 프로젝트 생존 전략, 프로페셔널 소프트웨어 개발, 실용주의 프로그래머 등 읽다 만 애자일 책들이 수두룩 한데 거기에 또 한 권 추가하려니 죄책감이 들었지만 책을 손으로 만져보고는 당장 보고싶은 욕망에 들고올 수밖에 없었다.

좋은 품질의 제품을 적은 비용으로 더 빠르게 만드는 것, 이것이 애자일과 린이 추구하는 것인데 사실 이것은 모든 프로젝트, 모든 기업들이 추구하는 바이기도 하다. 애자일이나 린이라는 단어를 모르는 조직이라도, '즐거운 효율성'에 집중하다보면 몇 가지 좋은 방법들을 발견하게 되고 적용하게 된다.

이미 그런 고민을 적극적으로 하고있는 조직은 애자일 프렉티스, 린 개발, 익스트림 프로그래밍에 관한 체계적인 지식을 접했을 때, 자신들의 방법을 더욱 효율적으로 다듬을 수 있고, 아직 발견하지 못한 다른 지침들 역시 적극적으로 도입할 수 있게 된다. 그리고 자신들이 발견한 방법이 좋다는 것을 체감하면서도, 관습적인 방식과 달라서 느꼈던 소외감을 날려버릴 수도 있다.

린 방법론에서는 프로젝트에서의 낭비 요소를 7가지로 분류하는 데, 가장 가시적이어서 가장 먼저 개선할 수 있는 요소가 가외 프로세스와 직무 전환, 그리고 이동이다. 가외 프로세스의 대표적인 예는 '불필요한 문서화'인데, 이 '불필요'라는 기준의 범위가 일반적인 통념보다 넓다.

가외 프로세스를 제거하기 위해 우선 견제해야 할 것은, 기획자가 혼자 앉아 신나게 기획서를 그리는 상황이다. 이는 소프트웨어, 웹, 게임 등 업계를 가리지 않고 발생한다. 자신이 만든 수북한 기획서와 빼곡한 명세사항을 보면서 기획자는 성취감을 얻고, 자신의 기획에 이런 저런 토를 다는 개발자들이 장애물로 느껴지면서, '개발자들은 밀어붙이면 다 하게 되어 있다'며 기획팀장이 보태주기까지 하면 아주 멋진 스파게티 프로젝트가 된다.

빼곡한 기획서를 '증거'삼아 '여기 분명히 명시되어 있지 않느냐, 왜 이것을 빼 먹었냐'고 개발자들을 밀어붙이기 시작하면, 반대의 상황이 되었을 때 '그런 것 하나 예측 못해서 기획을 수정하느냐'라는 감정 실린 반격을 받아내야한다. 어떻게든 마무리는 되겠지만 이제 둘 사이의 골은 깊어졌고 조직 전체의 개선 보다는 각 팀간의 정치적 서열 관리가 더 중요해지게 된다.

둘 사이가 견제 관계가 아닌 협력 관계가 되려면, 문서 작업을 줄이면서 잦은 대화와 가까운 거리, 그리고 서로의 영역에 대한 깊은 이해를 지향해야 한다. 문서는 꼬투리잡는 증거가 아니라 소통과 기록(잊지 않기 위한) 도구가 되어야 한다.

세부 사항은 PPT 기획서 보다는 문장 템플릿을 갖춘 사용자 스토리와 개발에 곧바로 이용될 테스트 코드로 작성되어야 한다. PPT는 기획서 작성을 위해서 보다는 인터페이스를 '그려보는' 용도로 이용한다. 이런 방식은 세밀한 전문화 보다는 포괄적인 이해와 지속적인 학습을 요구한다.

자신이 얼마나 전문적인지를 표출하는 데 시간을 쓰지 말고, 전체 프로젝트를 성공적으로 끝내서 더 많은 돈을 벌어들이는 데 집중해야 한다. 린에서 사용하는 세련된 문장으로 바꾸면, '제품의 가치를 향상'시키는 데 집중해야 하는 것이다.

또 다른 낭비 요소로 '직무전환'이 있는데, 한 사람, 한 팀이 동시에 여러 개의 프로젝트에 관여했을 때 낭비가 발생한다는 이야기이다. 잦은 직무전환이 효과적인 경우는 단순노무와 같이 반복적이고 개선이 불필요한 일이다. 지식노동에는 집중할 수 있는 충분한 시간이 필요한데, 여기 저기 투입되는 경우 집중력과 프로젝트에 대한 애착을 빼앗겨 효율적으로 사고하기 보다는 단순 반복적으로 사고하게 된다. 린에서는 하나를 끝내고 다른 것을 시작하라고 조언한다.

'이동'은 사람의 이동과 산출물의 이동으로 나뉘는데, 사람의 이동에는 공간적인 거리감 뿐만 아니라 심리적인 거리감도 포함될 수 있다. 거리를 이동하는 데서 발생하는 시간 낭비 뿐만 아니라 이동과 업무의 전환 과정에서 발생하는 집중력의 낭비도 무시할 수 없다. 산출물의 이동은 가외 프로세스에서도 언급되었던, 내용 전달을 위한 문서화 작업, 그리고 그 문서를 이해시키거나 이해하는 과정에서의 시간/노력 낭비를 이야기한다.

공간적 거리, 심리적 거리, 소통의 거리를 줄일 수 있는 방법 중 내가 추구하는 방향은 인력 규모를 줄여서 소수의 인력만 가지고 '제품의 가치를 향상시키는 것' 자체에 집중하는 것이다. 많은 양의 지식이 발신자의 머릿속에 남아 있어서 수신자에게 전달되지 않는데, 그 문제를 세밀한 문서나 잦은 커뮤니케이션으로 해결하는 것 보다는 수신자가 발신자의 지식 습득 과정을 똑같이 밟게 하는 것이 낫다고 본다.

점차 수신자와 발신자의 역할 분담을 제거해 궁극적으로는 한 사람이 하나의 프로젝트를 담당하게 되는 것이다. 애자일의 효율성 추구는 '지속적인 개선'을 전제로 한다. 개선의 대상을 자신의 파트에 국한시키지 않고 프로젝트에 필요한 모든 지식, 비즈니스에 필요한 모든 지식으로 확장해보는 것은 어떨까. 내가 느끼기엔, 포괄적인 지식 습득은 자신의 전문 분야를 더욱 깊게 이해하는데 큰 도움이 된다. 자신의 분야만을 깊이 파려고 노력하는 것보다도 말이다.

TRACKBACK :: http://flyingmate.net/trackback/26 관련글 쓰기

  1. Subject: 린 소프트웨어 개발

    Tracked from The note of Legendre  삭제

    린 소프트웨어 개발을 읽었습니다.[footnote]원서는 "Lean Software Development"입니다.[/footnote] 도요타라는 자동차 회사에서 적용하고 있는 작업 방식(혹은 도요타 생산방식이라고 알려진)에 대해서는, 많은 경영서들에서 언급하고 있었고 이런 방식이 소프트웨어 개발에 적용될 수 있다는 점에서 이 책에 관심을 갖게 되었습니다. 책의 부제는 "애자일 실천 도구 22가지"인데, 이 부제대로 책은 각 도구를 기준으로 하여 차분..

    2007/10/27 01:43

댓글을 달아 주세요

  1. 정의의소  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 오랜만?에 답글 다네요.. 처음인가?
    정리 잘 해 주셨네요. 잘 읽고 갑니다.
    린 소프트웨어 개발을 읽고 느낀 점이 많아 회사네 르네상스 클럽을 진행하고 있습니다. 변화의 씨앗이 되고 싶은 분들과 그 실천으로 회사에 희망을 피워보자는 사람들이 모였습니다. 아래에서의 변화가 진정한 변화라 생각합니다.
    이제 어느 정도 계획도 정리 된 것 같네요... 어떻게 실천하고 어떤 난관에 부딪치고 어떻게 극복하고 양보(포기?)하는지 블러그에 정리해 볼까 합니다. 지켜봐주세요..ㅎㅎ

    2007/10/21 23:21
    • FlyingMate  댓글주소  수정/삭제

      정의의소님 와주셔서 감사합니다 ^-^
      저번 토론회에서도 경험과 의지가
      풍부하신 분이라고 느꼈었는데,
      이렇게 본격적으로 실천하게 되셨다니
      열렬히 응원해 드리겠습니다!
      움직이기 쉽지 않은 회사이지만
      정의의소님의 맷집(?)이라면 분명
      크게 흔들 수 있을 것 같아요~ 화이팅입니다!

      2007/10/22 10:42
  2.  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

    2007/10/24 17:50

1 
Flying Mate

공지사항

카테고리

분류 전체보기 (47)
소소하지 않은 일상 (47)

믹시