블로그 이미지
소프트웨어 개발 경험을 공유하고 싶은 재밌게 사는 소프트웨어 엔지니어입니다^^

카테고리

Chungha Story (41)
Agile Experience (22)
My Family (0)
Life Style (7)
Programming (8)
Android (2)
Total
Today
Yesterday

달력

« » 2024.3
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

최근에 올라온 글

최근에 달린 댓글

지난주에 현업과는 관련이 없어 보이는 NHN에서 주관하는 개발자 컨퍼런스에 참석하였습니다.
업무에 직접적인 관련이 없다보니 영감이 늦게 밀려드는가 봅니다. 이제서야 회고를 해봅니다. (발표 내용에 대한 후기는 없답니다.ㅋ)

NHN은 어디로 가고 있나?

Deview가 끝나고 난 느낌은 "NHN은 이렇게 잘 하고 있구나" 정도였습니다. 솔직히 그 이상도 이하도 아니었습니다.
후기 경품이 탐이 났지만 딱히 쓸말이 없었습니다. 싸이트 가면 동영상이 모두 공개 되어있는데 후기를 쓰자니 거시기 했습니다.
그러던중 문득 이런 생각이 들었습니다. 왜 키노트 스피치를 좀 지루할 정도로 구구절절히 길게 하였을까? 
제가 추측한 이유는 NHN이 가고 있는 목표에 대해서 진심으로 구구절절히 공유하고 싶었기 때문입니다.
키노트 스피치가 끝난 후에 지인중 한분이 그러더군요. "그냥 애자일 한다고 하면 되지 않나?"
분명 NHN에서 하고 있는 활동들은 애자일스러웠습니다. 하지만 애자일이 NHN의 목표가 아니기 때문에 궂이 애자일을 한다고 할 필요가 없었던 것이라고 생각합니다.
이러한 관점으로 Deview의 강연들을 생각해보니 NHN이 가고자 하는 곳이 어디인지가 보이더군요.^^ 
그곳이 어디인지 제가 자세히 기술할수는 없지만 분명한건 NHN 내부 개발자만을 위한 천국은 아닐겁니다.

궂이 애자일 조직이라고 표현할 필요가 없다.

가끔 애자일을 짝 프로그래밍이나 테스트 주도개발, 스크럼등의 Best Practice로 여기시는 분들이 많습니다.
혹은 갓 입사한 회사나 팀에서 애자일을 모른다고, 애자일 팀이 아니라고 실망하는 신입 개발자분들도 있습니다.
수단과 목표가 약간 혼동되는 부분이라고 생각합니다. 애자일도 목표는 아니라고 생각합니다.
꼭 개발조직에 애자일이나 RUP, Waterfall, CMMI 등의 정체성이 명시적으로 존재해야 할까요? 그런건 정치판에서도 지겨운데...
우리가 원하는건 애자일 조직이 아니라 행복하게 개발할 수 있는 매우 효율적인 개발 조직일겁니다. (정확히 말하면 제가 원하는 것입니다^^)
물론 조직에 맞는 애자일스런 Practice를 만들어나가면 좀더 빠르게 그런 조직을 만들수 있을것입니다.
제가 말하고 싶은건 뭘 하면 애자일이고 안하면 애자일이 아니다 이런게 중요한게 아니다라는 것입니다.^^;;
개인적으로 '애자일'이란 표현보다 '실용적인'이란 표현이 더 좋습니다.ㅋ
이런 점에서 NHN의 발표에서 '애자일'이란 용어를 쓰지 않은 것은 현명한 선택이었다고 생각합니다.

기대되는 NHN의 행보

얼마전까지만 해도 NHN은 뒤뚱거리는 거대한 한국의 포털 기업으로만 생각했었습니다. 개발에 열정을 가졌던 친구가 NHN의 신입사원으로 입사한 후에 개발의 열정이 식어버린... 그냥 포털 대기업으로만 생각했었습니다.
하지만 Deview를 보면서 생각이 조금 바뀌었습니다. 열악한 한국의 개발 환경을 불평, 불만만 하는 사람들이 변화될 수 있도록 기여하는 기업이 되고 있다고 생각합니다. (우리 회사도 그런 기업이 될겁니다!^^)

스스로 바뀌어야 환경도 바뀝니다.^^

이상 짧은 회고였습니다;... 회고라기 보다는 주저리주저리 떠든;;ㅋ



NHN Deview 2010 동영상 다시 보기 및 자료 : http://deview.naver.com/2010/courses.nhn
Posted by 윤청하
, |
현재 제가 속한 팀은 아직 애자일 프랙티스를 전파하기에는 이른 시기입니다. 
고민 끝에 (사실 실제 고민은 몇초?;) 점진적 설계와 구현을 해보는것은 어떻겠냐고 같이 일하시는 윗분께 건의했습니다.
길지않은 토론 끝에 UML로 설계를 하고 이터레이션은 고정시키지 않는다는 전제하에 점진적 설계와 구현을 해보기로 했습니다.
제가 정한 한 이터레이션에서 해야할 일들은 다음과 같았습니다.
  1. 해당 이터레이션에서의 요구사항을 Use-case Diagram으로 작성 및 리뷰 (mandatory)
  2. Activity Diagram 및 Collaboration Diagram은 개인적으로 작성 (optional)
  3. 섬광탄 구현 (optional)
  4. Class Diagram 및 Sequence Diagram 작성 및 리뷰 (mandatory)
  5. 설계에 맞게 구현 (mandatory)
  6. 구현에 대한 짧은 회고 및 피드백으로 설계 수정후 구현 수정 - 반복 (mandatory)
  7. 데모 후 다음 이터레이션 (mandatory)

결과물은?
  • 프로젝트 기한 : 예상보다 1주일 정도 먼저 끝났음
  • 결과 바이너리 데모 : 원했던 기능 완료, 어느정도 안정화 됨
  • 설계 문서 : Use-case Diagram 1장, Class Diagram 3장, Sequence Diagram 3장 - 소스코드와 99% 일치

회고
  • 기존의 관행을 깨보았음 (사실 작은 프로젝트라 큰 의미는 없음)
  • UML 설계를 통한 설계 리뷰 및 공유는 정말 괜찮았음
  • 이터레이션을 고정시키는 것에 대해서 반감이 있는 경우에는 살짝 빼도 무리가 없어보임
  • 기존의 관행과의 협상에서 줄건 주고 얻어올건 얻어와야 함 (이렇게 안하면 애자일이 아니다 라는 고정관념을 버려야함
  • 섬광탄 구현이 UML 설계에 많은 도움이 되었음

결론 : 
나는야 행복한 개발자~
Posted by 윤청하
, |
오늘 가산에 있는 LG전자 MC연구소에서 Agile Gathering이라는 제목으로 세미나가 있었습니다. 
여차저차 허락을 받고 점심도 안먹고 가산으로 넘어갔습니다. 

리더쉽은 자신이 선택하는 것

첫번째 시간은 애자일 컨설팅의 김창준 대표님이 애자일 적용(혹은 반대)를 위한 조직에서의 리더쉽에 대한 내용으로 워크샾을 진행하셨습니다. 워크샾은 시뮬레이션 형태로 진행되었습니다. 참석자들중 몇분은 관찰자의 역할을 맡고 나머지는 한 회사의 구성원(사장,이사,팀장,사원)이 되어 시장(market)의 요구사항에 맞는 시제품을 개발하는 것이었습니다. 처음에는 어색했지만 나중에는 완전히 몰입해서 정말 제품을 만들어야 한다는 중압감이 생겼습니다+_+! 
약 1시간 넘게 시뮬레이션을 진행한뒤에 피쉬보울 방법으로 회고를 진행하였습니다. 그중에서 가장 인상에 남았던 것은 김대표님이 말씀해주신 매니저와 리더의 다른점, 리더쉽의 본질, 리더쉽의 4가지 유형이었습니다.
매니저는 조직에서 정할 수 있지만 리더는 정해줄 수 없다. 리더는 지휘 여하를 막론(경영진에서 신입사원에 이르기까지)하고 누구나 될 수 있다. 단지 우리는 리더가 되는 것(혹은 리더쉽을 발휘하는 것)을 선택하는 것이다. 단지 안할뿐..
리더쉽은 모든 사람이 창의적으로 문제해결에 기여할 수 있게 환경을 개선하는 것이다. 이에는 4개지 유형이 있다.
motivation leadership, organization leadership, innovation-idea leadership, jig leadership...
애자일에 관심있다고 하는 사람들이 모여서 회사 제품 개발 시뮬레이션을 해도 잘 안되기는 마찬가지였습니다.
중요한건 자신이 현재 상황에서 리더쉽을 발휘할 것인지 아닌지를 선택하는 것입니다.
(다들 가만히 있는데 먼저 나서서 행동을 취하는 것도 리더쉽 입니다. (jig leadership))

짝프로그래밍, 잘하면 고효율~ 못하면 가문의 역적

두번째 시간은 LG CNS의 채수원 과장님이 짝프로그래밍에 대해서 발표해주셨습니다. driver-navigator 라는 패턴을 이용하여 짝프로그래밍 도입하는 것에 대해서 말씀해 주셨습니다. 물론 짝프로그래밍의 장단점, 사례도 말씀해 주셨습니다.
개인적으로 짝프로그래밍을 좋아하지만 사용가능한 분야 혹은 짝이 한정되어있다고 생각합니다. 
정말 필요한 경우에, 고효율이 예상되는 경우에만 사용하는 것이 바람직하다고 생각합니다.

스크럼 vs 칸반

세번째 시간은 LG전자의 MC연구소에 계시는 분이(이름이 기억..안..나..요;;..ㅠㅠ) 스크럼과 칸반에 대해서 아주 이해하기 쉽게 설명해 주셨습니다. 칸반은 아주 심플하게 다음의 3가지를 만족하면 됩니다.
  • Visual Card : 비쥬얼은 필수!
  • Limit Work-In-Progress : 한 스텝에서 동시에 진행될 수 있는 백로그를 제한
  • Measure Lead-time : 지속적으로 리드타임을 측정하여 최소가 될수 있도록 함
특히 칸반은 수시로 인터럽트(QA, 유지보수등)가 발생하는 개발팀에서 유용하게 사용되어 어질수 있다고 생각했습니다. 
즉, 스크럼과 칸반을 개발팀의 업무 특성에 따라 적절히 조합해서 사용한다면 좋을 것 같습니다.

회고

회고에 참석하지 못했습니다.ㅠㅠ 반성중.. 
김창준님이 진행하신 시뮬레이션에 대해서 좀더 자세한 설명이 있었으면 했습니다. (왜 손을 잡는지, 감옥의 역할은 무엇인지 등..)
색다른 경험이었고 즐거웠습니다. 근데 뭘 했다고 이렇게 졸립죠...ㅠㅠ;;
Posted by 윤청하
, |

전의 상실 후의 스프린트

약 2달전부터 7명의 팀원중 4명이 매우 중요하고 긴박하게 준비되는 프로젝트에 투입되었습니다. 엎친데 덮친 격으로 프로젝트 예상 일정이 크게 틀어져서 프로젝트 맴버들은 야간 작업과 주말 작업에 시달려야 했습니다. 프로젝트는 어느정도 마무리되었지만 4명의 팀원들은 사기가 바닥으로 떨어졌습니다. 물론 나머지 3명의 팀원들의 사기도 좋지 못했습니다.
그 후 팀장님께서는 여기서 고삐를 늦추면 다들 마이너스 사기로 돌아설 걱정에 스프린트를 진행하셨습니다. 물론 예상 작업량도 줄였고, 휴가도 넉넉히 할당하였습니다. 그리고 어제 그 스프린트가 종료되었고, 팀내 회고를 진행하였습니다. 이번 스프린트의 결과는 처참했습니다. 제대로 끝난 스토리가 없었죠.ㅠㅠ

비난 없는 회고 : 무엇이 잘못되었을까?
  • 스프린트 준비가 없었다
    다들 사기가 저하된 상태였던지라 스프린트 백로그에 대한 준비가 미흡했습니다. 따라서 초기 예측도 크게 빗나간 스토리가 많았습니다.
  • 얼렁뚱땅 데일리 미팅
    우리는 스프린트 백로그에 대응하는 스토리와 이를 세분하여 데일리 미팅에서 사용하는 테스크로 관리합니다. 준비가 없다보니 테스크는 미리 정의 되지 못했으며, 데일리 미팅에서 테스크를 즉석으로 마련해 내는 진 풍경이 발생했습니다. 따라서 스토리의 남은 예상 시간은 갱신되지 못했으며, 번다운 챠트도 엉망이 되었습니다. 테스크 관리가 제대로 이루어 지지 않아서 협업이 어려웠고 지연되는 스토리가 대거 등장하였습니다.
  • 스토리 및 테스크의 정의 미흡
    스토리와 테스크에는 종료 조건(데모 방법, 리뷰 방법, 테스트 방법 등)이 명시되어야 하는데 대부분 대충 제목만 적는 경우가 많았습니다. 또한 테스크의 크기는 큰 경우가 많았습니다.(1일~3일 단위) 이번 스프린트에서 리뷰도 거의 이루어 지지 않았으며, 데모를 한 스토리는 없었습니다.

다음 스프린트에서 더 잘하려면 무엇을 해야 할까?

우리는 이번 스프린트를 거울 삼아 다음 스프린트에서 어떻게 하면 더 잘할 수 있을지 논의 하였습니다. 팀원들은 각자 다음 스프린트에서 꼭 했음 하는 것과 꼭 하지 말아야 할 것등을 적어서 서로 공유하였습니다. 많은 이야기가 오갔지만 우리는 예상되는 효과가 좋을것 같고 지키기 쉬울 정도로 명확한 규칙을 몇개 선정하였습니다.
  • 스토리의 남은 예상 작업일을 매일 갱신하자
    데일리 미팅에서 스스로 남은 예상 작업일을 갱신하는 작업은 긍정적인 부담감(혹은 책임감)을 제공하는 요소중에 하나입니다. 또한 정확한 번다운 챠트를 그릴수 있게 합니다.  
  • 테스크의 크기는 4시간 단위 이하로 제한한다
    테스크의 크기가 커질 경우 테스크의 정의를 대충 할 수 있다는 경험을 하였습니다. 조금 더 명확한 가이드 라인을 제시함으로써 테스크를 명확하게 나눌수 있으며, 나누어진 테스크는 협업을 쉽게 할수 있게 합니다. 단, 스프린트 미팅에서 잘게 나누어진 테스크를 산출하기 어려우므로, 준비 상태에 있는 테스크의 크기는 제한하지 않되, 테스크를 진행하기 위해서는 위의 제한을 지켜서 테스크를 산출해야 합니다.
  • 테스크에 테스트 방법을 명시하자
    테스크의 종료조건 중 테스트 방법을 명시함으로써 미리 테스트 환경을 고려하여 테스크를 진행할 수 있게 합니다. 우리팀의 업무 특성상 타 팀과의 연동이슈가 많습니다. 따라서 테스트 환경을 미리 고려하지 않는다면 테스크가 종료되더라도 정확하게 테스트되지 않을 수 있었습니다.
  • 스프린트 사이에 2일간 종료 및 준비기간을 갖자
    그동안 스프린트 사이에 여유가 없어서 데모, 회고, 준비등을 잘 할 수 없었습니다. 스프린트 종료후 하루는 데모 및 회고를 함으로써 스프린트 종료를 명확히 하고, 다음 하루는 다음 스프린트를 위한 스프린트 백로그 공유 및 테스크 산출을 함으로써 스프린트 진행에 착오가 없도록 할 것입니다.

정리

어떤 방법을 사용하던 지속적으로 신경쓰고 개선하지 않으면, 습관화 또는 형식화 되기 쉽습니다. 우리 팀은 스크럼이라는 도화지에 우리 나름의 방법을 하나씩 그리고 있습니다.
Posted by 윤청하
, |

토요일 오후 2시, 명동 LG CNS 본사 2층 대회의실에서 xper 10월 정기모임이 진행되었다.
나는 청하 쥬니어 탄생 준비로 미뤄왔던 xper 정기모임에 처음으로 참가하였다.

LG CNS 건물 1층에서 어떻게 들어가야 할지 방황하던 다른 두분과 함께 모임 장소에 도착했을때에는 10명 정도 되는 분들이 자리에 계셨으며, 발표를 위한 셋팅 준비를 하고 계셨다.
일단 조촐하게 그룹을 만들어서 자기소개를 진행하고, 이런 저런 얘기를 나누었다.
처음 참석하는 모임이고 오프라인으로 아는 분들이 한명도 없어서 내심 긴장했는데, 편안한 분위기 속에서 진행되었고, 다른 분들도 딱히 서로 잘 아는 것 같지 않아서 좋았다^^;;;

첫번째 발표, "존재하기와 발전하기 - 변신철"
우리의 일상은 엉망진창이다.
TDD는 명료하며, 현재 엉망진창이라는 것을 확실히 알려준다.
짝프로그래밍은 같이 바라보는 것이다. "너 봤니? 나도 봤어" 같이 하면서 성공하게 되면 하이파이브를 하게 되고 매우 신나게 된다.
비난 받지 않는 회고를 진행하였다. 팀원들은 비난받지 않을 권리와 경청해야할 의무를 가진다.
비난 받지 않기 때문에 개인적인 일까지 회고한다. "웹서핑 시간이 많아졌어요. 이유는 핸드폰을 사야해서..ㅋ"
애자일은 우리를 우리(짐승을 가두어 기르는 곳)에 가둔다. 화를 낼수 없다.
혁명은 실천법(practice)나 개발 프로세스로 쉽게 얻을 수 있는 것이 아니다. 노력하고 힘들어져야 변화할 수 있다.
소통하기 어려운 팀원이 있었다. 드디어 소통하게 되었다. 그것은 내가 힘들어지고 바뀌게 되어서 된일이었다.
애자일이 실천법으로만 설명되지 않았으면 좋겠다.
변할만 할때 변화한다. 은탄환(silver bullet)은 없다.
애자일은 사람과 관련된 일이다. 켄트백왈 "프로그래밍은 사람이 하고 사람에 의해 사람을 위한 것이다.(맞나?^^)"
TDD가 가장 쉬었다는 변신철님, TDD를 실무에 적용하기로 마음먹고 실천한지 몇개월이 지났지만, 아직도 TDD를 자주 빼먹는 나로써는 매우 공감할 수 없는 표현이었다.ㅠㅠ
변신철님은 TDD를 통해 프로젝트를 성공적으로 이끄셨다고 한다. 개발 플래폼에서 완료된 프로그램을 상용 플래폼으로 이식할 때에 작업이 한번에 이루어졌으며, 그 후 3년간 개정 없이 상용 서비스 중이라고 한다. 일어나서 박수라고 치고 싶었다.ㅠㅠ

질문/답변 시간에 나왔던 내용들..
애자일 팀을 구분할 수 있는 특징은 무엇인가요?
-  야근을 안한다.(진심으로 부럽다ㅠㅠ) 팀장이 소리치지 않는다. 벽에 무언가 많이 붙어있다.
요구사항, 품질, 팀의 밸런스는 어떻게 조절하나요?
- 품질이 가장 높은 우선순위를 가진다. 잦은 릴리즈 주기로 높은 품질을 제공했더니 고객이 스스로 요구사항을 줄였다.
- 팀장이 고객 옆에서 계속 질문하며 일한다. (질문은 정확히 기억나지 않음)

휴식시간에 있었던 김창준님의 부연설명 (어떤 내용에 대한 부연설명이었는지 까먹었음ㅠㅠ)
위험을 어떻게든 줄여서 애자일을 조직에 적용하려 한다면, 성공하기 어렵다. 책임을 지고(위험을 감수하고) 애자일을 적용해야 성공할 수 있다. (노출, 다치기 쉬운, vulnerable)
어떻게든 쉽게, 위험 없이 애자일을 적용하려고 했던 내 지난날을 반성했다ㅠㅠ

두번째 발표, "캐빈문화 소개, 즐거운 일터 만들기 - 김종욱"
캐빈문화란, 다음 뷰 서비스를 개발하기 위해 기획자, 개발자, 디자이너 등이 한군데 모여 팀을 이룬 것이다. (장소가 옥상이라 캐빈이라 지은듯.. 창문 밖으로 한라산이 보인답니다ㅠㅠ부러우면 지는거다..)
우리는 포스트잇으로 테스크 관리를 한다.
각 테스크는 추정시간이 따로 없으며, 4시간단위로 쪼갠다. (갯수로 파악한다 - 한눈에 파악될듯..)
현재 프로젝트 상황은 포스트잇을 백로그/ToDo/Doing/Done/협의중 으로 분류하여 화이트보드에 붙여서 표현한다.
백로그로 파악되지 않는 일상 업무를 양지로 끌어올리기 위해 노력했다.
주간회고를 통해 구성원들이 더 많은 고민을 하게 만들었으며, 더 많이 공개하도록 하였다. (도움, 칭찬, 격려, 비폭력대화, 성향별대화)
도반(불교, 함께 도를 닦는 벗)을 얻는 것이 중요하다.
애자일 문화를 다른 팀까지 전파시키는데에는 조직적인 한계가 있다. (새로운 회사를 차리는게 빠를수 있다.)
직군은 할일을 제한시키며 많은 시도를 하기 힘들게 한다. 직군 파괴를 해야한다.
여유(다음의 ctime)를 주어서 더 많은 시도를 할수 있도록 해야 한다.
업무를 포스트잇과 화이트 보드로 하는 것은 현재 우리팀이 하고 있는것과 다르지 않았다. (기분 좋았다^^)
직군 파괴는 정말 괜찮은 아이디어 같았다. 현재 우리 회사도 직군을 더 세분화 시키려고만 하고 있다.ㅠㅠ

개인 회고
  • 그동안 실패했던 TDD를 다시 제대로 적용해야겠다는 다짐을 하게 되었다.
  • 애자일 문화가 전파되기 위해서는 더 많은 도반이 필요함을 느꼈다.
  • 기존의 세분화된 조직에서 애자일 문화를 전파시키는데는 한계가 있다는 것은 아쉽다.
    정말 방법은 없는 것일까?
    내가 애자일 팀으로 이직을 하던지, 새로 회사를 차리던지 하는게 유일한 방법일까?
  • 애자일과 야근과의 관계를 명확히 알수 있어서 좋았다.^^
  • 변화하고 싶다면, xper 정기 모임을 추천한다! (xper 메일링 리스트)

Posted by 윤청하
, |