Pierwsza rozmowa z klientem
Dzisiaj rozpoczyna się nowy projekt. Jak zawsze w takich przypadkach w zespole panuje nutka podniecenia i próby zgadywania, co będzie jego przedmiotem. Już są pewne informacje, ale to ciągle jeszcze nic pewnego.
Rozmowa z klientem zaczyna się. Po kilku minutach wstępnej rozmowy, przechodzimy do konkretów. (K - Klient, Z - Zespół).
Z: Jak moglibyśmy zdefiniować wizję projektu? Taką główną, nadrzędną myśl, ideę, która będzie mu przyświecać. Czemu ma służyć? Jest to o tyle ważne, że ta wizja, którą teraz zdefiniujemy, będzie głównym wyznacznikiem celowości podejmowanych działań. I oczywiście definiuje cel samego projektu. Motywuje do działania. Pozwala stworzyć końcowy obraz.
K: Chciałbym stworzyć system internetowy, który pozwoli w inteligentny sposób wyszukiwać przepisy kucharskie.
Z: To ciekawy pomysł i świetnie zdefiniowana wizja. Czy możemy mu się bliżej przyjrzeć?
K: Oczywiście. Istnieje wiele stron z przepisami kucharskimi i to nawet bardzo dobrych stron. Jednak mają one kilka wad. Są dość statyczne – nie pozwalają na bardziej zaawansowane przeszukiwanie przepisów. Zazwyczaj nie ma możliwości wybrania przepisów na bazie własnych upodobań czy wyszukania ich na bazie posiadanych składników. Brakuje swoistej inteligencji, która uprościłaby życiu użytkownikom portalu.
Z: Powoli zaczyna mi się to wszystko układać. Może spróbujemy wyodrębnić najważniejsze funkcje systemu?
K: Mam sporo pomysłów, ale nieduży budżet. Dlatego na początek chciałbym, aby była możliwość wyszukania przepisu, bazując na liście składników, które posiadam w danym momencie. Załóżmy, że jest środa wieczór, mam jajka, mąkę, bakłażan, mleko, trochę masła i chciałbym zrobić coś z tego do jedzenia. Nie mam pomysłu na to, co to może być. Więc otwieram portal do wyszukiwania przepisów, wpisuję składniki, które posiadam oraz ewentualnie preferencje np. rodzaj potrawy – zupa, ciasto, zakąska, rodzaj kuchni – polska, azjatycka, francuska, włoska … W efekcie dostaję kilka przepisów, które mogę zrealizować z posiadanymi składnikami. I to wszystko.
Z: A w jaki sposób użytkownik będzie wpisywał dane?
K: Wszystko musi być jak najprostsze z punktu widzenia użytkownika. Użytkownik powinien jak najmniej myśleć i podejmować wysiłku. Dlatego wyobrażam sobie, że będą dwa pola tekstowe – jedno do wpisywania składników, wiersz po wierszu, drugie do wpisania preferencji, to drugie będzie opcjonalne. Minimum wpisywania i konfiguracji. Oczywiście mogą być dodatkowe opcje, ale dostępne pod przyciskiem „Zaawansowane”. W domyślnej formie musi do być uproszczone do minimum. Pewnie przydawałaby się jakaś forma podpowiadania, żeby użytkownik nie musiał zbyt wiele pisać.
Z: Interesujące. Jak w tym polu tekstowym będzie użytkownik wpisywał składniki? W jakim formacie. Może tutaj napisze pan przykład na kartce.
K: Na przykład tak:
1/2 kg mąki
pół kostki masła
1/3 litr mleka
5 jaj
Z: Muszę przyznać, że to spore wyzwanie. Będzie wymagać analizy tego typu zapisu. Czy nie możemy zrobić tego w inny sposób, np. przez odpowiednie pola wyboru?
K: Nie, zdecydowanie nie. Komu by się chciało to robić w taki sposób. Musi to być zrealizowane w taki sposób. Kiedy w przypadku wizji użyłem słowo inteligentny, to właśnie to miałem na myśli. Rozumiem, że będzie to dość pracochłonne.
Z: Tak, bardzo pracochłonne. Ale jeśli jest to warunek konieczny, to oczywiście możemy to zrealizować w taki sposób. Przedstawimy później wstępne oszacowaniu złożoności problemu i zdecyduje Pan, czy chce realizować to w ten sposób.
K: Jeśli się zdecyduję, to tylko w ten sposób!
Z: Widzę zatem, że zapis składników może być dość dowolny – mogą to być takie jednostki jak kilogramy pisane w całości lub skrótowo, a nawet bardziej umowne jednostki jak pół kostki.
K: Tak, to też jest warunek konieczny.
No cóż, zapowiada się niebanalny projekt - myślę. Robi się coraz bardziej skomplikowany. Ciekawe co jeszcze wymyśli nasz Klient.
Z: Czy coś jeszcze może być wpisywane do tego pola? Może w jakiejś innej formie?
K: Wydaje mi się, że nie.
Z: A co zatem z drugim polem – Preferencje? Też powiedział Pan, że ma to być pole tekstowe.
K: Tak, zdecydowanie. Również tutaj chciałbym, aby była możliwość swobodnego wpisania swoich preferencji np. zupa, kuchnia azjatycka.
Z: Czyli poszczególne elementy rozdzielane przecinkami?
K: Tak, mogą być przecinki albo nowy wiersz.
Z: Jakiego typu preferencje przychodzą panu do głowy?
K: Rodzaj kuchni – region, typ potrawy – np. zupa, ciasto, może rodzaj diety, w której jest dozwolona, czas wykonania.
Z: Czy coś jeszcze można wpisać w to pole?
K: Wydaje mi się, że nie.
Z: Dobrze, zatem mamy dwa pola tekstowe – w jednym wpisujemy składniki, które mamy do dyspozycji, w drugim preferencje oraz przycisk wyszukiwania.
K: Dokładnie! Powinno się to odbywać tak jak w typowych wyszukiwarkach internetowych – minimalny, ale inteligentny interfejs.
Z: Dobrze, zatem przypuśćmy, że użytkownik wpisuje dane oraz wciska przycisk szukaj. I co dalej się dzieje?
K: Następnie jest strona z wynikami! Zupełnie jak w klasycznej wyszukiwarce. Dobrze by było, gdyby lista wyników pokazywała się w dwóch formach: w postaci skróconej – tylko nazwa potrawy oraz informacje związane z preferencjami czyli rodzaj kuchni, rodzaj potrawy; w postaci rozszerzonej – to co w postaci skróconej i dodatkowo jeszcze lista składników. W jednym i drugim przypadku, nazwa potrawy to link, do strony, na której znajdują się szczegóły przepisu.
Z: Jeszcze wrócę na chwilę do wspomnianych list – jak użytkownik będzie wybierał rodzaj listy?
K: Hmm… Domyślnie niech będzie wersja skrócona, ale na liście wyników będzie do dyspozycji przycisk do zmiany formy wyników. A… i jeszcze wyniki powinny być stronicowane tak jak w przeglądarce i uszeregowane od najlepszego do najsłabszego.
Z: A co będzie decydować o tym, że jeden przepis jest lepszy od drugiego?
K: H… dobre pytanie. Może niech to będzie minimalne lub maksymalne zużycie produktów.
Z: Czyli jaka część produktów zostanie zużyta?
K: Tak?
Z: A co będzie domyślną opcją?
K: … Niech będzie minimalne zużycie. No i jakiś przycisk do zmiany tego sortowania.
Z: Świetnie! A czy coś jeszcze ma być na tej stronie wyników?
K: Chyba nie..
Z: A jeszcze wspomniał Pan o przycisku „Zaawansowane”…
K: Tak, ale jeszcze nie mam pomysłu, co tam miało by być. No w zasadzie jeden. Otóż można by wprowadzić taki parametr, który określałby jakie elementy miałyby nie być brane pod uwagę. Na przykład sól i pieprz, woda czy inne tego typu rzeczy, które każdy ma, nie powinno się wpisywać. Dlatego ustawienia zaawansowane mogłyby określać, co jest, a co nie jest brane pod uwagę.
Z: A jak miałoby to wyglądać? Myślę, że byłaby to lista z odhaczeniami, gdzie można by zaznaczać, to co nie jest brane pod uwagę.
K: A co to mogłoby być?
Z: Na obecną chwilę, to co mi przychodzi do głowy to: woda, sól, pieprz, inne przyprawy. Ale ta lista może ulec rozszerzeniu.
K: Czy coś jeszcze powinno się znaleźć w sekcji zaawansowane?
Z: Chyba nie…
Potem podsumowaliśmy rozmowę oraz kluczowe informacje, które z niej wyniknęły. Jest zatem zarys wymagań. Teraz czas uporządkowanie tychże wymagań.
Kilka wskazówek związanych z rozmową z klientem
Klientem może być każdy: kierownik, szef, wykładowca, kolega, reprezentant klienta. Początek projektu to przede wszystkim czas na określenie wizji – oświadczeniu czemu system ma służyć. Jest to nadrzędny cel projektu. Na nim będziemy bazować, określając z klientem, które działania mają sens.
Następnie staramy się zebrać kluczowe wymagania na ogólnym poziomie – jakie konkretne funkcje system ma realizować. Kiedy już je mamy, rozkładamy na czynniki pierwsze. Bardzo przydatne będą pytania:
Czy coś jeszcze powinno się tu znaleźć …
Co jest ważne w następnej kolejności …
oraz pytania za pomocą, które przechodzimy od ogólnych stwierdzeń do stwierdzeń konkretnych:
Co konkretnie musi zajść/jak to ma działać/jak to ma być zorganizowane, aby wymaganie X zostało spełnione…
Co musi być spełnione, aby można było stwierdzić, że dana funkcja została zrealizowana…
Oczywiście powyższy scenariusz jest mocno uproszczony, ale daje pewien pogląd na przebieg tego typu rozmowy.