초기 소프트웨어 개발 방법은 계획 중심의 프로세스였다.
마치 도시 계획으로 건축에서 사용한느 방법과 유사하며, 당시에는 이런 프로세스를 활용하는 프로젝트가 대부분이었다.
90년대 이후, 소프트웨어 분야가 넓어지면서 소프트웨어 사용자들이 '일반 대중들'로 바뀌기 시작했다.
이제 모든 사람들이 소프트웨어 사용자들의 대상으로 되면서 트랜드가 급격하게 빨리 변화하는 시대가 왔다.
이로써 비즈니스 사이클(제품 수명)이 짧아졌고, SW 개발의 불확실성이 높아지게 되었다.
개발의 불확실성이 높아지면서, 옛날의 전통적 개발 방법 적용이 어려워졌고 사람들은 새로운 자신만의 SW 개발 방법을 구축해서 사용하게 된다.
그래서 경량 방법론 주의자들은 일단 해보고 고쳐나가자는 방식으로 개발하게 되었다.
아주 잘하는 단계에 이르게 되면, 겉으로 보기엔 미리 큰 그림을 만들어 놓고 하는 것처럼 보이게 됨
ex) 즉흥 연기를 잘하게 되면, 겉에서 봤을 때 사람들이 '저거 대본 아니야?'라는 생각을 할 수도 있음
이런 경량 방법론 주의자들이 모여 자신들이 사용하는 개발 방법론을 공유하고, 공통점을 추려서 애자일이라는 용어에 의미가 담기게 된 것이다.

'협력'과 '피드백'을 더 자주하고, 일찍하고, 잘 하는 것!
애자일의 핵심은 바로 '협력'과 '피드백'
ex) 좋은 일은 x2가 된다.
어떤 사람이 2배의 속도로 개발할 수 있는 방법을 발견함
협력이 약하면? → 혼자만 좋은 보상과 칭찬을 받음. 하지만 그 사람 코드와 다른 사람의 코드의 이질감이 생겨서 시스템 문제 발생 가능성
협력이 강하면? → 다른 사람과 공유해서 모두 같이 빠르게 개발하고 더 나은 발전점을 찾기에 용이함. 팀 전체 개선이 일어나는 긍정적 효과 발생
ex) 안 좋은 일은 /2가 된다.
문제가 발생하는 부분을 찾기 쉬워짐
예상치 못한 문제를 협력으로 막을 수 있음
실수를 했는데 어딘지 찾기 힘들거나, 개선점이 생각나지 않을 때 서로 다른 사람들과 협력하면 새로운 방안이 탄생할 수도 있음
내부적으로는 내가 만든 것이 어떻게 됐는지 확인하고, 외부적으로는 내가 만든 것을 고객이나 다른 부서가 사용해보고 나온 산출물을 통해 또 다른 것을 배워나가는 것!
애자일에서는 소프트웨어 개발의 불확실성이 중요함
불확실성이 높으면, 우리가 생각한거랑 다르다.. 라는 상황에 직면함
이때 전통적인 방법론과 애자일 방법론의 차이는 아래와 같음
전통적 방법론
: '그때 계획 세울 때 좀 더 잘 세워둘껄..
이런 리스크도 생각했어야 했는데ㅠ 일단 계속 진행하자'
애자일 방법론
: '이건 생각 못했네. 어쩔 수 없지. 다시 빨리 수정해보자'
전통적 방법에 속하는 '폭포수 모델'은 요구분석단계에서 한번에 모든 요구사항을 정확하게 전달하는 것이 원칙이다.
하지만 요즘같이 변화가 많은 프로젝트에서는 현실적으로 불가능에 가깝다.
이런 한계점을 극복해주는 애자일은, 개발 과정에 있어서 시스템 변경사항을 유연하게 or 기민하게 대응할 수 있도록 방법론을 제공해준다.
애자일을 통한 가장 많이 사용하는 개발 방법론이 '스크럼'
럭비 경기에서 많이 사용되던 용어인데, 반칙으로 인해 경기가 중단되었을 때 쓰는 대형을 말함
스크럼 모델은 애자일 개발 방법론 중 하나
회의를 통해 스프린트 개발 주기를 정한 뒤, 이 주기마다 회의 때 정했던 계획들을 구현해나감
하나의 스프린트가 끝날 때마다 검토 회의를 통해, 생산되는 프로토타입으로 사용자들의 피드백을 받으며 더 나은 결과물을 구현해낼 수 있음
즉, 소프트웨어 측면에서 팀이라는 단어가 주는 의미를 적용시키고 효율적인 성과를 얻기 위한 것

스프린트마다 생산되는 실행 가능한 제품을 통해 사용자와 의견을 나눌 수 있음
회의를 통해 팀원들 간 신속한 협조와 조율이 가능함
자신의 일정을 직접 발표함으로써 업무 집중 환경 조성
프로젝트 진행 현황을 통해 신속하게 목표와 결과 추정이 가능하며 변화 시도가 용이함
추가 작업 시간이 필요함 (스프린트마다 테스트 제품을 만들어야 하기 때문)
15분이라는 회의 시간을 지키기 힘듬 (시간이 초과되면 그만큼 작업 시간이 줄어듬)
스크럼은 프로젝트 관리에 무게 중심을 두기 때문에 프로세스 품질 평가에는 미약함
참고 📖