2009-10-21 6 views
3

우리는 소규모 팀 (개발자 3 명)이며 주요 고객 중 한 명은 새로운 기능 요청 및 프로젝트 후속 작업을 제출하여 비용 및 납기에 대한 견적을 얻고 있습니다. 그들과 함께한 우리의 마지막 프로젝트는 그들이 우리에게 다시 돌아오고 있다는 점에서 '성공'이었지만 우리는 훨씬 더 나은 일을 할 수 있었다는 것을 안다. (우리는 폭포를 사용했다 ... 테스트는 생각과 결과로서 단위 테스트 코드 범위 우리가 편안하다고 느끼는 것보다 훨씬 낮습니다. 끝이없는 '우리는 거의 끝났습니다'라는 문제는 말할 것도 없습니다.TDD를 통해 모든 다음 프로젝트/개선 사항을 수행해야한다고 클라이언트에게 확신시키는 방법 (일부 민첩한 관행 포함)?

'단위 테스트 아트'와 '레거시 코드로 효과적으로 작업하기'를 끝내고 직장 밖에서 애완 동물 프로젝트에 TDD를 사용한 적이 있는데 지금은 다시 폭포수로 돌아가 테스트 할 수 없습니다. 것.

내가 알고 싶은 것은 비즈니스 감각으로 애자일 사례와 함께 TDD의 이점을 분명히 보여주는 비 개발자를위한 '소화하기 쉬운'비디오가 있다는 것입니다. 어떤 하위 10 분 비디오가 있다면 나는 아주 행복하게 될 것이지만 나는 또한 긴 비디오 (그리고 나는 그것의 시간 인덱스를 참조 할 것입니다)와 괜찮습니다. 좋은 동영상이 없다면 서면 소스가 가장 좋은 것입니다.

나는 그 (것)들이 선내에 있고 과도기에 진짜 흥분하기보다는 더 많은 것을 원한다.

제게있어 다른 개발자 두 명과의 학습 곡선이 분명하기 때문에 '그냥 해보십시오'옵션이 아니며 첫 번째 반복 횟수는 스트레스가 많고 울퉁불퉁 할 수 있으므로 전달해야합니다. 우리 고객.

는 [내가 질문을하기 때문에 발견 비디오의 번호와 아래에있는 내 자신의 질문에 대답해야 ... 그들은 내 사용하기에 완벽하지 않지만 확실히 내 계획의 B 아무도 다른 하나를 더 알고하지 않는 경우]

+0

사려 깊은 분석을 위해 +1 특히 마지막 단락 – DVK

+0

TDD와 함께 갈 클라이언트를 기분 전환해야하는 이유가 확실하지 않습니다. 그것은 당신이 convience 필요가 개발자입니다. 청구서 수신에 염려 하시거나 뭔가를 놓치셨습니까? –

+0

나는 다른 두 개발자의 학습 단계에서이 고객과의 전달 속도가 과거보다 낮을 것으로 생각하며 클라이언트가 우리가 '우리의 속도를 높이고있다'고 생각하게하는 것을 원하지 않습니다. - 일이지만 지난 번과 동일한 양의 콘텐츠를 제공합니다. 우리는 또한 TDD를 사용하는 프로젝트에 대한 추정치를 한 번도 쓰지 않았습니다 ... 그래서 우리가 얼마나 오래 걸릴지, 그리고 어느 시점에서 우리가 폭포 이상의 이익을 얻을만큼 충분히 숙달되는지 확신 할 수 없습니다. 첫 번째 프로젝트의 인도 전 또는 유지 보수 중 속도 증가가 나타 납니까? 나는 모른다. – InvertedAcceleration

답변

2

기술 부채는 속도를 죽인다. 따라서, 나는 정의의 "증가 된 기술적 빚"을 포함하고 싶다. 이것이 없으면 지속 가능한 페이스를 달성 할 수 없습니다. 이것은 (헨릭 Kniberg에서 Technical Debt - How not to ignore it 프리젠 테이션에서 차용) 아래 그림으로 설명된다 : 나에게

alt text http://img27.imageshack.us/img27/329/screenshotkq.png

,이 모든 것을 분명하고도 시간이 지남에 따라 속도를 측정하여 (숫자로 증명할 수). 고객에게 이러한 개념을 설명하고 기술 채무를 통제 할 수있는 기술 중 하나 인 TDD를 설명하십시오. 그런 다음 그를 선택하십시오 (또는 그를 위해 선택하십시오).

+0

나는이 접근 방식을 채택하기로 결정했으며 이것이 프로젝트 시작 첫 날부터 기술적 부채를 관리하는 방법론으로 시작하는 것이 배당금을 지불 할 것임을 보여주는 훌륭한 방법 (용어 및 추가 한 그래프)이라고 생각합니다. 길. 연결된 프레젠테이션도 매우 유용했습니다. 감사합니다. – InvertedAcceleration

+0

행복하게 찾을 수 있습니다. 나는 (그리고 더 일반적으로 Henrik Kniberg의 모든 작업을) 좋아하며 TDD 및 기타 품질 지향 관행 (좋은 비용과 추가 비용으로 인식 될 수 있음) 없이는 생산성이 시간이 지남에 따라 감소한다는 것을 설명하기 위해 자주 사용합니다. 실제로 고품질은 확실히 좋은 것은 아니며 생산적인 팀에게 반드시 필요한 제품입니다. 품질이 없으면 높은 생산성을 얻을 수 없습니다. –

1

고객이 왜 TDD 로의 전환을 감지합니까? 스트레스가 많은, 울퉁불퉁 한; 어떻게 그렇게?

클라이언트에게 알리기 이유가 TDD로 업그레이드 중입니다. 나는 그 이유가 그들이 당신만큼 매력적이라고 ​​확신합니다. 나에게 TDD는 무엇보다도 당신이 생산하는 것에 대해 훨씬 더 큰 신뢰성을 의미합니다.

클라이언트가 마지막 프로젝트의 모든 회귀 및 수동 테스트를 기억하고 있습니까?

+0

저는 클라이언트와의 과거의 추상화 수준으로 문제에 접근하고자했습니다. 나는이 단계에서 다른 소프트웨어 하우스를 선택할 수 있기 때문에 마지막 프로젝트 동안 많은 결점을 지적하는 것을 주저합니다. 나는 그들보다 더 개방적이고 정직한 사람이되기를 바라지 만 솔직히이 시점에서 그 관계가 충분히 발전되었는지는 모른다. – InvertedAcceleration

+0

솔직히 프로그래밍 질문처럼 전혀 들리지 않습니다. – bzlm

1
내가 당신을 위해 특정 그림 (웹 기사와 블로그로 가득하다,하지만 난 어떤 비디오를 잘 모르는 것 같아요)의 모르겠지만, 당신은 꽤 많이 자신의 질문에 대답

...

우리는 테스트가 후에 생각되었다 ... 폭포를 사용하고 결과 단위 테스트 코드 범위가 상당히 낮은이기 때문에 우리는 '우리가 거의 다된다'끝없는 문제

말할 것도없고, 편안한 느낌을보다

고객에게 솔직하게 말하면됩니다. 마지막 프로젝트에서 사용한 프로젝트 방법론이 융통성, 유지 보수성, 그리고 자신에게 품질의 코드를 제공 할 수있는 능력이라는 관점에서 비용이 많이 들었음을 그들에게 설명하십시오. TDD가이를 어떻게 설명하는지 설명하고 새로운 방법론을 사용함으로써 느린 시작을 예상한다고 설명하십시오.

가능한 한 구체적으로 그들이 얻을 수있는 것을 설명하고 쉽게 팔아야합니다. 그러나 나는 "우리가 할 수 있겠는가?"보다는 "이것이 우리가하고있는 일을 계획하고있다"라는 관점에서 더 많이 접근 할 것입니다. 각도.그들에게 당신이 이미 이런 방식으로 계획하고있는 인상을주고 (부정직하지 않고), 그 계획을 변경하면 당신과 당신의 팀에게 불편할 것이며, 생산성이 떨어질 것입니다.

0

나는 비디오를 전혀 알지 못한다. 그러나 원래의 디자인으로 인해 마지막 프로젝트에서 특정 기능을 재 설계하는 데 N 시간이 걸렸다 고 설명한다. 테스트를 시작할 때까지 잡히지 않았다. 그리고 TDD를 사용하면 지난 번 발생한 나쁜 디자인/버그를 기반으로 추가 시간을 보내지 않으므로 M (< < N) 시간이 걸립니다.

또한 버그가 적은 소프트웨어를 사용하는 신뢰 수준은 생각한 테스트로 인해 Y % 증가 할 것이라고 설명합니다.

그런 다음 첫 번째 사람에 대한 학습 곡선의 X 시간을 추정하고 초기 시간 투자가 가치가있는 모든 미래 프로젝트에 주어진 이점이 가치가 있는지 물어보십시오.

+0

마지막 프로젝트에서 여러 가지 중요한 예가 있습니다. 문제의 일부는 고객이 눈치 채지 못하게 문제를 보이지 않게 소비하려고 시도했기 때문입니다. 특히 고통스러운 재 설계. – InvertedAcceleration

0

첫째, 단위 테스트는 애자일 방법론에 고유하지 않습니다. 나는 잠시 있었고 폭포 프로젝트에 사용되는 것을 보았습니다. 사실, Agile에 대해 들어 본적이 있기 훨씬 전에 단위 테스트에 대해 들어 봤습니다!

두려움 클라이언트에게 개발 방법론을 전환하도록 유도하는 데 도움이되는 동영상을 알려 드릴 수는 없습니다. Google이 도움을 줄 수 있습니다. 동영상이 아니라면 연구, 블로그 등을 사용하는 것이 좋습니다.

어쨌든 고객이 학습 곡선에서 생산성을 저하시킬 가능성을 높이려면 비용을 줄이는 것이 좋습니다. 예 : 시간별 청구서를 보내는 경우에는 학습 한 시간 동안 시간당 요금을 낮추거나 학습 시간 동안 청구하지 마십시오.

0

나는이 질문에 내가 할 수있는 최고의 비디오를 찾는 데 많은 시간을 할애하여 내가 필요한 것에 매우 가까운 숫자를 발견했다. 나는 다른 사람들이 나와 비슷한 위치에 있다면 그들을 찾을 수 있도록 여기에 게시 할 것이다.

나는 TDD에 대해 더 많이 물었습니다. 그러나이 비디오는 제가 집으로 운전하려고하는 메시지의 좋은 부분을 캡처합니다 ... 특히 '애자일 소프트웨어 개발은 ​​왜 유료입니까'와 '스크럼 10 분 안에' 이는 변화에 반응하고 고품질의 코드를 생성하며 결함이 적고 개발주기가 빨라지는 과정입니다.

  • Scrum in under 10 minutes (7:59)Why does Agile Software Development Pay? (5:03)
  • Scrum Basics (5:50)Agile vs waterfall: A Tale of Two Teams (8:20)
  • 2

    프로젝트를 내부적으로 실행하는 방법은 귀하의 비즈니스입니다. 이 결정에 그들을 포함시키지 마십시오.그들은 소프트웨어 개발 프로세스의 전문가가 아닙니다. 비즈니스 요구 사항과 그들이 알고있는 것에 대해 그들에게 질문하십시오.

    프로젝트 품질을 향상시키는 데 도움이되는 소리입니다. TDD를하는 데 더 많은 비용이들 것이라고 생각하십니까? 왜 그들에게 무엇인가를 설득하고 승인을 요청하는 일을합니까? 마지막 프로젝트에서 폭포를 할 수 있는지 물어 보셨습니까?