자 오늘은? 에자일에 대해서 알아보자.
에자일!에자일! 한때 모든 곳에서 에자일 한다고 난리였던 적도 기억이 나고,
갑자기 어느날 메니저가 스탠드업미팅해야 한다고, 에자일한다고 그랬던 기억도 있고.
잡디스크립션에 에자일 할줄 아냐(?) 이런거도 어디서 본거 같은데....
에자일이 각광을 받는 이유가 있겠지만!
여튼, 에자일은 개발 방법론이야. 말그대로 방법론. (방법론엔 워터폴도 있고 v-모델방법론도 있고 ...)
무슨 c, c# 할줄 아냐 이런거랑은 좀 개념이 다르다고 난 생각하는데.
잡디스크립션에 에자일해봤냐 이게 뭘 요구하는건진 잘 모르겠더라고. 각 조직마다 쓰는방식이 조금씩 다르기도 하고..
혹시 읽는이가 면접가서 면접관이 "에자일이 뭔줄알아요? " 물어보면
" 네 에자일은 이런건데요 이러면서, 궁금해서 그러는데, 너네 프로젝트가 뭔데 왜 에자일을 써요?" 라고 꺼꾸로 물어봐봐.
방법론이라는게 이런 문제를 푸는데는 이런 방법이 좋더라 인거지(가이드라인),
이런 문제에는 이 방법이 정답이야, 꼭 스탠드업 미팅을 해야해!! 이런건 아니란거!
내가 하고싶은말은.. "There is no silver bullet!!"
(No Silver Bullet: Essence and Accidents of Software Engineering)
PI(Program Increment), Sprint, Backlog, User story, Product Owner, Scrum master, daily stand up...
서론이 좀 길었네. 내가생각하는 에자일이란,
설계 개발 테스트 디플로이 이런 단계를 최대한 빠르게 돌려서(PI, Sprint), 빨리 빨리 고객의 니즈, 버그 등등을 찾아내고(Backlog, User story),
거기서 나온결과를 미리미리 고객한테 피드백을 받고(Product Owner) 설계 디자인을 계속 변경해가면서 개발하고 완성품을 만들겠다 뭐 이런개념이야.
( 예를 들어. A 프로젝트를 하는데 기한이 12개월이야.
그럼 스크럼 마스터가 계획을 짜지 이렇게.
PI 는 3개월 단위로 4번할꺼고, 각 PI 마다 2주의 Sprint 를 돌릴겠다라고.
각 PI 마다 User story 를 만들고 (뱅크- 유저- 인풋시스템 등..) , 그걸 완성하기 위한 task (Backlog) 들을 만들어서
Sprint 마다 적절히 나눠서 task 를 수행하고 User story 완성하는거야.
중요한건 PI 1 끝날때(3개월) , 결과물이 있어야 하는거고(User story 바탕으로)
이 결과물의 피드백을 바탕으로 PI 2 를 수정해서 진행하고, PI 3 , PI 4 반복해서 프로젝트를 완성한다! 이게 에자일이야
* 여기서 3달 2주 4번 이런건 내가 임의로 정한거야. 조직과 프로젝트에 따라서 2달 1주 뭐이렇게 한다거나...
조직과 상황에 맞게 아 우린 프로덕트 오너 없어도 되고, 스프린트는 뭐 짧게 하고 이런식으로,
왜 에자일을 하는건지 이해한다음에 각각 프로젝트 상황에 맞게 커스터마이징하는게 중요한거 같아. )
같은 프로젝트를 워터폴방식으로 진행한다고 했을때,(각각의 단계가 끝나고 다음단계로 가는 방법)
설계 하고 (3개월) 디자인하고(3개월) , 구현하고 테스트(6개월) 하고, 고객한테 인계 (총 12개월걸림)하게 되는데,
고객이 만족하면 다행이지만, 고객이 "어 이거 내가 원한게 아닌데" 이럼 망하는거지. (프로젝트 끝났는데..)
이런 단점을 보안하고자, 에자일이 등장했다고 하지만,
지금도 어떤 프로젝트의 경우는 워터폴방식이 더 좋은 방법일수도 있는거지.
그럼 여기서 소프트웨어 개발자가 하는건 뭘까?
모든일이 그렇지만, 중요한건 프로젝트 메니저들과의 소통이라고 생각해.
팀플레이니까. PI 끝날때 결과물이 있어야 하는데 "나때문에..결과물이 없어. 내가 은행 유저 인풋을 만들었어야 하는데 못했어.. 이렇게 되면??"
PI, Sprint 기한이 언제고 내가 뭘해야 하는지 (User story, Backlog) 이해하고 실행하고 공유하고,
그래서 아마들 daily stand up 도 에자일 방법중에 하나 아닐까. (아무의미없이. 어제 놀러갔다온얘기 하는게 아니고..이런의미에서 에자일은 프로세스도 프로세스이지만, 일하는 문화를 만드는거다 라는 말도 맞는말이야.소통하는 문화)
툴은? 프로젝트가 잘 돌아가게 관리만 잘하면, 툴 그게 무슨 의미가 있으까?
(컨플루언스, jira 이런거 쓰면 아무래도 효율적이겠지만, 먼데이 이런툴도 쓸수 있는거고,
엑셀로 한다고 못하는건 아니니까.
중요한건 모두가 이해하고, 프로젝트에 같이 동참한다는게 중요한거지!!)
Jira 가 만능처럼 얘기 하는사람이 있나 모르겠지만 그런사람에게 내가 묻고 싶은건, "지라 없을땐 소프트웨어 개발 못했나?"
'소프트웨어 엔지니어 > 일반' 카테고리의 다른 글
| POSIX 를 따른다? 따르라? (3) | 2024.10.03 |
|---|---|
| GPU? NVIDIA? 왜 요새 난리인가? (7) | 2024.09.26 |
| [소프트웨어 엔지니어] 캡슐화 추상화 (1) | 2024.09.17 |
| [소프트웨어 엔지니어] 깊은 복사, 얕은 복사 (0) | 2024.09.17 |
| [소프트웨어 엔지니어] 프로그램 메모리 구조 (1) | 2024.09.13 |