개발자 99% 커뮤니티에서 수다 떨어요!
프로젝트를 시작할 때 요구 사항을 파악해야 한다.
함께 일하기는 코딩하는 동안 문제를 함께 푸는 것이다.
프로젝트가 닻을 올리기 전에 이런 중요한 문제들이 잘 정리되어야 '분석 마비증'을 모면할 수 있다.
2022.04.03
8장 프로젝트 전에
완성이라는 것은 더 이상 더할 것이 없을 때가 아니라, 더 이상 뺄 것이 없을 때 달성되는 것이다.
요구사항은 숨겨져 있다.
자신이 뭘 원하는지 정확히 아는 사람은 아무도 없다.
프로그래머는 사람들이 자신이 원하는 바를 깨닫도록 돕는다.
최초의 요청 사항은 궁극적인 요구 사항이 아니다.
요구 사항은 피드백을 반복하며 알게 된다.
여러분의 임무는 의뢰인에게 그들이 제시한 요구 사항의 여파를 깨우쳐 주는 것이다.
우리는 모형이나 프로토타입을 만들어서 의뢰인이 직접 다루어 볼 수 있도록 한다. 만든 모형이나 프로토타입이 이리저리 바꾸기 쉬워서 의뢰인과 대화하는 도중에도 계속 바꿀 수 있다면 이상적이다.
실용주의 프로그래머는 프로젝트 전체를 요구 사항 수집 과정으로 보아야 한다.
사용자처럼 생각하기 위해 사용자와 함께 일하라.
생각의 틀을 벗어나지 말고, 틀을 찾아라.
제일 구속이 심한 제약부터 파악해 내고 나머지 제약을 그 안에서 맞춰 보아야 한다.
잠시 딴짓을 하기 딱 좋은 시간이다. 잠깐 다른 일을 하라. 개와 산책하러 나가거나 아예 내일로 미뤄라.
여러분의 의식 밑에 숨어 있는 어마어마한 연결을 가진 신경망이 나설 차례다.
딴짓을 한 사람이 의식적으로 노력한 사람보다 복잡한 문제 해결 과제를 더 잘 해냈다.
한 사람이 코드를 입력하는 동안 한 명 혹은 여러 명의 팀 동료가 조언하고 고민하며 문제를 함께 푸는 것이다.
실제로 코딩을 하는 와중에 질문을 하고 토론을 하는 것이다.
입력을 담당한 개발자는 문법이나 코딩 스타일 같은 낮은 수준의 세부 사항에 집중해야만 한다. 반면에 다른 개발자는 문제를 더 높은 수준에서 넓은 범위를 보며 고민할 수 있다.
애자일은 '기민하다'는 뜻의 형용사이다. 즉, 무언가를 하는 방식이다.
변화에 대응하는 것, 일을 시작한 이후 맞부딪히는 미지의 것에 대응하는 것.
피드백 고리를 변수 이름 짓기 같이 아주 낮은 층위에 적용한 덕에 우리는 전체 시스템의 설계를 실제로 개선할 수 있었다.
내가 하고 있는 프로젝트에서는 팀원들이 개발자이면서 동시에 사용자이다. 그렇기 때문에 더욱 팀원들간의 소통과 협력이 필요해 보인다. 지금까지는 몇 주에 한 번 모여서 그 동안 업데이트 내용, 공부한 내용을 공유했지만 업데이트 내용을 슬랙에다 그때그때 올려 피드백을 주고 받으면 더욱 좋을 거라는 생각이 든다.