시작하며
소프트웨어디자인패턴이라는 과목을 들으면서 읽게 된 클린 소프트웨어 에 대해 정리한 글이다. 읽다보니 흥미가 생겨서 정리해두고 나중에 다시 보기 위해 쓰는 중이다! 사실은 시험 공부 하기 위해 정리한 글... 이지만 어찌됐든 내가 정리한 건 맞으니까 ..
계속되는 악순환
- 많은 프로젝트가 실천방법 없이 프로젝트를 진행한다.
- 그로 인해 실패를 경험하게 되고 결과와 산출물을 요구하는 프로세스가 생긴다.
- 하지만 까다롭고 많은 프로세스는 오히려 계속되는 악순환을 생기게 하여 프로세스를 더욱 복잡하게 만든다 → 이는 소프트웨어 위기 와 연결된다.
- 아이러니 하게도 위와 같은 프로세스를 채택하는 회사가 빠르게 늘어났다
애자일 연합
애자일 소프트웨어 개발 선언문
- 프로세스와 툴보다 개인과 상호작용이 우선이다.
- 프로그래밍 실력은 평범하지만 서로 잘 대화하는 팀이 성공할 가능성이 높다.
- 팀을 만들기 위해 노력하고 그런 뒤에 팀의 필요를 기반으로 환경을 구축하자.
- 팀을 구성하는 일은 환경을 구축하는 일보다 더 중요하다.
- 포괄적인 문서보다 동작하는 소프트웨어가 우선이다.
- 설계 원리와 구조에 대한 문서를 쓰고 유지하되, 짧고 요약적 이어야 한다.
- 새로운 팀원에게 정보를 전할 수 있는 제일 좋은 기록은 code 와 team이다
- 그 필요가 급박하고 중요하지 않다면 아무 문서도 만들지 마라
-Martin 의 문서화 제 1법칙-
- 계약 협상보다 고객 협력이 우선이다.
- 규칙적으로 자주 고객의 피드백을 받아야 한다.
- 개발팀과 고객이 가까이서 일한다. (고객과의 협력)
- 계획에 따르는 것 보다 변화에 대한 반응이 우선이다.
- 소프트웨어 프로젝트의 성공과 실패를 좌우하는 것은 변화에 대한 반응 능력이다
- 가까운 시일 내에 수행할 테스크에 대해서만 세부적인 계획을 세우고, 나머지 부분은 탄력적으로 조정할 수 있다.
원칙
- 우리의 최고 가치는 유용한 소프트웨의 빠르고 지속적인 공개를 통해 고객을 만족시키는 것이다.
- 자주 공개할 수록 최종 품질도 좋았다. 에자일 실천 방법은 빨리 자주 공개하는 것이다
- 개발 후반부에 접어들었다 할지라도, 요구사항 변경을 환영하라
- 변화를 걱정하지 않고 요구 사항 변경을 긍정적인 것으로 본다.
- 소프트웨어의 구조를 탄력적으로 유지하기 위해서 노력하기 때문에, 요구사항이 변경됐을 때 시스템에 최소한의 영향을 미치게 된다.
- 개발 중인 소프트웨어를 자주 공개하라
- 문서와 계획 꾸러미가 아닌, 고객의 요구를 만족시키는 소프트웨어를 공개해야한다
- 업무를 하는 사람과 개발자는 계속 함께 일해야 한다.
→ 소프트웨어는 지속적으로 관리되어야 한다
- 의욕적인 개인들을 중심으로 프로젝트를 구성하라. 환경과 필요로 하는 지원을 제공하고 그들이 그 일을 해낼 것이라 믿고 맡겨둬라.
→ 사람이 성공의 가장 중요한 요소이다
- 개발 팀 내에서 정보를 전달하고 공유하는 가장 효율적이고 효과적인 방법은 직접 일대일로 대화하는 것이다.
- 개발 중인 소프트웨어가 진척 상황의 일차적 척도다.
- 애자일 프로세스는 지속 가능한 개발을 촉진한다. 스폰서, 개발자, 사용자는 무한히 지속적인 pace를 유지할 수 있어야 한다.
- 지나치게 빨리 나아가는 것은 엄청난 실패로 이어진다. 에자일 팀은 속도를 조절하여 프로젝트 기간 동안 가장 높은 질의 기준을 유지할 수 있을 정도로 일한다
- 우수 기술과 좋은 설계에 대한 지속적인 관심은 속도를 향상한다.
- 높은 품질은 빠른 속도에 있어서 중요한 요소이기 때문에 자신이 작성할 수 있는 가장 높은 품질의 코드만 만든다.
- 단순성(아직 끝내지 않은 일의 양을 최대화하는 예술)은 필수적이다.
- 내일의 문제를 예상하는데 지나친 관심을 두지 않으며, 가장 간단하고 고품질의 작업을 오늘 행한다.
- 최고의 아키텍쳐, 요구사항, 설계는 자기 조직적인 팀에서 나온다.
- 책임감은 팀원 개개인이 아닌 온전한 팀에게 전달된다.
- 에자일 팀은 프로젝트의 모든 분야에서 함께 일하고 각 팀원이 전체 분야에 참여한다
- 규칙적으로 팀은 좀 더 효과적인 방법을 반영해야 하고, 적절히 그 행위를 조율하고 조정해야 한다.
결론
- 프로세스가 늘어나는 악순환은 프로젝트 실패의 원인 중 하나이다.
- 애자일은 그들이 목표에 다다르기 위해 간단한 테크닉에 초점을 맞추는 것을 돕기 위한 방법으로서 만들어졌다.
마치며
chapter1은 프로젝트의 성공을 위해 어떤 원칙들을 따라야하는지 잘 소개된 글이라고 생각한다. 내가 생각했던 것보다 어려운 원칙이 아니라서 실전에 적용해볼 수 있을 것 같다. 자세한 설명이 덧붙여 있어서 읽으며 공감하게 된 내용이다 🐿.
성공하는 프로젝트란 이런거구낭.....
유익한 글이었습니다.