TIL 45 | Agile

임종성·2021년 8월 22일
0

TIL

목록 보기
17/22
post-thumbnail

TDD에 대해 블로깅 하기 전 중요한 개발 철학 혹은 사상인 Agile 개념에 대해 살펴보자.

지난 Velog를 통해 Testing Pyramid와 Unit Test의 중요성에 대해 알아보았다. 추가로, 세션을 통해 개발의 테스트 전략과 방법에 대해 알아보며 TDD(Test Driven Development)라는 개념을 접하게 되었다.

그렇게 TDD 방법론의 개념과 장, 단점을 찾아보다보니 Agile이라는 개념이 계속 언급되 것이 눈에 띄었다. 이 Agile이라는 개념은 도대체 무엇일까?

Why Agile?

높아지는 SW 개발의 불확실성

초기 SoftWare의 개발은 계획 중심의 Process였지만, 90년대를 지나며 SW 분야가 넓어지고 사용자들이 일반 대중으로 바뀌었습니다. 또한 Business Cycle이 짧아지고 사람들의 욕구와 트렌드도 빠르게 변화하며 SW 개발의 불확실성이 높아졌습니다.

Q. Business Cycle이란?
A. 제품이 나오고, 사용하고, 다른 제품으로 넘어가서 사용하고, 또 새로운 제품이 나오는 식의 사이클을 말합니다.

새로운 SW 개발 방법의 등장

이렇게 SW 개발의 불확실성이 높아지면서, 전통적인 개발 방법이 맞지 않다는 것을 느낀 사람들이 자신만의 개발 방법론을 사용하기 시작했습니다. 경량 방법론 주의자들은 '창의성'이나 '혁신'을 계획하는 것이 이상하다고 생각했고, 따라서 규칙이 적고 가볍게 대응을 잘하는 방법을 사용했습니다.

17명의 경량 방법론 주의자들이 만나 각자의 개발 방법을 공유하고, 추구하는 공통점을 추려 애자일 SW 개발 선언문을 만들고, 이 때부터 Agile이라는 용어에 의미가 생겼습니다.

What is Agile?

agile : 1. 날렵한, 민첩한 2. (생각이) 재빠른, 기민한 이라는 사전정의와 마찬가지로 좋은 것은 빠르게 취하고, 낭비 없게 만드는 사상 혹은 철학을 말한다.

Agile은 앞을 예측하며 개발하지 않고, 일정한 주기를 가지고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 커다랗게 살을 붙이면서 개발해 프로세스 모델 방식입니다.

이렇듯 Agile, 짧은 주기의 단위를 반복하여 하나의 큰 프로젝트르 완성하는 방식입니다.

Agile의 핵심은 협력과 피드백으로, 고객과 개발자간 지속적인 소통으로 변화하는 요구사항을 신속히 수용하고, 그에 맞는 개발을 시행하며 고객으로부터 피드백을 지속적으로 받습니다. 한마디로 고정관념을 버리고 유연하게 일을 하며, 변화에 잘 대응하는 것이 핵심입니다!

1. 협력

소프트웨어를 개발한 사람들 안에서의 협력을 말합니다.(직무 역할을 넘어선 협력)

스스로 느낀 좋은 통찰은 협력을 통해 다른 사람에게도 전해줄 수 있습니다.

또한 예상치 못한 팀의 기대 효과를 가져옵니다.

ex) 좋은 일은 x2가 된다.

어떤 사람이 2배의 속도로 개발할 수 있는 방법을 발견함

협력이 약하면? → 혼자만 좋은 보상과 칭찬을 받음. 하지만 그 사람 코드와 다른 사람의 코드의 이질감이 생겨서 시스템 문제 발생 가능성

협력이 강하면? → 다른 사람과 공유해서 모두 같이 빠르게 개발하고 더 나은 발전점을 찾기에 용이함. 팀 전체 개선이 일어나는 긍정적 효과 발생
ex) 안 좋은 일은 /2가 된다.

문제가 발생하는 부분을 찾기 쉬워짐
예상치 못한 문제를 협력으로 막을 수 있음

실수를 했는데 어딘지 찾기 힘들거나, 개선점이 생각나지 않을 때 서로 다른 사람들과 협력하면 새로운 방안이 탄생할 수도 있음

2. 피드백

학습의 가장 큰 전제조건은 '피드백'입니다. 내가 어떻게 했는지 확인하면서 학습을 진행해야 합니다. 소프트웨어의 불확실성이 높을 수록 학습의 중요도는 올라갑니다.(모르는 게 많으면 더 빨리 배워나가야 하기 때문!!)

일을 잘하는 사람은 이처럼 피드백을 찾는 능력 뛰어나고, 더 많은 사람들에게 피드백을 구하며 발전시켜 나갑니다.

Agile Framework

Agile은 방법론이 아니고, 개발 사상 또는 철학일 뿐이다. Agile은 정확히 말하자면 소프트웨어 개발에 필요한 작업을 알려주는 편리한 규정이 아닙니다.

Agile Framework(방법론, 혹은 Process)는 Agile 개념에 기반한 개발 접근방식으로 정의가 가능합니다. 대표적으로 일본의 Canvan System과 Scrum이 있습니다.

Scrum

Scrum은 프로젝트 관리를 위한 상호, 점진적 개발방법론이며, 목표를 짧은 주기로 점진적으로 시스템을 계속해서 개발해나가는 Framework다. 스프린트(sprint) 라고 하는 단기 작업 블록을 통해 프로젝트를 진행하며 스프린트 기간은 보통 2주로 진행한다.

현재 프로젝트에서도 Scrum을 통해 개발을 지속하고 있는데, 확실히 협업과 피드백을 통해 협업하는 방식이 몸에 익으면서 개발 효율이 좋아지는 것이 느껴진다.


참고자료 1 - 애자일 방법론
참고자료 2 - 애자일(agile)이란 무엇인가?

profile
어디를 가든 마음을 다해 가자

0개의 댓글