Jira와 애자일 12원칙 [코드스테이츠 PMB 16기]
한 주간의 애자일 탐방기, 그 마지막 여정을 애자일의 12원칙과
대표적인 애자일 협업 툴 Jira을 살펴보며 마무리하려 한다.
애자일 방법론은 도입하는 것보다 그것을 유지해 나아가는 것이 훨씬 더 어렵다.
만약 애자일의 방법과 방향을 정하고 나아가는 데에 어려움을 겪는다면, 애자일의 12가지 원칙을 참고하여
자신 혹은 팀에 맞는 애자일의 기틀을 갖추는 것도 좋은 방법이다.
우리의 최우선 순위는 가치(value) 있는 소프트웨어를 초기부터 지속해서
제공(배포)함으로써 고객을 만족시키는 것이다.
초기부터 개발물을 제공하는 것이 Risk도 감소하고 Value가 증가한다.
개발 후반부에 변화하는 요구 사항의 수용을 환영한다.
Agile 프로세스는 변화를 수용하며 고객의 경쟁력을 돕는다.
쏜 곳으로 정확히 날아가는 것도 중요하지만,
움직이는 사물(고객/시장)을 맞추기 위해서는 변화에 대응할 수 있어야 한다.
소프트웨어를 짧은 주기(2주에서 2달까지)로 동작하는 소프트웨어를 배포하되 더 짧은 주기를 선호한다.
여러 개발자가 개발한 SW를 초기부터 조금씩 통합/검증하는 것이 한 번에 통합/검증보다 낫다는 것이다.
예측한 요구사항(계약)을 따르기보다는, 변화하는 고객/시장에 따라 요구사항도 변해야 한다.
만약 상호 검수를 위해 요구사항만 중시한다면 Output은 만족시키겠지만
Outcome은 만족시킬 수 없다.
프로젝트 초반 보다 팀원의 지식은 증가하고 그사이에 고객/시장의 눈높이도 증가한다.
비즈니스 담당자와 개발자는 프로젝트 전체 기간 매일 함께 일해야 한다.
비즈니스 가치가 있는 소프트웨어를 개발하기 위해서는
비즈니스 담당자가 원하는 소프트웨어를 함께 개발해야 한다.
동기가 부여된 개인들 중심으로 프로젝트를 구축한다.
그들에게 필요한 환경과 지원을 제공하고 업무를 완수할 것을 믿는다.
구성된 팀의 목표나 동기가 서로 다르다면 성공적인 결과를 내기 어렵다.
개발팀에 정보를 전달하는 가장 효율적이고 효과적인 방법은 대면 대화이다.
얼굴 보고 대화하는 것이 가장 효과적이고 효율적인 Communication이다.
혹시 그냥 얼굴 보고 이야기하면 될 것을 서로 등지고 문서로 전달하려고 하지 않는가?
작동하는 소프트웨어가 진척의 주요 척도이다.
전체 100%의 모든 기능을 80% 수준으로 완성해도 진척도는 80%이고,
80%의 기능이 100% 완성되어도 진척도는 80%이다.
실행해 보고 배우고 개선하기 위해서 Agile은 후자를 선호한다.
Agile 프로세스는 지속 가능한 개발을 장려한다.
스폰서, 개발자 및 사용자는 일정하게 일정한 속도를 유지할 수 있어야 한다.
Agile은 프로젝트 초반부터 결과물을 내야 하므로 초반에 더 힘이 든다.
하지만 지속적인 성과를 내기에 효과적이다.
우수한 기술과 우수한 디자인에 대한 지속적인 관심은 민첩성(agility)을 향상한다.
바빠서 기술적 개선을 하지 못한다면, 항상 바쁘기 때문에 영원히 뒤처진다.
“나에게 나무 베는 6시간이 주어진다면, 4시간을 도끼 가는 데 사용할 것이다”– 링컨 대통령
팀원의 성장도 프로젝트 성공에 필수 사항이다.
단순성(수행되지 않은 작업량을 최대화하는 기술)은 필수적이다.
단순할수록, 불량을 줄일수록, 미사용 기능을 구현 안 할수록 효과적이다.
중간에서 추가 Value를 주지 않는 Task는 단순 취합이고 낭비이며 허들이 될 수 있다.
최고의 아키텍처, 요구 사항 및 디자인은 자기 조직화 팀(Self-Organization Team)에서 나온다.
의사결정권자가 팀의 밖에 있다면 팀원들은 효과적으로 빠른 의사결정 할 수 없다.
예를 들면, 의사결정권자 없이 실무자끼리 회의를 해봐야 결정할 수 있는 것은 없다.
그분이 만족할까? 이런 결정 내리면 혼나지 않을까? 우리 팀에서는 좋아할까?
그 팀에서 허락해 줄까?로 고민만 하게 된다.
팀은 정기적으로보다 효과적인 방법을 적용해 보고, 그에 따라 행동을 조율하고 조정한다.
Scrum에서는 Sprint가 끝나는 날마다 회고(Retrospective)를 수행한다.
애자일 방법론을 통한 협업이 주가 되어가고 요즘, 지라는 애자일 방법론을 통한 각종 협업과 작업을
아주 효율적으로 관리할 수 있는 툴이기 때문이다.
Jira는 요구사항의 변경에 따라 유연하게 대처할 수 있다.
보드에서 진행되고 있는 스토리의 단계를 자유롭게 변경할 수 있고,
요구 사항에 따라 백로그의 우선순위가 변경되더라도, 스프린트 스토리에 바로 이동시키고
바로 보드에서 작업을 진행시킬 수 있다.
Jira는 스프린트의 기간을 구체적으로 설정할 수 있다.
빠르게 배포하고 싶다면, 빠른 스프린트 기간을 설정하면 되고
신중하게 개발하고 배포하고 싶다면, 스프린트 기간을 여유 있게 설정하면 된다.
Jira의 최대 강점 중 하나, 바로 실시간 협업툴이라는 것이다.
실시간으로 구성원들과 작업 진척도와 작업 현황 등을 살펴볼 수 있으며,
각 종 다양한 툴과의 연계로 협업 범위를 매우 넓고 다양하게 적용 가능하다.
위에서 3원칙에서 말했듯이, Jira는 스프린트 기간을 조율할 수 있다.
다시 말해서 팀의 속성과 환경에 맞게 스프린트를 진행할 수 있다는 이야기이며,
그렇기 때문에 Jira 안에서 지속 가능한 개발 속도를 유지, 반복할 수 있다.
Jira를 이용해서, 스프린트를 무사히 잘 끝마쳤다면 리뷰와 회고를 통해서 그동안의 프로젝트를
되돌아보기도 하고, 다시 행동을 조율하고 조정하며 다음의 스프린트를 계획하고 진행한다.
Jira를 통해서 정기적으로 스프린트를 되돌아보며 성장해 나아가며 효율성을 재고할 수 있다.
참고 문헌 및 아티클