Interesujące pytanie brzmi: kiedy otrzymasz zapłatę, a nie to, czy Twój klient sam wykonuje jakieś testy.
- jeśli otrzymujesz zapłatę na podstawie czasu, nie ma problemu.
- jeśli otrzymasz płatność z góry, nie ma problemu.
- jeśli dostaniesz zapłatę, gdy klient uzna projekt za „zakończony”, duży problem.
Problem polega na tym, skąd możesz wiedzieć, kiedy klient zaakceptuje oprogramowanie i zapłaci ci. To oczywiście nie działa, gdy klient stale zmienia projekt z niejasno zdefiniowanymi nowymi żądaniami. Jeśli oznacza to, że dzień wypłaty jest zawsze odraczany - i staje się bardziej mało prawdopodobny przy każdym żądaniu - staje się to dla ciebie niemożliwe.
Stała umowa, która dokładnie określa wszystkie funkcje i określa warunki, na jakich klient zaakceptuje te funkcje, jest wyraźnie bardzo niewygodnie surowa, ale umożliwia wcześniejsze zaplanowanie projektu (także następnego projektu). Gwarantuje również, że dostaniesz pieniądze za dostarczone oprogramowanie, jeśli spełnia ono wymagania specyfikacji. W takim scenariuszu jedyną odpowiedzialność klienta spoczywa na etapie definiowania umowy, a na końcu za testem akceptacyjnym .
Takie testy akceptacyjne wykonywane przez klienta są niezależne od innych form testowania:
- testy jednostkowe
- testy integracji systemu
- testy użyteczności
- testy obciążenia
- testy przedpremierowe
O ile to możliwe, należy przewidzieć testy akceptacyjne i wykonać je samodzielnie przed dostarczeniem funkcjonalności, aby uniknąć kłopotów. Oprócz testów akceptacyjnych (które mierzą tylko wykonanie umowy , a nie jakość oprogramowania ), odpowiedzialność za zapewnienie jakości spoczywa na tobie. W szczególności twój klient niekoniecznie ma nastawienie do zapewniania jakości, niezbędne zaplecze techniczne lub umowny obowiązek przeprowadzenia kontroli jakości. Uważam też, że outsourcing wyszukiwania błędów do klienta jest dość nieprofesjonalny.
Nie oznacza to, że błędy się nie zdarzają. Zakładając, że masz relację opartą na projektach z klientem, będziesz chciał przejść od uprzejmości do szybkiego dostarczania poprawek i wyjaśnić, że zaakceptowali obecną wersję jako wystarczającą do ich potrzeb - duże zmiany wymagają nowej umowy. Jeśli masz stałą umowę wsparcia, musisz oczywiście przestrzegać ustalonego poziomu usług.
W zwinnym otoczeniu reagowanie na potrzeby klientów jest cenione bardziej niż trzymanie się litery umowy, ale nadal będziesz chciał otrzymywać zapłatę. Dlatego wiele metodologii projektów zorientowanych na zwinność ceni ścisłą interakcję z klientem do tego stopnia, że klient może stać się częścią zespołu. Możesz wtedy zawsze porozmawiać z tym „właścicielem produktu”, aby wyjaśnić wszelkie niezbędne kwestie. Ponieważ organizacja zamawiająca ma prawo dać ci czas na pracę nad dowolną funkcją, którą uznają za cenną, może to zadziałać nawet w przypadku niejasnych potrzeb klienta. Jeśli nie masz tak bliskiej komunikacji, będziesz musiał zastosować bardziej formalne podejście.
- Kiedy dowiesz się o potrzebach nowego klienta, pracuj z nim, aby przełożyć go na wymagania. Pomaga to klientowi uzyskać to, czego naprawdę chce.
- Wymagania są obiektywnie mierzalne - są albo spełnione, albo nie. To oszczędza klientowi pół-rozwiązań, które są tylko rodzajem pracy.
Wszystkie żądania klientów muszą być przekazywane w formie pisemnej, aby można było je rozliczyć. Chroni to ich przed naliczaniem opłat za rzeczy, nad którymi po prostu chciałeś pracować - na przykład przepisywanie całego interfejsu, gdy pytasz o przycisk, który ma zostać wyrównany w inny sposób.
Dużo komunikacji można wykonać osobiście lub przez telefon, ale na końcu chcesz, aby kawałek papieru udokumentował, że klient chciał, abyś pracował nad tymi wymaganiami. W prostych przypadkach może być wystarczające podsumowanie połączenia telefonicznego i wysłanie do nich wiadomości e-mail w celu zweryfikowania, o co Cię poprosili.
Zgłoszenia błędów są zawsze trudne. Jeśli Twoi klienci sami są deweloperami, powinno to pomóc, ponieważ mogą zrozumieć Twoje potrzeby: mieć wyraźne kroki do reprodukcji. Prostym sposobem na uzyskanie silnego wglądu jest umożliwienie logowania do wdrożonego oprogramowania. Pod warunkiem, że można rozwiązać problemy związane z prywatnością danych, wymagając, aby każdy raport o błędzie miał dołączony bieżący dziennik, nie tylko gwarantuje pewną pisemną komunikację, ale także mówi, co faktycznie zrobił użytkownik (w przeciwieństwie do tego, co sądzili, że próbowali zrobić) .