현재 다니고 있는 회사에 들어온 후로, 꽤 오랜 기간동안 몇 주차 '스프린트'라는 단어를 계속 들으면서 일을 했었다. 근데 스프린트가 뭐냐? 라고 물으면... 딱히 할 말이 없었다(지금 생각해보니 당시에는 스크럼 규칙에 딱 들어맞지 않지만, 그렇다고 스크럼이 완벽하게 아니라고 하기에도 조금 애매한 방식으로 일을 했던 것 같다). 그냥 기간을 정해놓고, 그 기간동안 일하고, 기간이 끝나면 회고 한번 하는 (올해 7월즈음까지 하던)것을 스프린트라고 하는건가... 하고 열심히 개발을 하며 하루하루를 보내던 중, 회사에 새로운 팀원들이 합류 하면서 우리 팀이 일을 더 잘 하려면 어떻게 해야 할지 많은 고민과 회의를 하게 되었다(그리고 이 고민은 많은 시도+실험과 함께 여전히 진행중...).
그 와중에 우리의 '스프린트'에 문제가 많다 라는 이야기가 나왔다. 생각해보니 나는 아직 스프린트가 무엇인지 잘 모르겠더라. 그래서, 회의와 다른 팀원들의 설명을 통해 얻어낸 키워드(스프린트, 애자일, 스크럼)을 자세하게 알아보고 나름대로 정리해보기로 했다.
가장 익숙한 단어인 스프린트(Sprint)를 먼저 찾아보았다.
스프린트의 사전적 의미는 아래와 같다
스프린트(sprint): 육상 경기·수영 경기·스피드 스케이트 등의 단거리 레이스. 또는, 단거리를 전력(全力)으로 행하는 질주(疾走)나 역영(力泳).
단거리 전력질주. 이 정의를 일에 대입해서, 매우 크지 않은 태스크(단거리)를 적당한 기간(너무 길면 안됨! 단거리니까)동안 집중해서 전력질주하듯 업무를 수행하는 것을 스프린트라고 생각하면 되는 듯 하다.
더 자세한 정보를 얻기 위해 스프린트를 검색 했더니 가장 먼저 구글 스프린트가 나왔다. 예전(스프린트가 별로 와닿지 않을 시절)에 읽었던 책에 나온 그 스프린트였다. 여기에서의 스프린트는 뭔가... '오호 이렇게 1주일 만에 아이디어를 모아 프로토타이핑을 할 수 있구나~' 라는 생각은 들었지만 이게 지금 내가 하는 일(이미 의사결정을 거쳐 개발하기로 결론이 난 사항을 소스코드를 작성하여 구현하는 일)에 어떻게 대입할 수 있을까 생각해봤는데 어떻게 생각해야 할지 잘 모르겠다. 내가 뭔가 잘못 알고 있었나...?
다음 키워드에서 뭔가 도움을 받을 수 있으려나 싶어서, 다음 키워드인 애자일로 넘어갔다. 애자일(Agile). 역시 사전적 의미 먼저 살펴보자.
Agile: 민첩한, 기민한, 재빠른, 날렵한
내가 읽었던 글 중 가장 쉽게 애자일에 대한 이해를 시켜준 글을 아래에 첨부한다. 이 글 이후로 연관된 '스크럼', '린 소프트웨어 개발'에 관한 글도 위에 나열한 알쏭달쏭한 단어들을 조금 더 구체적으로 이해하는 데에 도움이 되었다.
위의 글도 읽고, 여러 사람이 써 놓은 글을 읽으며 내가 이해한 바는 아래와 같다.
소프트웨어 개발 초기에 적절히 사용된 시간은 생명 주기(lifecycle)의 후기에 큰 경제적 영향을 줄 수 있다. 다시 말하면, 경제학적 관점에서 소프트웨어 개발의 초기(요구사항 기술 또는 설계 단계)에 발견된 버그는 후기에 발견된 것에 비해 고치는 시간과 돈, 그리고 노력이 몇배는 적게 들기 마련이다. 관련하여 스티브 맥코넬은 그의 저서, "Rapid Development"에서 "요구사항 상의 결함이 구현이나 유지보수 단계에까지 발견되지 않고 남아 있을 경우, 이를 수정하는 비용은 요구사항 기술 시에 수정하는 것에 비해 최소 50배에서 최대 200배까지 드는 것"으로 예측했다. (출처: https://ko.wikipedia.org/wiki/폭포수_모델)
애자일 소프트웨어 개발 선언
우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다. 이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다:
공정과 도구보다 개인과 상호작용을
포괄적인 문서보다 작동하는 소프트웨어를
계약 협상보다 고객과의 협력을
계획을 따르기보다 변화에 대응하기를
가치 있게 여긴다.
이 말은, 왼쪽에 있는 것들도 가치가 있지만, 우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다.
Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. MartinSteve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas
© 2001, 상기 저자들
이 선언문은 어떤 형태로든 자유로이 복사할 수 있지만, 본 고지와 함께 전문으로서만 가능하다.
출처: https://agilemanifesto.org/iso/ko/manifesto.html
여기까지 찾아보니 스프린트는 영 관련이 없는 이야기인가 싶었는데, 그 다음으로 찾아보려 했던 단어인 스크럼(Scrum)에 스프린트와의 연결고리가 있었다.
사전에서 찾은 Scrum과 위키백과에 적혀있는 정의를 가져왔다.
럭비에서 반칙이 있을 때, 양편 선수가 밀집하여 서로 팔을 꼭 끼고 뭉치는 일. 그 사이로 굴려 넣은 공을 자기편 쪽으로 빼냄.
스크럼(Scrum)은 프로젝트 관리를 위한 상호, 점진적 개발 방법론이며, 애자일 소프트웨어 공학 중의 하나이다.
https://ko.wikipedia.org/wiki/스크럼(애자일개발_프로세스)
'애자일 소프트웨어 공학 중의 하나이다' 라는 말은 알아듣겠다. 애자일 방법론을 실천하는 방법 중 하나라는 이야기인 듯. 스크럼에 대한 좀 더 상세한 정보를 얻기 위해 위키 링크와 아래 첨부한 글을 읽어보았다. 아래 링크에는 스크럼 실천 방법에 대한 구체적인 내용이 나와있다.
1편 - https://brunch.co.kr/@insuk/13 / 2편 - https://brunch.co.kr/@insuk/14
다른 사람의 글 - https://medium.com/dtevangelist/scrum-dfc6523a3604
여기까지 얻은 지식을 바탕으로 정리를 해보면,
우리 팀은 애자일 방법론을 스크럼을 도입하여 실천하고 있다. 이번 스프린트에서는 사용자가 자신의 히스토리를 확인하고 편집할 수 있는 기능을 완성하기로 했다.
위와 같은 문장은 아래 문장과 같이 풀이할 수 있겠다.
우리 팀은 변화에 빠르게 대응할 수 있는 소프트웨어 개발 방법에 대한 이론을 프로덕트 오너, 스크럼 마스터, 그 외 팀원들이 매일 짧게 진행상황을 공유하는 등 스크럼 이라고 하는 것에 포함된 룰을 지키며 일하는 것을 통하여 실천하고 있다. 이번 집중해서 일하는 n주(1주 ~ 4주) 동안에는 사용자가 자신의 히스토리를 확인하고 편집할 수 있는 기능을 완성하기로 했다.
오늘의 정리는 여기까지!
감사합니다. 깔끔하게 정리 해주셔서 이해가 수월했습니다.👍👍