Agile이란?

완료됨

Agile(민첩)은 소프트웨어 개발에 대한 접근 방식을 설명하는 데 사용되는 용어로, 증분 제공, 팀 협업, 지속적인 계획과 학습을 강조합니다. Agile은 프로세스가 아니라 팀이 수행할 작업을 계획하기 위한 철학 또는 사고방식입니다. 반복적인 개발을 기반으로 하며, 소프트웨어 개발 과정에서 발생하는 피할 수 없는 변화에 대비하여 잘 대응할 수 있도록 미리 계획을 세우는 데 활용할 수 있습니다. 최신 릴리스가 나간 후에 Mara와 Andy의 논의를 들어보겠습니다.

Mara는 팀에서 DevOps에 대한 흥미를 이끌어내는 데 작은 진전을 이뤘다고 느끼지만 답보 상태입니다. 지난 릴리스에서는 버그를 수정하느라 팀이 너무 바빠서 다른 일에 신경을 쓸 수가 없었습니다.

돌이켜보면 제품 관리자인 Irwin은 레이싱 게임 웹 사이트에 대해 팀에게 다소 중요한 고객 피드백을 제공했습니다. 이런 문제를 해결하는 것은 간단하지 않았습니다. Andy와 Mara가 코드를 작성하면 테스터인 Amita에게 건네 주었습니다. Amita는 항상 새로운 버그를 찾아냈고 코드를 다시 전달해야 했습니다. 빌드 서버에는 장애가 발생했습니다. Tim은 개발 및 테스트 환경에서 작동하던 게임 웹 사이트를 프로덕션 환경에서 작동시킬 수 없었습니다. 모두의 근무 시간은 길어지고 몇 주 동안은 주말에도 일을 했습니다.

릴리스를 전달한 후 Mara와 Andy는 함께 커피 타임을 가졌습니다. 둘 다 피곤했습니다. Mara는 의욕이 없었지만 Andy의 태도는 달랐습니다.

Andy: 놀라워하는 이유를 잘 모르겠어요. 소프트웨어 출시는 어렵잖아요. 항상 지루하고 힘들잖아요. 다르게 진행해 본 적이 있나요?

Mara: 그럼요, 여기에서도 개선할 방법이 있다고 생각해요. DevOps를 사용하면 정말 도움이 될 거에요.

Andy: 가치 흐름도 작성 연습을 수행했던 기억이 나는데 지금은 어떤가요? 새 릴리스에 대해서도 해야 할 것 같아요. 전에 DevOps를 사용해서 진행했던 것 같은데요.

Mara: 이것 말고도 할 수 있는 게 많아요. 우선 시작부터 하고, Agile 계획 세우기를 진행해야 한다는 생각이에요. Azure Boards를 사용하면 도움이 될 거에요.

Andy: Agile이 무엇인가요?

Mara: Agile은 소프트웨어를 개발하는 방식입니다. "Agile"이라는 용어는 2001년 Agile 성명서에서 창안되었습니다. 이 성명서에는 소프트웨어 개발 방식을 개선하기 위한 몇 가지 기본 원칙이 수립되어 있습니다. 성명서에서:

중요시하는 사항:

  • 프로세스와 도구에 대한 개인 및 상호 작용.
  • 포괄적인 문서보다는 작동 소프트웨어를 우선시합니다.
  • 계약 협상보다는 고객 협업을 우선시합니다.
  • 계획에 따른 변화에 대응.

Andy: 무엇이든 업무를 개선할 마술 같은 방법이 있다면 전적으로 찬성이에요. 퇴근해서 집에 가면 애들은 항상 자고 있거든요. 하지만 구체적인 해결책은 없이 표현만 적나라한 거 아닌가요.

Mara: 마법은 아니고, 조금씩 실천할 수 있어요. Azure DevOps에 제공되는 도구로 Agile 사례를 구현해야 합니다. 이제는 계획을 세울 때 Azure Boards를 사용하면 됩니다. 우선, 빌드 프로세스를 설명하면서 큰 문제를 파악할 수 있도록 도와주시겠어요?

커피를 마시며 많은 의견을 나눈 끝에 Mara와 Andy는 빌드 프로세스에서 가장 큰 문제를 파악하게 되었습니다. 모든 문제는 마지막 릴리스에서 나왔습니다. Andy가 떠난 후 Mara는 자신의 낙서를 살펴보면서 Agile계획을 직접 세워보기로 결심했습니다. 혼자 힘으로, Azure Boards의 기본 프로세스를 사용하여 모든 문제를 한 곳에 모았습니다.

다음 단계는 이 보드를 팀에 보여주고 참여를 유도하는 것입니다.

Agile 채택을 위한 권장 사항

팀은 Agile을 채택하기 위한 첫 번째 단계를 수행할 준비가 되었습니다. 다음은 팀에서 Agile을 조직에 통합하는 데 사용할 수 있는 몇 가지 일반적인 권장 사항입니다.

Agile 사례를 지원하는 조직 구조 만들기

대부분 조직에서는 Agile 채택이 어려울 수 있습니다. 조직 내 많은 기존 정책과 절차에 도전하는 사고의 변화와 문화적 변화가 필요합니다. 일반적으로 대부분 회사에서는 수평적 팀 구조를 사용합니다. 실제로 이는 팀이 소프트웨어 아키텍처에 해당하는 것을 의미합니다. 예를 들어 애플리케이션의 사용자 인터페이스를 담당하는 팀, 데이터를 담당하는 다른 팀과 서비스 지향 아키텍처를 담당하는 다른 팀이 있을 수 있습니다.

그러나 수직 팀은 Agile 프로젝트에 관해 더 나은 결과를 제공합니다. 수직 팀은 아키텍처를 확장하고 제품 결과에 맞춰 조정됩니다. 예를 들어 앱의 전자 메일 부분을 담당하는 팀이 있고 팀원들은 앞에서 언급한 세 부문의 직원으로 구성될 수 있습니다. 수직 팀 구조의 또 다른 이점은 팀을 추가하여 스케일링이 발생한다는 것입니다.

Agile 기술 및 사례에 대해 팀원 멘토링

Agile 기술 및 사례 도입을 처음 시작하는 경우 일부 팀은 외부 코치 고용을 결정합니다. 코치는 여러 팀과 함께 조직의 장애물과 사일로를 제거하도록 지원하므로 일반적으로 교육과 관리 기술을 두루 갖추고 있습니다. 또한 팀원에게 스탠드업을 실행하고 회의를 검토하는 방법과 같은 Agile 기술을 교육할 수도 있습니다. 하지만 시간이 지나면서 팀원들이 서로를 멘토링할 수 있는 능력을 개발하는 것이 중요합니다. 즉, 대부분의 작업은 주로 홀로 일하는 개인이 아니라 협업을 통해 수행해야 합니다.

팀 내 협업과 팀 간 협업 가능

Agile에서 협업이 성공의 열쇠라면 협업을 촉진하는 방법에는 무엇이 있나요? 다음은 몇 가지 아이디어입니다.

문화적 변화

문화를 바꿀 때는 몇 가지 사항을 염두에 두어야 합니다. 팀원에게는 조용하고 편안한 근무 공간이 있어야 합니다. 지나치게 산만하거나 소음이 심하지 않고 집중할 수 있는 공간이 필요합니다.

모임은 피할 수 없고 마치 한 사람의 직장 생활 중 대부분을 차지하는 것처럼 느껴질 수 있습니다. 팀원이 더 효율적으로 제어할 수 있으려면 모임에는 어젠더와 엄격한 시간 프레임이 필요합니다.

메일, 메시지와 같은 비동기 통신은 너무 많게 느껴질 수 있고 일반적으로 사람들은 바로 답변해야 한다고 느낍니다. 이와 같은 통신에는 즉각적인 응답이 필요하지 않습니다.

원격 팀원은 이제 대부분 회사에서 일반적으로 눈에 띄는 근무 형태입니다. 모든 사람은 사무실에서 근무하든 재택근무 중이든 상관없이 팀원을 편하고 평등하게 대해야 합니다. 통신을 통한 협업은 조직의 DNA 일부가 됩니다.

의견 충돌이 있다고 해도 원활한 의사소통의 중요성은 아무리 강조해도 지나치지 않습니다. 충돌 해결은 Agile 팀이 갖춰야 할 바람직한 기술입니다.

부서 간 업무 팀

팀원이 협업하는 것이 중요한 것처럼 팀이 협업하는 것도 중요합니다. 부서 간 업무 팀은 창의적 문제 해결을 위해 모두의 능력을 넓힐 수 있는 새로운 기술과 관점을 더하고 전체 조직의 결속력을 더욱 강화합니다. 부서 간 불필요한 힘겨루기를 줄이고 모두가 공동의 목표를 향해 나아간다는 생각을 심어줍니다.

협업 도구

적절한 도구를 사용하면 Agile 팀원이 팀 내에서 그리고 다른 팀과 더욱 효율적으로 협업할 수 있습니다. 다음은 시작을 돕기 위한 몇 가지 제안 사항입니다.

  • Microsoft Teams: Teams는 채팅, 모임, 메모, 파일 스토리지를 위한 작업 공간을 제공하는 애플리케이션입니다.
  • Skype: Skype는 사용하기 쉬운 좋은 범용 도구입니다. 이미 설치한 사람들이 많이 있습니다.
  • Slack: Slack은 단일 인터페이스에서 여러 별도 통신 채널을 제공합니다. 이러한 채널을 프로젝트, 팀 또는 주제 등을 기준으로 다양한 방식으로 구성할 수 있습니다. 대화는 보존되며 검색 가능합니다. 내부와 외부 팀원을 쉽게 추가할 수 있습니다. Slack은 소스 코드를 위해 GitHub와 같은 다양한 타사 도구와 직접 통합할 수 있습니다.

다른 일반적인 도구에는 Google Hangouts, Asana, Trello, GoToMeeting, monday.com 등이 있습니다. 이와 같은 도구에 대해 알아보고 팀과 회사의 필요에 잘 맞는 도구를 찾아보세요.