Post

Reflections on Agile Lessons Learned from Real-World Software Development

Reflections on Agile Lessons Learned from Real-World Software Development

애자일 학습과 Pygame을 이용한 윷놀이 개발 후기 - 팀장으로서의 경험

1. 애자일 방법론과 폭포수 모델의 차이

애자일(Agile) 방법론은 소프트웨어 개발에서 변화에 빠르게 적응하고, 반복적으로 개선하며, 고객과 협력하는 것을 중요하게 생각하는 방식입니다. 애자일은 계획보다는 실행을 통해 배우는 것을 강조하며, 상황에 맞춰 바로 변경할 수 있는 유연한 개발 방식을 제공합니다.

반면, 폭포수(Waterfall) 모델단계적으로 진행하는 개발 방식으로, 각 단계가 끝나야 다음 단계로 넘어갈 수 있습니다. 계획 단계에서 꼼꼼하게 준비하고, 분석, 설계, 구현, 테스트를 차례대로 진행하며, 명확한 문서와 결과물을 남기는 것이 특징입니다. 폭포수 모델은 일정 관리와 결과물 관리가 용이하지만, 중간에 요구사항이 바뀌면 다시 처음으로 돌아가야 하는 단점이 있습니다.

애자일과 폭포수 모델의 가장 큰 차이는 변화에 대한 태도입니다. 애자일은 작은 단위로 반복적으로 개발하고 테스트하면서 계속 변화에 적응하고 발전합니다. 반면 폭포수 모델은 처음 계획을 세운 대로 모든 단계를 순서대로 진행하는 고정된 흐름을 따릅니다. 그래서 애자일은 고객의 요구와 상황 변화에 맞춰 유연하게 개발하는 데 좋고, 폭포수 모델은 명확한 요구사항과 계획이 있는 프로젝트에 적합합니다.

이를 크게 느꼈던 부분은 교수님이 우리 팀에게 윷 쿠폰 기능, UX/UI 개선, 시간제한 기능을 추가하라고 하셨을 때였습니다. 모든 팀원이 모든 기능이 어떠한 방식으로 동작하는지 알고 있었기에, 해결 방법을 빠르게 도출하는 경험을 할 수 있었습니다.

2. 팀장으로서 경험한 애자일 개발

이번 Pygame을 이용한 윷놀이 개발 프로젝트는 애자일 방식을 활용해 진행하였습니다. 프로젝트가 작은 기능 단위로 나뉘어 있어서 짧은 주기로 기능을 개발하고 테스트하면서 점진적으로 발전시킬 수 있었고, 이를 통해 빠른 피드백과 유연한 변경의 중요성을 실감할 수 있었습니다. 실제로 팀원들이 의견을 제시하면 바로 반영하고 그 결과를 확인하면서 협업의 효과를 크게 느낄 수 있었습니다.

하지만 팀장을 맡아서 처음 애자일 방식으로 프로젝트를 주도하다 보니 어려움도 많았습니다. 이전에는 누군가 시키는 일을 수행하면 되었고, 모호하거나 잘 모르는 부분은 윗사람에게 물어 해결했었습니다. 하지만 이번에는 팀에 발생하는 모든 문제를 해결해야 했고, 예상치 못한 문제들이 많아 힘든 순간들이 있었습니다.

예를 들어, 팀원들에게 우리 팀이 나아갈 방향을 구체적으로 제시해야 했고, 팀원들의 개발 속도에 맞춰 우선적으로 해결해야 할 문제들을 스스로 판단해야 했습니다. 또한 우리 팀에게 무엇이 필요하고, 어떤 것을 해야 하는지 고민하는 시간도 많았습니다. 이러한 과정에서 팀장으로서의 책임감과 리더십을 많이 배울 수 있었습니다.

하지만 이러한 어려움 속에서도 팀원들과 함께 목표를 공유하고 한 방향으로 나아가는 경험을 하며, 매 순간 유연하게 대응하는 방식을 체득하게 되었습니다.

3. 폭포수 모델 요소의 일부 적용

애자일 방식으로 프로젝트를 진행하면서도, 폭포수 모델의 요소도 일부 사용했습니다. 프로젝트 초기 단계에서는 전체 구조를 설계하고, 게임의 기능과 흐름을 정의하며 명확한 계획을 세웠습니다. 이러한 계획적인 접근은 안정성을 높이는 데 기여하였고, 기능 구현 중 누락이나 요구사항이 불명확한 문제를 줄이는 데 도움을 주었습니다.

특히 우리 팀 멤버 중 한 명이 이미지 제작에 뛰어난 능력을 가지고 있었기 때문에, 그 멤버에게 이미지 작업을 전적으로 맡겼습니다. 이를 통해 팀의 전문성을 최대한 활용하였고, 시각적인 완성도를 높일 수 있었습니다. 이와 같은 폭포수 모델의 접근 방식은 프로젝트의 안정성을 유지하고, 역할 분담을 명확히 하여 프로젝트의 품질을 보장하는 데 효과적이었습니다.

4. 팀의 개발 방식에 대한 회고

이번 프로젝트를 진행하면서 느낀 것은, 우리 팀의 개발 방식은 애자일에 가까웠지만, 상황에 따라 복합적인 방식으로 개발하게 되었다는 점입니다. 때로는 빠르게 피드백을 반영하여 개발을 진행하고, 때로는 전체적인 구조를 명확히 하고 안정적인 개발을 위해 폭포수 모델의 계획적 접근을 사용하기도 했습니다.

무엇보다 중요한 사실은 소프트웨어 개발은 항상 계획대로 진행되지 않는다는 점이었습니다. 항상 계획과 다르게 예상치 못한 상황에 의해 변화가 발생합니다. 이러한 경험을 통해 유연한 사고와 지속적인 협업이 성공적인 프로젝트를 위해 얼마나 중요한지 깨닫게 되었습니다.

5. 애자일의 장단점

이번 프로젝트를 통해 제가 느낀 애자일의 장점은 다음과 같습니다:

  1. 팀원들이 개발 실력이 비슷하거나, 분야가 다를 경우 개발 속도가 확실히 빨라졌습니다.
  2. 팀이 한 사람처럼 협력하면서 하나의 목표를 위해 일한다면, 애자일은 최고의 개발 방식이 될 수 있었습니다.
  3. 새로운 기능을 빠르게 개발하고 개선하는 프로젝트에 애자일 방식이 매우 적합했습니다.
  4. 모든 팀원이 모든 기능을 개발할 때 참여 했기 때문에 프로젝트에 대해 넓은 시야를 가질 수 있었습니다.

애자일의 단점은 다음과 같습니다.:

  1. 이미 완성된 프로그램이나 운영/관리가 필요한 서비스에서는 애자일 방식이 적합하지 않을 수 있을 것 같다는 생각이 들었습니다.
  2. 팀원 중 누군가 개발 실력이 부족하거나, 목표에 대한 이해가 부족할 경우 팀의 속도와 조직력이 크게 떨어질 수 있다는 생각이 들었습니다.
  3. 전체 프로젝트의 목표를 명확히 이해하지 못한 팀원이 있을 경우, 팀의 사기 저하로 이어질 수 있다고 생각합니다. (물론 팀장의 탓이 큼)
This post is licensed under CC BY 4.0 by the author.

© Doorimul-KJH. Some rights reserved.

Using the Chirpy theme for Jekyll.