Ten ebook jest chroniony znakiem wodnym

helion.pl Kopia dla:

Piotr Klockiewicz subzeropl@gmail.com
subzeropl@gmail.com

Michał‌ Bartyzel

Oprogramowanie szyte na miarę

Jak rozmawiać z klientem, który nie wie, czego chce.
Wydanie II rozszerzone

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Redaktor prowadzący: Magdalena Dragon-Philipczyk

Projekt okładki:‍ ULABUKA

Rysunki: Maria Pankowska

Wydawnictwo HELION

ul.‍ Kościuszki 1c,‌ 44-100 GLIWICE

tel.‍ 32 231 22 19, 32 230 98 63

e-mail: onepress@onepress.pl

WWW: http://onepress.pl (księgarnia‌ internetowa, katalog książek)

Drogi Czytelniku!

Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres

http://onepress.pl/user/opinie/opszm2_ebook

Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

ISBN: ePub: 978-83-283-2016-1, Mobi: 978-83-283-2017-8

Copyright © Michał Bartyzel 2015

- Poleć książkę

- Kup w wersji papierowej

- Oceń książkę

- Księgarnia internetowa

- Lubię to! » nasza społeczność

Dla Edyty, Naduni i Dzidziusia

Wstęp‍ do wydania drugiego

Życie i śmierć są w mocy języka, jak kto go używa, tak i spożyje zeń owoc.

— Księga‍ Przysłów 18, 21

Drogi Czytelniku, dziękuję Ci za przeczytanie pierwszego wydania książki. Pozytywne opinie oraz mój wydawca zmotywowały mnie do przygotowania wydania drugiego. Przez ponad dwa lata miałem okazję obserwować, w jaki sposób techniki przedstawione w książce są stosowane w praktyce, a także otrzymałem wiele rzeczowych informacji zwrotnych. Pozwól, że krótko podsumuję najistotniejsze zmiany w tym wydaniu.

Najważniejsze‍ są potrzeby. Sądzę, że w pierwszym wydaniu temat poszukiwania potrzeb klienta został przesłonięty przez wszechobecny nacisk na dbałość o precyzję pozyskiwanych informacji. Choć precyzja jest nie do przecenienia, to uważam, że potrzeby klientów są tym, czym powinniśmy się zajmować w pierwszej kolejności. Z tych względów mocno wyeksponowałem techniki związane z odkrywaniem potrzeb. Ponieważ praca z potrzebami klienta jest o wiele trudniejsza niż precyzowanie informacji, dodałem przykłady, jak używać w tym celu User Stories.

Uporządkowałem‍ dialogi. W pierwszym wydaniu przykładowe dialogi odbywały się między programistą a klientem, programistą a analitykiem, klientem a analitykiem. Chciałem przez to pokazać, że każda osoba ze strony IT powinna być przygotowana do prowadzenia konwersacji. Część czytelników była zmieszana tymi roszadami wśród rozmówców. W tym wydaniu dialogi toczą się więc zawsze pomiędzy stereotypowym specjalistą (programistą, architektem, analitykiem) a stereotypowym klientem (osobą nietechniczną).

Wspomniałem o chemii. W odpowiedzi na częste pytania na temat tworzenia dobrej atmosfery podczas rozmowy wprowadziłem podział na techniki związane z mechaniką konwersacji (nawigowanie poprzez strukturę rozmowy) oraz techniki związane z poprawianiem chemii konwersacji (dbanie o dobrą atmosferę).

Podkreśliłem znaczenie kontekstu jako tła do zrozumienia przekazu informacji. Ma to swoje odzwierciedlenie w rozdziale na temat myślenia biznesowego oraz w powtarzanych co jakiś czas zachętach do samodzielnego interpretowania przedstawianych technik zamiast do ich literalnego stosowania.

Ponadto wprowadziłem wiele pomniejszych zmian, które z pewnością, Czytelniku, zauważysz w trakcie lektury.

Szczególne‌ podziękowania kieruję do: Krystiana Kaczora za wnikliwą recenzję merytoryczną wersji autorskiej, Marii Pankowskiej za przygotowanie wspaniałych ilustracji oraz Mikołaja Mędrzyckiego za uwagi na temat wizji produktu.

Wstęp‌ do wydania pierwszego

Zawartość tej książki powstawała głównie w trakcie spotkań z klientami. Właśnie wtedy najsilniej odczuwałem potrzebę korzystania z jednoznacznych i skutecznych metod zbierania wymagań. Dlatego w pierwszej kolejności dziękuję moim klientom. Gdyby nie różnorodność osobistości, branż i projektów, prawdopodobnie ta książka nigdy by nie powstała. W drugiej kolejności dziękuję uczestnikom szkoleń, którzy byli pierwszymi użytkownikami zawartych tu metod. Ich zaangażowaniu i konstruktywnym uwagom zawdzięczam nieustanną motywację do rozwijania technik zbierania wymagań.

Szczególne‌ podziękowania kieruję do: Mariusza Sieraczkiewicza, Edyty Bartyzel i Waldka Maniewskiego za szczegółową analizę i wnikliwe uwagi do pierwszej wersji skryptu. Dzięki Wam ta książka stała się lepsza!

Rozdział‍ 1.
Między‌ biznesem a IT

Witaj!‌ Dziękuję, że zdecydowałeś się poświęcić swój czas na przeczytanie tej książki. Ponieważ spędzimy razem kilka godzin, proponuję, abyśmy mówili sobie po imieniu. Ja mam na imię Michał. Przyjęło się, że autor zwraca się do Czytelnika w rodzaju męskim, lecz bądź pewna, Droga Czytelniczko, że piszę również do Ciebie.

Być‌ może Cię zaskoczę, ale ten rozdział zostawiłem sobie do napisania na sam koniec. Teraz, gdy wszystkie pomysły nabrały już realnego kształtu, wiem, że w tej książce znajdziesz praktyczny przewodnik po technikach zbierania wymagań i prowadzenia konwersacji z klientem. Z tego powodu mam cichą nadzieję, że co jakiś czas będziesz tu wracać, aby skonfrontować przedstawione metody działania z własnymi doświadczeniami. Jeśli zechcesz się ze mną podzielić swoimi przemyśleniami na temat skuteczności opisanych technik albo będziesz miał jakieś pytanie, albo przyjdzie Ci do głowy jakiś nowy pomysł — napisz do mnie na adres: m.bartyzel {at} bnsit.pl.

Dla‌ kogo jest ta książka?

Książka dotyczy procesu wytwarzania oprogramowania. Sam jestem zwolennikiem procesów zwinnych[1], toteż w pierwszej kolejności książkę kieruję do członków zwinnych zespołów. Jestem przekonany, że pomoże ona Wam w pełniejszy sposób odpowiedzieć na wezwanie Manifestu Agile[2].

Czy oprogramowanie jest wytwarzane zwinnie, czy nie, w trakcie prac pojawiają się m.in. następujące aktywności:

- zbieranie i analiza wymagań biznesowych;

- zbieranie i analiza wymagań użytkownika i funkcjonalności;

- projektowanie architektury systemu;

- implementacja,‌ czyli programowanie;

- testowanie;

- wdrażanie;

- utrzymywanie,‌ w tym: poprawianie błędów, dodawanie nowych funkcjonalności itp.

Niemal w każdej z nich występuje działanie, które możemy nazwać zbieraniem wymagań. Przez zbieranie wymagań będziemy‍ rozumieć odkrywanie,‍ czego oczekuje zleceniodawca od systemu informatycznego. Jednym z kluczowych składników owego dowiadywania się jest rozmowa albo wywiad z klientem i użytkownikami. W zależności od zastosowanego podejścia z klientem/użytkownikiem mogą kontaktować się: programiści, starsi programiści, analitycy biznesowi, analitycy systemowi, analitycy funkcjonalni, projektanci, architekci[3]. Dla tych wszystkich osób przeznaczona jest ta książka.

O‌ nazewnictwie

Będziemy‌ poruszać się po dziedzinie, w której językiem urzędowym jest angielski. Większość narzędzi, książek czy metodyk powstaje właśnie w tym języku. W konsekwencji w angielskim ma również źródło specyficzne nazewnictwo. W branży wytworzyła się swoista nowomowa, będąca zlepkiem języka polskiego oraz spolszczonych i niespolszczonych słów angielskich. Wszystkie terminy, które mają funkcjonujące w mowie odpowiedniki w języku polskim, przetłumaczyłem. Jednak pojęcia, których używa się w ich pierwotnej albo nieco spolszczonej postaci, pozostawiłem nietknięte.

Choć‌ piękno języka polskiego jest nie do podważenia, to jednak najczęściej ulegamy wygodzie. Zwartość komunikatu wraz z precyzją przekazu biorą górę nad poprawnością językową. Z drugiej strony, tłumaczenie już funkcjonujących terminów na siłę przynosi więcej szkody niż pożytku[4], wprowadzając niepotrzebny szum informacyjny. Poza tym takie tłumaczenia brzmią po prostu nienaturalnie i dziwnie[5].

Kim‌ są: biznes, IT i klient?

Ponoć rysunek zastępuje tysiąc słów, dlatego w tej książce grafiki będzie dużo. Zaczniemy już teraz od rysunku 1.1.

Rysunek 1.1. Biznes i IT

Na potrzeby tej książki przyjmiemy następujące definicje:

- IT — to w naszym przypadku osoby, które będą wykonywać system informatyczny.

- Biznes — to osoby, które doszły do wniosku, że aby lepiej wykonywać swoją pracę, potrzebują systemu informatycznego, wiedzą, w czym on ma im pomóc, oraz zgodziły się zapłacić za jego wytworzenie.

- Klient — to przedstawiciel biznesu, który podejmuje ostateczną decyzję, czy IT wykona zlecone prace, i zatwierdza płatność za usługę.

- Użytkownik — osoba,‌ która będzie używać systemu w swojej pracy.

W potocznym języku, mówiąc „IT”, ma się na myśli nie tylko „tych, którzy tworzą system” informatyczny, a zatem: analityków (po stronie wykonawcy), architektów, programistów, testerów, wdrożeniowców, lecz również ludzi, którzy dbają o całą infrastrukturę sprzętową i programową organizacji, np. administratorów.

Definicję klienta można zgeneralizować i powiedzieć, że zawsze mamy na myśli relację zleceniodawca-wykonawca, niezależnie od kontekstu. Dla programisty klientem może być lider zespołu albo analityk, dla analityka osoba zatwierdzająca specyfikację, dla testera kierownik zespołu, dla architekta analityk itd. Można także mówić o kliencie wewnętrznym — kimś z innego działu Twojej organizacji, lub o zewnętrznym — pracowniku firmy, dla której wytwarzasz oprogramowanie.

W obszarze zbierania wymagań, na którym skupia się ta książka, klientem jest zawsze osoba z biznesu. Ponieważ pisząc o kliencie, zawsze mam na myśli kogoś, dla kogo wykonuje się pracę, będę wymiennie używał pojęć „klient” oraz „użytkownik”. Jeśli wystąpi potrzeba rozróżnienia pomiędzy tymi dwoma rolami, to wyraźnie to zaznaczę.

Ile‍ zarządzania jest w zarządzaniu wymaganiami?

Czy pamiętasz swoją ostatnią konwersację z klientem na temat oprogramowania, nad którym pracujecie? Czy zauważyłeś, że w miarę postępów tej konwersacji zaczynaliście się coraz lepiej rozumieć? Coraz wyraźniej docierało do Ciebie, czego klient właściwie potrzebuje. Być może zapisywaliście hasłowo albo symbolicznie jakieś informacje na kartce. Ten zwięzły zapis wystarczył, żeby odwołać się do Waszego wspólnego‍ zrozumienia tematu,‌ o którym rozmawiacie. Owo wspólne zrozumienie nazywane jest współdzielonym kontekstem konwersacji (rysunek 1.2).

Rysunek 1.2. Współdzielony kontekst konwersacji

Wszystko działa dobrze, dopóki rozmawiają te same osoby. Co jednak, jeśli trzeba wprowadzić w temat kogoś innego? Zazwyczaj robimy wówczas jedną z dwu rzeczy: poświęcamy czas na rozmowę i ponowne zbudowanie współdzielonego kontekstu lub przygotowujemy dokument.

Kłopot z dokumentem polega na tym, że jest on tylko ostateczną postacią ustaleń konwersacji. Nie odzwierciedla procesu wymyślania rozwiązania, tylko jego ostateczny kształt. Nie zawiera skojarzeń i przesłanek, które doprowadziły autora do takich, a nie innych wniosków. Z tego powodu osoba pozostawiona sam na sam z dokumentem może nie rozumieć go tak dobrze jak Ty (rysunek 1.3).

Rysunek 1.3. Powstawanie dokumentu

Dokumentowanie wymagań jest bardzo ważne, lecz aby tego dokonać, trzeba je najpierw zebrać.

W wielu publikacjach mających w tytule „zarządzanie wymaganiami” bardzo wiele miejsca poświęca się: klasyfikacji wymagań, dokumentowaniu wymagań, diagramom UML[6]. A co z „zarządzaniem”? Zarządzanie wymaganiami jest procesem, dzięki‌ któremu powinniśmy umieć odpowiedzieć na następujące‍ pytania:

- Jaki wpływ na istniejący system mają nowe wymagania?

- Co należy zmienić w systemie w następstwie nowych wymagań?

- Jak zorganizować implementowanie nowych wymagań?

Jednymi z najbardziej dotkliwych zmian w procesie wytwarzania oprogramowania są zmiany w wymaganiach. Istotą zarządzania wymaganiami jest kontrolowanie zmian w wymaganiach, wprowadzanie ich i monitorowanie ich wpływu na działający system.

Aby móc odpowiednio zarządzać wymaganiami, trzeba docierać do istoty potrzeb klienta i stale je analizować. Dopóki system jest używany, proces zarządzania wymaganiami musi trwać, gdyż działające oprogramowanie trzeba stale dostosowywać do zmieniającej się rzeczywistości. Podobnie dopóki funkcjonuje zarządzanie wymaganiami, wciąż musimy umieć je zbierać, precyzować, docierać do stojących za nimi motywacji, po to, aby sprawnie realizować postawione przed nami zadania.

Klient,‌ który wie, czego chce

Czy nie nurtuje Cię, dlaczego często uważa się, że klient nie wie, czego chce od programistów, analityków, liderów projektów i testerów? Z drugiej strony, dlaczego jest oczywiste, że ludzie z działu IT zawsze wiedzą, czego chcą od klienta? Bywa, że jesteśmy bardzo przywiązani do takich opinii, zwłaszcza gdy wyrobiliśmy je sobie podczas wielu spotkań z osobami nietechnicznymi. Chyba jednak zgodzisz się, że to jednostronne spojrzenie jest nie do końca sprawiedliwe. Przypatrzenie się obu stronom komunikacji poszerzy Twoją perspektywę.

Gdy siedzisz naprzeciw klienta i nie wiesz, co próbuje Ci przekazać, to powinieneś sobie uświadomić, że ma on jakąś potrzebę i uważa, że technologie informatyczne na pewno mu w tym pomogą. Gdyby klient czegoś nie potrzebował, to nie spotykałby się z Tobą. Z tego względu proszę Cię, abyś w trakcie lektury tej książki przyjął następujące założenia:

- Klient zawsze wie, czego chce — wie,‍ że chce rozwiązać‍ jakiś problem, osiągnąć jakiś cel, coś usprawnić.

- Klient nie zawsze wie, czego potrzebuje — ponieważ jest skupiony przede wszystkim na swoich procesach biznesowych.

- Klient często nie zdaje sobie sprawy z konsekwencji swoich oczekiwań — gdyż jest ekspertem w obrębie swojej działalności biznesowej, a nie w obszarze technologii informatycznych.

Jeśli zgodzisz się przez chwilę myśleć w ten sposób, wspólnie poszukamy narzędzi, które ułatwią Ci pracę z klientem.

Czy zastanawiałeś się kiedyś, jak by to było, gdybyś budząc się pewnego dnia, ze zdziwieniem zauważył, że przepadła gdzieś tajemniczo cała Twoja z trudem zbierana wiedza informatyczna, wiedza o programowaniu, o systemach, że cała Twoja umiejętność pracy z komputerem sprowadza się do wciskania przycisku power i czasem reset. Jak by to było, gdybyś przeżył coś takiego?

Wyobraź‌ sobie, że tak jest, i wytłumacz mi, że chciałbyś, abym stworzył oprogramowanie, które będzie Twoim osobistym terminarzem. Opisz swoje oczekiwania dotyczące tej aplikacji. Czy to łatwe zadanie, czy trudne? O jakich rzeczach będziesz mówił z tego IT-agnostycznego punktu widzenia?

Prawdopodobnie opowiesz o:

- swoich wyobrażeniach;

- tym,‍ co widziałeś w aplikacjach podobnego typu;

- tym,‍ co ktoś Ci powiedział na temat aplikacji tego typu;

- swoich problemach z terminarzami papierowymi;

- swoich obawach związanych z przejściem z terminarza papierowego na elektroniczny.

Chociaż‌ większość klientów jest pewnie o wiele bardziej niż to przedstawiłem wyedukowana w kontakcie z komputerem, to jednak to krótkie doświadczenie pozwoliło Ci spojrzeć na świat oczami stereotypowego klienta. Jak byś się poczuł, gdybyśmy powiedzieli Ci, że nie wiesz, czego chcesz? Pewnie uważałbyś, że nie mamy racji, przecież Ty wiesz, czego chcesz: chcesz mieć elektroniczny organizer i starasz się to wytłumaczyć najlepiej jak potrafisz.

Wróćmy teraz do perspektywy programisty. Gdybyś otrzymał takie zadanie do zaimplementowania: „Stworzyć elektroniczny terminarz”, to chciałbyś dowiedzieć się czegoś więcej. Jak ma wyglądać? Jakie funkcjonalności ma udostępniać? Jak konkretnie ma działać? To jest sedno sprawy. Aby stworzyć oprogramowanie, potrzebujesz bardzo konkretnych i szczegółowych informacji, których klient Ci nie dostarcza. Dlaczego? Bo nie wie, że powinien. Opisuje swoje oczekiwania tak dobrze jak potrafi. Dziwi go, że chciałbyś wiedzieć, czy zapiski w terminarzu powinny być trwale przechowywane i jak długo, ile osób ma mieć dostęp do terminarza, czy terminarz ma być używany na komputerze PC, notebooku, tablecie czy telefonie. Odpowiedzi na niektóre pytania są dla klienta oczywiste. Czy zapiski mają być przechowywane? Jasne, że tak! Jak długo? Na zawsze! Inne pytania budzą u klienta zdziwienie, gdyż nie wiedział, że są istotne podczas tworzenia oprogramowania. Do momentu gdy nie wyewoluuje w ludziach umiejętność telepatii, zadawanie pytań jest najlepszym sposobem na poznanie myśli innych osób.

Opisane sytuacje dzieją się każdego dnia. W setkach firm podczas tysięcy spotkań miliony sfrustrowanych uczestników wciąż na nowo zadają sobie te same pytania: Co on mówi? Dlaczego mnie nie słucha? O co mu chodzi? Dlaczego on nic nie rozumie? Gdy rozmawiasz z kimś, to od Ciebie zależy przynajmniej 50% efektywnej komunikacji. Już za chwilę dowiesz się, jak najlepiej tę część wykorzystać.

Podsumowanie

Po przeczytaniu tego rozdziału domyślasz się już z pewnością, dlaczego podtytuł tej książki brzmi Jak rozmawiać z klientem, który nie wie, czego chce? To stereotypowe myślenie, które robi wiele złego w relacjach między biznesem a IT. Zobaczyłeś, jak może wyglądać świat technologii oczami klienta. Klient wie, czego chce, ale nie wie, czego potrzebuje — to najważniejsze zdanie z tego rozdziału i założenie leżące u podstaw wszystkich technik prezentowanych w książce.

[1] W języku‌ angielskim agile, http://c2.com/cgi/wiki?AgileProcesses.

[2] http://www.agilemanifesto.org.

[3] W konkretnych organizacjach role te mogą nazywać się inaczej.

[4] Na przykład dziwaczne tłumaczenia nazw diagramów UML albo wzorców projektowych.

[5] Czy chciałbyś zamiast „reguły biznesowe” mówić „reguły gospodarcze”? Uhhh!

[6] W języku‍ angielskim Unified Modeling Language — zunifikowany język‍ modelowania.

Rozdział‌ 2.
Co‍ to znaczy „myśleć biznesowo”?

Wśród‍ osób z biznesu zazwyczaj powtarza się adresowany do programistów zarzut: „Programiści nie myślą biznesowo”. Co jednak oznacza owo „biznesowe myślenie”, nie do końca wiadomo. Czy oznacza to myślenie o korzyściach, pieniądzach, użytkownikach, sprzedaży? Czy o czymś jeszcze innym? Przyjrzyjmy się bliżej tej sprawie.

Nonszalancja‍ programistów

Nieco światła na zagadnienie „myślenia biznesowego” rzucił pewien zbieg okoliczności. Było to tak.

Otrzymałem zadanie odgrywania przez pewien czas roli właściciela produktu w projekcie, którego celem było stworzenie portalu świadczącego usługi VOD (ang. video on demand). Wspólnie ze sponsorem opracowaliśmy koncepcję merytoryczną, przygotowaliśmy ekrany użytkownika i przepływ między nimi. Na moich oczach produkt nabierał realnego kształtu — na papierze, co prawda, ale zawsze. Tworzyliśmy coraz to nowe możliwości zarabiania na produkcie. Gdy już dość dokładnie wiedzieliśmy, czego chcemy, zaangażowaliśmy do pracy programistów.

Po zakończeniu kilku iteracji przyszedł czas na zaprezentowanie efektów. Niecierpliwie czekałem, aż strona się załaduje, po czym… zbladłem. To, co zobaczyłem, w żaden sposób nie przypominało moich wyobrażeń. Niewiele też przypominało ekrany, które z taką skrupulatnością rysowałem. Prezentując produkt, programiści co chwila powtarzali: „To się zmieni”, „Tu tylko trzeba zmienić skórkę”, „To działa właściwie”. Nie mogłem uwierzyć, że uważają to za zakończone zadanie, mimo wyraźnie określonych oczekiwań. Dotarło do mnie wtedy, że programiści, z którymi współpracowałem, uważali zadanie za zakończone, gdy mieli przemyślany i zaimplementowany mechanizm jego działania (czyli back-end) oraz pewne efekty po stronie interfejsu użytkownika. Dla mnie było to nie do przyjęcia. Chociaż sam długo pracowałem jako programista, w tamtym momencie naprawdę zrozumiałem, co czują ludzie z biznesu, gdy otrzymują nie to, czego się spodziewali.

Moją‌ uwagę przykuło pewne zjawisko, które nazwałem nonszalancją programistów. Nonszalancja ta charakteryzuje się nieprzywiązywaniem wagi do pojęć, które dla biznesu są ważne. Zrobiłem wtedy krótką notatkę, w której zestawiłem nazwy używane przeze mnie w rozmowach z programistami i w definiowaniu User Stories z nazwami, które zobaczyłem na ekranie prezentowanej aplikacji. Zamieszczam tę notatkę w tabeli 2.1.

Tabela 2.1. Nazwy w wydaniu biznesu i nazwy używane przez programistów

Nazwa,‍ którą ja się‌ posługiwałem

Nazwa,‍ której użyli programiści

Moja kinoteka

Lista filmów

Dodaj serial

Dodaj kategorię

Dodaj odcinek

Dodaj plik flv

Opłacony/nieopłacony

Status [checkbox]

Etykiety

Chmura tagów

Czas trwania: 1 h 35 min

Długość:‌ 5 700 000 ms

Dr Home. Sezon 1, odcinek 29

87a1b230ff910912.flv

Okazuje się, że mimo rozmów i przekazywania informacji ja oraz programiści myśleliśmy zupełnie inaczej o tej samej rzeczywistości biznesowej. Ja używałem pojęć związanych z portalami video on demand. Natomiast programiści w tym, co mówię i co rysuję, widzieli bardzo konkretne komponenty z interfejsu graficznego: listy, checkboksy, menu, przyciski — myśleli‌ programistycznie.

Słowa‍ i ich znaczenia

Czy to rzeczywiście ma znaczenie, kto w jaki sposób myśli i jakich nazw używa? Czy nie wystarczy, że system został stworzony i działa? Oczywiście, że najważniejsze jest, że system powstał i działa. W perspektywie przyszłych prac ważne jest jednak również, jakim kosztem zostało to osiągnięte (mowa o kosztach współpracy między biznesem a IT).

Przyjrzyj się‌ rysunkowi 2.1. Jeśli nazywasz coś‍ filmem, to z tą nazwą skojarzone jest określone znaczenie: film jest to rodzaj widowiska złożonego z ruchomych obrazów. Jeśli‌ używasz słowa film w tym znaczeniu, to oczywiste się wydaje, że film można:‌ obejrzeć, wypożyczyć, kupić, przegrać itp.‍ Innymi słowy: zakładasz, że za tą nazwą stoi zestaw reguł opisujących, w jaki sposób pojęcia film wolno używać i w jaki sposób fizyczny obiekt o nazwie film wchodzi w relacje z innymi obiektami. Na przykład: serial jest filmem, film może składać się z odcinków. Ten zestaw reguł, których istnienie zakładasz, można by nazwać algebrą nazw biznesowych, gdyż‍ mówią one o prawach, którymi rządzą się nazwy używane w danej dziedzinie biznesowej.

Rysunek 2.1. Za słowami kryje się znaczenie

Jeśli jednak ten sam fizyczny obiekt nazwiesz plikiem FLV, to automatycznie z tą nazwą kojarzysz nieco inne znaczenie i zupełnie inne reguły nią rządzące, gdyż plik FLV można:‍ strumieniować, szyfrować, kopiować, podlinkować, ustawić dla niego prawa tylko do odczytu. Żadnej z tych rzeczy nie można zrobić z filmem, jeśli nie odwołujesz się do pojęcia pliku FLV.

Tu właśnie leży główny problem. W biznesie używa się słów ze słownika branżowego, które mają określone znaczenie w danej dziedzinie biznesowej. Używając tych słów, posługuje się regułami algebry nazw biznesowych. Natomiast programiści, patrząc na tę samą fizyczną rzecz, używają nazw ze słownika programistów i znaczeń z dziedziny programistycznej. Nazwy programistów rządzą się zupełnie innymi zasadami niż nazwy biznesu. Rządzą się zasadami algebry nazw programistycznych.

Pojęcia‍ biznesowe istnieją w kontekście

We wcześniejszych rozważaniach posługiwałem się potocznym terminem „słowo”. Sprecyzujmy je teraz. Rozmawiając z klientem o biznesie, odkrywasz pojęcia‌ biznesowe. W dziedzinie, na temat której rozmawiasz, mają one konkretne znaczenie. Tak jak pokazuje to rysunek 2.2, na pojęcie biznesowe składają się: nazwa — to,‍ co w trakcie konwersacji odkrywamy najszybciej, np.: film, moduł‍ szkoleniowy; znaczenie — czyli konkretny aspekt rzeczywistości biznesowej, na którą wskazuje dana nazwa; oraz reguły — tworzące‍ wspomnianą wcześniej algebrę nazw biznesowych.

Rysunek 2.2. Struktura pojęcia‌ biznesowego

Niezwykle ważną sprawą, o której musisz pamiętać, jest to, że w trakcie konwersacji pojęcia biznesowe są zawsze używane w jakimś kontekście (rysunek 2.3). Kontekst to nic innego jak wszystko to, co jest wiadome, gdy prowadzisz konwersację z klientem. Wiadome mogą być: wiedza i doświadczenie rozmówcy, informacje zawarte w dokumentacji, wszelkie założenia projektowe, zewnętrzne regulacje (np. prawne).

Rysunek 2.3. Pojęcie biznesowe istnieje w kontekście

Najbardziej urzekającą cechą kontekstu jest to, że informacje zawarte w kontekście są znane, ale jawnie niewypowiadane. Oznacza to, że rozmówca zakłada, że coś wiesz, i udziela Ci informacji w odniesieniu do kontekstu. Dla równowagi wiedz, że Ty z pewnością postępujesz analogicznie ☺. Nieporozumienie związane z kontekstem dobrze ilustruje wspomniany wcześniej przykład z pojęciem „film”. To samo pojęcie zostało użyte w dwóch różnych kontekstach: raz w technicznym kontekście przechowywania danych, a raz w biznesowym kontekście filmu jako widowiska artystycznego. Ponieważ były to różne konteksty, ta sama nazwa nabrała innych znaczeń oraz implicite „poszły za nią” inne zestawy reguł tworzących inne algebry nazw biznesowych. W tym momencie odkrywamy bardzo precyzyjną i użyteczną definicję tego, czym jest kontekst — jest to nazwany obszar dziedziny biznesowej, w której każde pojęcie biznesowe ma dokładnie jedno znaczenie[1].

Kontekst to nazwany obszar dziedziny biznesowej, w której każde pojęcie biznesowe ma dokładnie jedno znaczenie.

Myśleć‍ biznesowo

Pora odczarować owo tajemnicze pojęcie „myślenie biznesowe”. Myśleć biznesowo to nic innego jak posługiwać się nazwami ze słownika biznesu w znaczeniach z dziedziny biznesowej, i to tylko w takim zakresie, na jaki pozwalają zasady algebry nazw biznesowych.

Myślenie biznesowe to posługiwanie się nazwami ze słownika biznesu w znaczeniach z dziedziny biznesowej oraz respektowanie reguł, jakie rządzą tymi nazwami.

Podsumowanie

Ten rozdział poświęcony był wyjaśnieniu, w jaki sposób słowa‌ budują oczekiwania. Dowiedziałeś się, że pod nazwami kryją się ich znaczenia, a znaczenia pociągają za sobą reguły, za pomocą których myślimy o rzeczywistych pojęciach opisywanych przez te nazwy. Dowiedziałeś się również, jak istotny jest kontekst prowadzenia konwersacji, ponieważ to właśnie kontekst determinuje znaczenie oraz reguły związane z nazwami używanymi w trakcie konwersacji.

Jedną z głównych trudności w procesie zbierania wymagań jest fakt, że świat pojęć używanych przez biznes jest zupełnie różny od tego, w którym funkcjonuje IT. Myślenie biznesowe, a więc zrozumienie potrzeb klienta, to przede wszystkim zrozumienie, w jaki sposób on myśli i opisuje pracę, którą wykonuje.

[1] Ta definicja kontekstu została sformułowana przez Erica Evansa w książce Domain-Driven Design pod nazwą Bounded Context. Wszelkie adresy bibliograficzne przywoływanej literatury znajdują się w dodatku na końcu książki.

Rozdział‍ 3.
Wspólna‍ wizja

Rysunek 3.1. Wspólna‍ wizja

Wyobraź sobie okno z przyciskiem Zamknij.

Jak wygląda Twoje wyobrażenie? Jaki kolor ma okno? Po której stronie umieszczony jest przycisk? Czy przycisk ma obrazek, czy nie? Czy napis Zamknij ma aktywny znak? Z pewnością Twoje wyobrażenie jest różne od wyobrażeń innych czytelniczek i czytelników. To naturalne, że każdy z nas ma indywidualne preferencje i wyobrażenia. Każdy z nas jest inny. Poszczególne elementy naszej indywidualności powstały w wyniku rozwoju społecznego lub, jak chcą niektórzy, są w jakiejś części uwarunkowane genetycznie. Skądkolwiek pochodzą, stanowią ważny składnik naszej osobowości. Naprawdę zabawnie zaczyna się robić, gdy kilka indywidualności spotyka się przy jednym stole i ma za zadanie stworzyć COŚ (z uwagi na różne oblicza tego CZEGOŚ nazwijmy to produktem programistycznym lub w uproszczeniu: aplikacją, oprogramowaniem albo systemem).

Czym‍ jest wizja?

Podobnie jak z wyobrażeniem sobie okna z przyciskiem, tak również w przypadku nowego systemu informatycznego opinie każdego z członków zespołu na temat tego, co należy zrobić, mogą być bardzo zróżnicowane. Tyle że w przypadku projektów informatycznych już nie chodzi o zabawę w wyobrażenia, lecz o bardzo wymierne korzyści lub straty liczone w twardej walucie. Z tego względu pierwszą rzeczą, którą należy zrobić podczas przygotowań do projektu, jest ustalenie ze wszystkimi zaangażowanymi osobami, do czego należy zmierzać. Innymi słowy: ustalenie wizji nowego systemu, którą będą współdzielić wszystkie osoby zaangażowane w projekt (rysunek 3.1).

Kto‍ jest odpowiedzialny za wizję?

Wizja oczywiście pochodzi od biznesu, gdyż to cele biznesowe system ma realizować. Jednak za ustalenie wizji, a następnie za jej realizowanie, odpowiedzialna będzie osoba, która otrzymała za zadanie zdefiniować, czego biznes potrzebuje, i na tej podstawie określić zakres prac dla IT. Najczęściej ta osoba nazywana jest klientem albo właścicielem produktu[1]. Jeśli więc pełnisz funkcję analityka, szczególnie uważnie przeczytaj ten rozdział.

Ustalenie wizji systemu z biznesem to pierwszy krok w pracach nad nowym oprogramowaniem, jego kolejną wersją lub nad nowymi modułami.

Wizja jest po prostu „wyciągnięciem na wierzch” tego, co Ty, Twój klient i inne osoby zaangażowane w przedsięwzięcie myślicie, gdy zastanawiacie się nad pytaniem: Jaki/czym będzie ten system? Wyciągamy wszystkie odpowiedzi na powierzchnię, a potem ustalamy wspólną odpowiedź na wspomniane pytanie.

Wizja‍ a zakres systemu

Po pierwszym kontakcie z wizją może się nam wydawać, że to nic nieznaczące sformułowanie, które zniknie gdzieś w odmętach ogromnego dokumentu SRS[2]. Coś, co w dokumencie musi być, bo jest wymagane, ale nie warto przykładać do tego większej wagi. Nic bardziej mylnego! Wizja to niezwykle prosty i użyteczny sposób precyzowania zakresu systemu.

Wyobraź sobie następującą sytuację: ustaliłeś z klientem, że celem projektu będzie system do zarządzania kontaktami z klientami, w skrócie CRM[3]. Podczas jednego ze spotkań rozmowa przebiega następująco:

Klient: Chciałbym, żeby doszła tu funkcjonalność raportowania sprzedaży kwartalnej.

Ty: Ale przecież nie mówiliśmy o tym wcześniej…

Klient: Oczywiście, że tak. Wspominałem o raportach sprzedaży.

Ty: Tak, ale półrocznych i rocznych. Kwartalnych nie.

Klient: No,‍ raport to raport. Chyba nie będzie z tym kłopotu?

Ty: Hmmm…

Przedstawiony‍ dialog w ten czy inny sposób powtarza się w naszej pracy wyjątkowo często. Z grubsza rzecz biorąc, chodzi o to, czy‌ zgłaszana funkcjonalność mieści się w obszarze kontraktu i kto zapłaci za jej wykonanie. Chodzi więc o zakres systemu,‍ zakres prac, do wykonania których się zobowiązujesz[4].

Załóżmy,‌ że wizja systemu została zdefiniowana następująco: CRM‍ sprzedażowy to oprogramowanie webowe dla przedstawicieli handlowych, które pozwoli na bieżące wyznaczanie zadań sprzedażowych i uprości generowanie raportów na zamknięcie roku obrotowego.

Podczas‌ wspomnianego spotkania rozmowa mogłaby przebiegać następująco:

Klient: Chciałbym,‍ żeby doszła tu funkcjonalność raportowania sprzedaży kwartalnej.

Ty: Ale‍ przecież nie mówiliśmy o tym wcześniej…

Klient: Oczywiście,‌ że tak. Wspominałem o raportach sprzedaży.

Ty: Tak,‌ lecz czy to mieści się w ustalonym zakresie prac, w którym CRM „upraszcza generowanie raportów na zamknięcie roku obrotowego”?

Klient: Hmmm…

Posługując‍ się wizją, mogłeś bez problemu ustalić, czy nowe wymaganie należy do zakresu prac, czy nie. Podkreślmy wyraźnie, że nie chodzi tu o wyprowadzenie klienta na manowce. Chodzi przede wszystkim o szybkie, jednoznaczne i nienaruszające relacji interpersonalnych określenie, czy nowa funkcjonalność mieści się w zakresie prac, czy nie (rysunek 3.2). Chodzi‌ o jasną odpowiedź na pytanie: Kto‍ ostatecznie zapłaci za Twoją pracę?

Rysunek‍ 3.2. Które wymagania wchodzą do zakresu prac?

Nawet‍ najciekawsze technicznie systemy tworzone są z założeniem, że „zarobią na siebie”. Każda aktywność podjęta w projekcie jest w konsekwencji i tak przeliczana na pieniądze. Pieniądze, które musisz wydać Ty lub Twój klient. To, że wizja pozwala w prosty sposób bez zbędnych konfliktów zaliczyć zlecone prace na Twoje konto lub na konto Twojego klienta, czyni z niej praktyczne i potężne narzędzie współpracy z biznesem.

Formułowanie‌ wizji

Zgodnie‌ z naszą definicją wizja jest wspólną odpowiedzią wszystkich zaangażowanych osób z biznesu na pytanie: Jaki/czym‌ będzie ten system? W tej definicji istotne jest słowo wspólna. Wizja‍ powinna być wypracowana wspólnie z‍ klientem (z kluczowymi decydentami). Może się to odbyć w trakcie moderowanego przez Ciebie spotkania. Wtedy powstaje wizja, cel, do którego wszyscy będą od tej chwili zmierzać.

Kolejnym‍ krokiem jest komunikowanie‍ wizji wśród reszty zespołu i decydentów, aby każda osoba zaangażowana w projekt miała to samo rozumienie końcowego efektu.

Wizja‍ jako krótki opis

Najprostszym‌ sformułowaniem wizji jest krótki opis w postaci zdania:

System <NAZWA>‍ jest‍ to <PRZEZNACZENIE, GŁÓWNE FUNKCJONALNOŚCI>.

System‌ CRM sprzedażowy to narzędzie CRM dla sprzedawców, które ujednolica sposób przechowywania informacji na temat klientów.

Powyższy‍ schemat można nieco uszczegółowić, tak aby przekazywał precyzyjniejszą informację, nie tracąc nic ze swej zwięzłości oraz lekkości:

System <NAZWA>‌ jest‌ to <WIĘKSZA KATEGORIA>

w <CZYJA?‌ GDZIE?> dla <GŁÓWNI‌ UŻYTKOWNICY>

odpowiedzialna‍ za <GŁÓWNE USŁUGI, FUNKCJONALNOŚCI>.

ABCMobi‌ to aplikacja mobilna firmy ABX Taxi w Łodzi dla pasażerów komunikacji miejskiej odpowiedzialna za: wyszukiwanie najkrótszych lub najszybszych połączeń tramwajowych, zbieranie informacji o zapytaniach wpisywanych przez użytkowników i proponowanie atrakcyjniejszych niż dane wyszukanie przejazdów taksówką.

Arkusz‍ wizji

Szczegółową‍ metodę konsolidowania wizji zaproponował Karl Wiegers w‍ książce Software‍ Requirements, Second Edition w postaci siedmiopunktowego arkusza wizji (tabela 3.1).

Nazwa‌ jest ważna

Jeden‍ z moich klientów nazwał kiedyś system, nad którym wspólnie pracowaliśmy, zintegrowanym‍ systemem informatycznym (ZSI). Ta‌ z pozoru niewinna nazwa spowodowała sporo zamieszania. Byłem niemal zmuszony do godzenia się na wszystkie kolejne funkcjonalności.

Tabela 3.1. Arkusz‍ wizji

Element‍ wizji

Przykład

Jak‌ się nazywa produkt?

System‌ „CRM sprzedażowy”

Jakiej‍ kategorii/klasy jest to produkt?

jest‍ aplikacją webową klasy CRM

Dla‌ kogo jest przeznaczony?

przeznaczoną‍ dla sprzedawców i marketingowców,

Jakie‌ potrzeby zaspokaja? Jakie możliwości wykorzystuje?

którzy‍ potrzebują wsparcia procesu sprzedaży usług szkoleniowych.

Jakie‍ przynosi korzyści, za które klient zechce zapłacić?

CRM‌ sprzedażowy przeprowadza sprzedawcę i marketingowca przez pełen proces sprzedaży, w którym centrum procesu jest klient, dzięki czemu oszczędzimy użytkownikom konieczności pamiętania o terminach i etapach procesu.

Jakie‍ są alternatywy?

W‍ przeciwieństwie do sytuacji obecnej, w której każdy z naszych sprzedawców ma własną metodę działania, co powoduje sporo zamieszania,

Co‌ odróżnia produkt od konkurencyjnych alternatyw?

CRM‌ sprzedażowy ujednolica cały proces sprzedaży. Pozwala również zintegrować się z systemem organizacji szkoleń.

— Jakże‍ mogłoby ich zabraknąć w zintegrowanym systemie informatycznym? — argumentował klient.

— Ale‌ przecież to się nie uda! — próbowałem oponować.

Nic‌ z tego. ZSI‍ to ZSI i musi posiadać wszystkie funkcjonalności, których klient od niego oczekiwał.

Zrozumiałem‍ potem, jaki błąd popełniłem. Gdy nadajesz czemuś nazwę, to nazwa zaczyna budować Twoje oczekiwania w stosunku do nazwanej rzeczy. Gdy nazwiesz buty butami‍ sportowymi, to będziesz oczekiwał, że będą wygodne podczas biegania. Gdy nazwiesz buty butami‍ wizytowymi, to będziesz oczekiwał, że będą się dobrze prezentować w zestawieniu z garniturem. Jeśli zatem nieopatrznie określisz tworzony system nieadekwatną nazwą, to klienci będą oczekiwać od systemu innych funkcjonalności niż powinni.

W‍ opisanym przykładzie zintegrowanego‍ systemu informatycznego nazwa‍ była zbyt ogólna, w związku z czym niemal każda funkcjonalność pasowała do zakresu tak nazwanego systemu.

Jeśli‍ nadamy nazwę konkretną, np.: system‍ obiegu dokumentów, system‌ zarządzania produkcją rowerów, system‍ katalogowania produktów w hurtowni, to nazwa‍ ta przekazuje w miarę jednoznaczną informację o tym, które funkcjonalności mieszczą się w zakresie prac nad systemem, a które nie. Odpowiednia nazwa powinna skupiać oczekiwania klientów na tym, czym w istocie jest tworzony system, oraz pomagać odrzucać zbędne funkcjonalności, zwane potocznie wodotryskami. Jest‍ przecież oczywiste lub łatwe do wykazania, że odtwarzanie‍ plików mp3 nie jest naturalną funkcjonalnością systemu‍ księgowego. Trudno jednak będzie przeprowadzić podobne rozumowanie w przypadku zintegrowanego‌ systemu informatycznego — skoro zintegrowany, to‌ dlaczego nie z mp3?

Nowemu‌ produktowi nadawaj konkretne nazwy, związane z rzeczywistością (domeną) informatyzowanego procesu.

Dobra‍ nazwa powinna odwoływać się do tego, co klienci już znają — do rzeczywistości (dziedziny) informatyzowanego procesu. Jeśli tworzysz oprogramowanie wspierające dział HR, to oczywiście można mu nadać nazwę Szybki‌ Lopez, ale czy to komukolwiek cokolwiek mówi? Klienci będą musieli nauczyć się odpowiedniego rozumienia sformułowania Szybki‌ Lopez, a to zabierze nieco czasu. Lepiej odwołać się do doświadczenia zaangażowanych osób i nazwać oprogramowanie kadry‌ i płace.

Nic‍ nie stoi na przeszkodzie, aby stosować również nazwy łączone, np. Szybki‌ Lopez — kadry i płace. W ten sposób wszyscy zaangażowani w projekt zaczną dość szybko posługiwać się krótką nazwą Szybki‌ Lopez, lecz przypiszą tej nazwie to samo znaczenie co nazwie kadry‌ i płace, a o to przecież chodziło.

Wizja‌ jest współdzielona albo nie ma jej wcale

Jeśli‌ chcesz się przekonać, czy wizja spełnia swoją funkcję, zapytaj dowolną osobę zaangażowaną w prace nad oprogramowaniem o to, jaka jest wizja tego produktu. Jeśli nie potrafi o niej opowiedzieć, wizja nie działa.

Co‍ to znaczy, że wizja nie działa? Oznacza to, że oprócz terminów i przydzielonych zadań nie istnieje nic, co nadaje kierunek pracom. Nie istnieje jasny dla wszystkich zaangażowanych osób cel pracy.

Wizja‌ pochodzi od klienta

Przeanalizuj‌ fragment konwersacji na temat wizji produktu, zamieszczonej w tabeli 3.2.

Tabela 3.2. Wizja,‍ która NIE pochodzi od klienta

Klient

Specjalista

Jak‌ wspominałem wcześniej, chciałbym, aby ten program pomagał mi w rozliczaniu czasu pracy kierowców. Przede wszystkim chodzi o wykrywanie naruszeń związanych z czasem pracy oraz o opisywanie tarczek.

—

—

Aha,‍ czyli możemy napisać: „system do rozliczania czasu pracy kierowców pracujących w firmach pana klientów, dla pana pracowników, odpowiedzialny za rozliczanie czasu pracy kierowców i opisywanie tarczek”. Zgadza się?

Hm,‌ sam nie wiem…

W‌ wizji nie chodzi wyłącznie o wypełnienie pozycji Vision‍ Statement w raporcie czy o sformułowanie jej, bo tak trzeba. Chodzi o zdefiniowanie punktu odniesienia, który w każdym momencie trwania prac pomoże odpowiedzieć na pytanie: Czy‍ wciąż robimy to, co na początku zamierzaliśmy robić?

W‍ przykładzie z tabeli 3.2 specjalista‌ przedstawił wizję produktu, ale to była jego — specjalisty — wizja, nie klienta. Wizja sformułowana w podobny sposób pozwoli zachować kompletność dokumentacji, ale nie będzie działać.

Zobacz‌ w tabeli 3.3, jak‍ może wyglądać skuteczniejsze formułowanie wizji. Techniki użyte w konwersacji poznasz w kolejnych rozdziałach książki.

Zauważ,‍ że do sformułowania wizji absolutnie niezbędna‍ jest konwersacja. Szablony, formularze, schematy postępowania mają charakter pomocniczy, ich wypełnienie nie jest celem samym w sobie. Dlatego tak istotna jest umiejętność świadomego prowadzenia konwersacji z biznesem, co stanowi zasadniczy temat tej książki.

Tabela 3.3. Wizja,‌ która pochodzi od klienta

Klient

Specjalista

Jak‌ wspominałem wcześniej, chciałbym, aby ten program pomagał mi w rozliczaniu czasu pracy kierowców. Przede wszystkim chodzi o wykrywanie naruszeń związanych z czasem pracy oraz o opisywanie tarczek.

—

—

Co‌ oznacza „opisywać tarczki”?

Chodzi‍ o to, że są dwa rodzaje tachografów: cyfrowe i analogowe. Cyfrowe zapisują czas pracy na karcie chipowej, a analogowe na papierowych okrągłych tarczkach. W przypadku naruszeń czasu pracy należy odszyfrować zapis tachografu na tarczce i opisać każdą przyczynę każdego naruszenia, co może uchronić przed mandatem.

—

—

Czy‌ dobrze zrozumiałem, że właściwie chodzi o to, aby program wykrywał i opisywał naruszenia związane z czasem pracy?

Cóż,‍ w zasadzie tak.

—

—

Kto‍ przede wszystkim będzie z niego korzystał?

Moi‍ pracownicy.

—

—

Jak‌ się nazywa ich stanowisko?

Specjalista‍ do spraw rozliczania czasu pracy kierowców — tak to wymyśliłem.

—

—

Będzie‌ to więc oprogramowanie „dla specjalistów do spraw rozliczania czasu pracy kierowców, odpowiedzialne za wykrywanie i umożliwienie opisywania naruszeń czasu pracy kierowców”?

Dokładnie‌ tak.

—

Komunikowanie‌ wizji

Raz‌ — na początku projektu — przeprowadzone spotkanie ustalające wizję niestety nie zapewni, że wizja będzie działać. Zazwyczaj prace nad oprogramowaniem przebiegają bardzo dynamicznie. Bieżące działania szybko przesłaniają to, co zostało ustalone miesiące temu. Aby wizja była ciągle żywa w świadomości osób pracujących nad produktem, musi stać się elementem codzienności, zarówno wizualnie, jak i w postaci codziennego języka, a zatem:

- umieść‌ sformułowanie wizji w formalnych dokumentach, mailach, na stronie WWW;

- przypominaj‌ wizję na spotkaniach formalnych i nieformalnych;

- rozmawiaj‍ o wizji z interesariuszami oraz zespołem.

Kiedy‍ wizja bywa niebezpieczna?

Czy‍ po wszystkich zaletach wizji, które wymieniłem, można zastanawiać się nad tym, czy jest ona niebezpieczna? Oczywiście, że można. Każde narzędzie czy metoda ma ograniczony zakres stosowalności. Wizja również.

- Wizja‌ staje się niebezpieczna, kiedy służy do wyciągania wniosków na temat systemu, który opisuje.

Powiedzmy,‍ że tworzysz system, którego wizja została określona następująco:

- SuperTest‌ jest systemem do przeprowadzania badań satysfakcji klienta banku.

Wyobraź‍ sobie, że w ramach Twojej organizacji powstała koncepcja innego systemu określonego wizją:

- T-Expert‍ jest systemem do przeprowadzania badań potrzeb szkoleniowych wśród programistów.

Wśród‍ klientów, zwłaszcza tych, którzy są daleko od zagadnień technicznych, mogą pojawić się wnioski oparte na następującym rozumowaniu:

- Skoro‌ SuperTest służy‍ do‌ przeprowadzania badań i T-Expert będzie‍ służył do‍ przeprowadzania badań, zatem do budowy systemu T-Expert można‌ użyć już istniejących modułów systemu SuperTest. Tworzenie‌ T-Experta będzie‍ więc trwało krócej i kosztowało mniej.

Z‌ pewnością widzisz ogrom zagrożenia powstałego z powodu nieprawidłowego wnioskowania opartego na sformułowaniach wizji. Było to możliwe dlatego, że wizja została użyta niezgodnie z jej przeznaczeniem. Zamiast wskazywać cel, do którego zmierzamy, stała się podstawą wnioskowania. Raczej nie powstrzymasz klientów przed wyciąganiem tego typu ogólnych wniosków. Jedyne, co możesz zrobić, to być na nie wyczulonym i w porę interweniować.

Podsumowanie

W‌ tym rozdziale dowiedziałeś się, czym jest wizja systemu albo precyzyjniej: produktu programistycznego. Dowiedziałeś się też, że celem wizji jest wyznaczenie kierunku prac, a jej praktycznym zastosowaniem — wstępne ocenianie, czy pomysły na nowe funkcjonalności mieszczą się w ustalonym zakresie, czy nie.

Poznałeś‍ również metody na formułowanie oraz komunikowanie wizji. Jednym z ważniejszych spostrzeżeń w tym rozdziale było to, że aby wizja działała, musi pochodzić od klienta, być współdzielona przez wszystkich interesariuszy oraz przez zespół, który dostarcza kolejnych porcji funkcjonalności.

[1] W‌ języku angielskim Product‌ Owner.

[2] W‍ języku angielskim Software‍ Requirements Specification — specyfikacja‍ wymagań do oprogramowania.

[3] W‌ języku angielskim Customer‌ Relationship Management.

[4] Dla‌ uproszczenia toku myślowego pomijam rozróżnienie różnych sposobów kontraktowania pracy: fixed‌ price oraz time‌ & material. Nie‍ jest to szczególnie istotne dla omawianego tematu.

Rozdział‌ 4.
Rozpoznanie‍ procesu biznesowego

Czynność‌ odkrywania wymagań klientów to duże wyzwanie dla całego zespołu. Jest tak m.in. z tego powodu, że wymagania będą stanowiły pomost pomiędzy światem biznesu a światem IT. Wymagania będą wskazywały, w jaki sposób funkcjonalność systemu (zaimplementowana w architekturze systemu) powinna umożliwiać użytkownikowi realizowanie jego zadań.

Obszar‍ działalności biznesu, który podlega informatyzacji, nazywamy domeną[1] albo‌ dziedziną biznesową[2]. Domena‌ to spójny i zamknięty obszar działalności biznesowej, który prowadzi do wytworzenia jakiegoś produktu lub usługi, dzięki którym będzie można zarabiać pieniądze. Oczywiście domena może mieć swoje poddomeny. Na przykład domena sprzedaż znajdująca‍ swoje odzwierciedlenie w systemie CRM może mieć poddomeny: baza‍ klientów, kalendarz‌ spotkań, fakturowanie.

Kłopoty‍ najczęściej pojawiają się na styku domena biznesowa--architektura systemu (rysunek 4.1).

Rysunek‌ 4.1. Procesy biznesowe wpływają na architekturę

Jeśli‍ system dostarcza oczekiwane funkcjonalności, lecz jego architektura nie jest skorelowana z tym, co się dzieje w biznesie, to zmiany w wymaganiach (lub nowe zaskakujące wymagania) potrafią wywrócić architekturę do góry nogami. Z tego względu programiści, projektanci, architekci powinni dokładnie wiedzieć i rozumieć, w jaki sposób funkcjonuje biznes, dla którego tworzą oprogramowanie. Brak wiedzy o biznesie u osób technicznych kosztuje bardzo, ale to bardzo dużo.‍ Są to niestety koszty ukryte, które zazwyczaj kończą się wymówkami: Klient‌ nie wie, czego chce, Wymagania‌ są nieprecyzyjne, Klient‌ ciągle zmienia wymagania itd.

Proces‍ biznesowy, czyli co się dzieje u klienta

Proces‌ biznesowy to sekwencja czynności, które należy wykonać, aby uzyskać określony efekt właściwy dla działalności zarobkowej danego klienta. Rozważmy czynność: Wykonaj‍ przelew. W tę czynność zaangażowane muszą być co najmniej dwie osoby: klient banku oraz kasjer. Z perspektywy klienta banku proces biznesowy wygląda następująco:

1. Wejdź‍ do placówki banku.

2. Czekaj‌ na końcu kolejki.

3. Czy‌ możesz już podejść do okienka?

4. Jeśli‍ nie, to idź do kroku 2.

5. Podejdź‍ do okienka.

6. Wypełnij‍ dane przelewu na druczku.

7. Podaj‍ pieniądze.

8. Podpisz‌ zlecenie.

9. Odbierz‌ pokwitowanie.

10. Odejdź‍ od okienka.

11. Wyjdź‌ z placówki banku.
Z‍ perspektywy kasjera wygląda to inaczej:

1. Odbierz‍ pieniądze.

2. Wydaj‍ zlecenie.

3. Zarejestruj‍ wpłatę.

4. Wydaj‍ potwierdzenie.

Rozpoznanie‍ procesu biznesowego jest jedną z pierwszych rzeczy, które warto wykonać podczas zbierania wymagań. Dzięki temu będziesz mógł zrozumieć, w jakiej rzeczywistości funkcjonuje Twój klient oraz jakie ma problemy i potrzeby. W ten sposób stworzone oprogramowanie będzie rzeczywiście szyte na‌ miarę tego klienta.

Aby‌ nakierować konwersację z klientem na proces biznesowy, trzeba zadać odpowiednie pytanie. O trudnej sztuce zadawania pytań opowiem w dalszej części książki. W tym miejscu poprzestanę na przykładowych pytaniach, szczególnie użytecznych przy rozpoznawaniu procesu biznesowego. Są to:

- Jakie‌ czynności po kolei należy wykonać, aby obsłużyć klienta, od chwili, w której wejdzie on do biura, do momentu, kiedy z niego wyjdzie z podpisaną umową?

- Jaka‌ jest pierwsza czynność, którą wykonuje się po rozpoczęciu pracy? Jaka jest kolejna?

- Jaka‌ jest ostatnia czynność, którą pan wykonuje w trakcie tego zadania?

- Co‍ musi się stać, aby ta czynność została zakończona?

- Czego‍ potrzebuje pracownik, aby poprawnie wykonać swoje zadanie?

- Gdyby‌ miał pan napisać w punktach, co trzeba wziąć pod uwagę, aby zweryfikować poprawność wykonania zadania, jakie byłyby to punkty?

Modelowanie‍ procesu biznesowego

Rozpoznawaniem‌ i opisywaniem procesów biznesowych zajmuje się dziedzina analizy nazywana modelowaniem‌ procesów biznesowych (ang. business‍ process modeling). Za opracowanie procesów odpowiedzialna jest osoba grająca w projekcie rolę analityka[3]. Ponieważ‍ naszym celem jest przede wszystkim zrozumienie dziedziny klienta, ograniczymy się do uproszczonego opisu.

Do‌ zobrazowania procesu biznesowego będziemy używać pięciu symboli przedstawionych na rysunku 4.2.

Rysunek‌ 4.2. Symbole używane przy modelowaniu procesów biznesowych za pomocą języka UML

Rysunek 4.3 przedstawia‌ graficzną reprezentację opisanego wcześniej procesu wykonywania przelewu z perspektywy klienta banku.

Rysunek‍ 4.3. Schemat procesu biznesowego. Perspektywa klienta banku

Rozpoznając‌ i rysując proces biznesowy, możesz zagubić się w gąszczu warunków i alternatywnych ścieżek w procesie. Unikniesz bałaganu, jeśli w pierwszej kolejności skoncentrujesz się na przebiegu typowym, czyli‍ takim procesie, który odbywa się najczęściej. Dopiero w kolejnych podejściach zajmij się uzupełnianiem warunków i procesami alternatywnymi.

Być‌ może zaczynasz zastanawiać się, po co rysować proces, skoro można go opisać. Chociaż diagramy mogą być bardziej zagmatwane niż niejeden tekst, to zazwyczaj łatwiej narysować i utrzymywać czytelny rysunek, niż napisać i utrzymywać czytelny nieustrukturyzowany tekst. Dodatkowo na rysunku lepiej widać warunki i ścieżki alternatywne niż w tekście.

Proces‌ biznesowy a zakres systemu

Teraz‍ jest dobry moment, aby zadać sobie najważniejsze w całej analizie wymagań pytanie: Którą‍ część procesu biznesowego ma wspierać tworzony system? Jest ono najważniejsze, ponieważ odpowiedź powoduje znaczące skutki na dalszych etapach prac:

- ogranicza‌ zakres systemu;

- pomaga‍ rozstrzygać, które funkcjonalności należą do zakresu, a które nie;

- pomaga‍ rozstrzygać, kto płaci za dodatkowe funkcjonalności: klient (gdy nie należą one do zakresu systemu) czy wykonawca (gdy należą one do zakresu systemu).

W‍ ferworze zbierania wymagań zakres systemu bywa często mylony z procesem biznesowym. Prowadzi to do sytuacji, w której zakładamy, że tworzone oprogramowanie ma wspierać cały proces biznesowy klienta, co jest najczęściej nieprawdą. Oczywiście może się tak zdarzyć, lecz nie jest to regułą. Proces‌ biznesowy i zakres systemu to dwie odrębne rzeczy — zakres systemu definiuje, którą część procesu należy wesprzeć z poziomu systemu informatycznego. Tę relację przedstawia rysunek 4.4.

Rysunek‍ 4.4. Zakres systemu nie jest tożsamy z procesem biznesowym

Opis‌ procesu biznesowego to drugie (obok wizji) narzędzie pomagające precyzować zakres tworzonego oprogramowania. Bardzo często podkreślam znaczenie tych narzędzi, ponieważ wynikiem ich zastosowania jest cena — kluczowy, jakkolwiek by było, czynnik wpływający na to, czy prace programistyczne nad systemem rozpoczną się, czy też nie.

Podsumowanie

Najważniejszym‍ wnioskiem z tego rozdziału jest: proces‌ biznesowy to co innego niż zakres systemu. Proces biznesowy odpowiada na pytanie: W‌ jaki sposób wykonuje się zadania w dziedzinie, w której funkcjonuje klient? Natomiast zakres systemu mówi o tym, które z czynności w procesie biznesowym mają zostać wsparte za pomocą oprogramowania i w jakim stopniu.

[1] W‍ języku angielskim domain.

[2] W‌ języku polskim poprawniej byłoby mówić i pisać dziedzina, jednakże‍ słowo domena jest‌ częściej używane w gwarze branżowej.

[3] W‍ niektórych organizacjach wydzielona jest osobna rola analityka biznesowego.

Rozdział‍ 5.
Sztuka‍ zadawania pytań

Z‌ tego rozdziału dowiesz się najważniejszych rzeczy związanych ze skutecznym prowadzeniem konwersacji z klientem. Opowiem o prowadzeniu konwersacji, patrzeniu z perspektywy klienta i najczęściej popełnianych błędach.

Kto‌ prowadzi konwersację?

Ten,‍ kto więcej mówi? Ten, kto mówi głośniej? Czy może ten, kto potrafi szybko i skutecznie przekonać rozmówców do swoich racji? A może ten, kto właściwie prowadzi konwersację, nadając jej kierunek zgodny ze swoimi zamiarami? Ten,‍ kto zadaje pytania! Zadawanie odpowiednich pytań pozwala przeprowadzić konwersację w kontrolowany sposób i uczynić ją maksymalnie efektywną pod kątem pozyskiwania wymagań.

Pewnego‌ razu zadzwonił do mnie konsultant operatora telefonii komórkowej i zaczął przedstawiać swoją ofertę. Z premedytacją włączyłem stoper i okazało się, że konsultant mówił bez przerwy przez prawie dziesięć minut, nie zadając mi ani jednego pytania. Oczywiście bardzo szybko przestałem go słuchać, a na zakończenie usłyszał ode mnie krótkie: „Nie!”. Zadawanie pytań wyznacza granicę między konwersacją a monologiem. Bez zadawania pytań nigdy nie dowiesz się, czego tak naprawdę potrzebuje Twój klient.

Przejmowanie‍ inicjatywy w konwersacji oznacza skoncentrowanie się na przemyślanym zadawaniu pytań i słuchaniu odpowiedzi.

Co‌ to znaczy patrzeć z perspektywy klienta?

Jakiś‌ czas temu uległem wypadkowi samochodowemu. Szczęśliwie jedynym poszkodowanym był samochód. Ostatnim etapem porządkowania spraw po wypadku było wyegzekwowanie od ubezpieczyciela odszkodowania. Moja wymiana maili z obsługującą mnie konsultantką leasingodawcy przebiegała następująco:

Mail‌ 1. — ja do konsultantki

Dzień‌ dobry, chciałbym dokończyć sprawę samochodu. Jakie są następne kroki?

Mail‍ 2. — konsultantka do mnie

Witam,

Po‍ otrzymaniu dopłaty z Towarzystwa Ubezpieczeń, umowa zostanie przekazana do rozliczenia. Dokument rozliczenia po zaksięgowaniu noty przez departament księgowości, jest wysyłany do Leasingobiorcy listem poleconym za potwierdzeniem odbioru.

Mail‍ 3. — ja do konsultantki

Witam‌ Pani Katarzyno,

Dziękuję‍ za odpowiedź. Jeśli Pani pozwoli to doprecyzuję swoje pytanie:

Gdy‍ już TU dopłaci, to po jakim czasie zobaczę pieniądze na naszym koncie?

Jakie‍ działania powinienem wykonać i kiedy, aby w/w zadziało się sprawnie i bez opóźnień?

Mail‍ 4. — konsultantka do mnie

Panie‍ Michale,

Tak‌ jak pisałam wcześniej po otrzymaniu środków z dopłaty umowa zostanie przekazana do rozliczenia.

Maksymalnie‍ do 10 dni trwa rozliczenie i zaksięgowanie noty przez departament księgowości.

Dokument‍ jest wysyłany listem poleconym i w przypadku gdy z rozliczenia będzie wynikała kwota do zwrotu niezbędne jest przesłanie wniosku z numerem rachunku bankowego z własnoręcznym podpisem reprezentantów firmy w celu dokonaniu zwrotu środków.

W‌ celu realizacji powyższego niezbędne będzie odesłanie podpisanej faktury korygującej wysłanej do Państwa.

Mail‌ 5. — ja do konsultantki

Pani‌ Katarzyno,

Dziękuję‌ za szczegółowe przybliżenie zbliżających się działań. Jedna rzecz jest dla mnie niejasna, a jest to właściwie najważniejsza kwestia z mojego poprzedniego maila — za ile dni od teraz zobaczę na swoim koncie przelew od Państwa firmy?

Mail‍ 6. — konsultantka do mnie

Panie‌ Michale,

Myślę,‍ że maksymalnie 30 dni.

Jak‌ mógłbyś nazwać to, co działo się podczas przedstawionej rozmowy? O co ja pytałem, a o czym opowiadała konsultantka? Odpowiedz na to pytanie teraz i posłuchaj kolejnej historii.

Pewnego‍ razu moja żona poprosiła mnie o naprawienie klamki w drzwiach do sypialni. Z klamką był ten problem, że skrzypiała, w związku z czym nasza córka przebudzała się, gdy tylko ktoś z nas otworzył drzwi do sypialni.

Rozmontowałem‍ więc klamkę, a następnie pokryłem każde podejrzane miejsce mechanizmu klamki warstwą smaru. Ponieważ właśnie wróciłem ze szkolenia prowadzonego dla jednego z naszych klientów, więc od razu przyszło mi do głowy, aby zastosować w tej pracy najlepsze znane mi standardy. Postanowiłem sformułować jednoznaczne kryteria akceptacji.

— Słuchaj — zwróciłem‌ się do żony. — Ile‌ razy musisz nacisnąć klamkę i ona nie zaskrzypi, aby przekonać się, że jest całkowicie naprawiona?

Moja‌ żona popatrzyła na mnie zdziwiona, a po chwili odpowiedziała:

— Klamka‌ będzie naprawiona, gdy Nadia nie będzie się budzić, kiedy będę od niej wychodziła.

Jak‌ tym razem mógłbyś nazwać to, co wydarzyło się w powyższym dialogu? Jaki rodzaj kryteriów akceptacji sformułowałem ja, a jakiego oczekiwała moja żona? Co druga historia miała wspólnego z pierwszą? Zanim jednak w pełni odpowiesz na te pytania, posłuchaj kolejnej historii.

Pewnego‍ razu przygotowywaliśmy demo produktu dla klienta. Byliśmy tym szczególnie przejęci, ponieważ do zakresu tamtego wydania weszła bardzo nowatorska funkcjonalność, napisana w jednej z najnowszych technologii.

Z‍ dumą prezentowaliśmy kolejne scenariusze historyjek, eksponując poziom zaawansowania nowej funkcjonalności. Gdy przyszło do podsumowania, klient powiedział:

— Słuchajcie,‍ to jest świetne! Naprawdę! Najbardziej podoba mi się, że zrobiliście tak, że w Wordzie mogę sobie wcisnąć kontrol C, a tutaj w formularzu kontrol V i tekst się tu pojawia.

Zespół‌ oniemiał…

Ponownie‌ zapytam: na czym był skupiony zespół, a co docenił klient? Co, w sposobie działania zaangażowanych osób, trzecia historia miała wspólnego z pierwszymi dwoma?

Czyja‍ to dziedzina?

W‍ rozdziale 2., „Co to znaczy »myśleć biznesowo«?”, dużo‍ pisałem o dziedzinie biznesowej, o używaniu pojęć z tej dziedziny. Przypomnę: „myśleć biznesowo” to znaczy komunikować się z klientem według zasad obowiązujących w jego dziedzinie biznesowej. Być może przemknąłeś szybko przez rozdział o myśleniu biznesowym, aby dotrzeć tutaj, do konkretnych technik zbierania wymagań. Jeśli tak istotnie było, to teraz jest okazja, aby do niego wrócić i jeszcze raz uważnie go przeczytać.

Mówienie‌ o dziedzinie, słowniku i komunikacji jest w teorii bardzo proste. Podobnie koncepcyjnie i technicznie prosty jest wspomniany rozdział na temat myślenia biznesowego. Jednak przytoczone historie są świetnymi antyprzykładami na niezrozumienie tego, czym jest dziedzina i jak myśli klient.

W‌ pierwszej historii na moje ponawiane pytanie o wypłatę odszkodowania konsultantka opisywała mi procesy biznesowe, przez które przechodzi moja sprawa w organizacji leasingodawcy. Mnie interesował konkretny skutek na moim koncie bankowym, a więc wpływ odszkodowania, natomiast konsultantka opowiadała mi o swoim punkcie widzenia, bez uwzględnienia mojego.

W‌ drugiej historii skupiłem się na teście technicznym — skrzypieniu klamki podczas wciskania. Moim błędem nie było w tym przypadku to, że test nie był automatyczny. Błąd polegał na tym, że moja żona oczekiwała konkretnego skutku w jej rzeczywistości (dziedzinie), natomiast ja skupiłem się na zweryfikowaniu, czy rozwiązanie działa od strony technicznej.

W‌ ostatniej historii zespół był zawiedziony, bo okazało się, że klient najbardziej docenił cechę systemu operacyjnego, która istnieje out‍ of the box[1]. Jednocześnie‍ nie zwrócił większej uwagi na zaawansowane funkcjonalności, nad którymi długo pracowali. Sęk w tym, że to niewiele znaczące kopiuj – wklej rozwiązywało‍ najczęściej pojawiające się trudności w użytkowaniu narzędzia.

We‍ wszystkich trzech historiach powtarzał się ten sam schemat — osoba po stronie technicznej (konsultant leasingodawcy, ja, zespół) nawet na centymetr nie weszła w dziedzinę klienta (ja, moja żona, klient). Być może używali odpowiednich słów, ale całkowicie zignorowali ich znaczenie, reguły idące w ślad za słowami, kontekst biznesowy.

Wejść‌ w dziedzinę klienta oznacza: myśleć tak jak klient, oceniać przydatność rozwiązań tak jak klient, niemal być klientem. Ilekroć sformułujesz oczekiwaną funkcjonalność, test akceptacyjny, potrzebę, zawsze zadaj sobie pytanie: Czyja‍ to funkcjonalność: moja czy klienta? Czyj to test: mój czy klienta? Czyja to potrzeba: moja czy klienta?

Ujmując‌ omawiane zagadnienie od strony czysto finansowej, można powiedzieć tak: klient płaci, gdy widzi konkretny skutek w swojej dziedzinie. Cokolwiek więc formułujesz z klientem: historyjki, testy akceptacyjne, kryteria, potrzeby, problemy, korzyści, zawsze wejdź w dziedzinę klienta i w kontekście tej dziedziny formułuj każdą z wymienionych rzeczy. W przeciwnym razie nie będziesz tworzył oprogramowania dla klienta, lecz dla siebie. Nie ma chyba potrzeby wspominać, kto za nie zapłaci, prawda?

Świadomość‍ słownictwa w trakcie konwersacji

W‍ rozdziale 2., „Co to znaczy »myśleć biznesowo«?”, napisałem,‍ że niezwykle ważne jest, aby komunikować się językiem klienta, co w praktyce przekłada się na używanie tych samych pojęć, w tym samym znaczeniu, ze świadomością idących za tymi pojęciami reguł, z uwzględnieniem tego samego co klient kontekstu biznesowego. Z drugiej strony, z pewnością zdarza Ci się w trakcie konwersacji coś przeoczyć, czegoś nie zrozumieć albo zrozumieć niezgodnie z intencją rozmówcy. Tego typu zakłócenia są nie do uniknięcia. Można jednak zminimalizować ich wpływ poprzez trenowanie samoświadomości w trakcie konwersacji.

Termin‍ „świadomość” brzmi może nieco zagadkowo i orientalnie, chodzi jednak o konkretnie zdefiniowaną umiejętność polegającą na zdawaniu sobie sprawy z przebiegu danego zjawiska, którego osoba doświadcza. Możemy więc pracować nad świadomością głosu, świadomością słuchu, świadomością ruchu czy świadomością emocji[2].

W‍ naszym przypadku chodzi o świadomość języka, którym posługują się klient i osoba zbierająca wymagania. Świadomość ta pozwala na szybkie i skuteczne rozpoznawanie słownictwa biznesu i usprawnienie współpracy. Zanim zdefiniujemy, czym ona jest, posłuchaj kolejnej historii.

Jeden‌ z moich nauczycieli w zakresie prowadzenia szkoleń zademonstrował podczas warsztatu intrygującą umiejętność zapamiętywania imion uczestników. Gdy tylko uczestnik się przedstawił, trener aż do końca warsztatów zwracał się do niego po imieniu. Ten prosty zabieg rozluźnia atmosferę na początku szkolenia. Postanowiłem również się tego nauczyć.

Powtarzałem‍ technikę zapamiętywania imion[3] na‍ każdym szkoleniu i po kilkunastu razach potrafiłem zapamiętać imiona wszystkich uczestników przez czas trwania szkolenia niezależnie od tego, czy się przesiadali, czy nie. Grupy szkoleniowe, z którymi pracuję, liczą od sześciu do osiemnastu osób. Pewnego razu podczas większego wydarzenia zapamiętałem czterdzieści imion uczestników przez jeden dzień.

Po‌ jakimś czasie zauważyłem ciekawe zjawisko. Czasem w trakcie przedstawiania się uczestnik powie coś, co mnie wybije ze skupienia. Może to być np.: oczekiwanie, które nie mieści się w zakresie szkolenia, zagadnienie, w którym nie mam kompetencji, albo problem, z którym się jeszcze nie spotkałem. Zauważyłem, że gdy padnie takie pytanie, to myśl o nim tak bardzo absorbuje moją świadomość, że trudno mi skupić się na zapamiętywaniu imion. W konsekwencji zapamiętuję tylko kilka imion zamiast wszystkich.

W‌ przytoczonej historii widać bardzo wyraźnie, czym jest świadomość w trakcie konwersacji. Gdy jestem skupiony na zapamiętywaniu imion i w trakcie tej czynności rozmawiam z uczestnikami na neutralne tematy, zapamiętuję ich imiona bez najmniejszego problemu. Gdy pojawia się coś, co mocno przykuwa moją uwagę, tracę zdolność rozmawiania z uczestnikami i jednoczesnego zapamiętywania imion. Zatem świadomość w trakcie konwersacji to umiejętność rozmawiania i jednoczesnego obserwowania tej konwersacji.

Świadomość‍ w trakcie konwersacji to umiejętność rozmawiania i jednoczesnego obserwowania tej konwersacji.

Gdy‍ w trakcie spotkania z klientem „ucieknie” Ci świadomość, prawie na pewno nie wychwycisz subtelnych różnic w słownictwie dziedzinowym. Głównym powodem gubienia wątku konwersacji jest zastanawianie się nad tym, jak zrealizujesz wymagania, o których właśnie rozmawiasz. To bardzo poważny błąd! Wybacz, proszę, wykrzyknik w poprzednim zdaniu, lecz jest to tak ważny moment, że wart jest nawet więcej wykrzykników. Gdy zaczynasz zastanawiać się nad tym, jak zrealizujesz właśnie wypowiedziane wymagania, przestajesz słuchać rozmówcy. Przestajesz być tu i teraz, a zaczynasz myślami wybiegać w przyszłość. Zamiast odkrywać wymagania, zajmujesz się ich realizowaniem.

Gdy‌ typowy klient rozmawia z typowym specjalistą na temat typowych wymagań do typowego systemu, ich procesy myślowe przebiegają zupełnie odmiennie, co przedstawia tabela 5.1.

Tabela 5.1. Różnice‍ w myśleniu klienta oraz specjalisty podczas konwersacji na temat wymagań

Mówiąc‍ o wymaganiach, klient myśli:

Mówiąc‍ o wymaganiach, specjalista myśli:

- przykładami‌ sytuacji ze swojej pracy

- wyobrażeniami‍ na temat oczekiwanego systemu

- obrazami‌ ekranów interfejsu użytkownika

- o‍ procesie korzystania z systemu

- o‍ rozwiązaniach

- o‌ potencjalnych problemach technicznych

- o‍ wewnętrznej strukturze systemu

Jak‍ widać w tabeli 5.1, Twój‍ biznesowy rozmówca przeprowadza w głowie jakby pokaz slajdów. Kolejne slajdy to kolejne ekrany systemu, kolejne wyobrażenia na temat jego działania. Ty, zastanawiając się nad rozwiązaniami, myślisz o wewnętrznej strukturze systemu i mechanice jego działania. O tym, co zmienić, dodać, ulepszyć.

Domyślasz‍ się zapewne, że zamiana jednego slajdu na inny zachodzi błyskawicznie. Jednocześnie uaktualnienie opracowanego w głowie rozwiązania trwa dużo dłużej. Jeśli w trakcie konwersacji większość uwagi poświęcasz rozwiązaniom, wystarczy, że rozmówca dwa albo trzy razy „zmieni slajd” i utracisz wątek konwersacji.

Ponieważ‌ w trakcie konwersacji‌ klient również wymyśla i weryfikuje wymagania, te będą się zmieniać. Skupiając się na rozwiązaniach na tym etapie, wykonujesz niepotrzebną pracę. Po co zastanawiać się nad szczegółowym wykonaniem czegoś, co może jeszcze się wielokrotnie zmienić przed rozpoczęciem prac programistycznych?

Podsumowanie

W‍ tym rozdziale była mowa o dwóch istotnych umiejętnościach leżących u podstaw efektywnych konwersacji: patrzenie z perspektywy klienta oraz świadome prowadzenie konwersacji. Przedstawiłem kilka historii wyraźnie pokazujących różnicę pomiędzy sytuacjami, w których uwzględnia się perspektywę klienta, a tymi, w których zupełnie się ją pomija.

[1] Z‍ języka angielskiego „z pudełka”, czyli oferujemy ją bez żadnego wysiłku z naszej strony.

[2] Więcej‌ na ten temat przeczytasz w książce Davida Golemana Inteligencja‌ emocjonalna.

[3] Mnemotechniki‌ związane z zapamiętywaniem imion znajdziesz w książce Macieja Szurawskiego Pamięć.‌ Trening interaktywny.

Rozdział‌ 6.
Odkrywanie‌ potrzeb

Ten‌ rozdział poświęcony jest najważniejszej rzeczy‍ związanej ze zbieraniem wymagań — potrzebom biznesowym. To właśnie potrzeby są powodem tego, że klienci chcą nowych funkcjonalności i będą płacić za Twoją pracę.

Z‌ tego rozdziału dowiesz się:

- czym‍ jest potrzeba;

- jak‌ odkryć potrzeby klienta;

- jak‍ pomóc klientowi wyrazić to, na czym mu naprawdę zależy w związku z nowymi funkcjonalnościami;

- jak User‌ Stories mogą‍ Ci pomóc w prowadzeniu konwersacji na temat potrzeb.

Gdybyś‌ miał przeczytać tylko jeden rozdział z tej książki, wybierz ten!

Czym‌ jest potrzeba?

Przeczytaj‌ dwie poniższe przykładowe wypowiedzi:

- Jestem‍ odpowiedzialny za zwiększenie liczby obsługiwanych umów do sześciuset, WIĘC chcę zobaczyć miesięczny wykaz zawartych umów.

- Jeśli‍ liczba obsługiwanych umów pozostanie na poziomie dwustu miesięcznie, to zamkną nasz departament, WIĘC chcę zobaczyć miesięczny wykaz umów.

Wypowiedzi te pochodzą od różnych klientów, którzy jednak chcą tej samej funkcjonalności — zobaczyć miesięczny wykaz zawartych umów. Tym, co różni powyższe wypowiedzi, jest powód, dla którego funkcjonalności są konieczne do dostarczenia. Powód ten nazywamy potrzebą biznesową.

Skoro w wymienionych przykładach oczekiwane funkcjonalności są takie same, to czym różnią się wyrażone tam potrzeby biznesowe? Przyglądając się im, zauważasz, że pierwsza potrzeba dotyczy osiągnięcia większej liczby obsługiwanych umów, druga zaś dotyczy uniknięcia zamknięcia departamentu. Te przykłady obrazują dwie grupy potrzeb biznesowych — korzyści do osiągnięcia oraz problemy do uniknięcia.

Potrzeba (klienta, interesariusza) jest to oczekiwana korzyść do osiągnięcia albo spodziewany problem, którego należy uniknąć.

„Chcę” czy „potrzebuję”?

Gdy rozmawiasz z ludźmi z biznesu, to w pierwszej kolejności mówią oni, czego chcą. Zazwyczaj nie nazywają wprost swoich potrzeb. Mówi się, że odpowiedzialnością biznesu jest określenie, co jest do wykonania, a odpowiedzialnością IT określenie, jak należy to wykonać. Uważam, że tę granicę można jeszcze przesunąć. Po stronie biznesu leży określenie, dlaczego i po co tworzone jest oprogramowanie, natomiast tym, co i jak, może zająć się IT.

Za każdą realizowaną funkcjonalnością musi stać albo oczekiwana korzyść, albo problem, który należy rozwiązać. Jeżeli osoby z biznesu nie przewidują osiągnięcia korzyści lub uniknięcia problemów w związku z zaimplementowaniem nowej funkcjonalności, to nie ma żadnego powodu, aby ją implementować. Nie ma powodu, aby za nią płacić!

Jeśli nie są określone ani spodziewane korzyści, ani problemy, które ulegną rozwiązaniu, gdy powstanie dana funkcjonalność, wtedy praca wytwórcza nie ma sensu. Jest nieopłacalna.

Jeśli zrozumiesz, jakie potrzeby biznesu są ukryte za oczekiwanymi funkcjonalnościami, zrozumiesz jednocześnie, co biznes ceni najbardziej. Te potrzeby to nic innego jak wartość biznesowa funkcjonalności (ang. business value).

Zamiast zatem skupiać się na potrzebach biznesu, często powiela się błąd w postaci koncentrowania się na funkcjonalnościach. Tym łatwiej zrobić ten błąd, że o funkcjonalnościach niezwykle łatwo rozmawiać, gdyż są one namacalne. Możesz narysować ekran użytkownika albo schemat przepływu sterowania. Możesz ze szczegółami opisać, jak użytkownik powinien korzystać z systemu, a w przypadku oprogramowania typu back-end możesz narysować diagram komponentów[1] albo wyspecyfikować API[2] dla modułu. Te rzeczy bardzo łatwo nazwać i zdefiniować. Odnalezienie i nazwanie potrzeb jest o wiele trudniejsze, ponieważ najczęściej są one ukryte.

Pamiętaj, że klient najczęściej mówi o tym, czego chce, o funkcjonalnościach i rozwiązaniach. Twoim najważniejszym zadaniem jest odkrycie potrzeby stojącej za oczekiwanymi funkcjonalnościami.

Potrzeba jako problem do uniknięcia

Idąc za podziałem potrzeb na problemy do uniknięcia oraz korzyści do osiągnięcia, załóżmy, że rozmawiasz z osobą z biznesu, np. w trakcie spotkania planistycznego. Starasz się sformułować nowe wymaganie i Twój rozmówca mówi: Jako Użytkownik systemu chcę funkcjonalności X, ponieważ…:

- …obawiam się, że marża będzie wyliczana niepoprawnie;

- …to GUI jest nieintuicyjne;

- …lepiej, aby użytkownik nie miał wrażenia, że (…).

Słuchając uważnie, usłyszysz w tych wypowiedziach bardzo specyficzne frazy: obawiam się, że…, to nie jest…, nie chcę, aby… Inne podobne do nich to:

- działa zbyt wolno, działa nie tak jak trzeba;

- jest za bardzo…;

- problem w tym, że…;

- to niemożliwe, ponieważ…;

- to trudne, ponieważ…

Podane frazy niemal jednoznacznie wskazują, że osoba, z którą rozmawiasz, stara się opisać coś, czego chce uniknąć. Pokazuje w ten sposób swoją potrzebę w formie problemu do uniknięcia.

Nazwij problem rozmówcy

Po rozpoznaniu wymienionych sygnałów wskazujących na problem nazwij go wprost. Najczęściej pasuje on do poniższych schematów:

- Chcę uniknąć <NAZWANY PROBLEM>;

- Nie chcę, aby <NAZWANY PROBLEM>;

- To trudne, ponieważ <NAZWANY PROBLEM>;

- Jeśli tego nie zrobimy, to <NAZWANY PROBLEM>.

Gdy wstawisz rozpoznane wyrażenie określające <NAZWANY PROBLEM>, zdanie będzie miało sens. Dla początkowego przykładu może to mieć następującą postać:

- Chcę uniknąć źle wyliczonej marży.

- Nie chcę nieintuicyjnego GUI.

- Nie chcę, aby użytkownik miał wrażenie, że…

W tabeli 6.1 znajdziesz fragment konwersacji, w której specjalista nazywa potrzebę klienta w formie problemu do uniknięcia.

Tabela 6.1. Nazywanie potrzeby będącej problemem do uniknięcia

Klient

Specjalista

Komentarz

Chciałbym móc się zalogować za pomocą OpenID.

—

Klient mówi o konkretnej funkcjonalności.

—

Czy chodzi ci o logowanie z użyciem już istniejącego loginu, np.: Google, LinkedIn, Microsoft czy Twitter?

Specjalista upewnia się, czy dobrze zrozumiał pomysł klienta.

Tak, to irytujące, gdy w każdym portalu trzeba podać login, hasło, mail, potwierdzić założenie konta i tak dalej.

—

Klient potwierdza i podaje więcej informacji o powodzie, dla którego oczekuje tej funkcjonalności.

Mówi, że przeszkadza mu typowy sposób rejestrowania się w portalu. Chce więc czegoś uniknąć podczas tego procesu.

—

Aha, czyli chodzi ci o to, aby użytkownik nie zniechęcił się podczas zakładania konta, bo system zmusza go do podania tych wszystkich danych?

Specjalista trafnie nazywa potrzebę klienta: uniknąć zniechęcenia podczas zakładania konta.

No właśnie!

—

—

Dialog z tabeli 6.1 to fragment prawdziwej konwersacji, nie wymyślonej na potrzeby książki. Zobacz, że specjalista nie próbuje na siłę ubrać wypowiedzi klienta w schemat „Chcę uniknąć <NAZWANY PROBLEM>”. Natomiast klient nie wyraża się w ściśle oczekiwany przez specjalistę sposób. Klient powiedział po prostu „To irytujące, gdy…”. Schematy przedstawiane w tej książce to pewne uproszczenie rzeczywistych konwersacji. Ich zadaniem jest uchwycenie istotnych momentów wypowiedzi. Twoim zaś zadaniem jest rozpoznać te momenty i odpowiednio zareagować poprzez twórcze zinterpretowanie przedstawianych tu schematów.

Potrzeba jako korzyść do osiągnięcia

Drugim rodzajem potrzeby jest oczekiwana korzyść. Występuje ona, gdy podczas konwersacji na temat nowych funkcjonalności słyszysz, że rozmówca mówi: Jako Użytkownik systemu chcę funkcjonalności X, ponieważ…:

- …będziemy mogli sami projektować raporty;

- …użyjemy kalkulatora płac tak szybko, jak to możliwe;

- …lepiej przetestujemy ten moduł.

Podobnie jak w przypadku problemów do rozwiązania, w podanych wypowiedziach słyszysz charakterystyczne frazy: będziemy mogli…, użyjemy tak szybko, jak to możliwe, lepiej przetestujemy… Inne podobne do nich to:

- spodziewam się, że…;

- dzięki temu…;

- to powinno/musi/może/mogłoby…;

- będzie wspaniale, jeśli…

Nazwij korzyść oczekiwaną przez rozmówcę

Jeśli uda Ci się trafnie nazwać oczekiwaną korzyść, lepiej zrozumiesz klienta, a konwersacja nabierze większego dynamizmu i stanie się bardziej konkretna. Dość łatwo możesz nazwać korzyść, o której rozmawiasz, ponieważ najczęściej pasuje ona do jednego z poniższych schematów:

- Chcę osiągnąć <NAZWANA KORZYŚĆ>;

- To sprawi, że <NAZWANA KORZYŚĆ>;

- To będzie oznaczać, że <NAZWANA KORZYŚĆ>.

Dla podanego na początku podrozdziału przykładu mamy:

- To sprawi, że sami zaprojektujemy raporty.

- To będzie oznaczać, że użyjemy kalkulatora płac tak szybko, jak to możliwe.

- Chcę osiągnąć lepsze przetestowanie tego modułu.

Przypatrz się fragmentowi konwersacji w tabeli 6.2, w której specjalista dąży do nazwania korzyści ukrytej za oczekiwaniami klienta.

Tabela 6.2. Nazywanie potrzeby będącej korzyścią do osiągnięcia

Klient

Specjalista

Komentarz

Chciałbym móc się zalogować za pomocą OpenID.

—

Klient mówi o konkretnej funkcjonalności.

—

Czy chodzi ci o logowanie z użyciem już istniejącego loginu, np.: Google, LinkedIn, Microsoft czy Twitter?

Specjalista upewnia się, czy dobrze zrozumiał pomysł klienta.

Dokładnie tak! Chcę, żeby użytkownik jak najszybciej znalazł się w panelu głównym i żeby od razu mógł wypożyczyć filmy szkoleniowe. Chodzi mi o coś w stylu 1-Click Buying™ w Amazonie.

—

Klient potwierdza i jako przykład podaje rozwiązanie 1-Click Buying z portalu Amazon.

Gdy klient podaje przykładowe już istniejące rozwiązanie, możesz przypuszczać, że to rozwiązanie realizuje potrzebę, o której klient stara Ci się powiedzieć.

—

Chcesz zatem, aby użytkownik wypożyczył film możliwie szybko od wejścia na stronę?

Specjalista określa tę potrzebę tak: aby klient wypożyczył film możliwie szybko.

Jasne! Możliwie szybko, a najlepiej od razu.

—

A więc wcale nie chodzi o logowanie. Klient zaczął rozmowę od logowania prawdopodobnie dlatego, że to była jedyna rzecz, jaka przychodziła mu do głowy, gdy myślał o wymaganiach co do systemu.

Ciekawym fragmentem konwersacji z tabeli 6.2 jest moment, w którym klient podaje przykłady innych funkcjonalności. Jak myślisz, dlaczego klienci tak robią? Powód jest bardzo prosty: ponieważ owe przykładowe, istniejące już funkcjonalności zapewniają zaspokojenie potrzeby, którą klient stara się wyrazić. Gdy klient podaje przykład, Twoim zadaniem jest odkrycie potrzeby stojącej za tym przykładem. Możesz to łatwo zrobić za pomocą pytań, o których przeczytasz w kolejnym podrozdziale.

Pytania odkrywające potrzeby

Podstawowe pytania pomagające w odkrywaniu potrzeb to:

- Dlaczego?

- Po co?

- W jakim celu?

- Co chcesz poprzez to osiągnąć?

Pytania o przyczyny i o rezultaty

Zwróć uwagę, że pytania Dlaczego? i Po co? są komplementarne. Pytanie Dlaczego? dotyczy przeszłych przyczyn, pytanie Po co? odnosi się do przyszłych rezultatów (rysunek 6.1).

Rysunek 6.1. Różnica między Po co? i Dlaczego?

Pytanie Dlaczego? dotyczy przeszłych przyczyn, pytanie Po co? odnosi się do przyszłych rezultatów.

Jeżeli zatem chcesz skierować uwagę klienta na to, co kiedyś (nawet niedawno) zmotywowało go do sformułowania danego wymagania, zapytaj: Dlaczego? Jeśli zaś chcesz skierować konwersację na przyszłe rezultaty, zapytaj: Po co?

Pytania o problemy i o korzyści

Umiejscowienie odpowiedzi klienta w przeszłości albo w przyszłości uwypukla pewien ważny podział pytań uogólniających: na położone w przeszłości problemy do uniknięcia i możliwe do osiągnięcia w przyszłości korzyści (rysunek 6.2).

Rysunek 6.2. Przyszłe korzyści i przeszłe problemy

Podział ten jest ważny dlatego, że na najbardziej elementarnym poziomie problemy do uniknięcia i korzyści do osiągnięcia są jedynymi motywatorami zmuszającymi nas do działania. Naprawdę! Albo robimy coś nowego, bo obecna sytuacja jest tak trudna, że nie sposób już w niej funkcjonować, albo widzimy nowe fantastyczne możliwości i skłania nas to do działania. Zastanów się, dlaczego kupiłeś nowy laptop. Czy stary działał zbyt wolno, czy może nowy oferował lepsze możliwości? Aha! Mam Cię! Do zakupu laptopa skłonił Cię problem ze starym lub[3] korzyść wynikająca z nowego. Podobnie jest z Twoimi klientami. Decydują się zamówić u Ciebie oprogramowanie z dwóch powodów:

- korzystanie z obecnych rozwiązań jest tak uciążliwe bądź kosztowne, że nie da się już dłużej wytrzymać — problem;

- nowe oferuje możliwości, które pozwolą szybciej bądź taniej wykonywać pracę lub ewentualnie więcej zarabiać — korzyść.

Skoro problemy i korzyści to jedyne motywatory, to właśnie one powinny Cię interesować w trakcie poszukiwania potrzeb. W tabeli 6.3 znajdziesz pytania uogólniające w podziale na dotyczące problemów i dotyczące korzyści.

Tabela 6.3. Pytania o problemy i o korzyści

Pytania o problemy

Pytania o korzyści

- Dlaczego?

- Dlaczego to jest ważne?

- Z jakiego powodu?

- Co może się stać, jeśli to zaniedbamy?

- Jakiego problemu można dzięki temu uniknąć?

- Ile można na tym zaoszczędzić?

- Przed jakimi stratami może to uchronić?

- Jaki problem to rozwiązuje?

- Po co?

- Co to da?

- W jakim celu?

- Co się stanie, jeśli to zrealizujemy?

- Co dzięki temu można osiągnąć?

- Jakich korzyści się po tym spodziewasz?

- Jakie zyski to przyniesie?

- Jakie to daje możliwości?

Która z potrzeb jest tą właściwą?

Być może przychodzą Ci teraz do głowy następujące pytania: Których potrzeb najpierw poszukiwać? Problemów czy korzyści? Co w sytuacji, gdy klient mówi na przemian o problemach i o korzyściach?

Która z potrzeb jest tą właściwą? Uczciwie napiszę, że tak do końca tego nie wiesz. Prowadzenie konwersacji to nie nauka ścisła i raczej nie będziesz mieć stuprocentowej pewności, czy klient mówi to, co rzeczywiście myśli, ani nie będziesz mieć wpływu na ewentualną zmianę zdania przez klienta. Mogę jednak zaproponować trzy wskazówki, które w znakomitej większości przypadków umożliwią Ci odkrycie tej właściwej potrzeby.

Zacznij od neutralnych pytań

Z rozdziału 5., „Sztuka zadawania pytań”, dowiedziałeś się, że pytania nadają kierunek konwersacji. Konsekwencja tego faktu jest taka, że zadając pytanie, możesz niechcący zasugerować odpowiedź. Jeśli zapytasz o problemy, rozmówca będzie mówił o problemach. Zapytasz o korzyści — będzie mówił o korzyściach. Musisz na to bardzo uważać, bo gdy tak się stanie, to zamiast dowiedzieć się więcej na temat tego, czego potrzebuje klient, usłyszysz jedynie echo swoich własnych przemyśleń.

Moje doświadczenie podpowiada, że najkorzystniej jest zacząć konwersację od pytań ogólnych, które nie sugerują ani korzyści, ani problemów stojących za funkcjonalnościami:

- Co spowodowało, że chcesz tej funkcjonalności?

- Co takiego ważnego jest w tej funkcjonalności?

- Co zmotywowało cię do tego, że chcesz tej funkcjonalności?

- Co konkretnie spowodowało, że chcesz tej funkcjonalności?

- Dla kogo właściwie ważne jest, aby ta funkcjonalność powstała?

- Co ta funkcjonalność zmieni w biznesie?

- Gdy ta funkcjonalność już powstanie, to na kogo będzie miała wpływ?

- Gdyby ta funkcjonalność nie powstała, to na kogo będzie to miało negatywny wpływ, a na kogo pozytywny?

Wymienione pytania nie sugerują żadnego typu potrzeby: ani problemu, ani korzyści. Zadaj je na początku konwersacji, a następnie słuchaj uważnie tego, co mówi rozmówca. Rozpoznawaj sygnały wskazujące na to, czy oczekuje rozwiązania problemu, czy osiągnięcia korzyści, a następnie zadawaj pytania eksplorujące dany rodzaj potrzeby (tabela 6.3).

Szukaj potrzeby konkretnej

— Co spowodowało, że chcesz tej funkcjonalności?

— Oj, wtedy będzie super!

Cóż, z pewnością dobrze, aby „było super”. Stwierdzenie „będzie super” nosi nawet znamiona potrzeby w postaci korzyści do osiągnięcia (Chcę osiągnąć <TO, ABY BYŁO SUPER>). Jest to jednak potrzeba tak niekonkretna, że jej odkrycie bardzo trudno przełożyć na jakiekolwiek praktyczne działania.

Jeśli chcesz skonkretyzować potrzebę[4], poproś rozmówcę o formułowanie kryteriów zaspokojenia potrzeby, zadając następujące pytania:

- Po czym poznasz, że…?

- W jaki sposób zmierzysz, że…?

- Jak? W jaki sposób?

- Co konkretnie sprawi, że…?

- Kto? Gdzie? Kiedy? Z kim? Ile?

- Podaj przykład…

Na przykład: „będzie super”, gdy 90% klientów odpowie twierdząco na pytanie: Czy polecisz znajomym zakupy w naszym e-sklepie? Patrząc na kryterium zaspokojenia potrzeby „aby było super”, można się zastanawiać, czy nie powinna być ona nazwana bardziej precyzyjnie, np.: Chcę osiągnąć <JEDNEGO NOWEGO KLIENTA Z KAŻDEJ TRANSAKCJI>. Z pewnością takie sformułowanie mówi o wiele więcej, i sam dążyłbym do tego, aby przed wpisaniem do formalnego dokumentu sformułować potrzebę w ten lub podobny sposób. Jednak dopóki trwa konwersacja i jest szansa na posługiwanie się pojęciami definiowanymi przez klienta, to nadal tak postępuj. Jeśli zatem klient chce, aby „było super”, to niech „będzie super”, jeśli wiesz, co „bycie super” dokładnie oznacza.

Szukaj potrzeby związanej z danym biznesem

„Zwiększenie miesięcznego przychodu”, „zmniejszenie kosztów ukrytych” są potrzebami w miarę konkretnymi, lecz jednocześnie pasują do niemal każdego istniejącego biznesu. Poszukuj potrzeb, które są związane z konkretnym biznesem, dla którego tworzysz oprogramowanie. Na przykład jako użytkownik księgarni internetowej mam następujące potrzeby:

- aby nie zakładać nowego konta (problem do uniknięcia);

- aby nie wpisywać wszystkich danych przy każdym zakupie (problem do uniknięcia);

- aby otrzymać książkę następnego dnia po zakupie (korzyść do osiągnięcia);

- aby nie płacić za przesyłkę każdej książki oddzielnie (problem do uniknięcia).

Niektóre z nich przełożą się na funkcjonalności, inne na proces wykonywania usługi poza systemem informatycznym.

Prześledź przykład z tabeli 6.4, aby zobaczyć, w jaki sposób za pomocą pytań odnieść potrzebę do danego kontekstu biznesowego[5].

Tabela 6.4. Poszukiwanie potrzeby związanej z biznesem klienta

Klient

Specjalista

Komentarz

Tu jeszcze powinien być raport prognozowanych przychodów.

—

Klient formułuje oczekiwanie co do funkcjonalności.

—

Chcesz tego, ponieważ…

To również jest pytanie o potrzebę, zadane w potocznym języku mówionym. Zaczynasz zdanie i zawieszasz głos. Pamiętaj, że schemat pytania to tylko wytyczna, którą możesz dostosować do aktualnego kontekstu.

Ponieważ to da nam obraz naszej sytuacji finansowej.

—

Poznanie obrazu sytuacji finansowej jest co prawda potrzebą biznesu, ale pasuje do każdej firmy. Nas interesuje ten konkretny biznes tego konkretnego klienta.

—

Jakiej zmiany w działaniu firmy się spodziewasz?

Specjalista zadaje jedno z neutralnych pytań o potrzeby. Pyta o biznesowy skutek funkcjonalności.

Raport pozwoli podejmować decyzje dotyczące poprawy naszej sytuacji finansowej.

—

Ponownie klient formułuje potrzebę pasującą do każdej firmy.

—

Czy możesz wymienić decyzje, które zostaną podjęte na podstawie takiego raportu?

Starając się skonkretyzować potrzebę, specjalista zadaje jedno z pytań konkretyzujących — prosi o podanie przykładu.

Chcemy wiedzieć, ile musimy mieć aktywnych szans sprzedażowych, aby zwiększyć liczbę wysyłanych ofert.

—

W tym momencie klient podaje już bardzo konkretną informację o tym, co funkcjonalność raportu zmieni w jego biznesie.

—

Czyli raport prognozowanych przychodów ma pomóc wam podjąć decyzję o liczbie wysyłanych ofert, a poprzez to utrzymać liczbę aktywnych szans sprzedażowych na odpowiednim poziomie.

Specjalista upewnia się, czy dobrze rozumie związek między funkcjonalnością a potrzebą.

No, przecież to właśnie powiedziałem.

—

Klient nie zawsze zdaje sobie sprawę, że pierwotnie wyraził potrzebę niewystarczająco precyzyjnie.

Potrzeby i korzyści nie są odwrotnościami

Częstym błędem w nazywaniu potrzeb klienta jest traktowanie problemów do uniknięcia jako odwrotności korzyści do osiągnięcia. Osoba popełniająca ten błąd myśli, że:

- „chcę uniknąć kosztów” jest tym samym co „chcę osiągnąć przychód”;

- „chcę osiągnąć intuicyjny interfejs użytkownika” jest tym samym co „chcę uniknąć nieintuicyjnego interfejsu użytkownika”;

- „chcę uniknąć dużej ilości klikania przy logowaniu” jest tym samym co „chcę osiągnąć małą ilość klikania przy logowaniu” albo „chcę osiągnąć szybkie logowanie”.

Jest to na wskroś błędne myślenie, które w dodatku prowadzi do mechanicznego traktowania potrzeb, zaprzestania słuchania klienta, a w konsekwencji do zebrania wymagań nieodpowiednich dla danego klienta.

Gdy klient mówi, że chce uniknąć kosztów, to nie ma jednocześnie w głowie lustrzanej kategorii myślowej w postaci korzyści do osiągnięcia. To tak nie działa. Potrzeby nie rządzą się precyzyjnymi prawami logiki matematycznej.

Gdy klient mówi, że chce uniknąć nieintuicyjnego interfejsu użytkownika, to w tej sytuacji jest skupiony na problemie do uniknięcia i wcale nie myśli o korzyściach. Musi dopiero wykonać pewną pracę myślową[6], aby nazwać również korzyść, którą chce osiągnąć. Najczęściej potrzebuje do tego Twojej pomocy.

Z myślenia o problemach i korzyściach jako o wzajemnych przeciwieństwach wyleczyła mnie pewna rozmowa z klientem. Właśnie chciał „pozbyć się nieintuicyjnego interfejsu systemu”. Od razu pomyślałem, że zamiast skupiać się na problemie, zajmiemy się rozwiązaniem, i postanowiłem skłonić klienta do sformułowania korzyści. Oczekiwałem od niego, że zamiast „pozbyć się nieintuicyjnego interfejsu systemu” powie, że chce „osiągnąć intuicyjny interfejs systemu”.

— Proszę mi powiedzieć — zapytałem — jeśli interfejs tego systemu nie będzie nieintuicyjny, to jaki będzie?

— Jak to jaki? — zapytał zdziwiony klient. — Będzie grzmotny!

Odkrywanie potrzeb w pełnej krasie

W tabeli 6.5 znajdziesz dłuższy fragment konwersacji zmierzającej do odkrycia potrzeb klienta. Zwróć uwagę, że specjalista zadaje pytania, konkretyzuje, parafrazuje. W dialogu pojawia się dużo treści. Jeśli jednak uważnie przeczytasz konwersację, zdasz sobie sprawę, że specjalista tak naprawdę dąży jedynie do tego, aby potrzeba była konkretna i osadzona w biznesie klienta. Ten cel jest osią całej konwersacji, a jego osiągnięcie to kryterium zakończenia odkrywania potrzeby.

Tabela 6.5. Poszukiwanie potrzeby w pełnej krasie

Klient

Specjalista

Komentarz

(…) i jeszcze ważne jest, aby ta funkcjonalność integrowała się z Facebookiem i Google+.

—

Klient mówi o funkcjonalności. Określa, czego chce.

—

Co jest dla ciebie ważne w tej integracji?

Specjalista zadał neutralne pytanie o potrzebę: Co takiego ważnego jest w tej funkcjonalności?

No, chodzi o to, żeby aktywność w systemie była również widoczna na Facebooku i w Google+.

—

Klient wciąż mówi o funkcjonalności.

—

Domyślam się, ale chciałbym wiedzieć, jakie konkretnie sytuacje powodują, że chciałbyś zapłacić za tę integrację.

Skoro jedno neutralne pytanie nie zadziałało, spróbujmy innego: Co konkretnie spowodowało, że chcesz tej funkcjonalności?

Nasi konkurenci też to mają.

—

W tym momencie klient już przestał mówić o funkcjonalnościach, o tym, czego chce. Zaczął mówić o swoim biznesie i tym, czego potrzebuje.

—

Czyli chodzi o to, żeby mieć również to, co ma konkurencja, i nie odstawać od niej?

Specjalista idzie za wskazówką klienta i stara się doprecyzować potrzebę stojącą za tym, że klient odniósł się do konkurencji.

Zwróć uwagę na drugą część pytania, które zadał specjalista: żeby mieć również to, co ma konkurencja, i nie odstawać od niej? Jest to pytanie o dwa rodzaje potrzeb jednocześnie. O korzyści: mieć również to, co ma konkurencja i o problemy: nie odstawać od niej.

Specjalista celowo sformułował pytanie tak, aby nie sugerować klientowi ani problemu, ani korzyści. Jest to ważne, ponieważ chcemy się dowiedzieć, co myśli klient, a nie specjalista.

Ma się rozumieć!

—

Chociaż klient zgodził się ze sformułowaniem, to jeszcze nie określił, czy ma problem do uniknięcia, czy korzyść do osiągnięcia.

—

W jaki sposób integracja z Facebookiem i Google+ wpłynie na twój biznes? Przychody, liczba użytkowników?

Specjalista, podążając za klientem, zadaje ważne pytanie o odniesienie potrzeby do biznesu, w którym funkcjonuje klient.

Myślę, że jedno i drugie.

—

To wymijająca odpowiedź, która niczego nie wnosi. Zakładamy, że klient nie robi tego świadomie. Po prostu nie potrafi nazwać swoich potrzeb i „odbija się” od tego, co mówi specjalista.

Pamiętaj, że kiedy odgrywasz rolę specjalisty, na Tobie spoczywa odpowiedzialność wyklarowania potrzeb klienta. On oczekuje Twojej pomocy.

—

Podaj przykład, proszę.

Specjalista prosi o przykład, aby skonkretyzować potrzebę.

Tak do końca to nie jestem pewien, ale spodziewam się, że gdy znajomi użytkownika portalu społecznościowego będą widzieli wiadomości pochodzące z naszego systemu, to sami się nim zainteresują i założą konto.

—

I teraz mamy! Klient powiedział, że poprzez integrację z FB i G+ chce osiągnąć zwiększenie liczby użytkowników w swoim portalu.

—

A więc liczysz po prostu na darmową reklamę? I zwiększenie liczby użytkowników?

Specjalista upewnia się co do rozumienia potrzeby.

Hmmm, właściwie tak.

—

Zgadza się. Warto jednak zanotować w pamięci początkowe „Hmmm” oraz „właściwie”. „Hmmm, właściwie tak” może oznaczać „Nie do końca o to mi chodziło, ale niech już będzie”.

—

Okej, zapiszmy User Story: „Jako Sponsor[7] chcę, aby system informował o aktywności użytkownika na jego kontach na Facebooku i w Google+, po to, aby jego znajomi również stali się użytkownikami systemu”. Czy o to ci chodziło?

Być może sugestia o darmowej reklamie zmieszała klienta? Na wszelki wypadek podczas dalszej rozmowy specjalista będzie unikał tej sugestii. Teraz już można spisać wymaganie.

Tak, tak!

—

Klient zdecydowanie zgodził się, że chodzi o to, aby znajomi z FB i G+ również stali się użytkownikami systemu.

Zwróć uwagę, że specjalista nie stara się zapisywać wymagania, dopóki nie pozna potrzeby, która skłania klienta do wyrażenia tego wymagania.

Większość technik prezentowanych w tej książce staram się ująć w powtarzalny algorytm „krok po kroku”. W przypadku poszukiwania potrzeby sprawa wygląda nieco odmiennie. Poszukiwanie potrzeb przypomina raczej kształtowanie niewyrażonego oczekiwania za pomocą świadomie sformułowanych i bardzo precyzyjnych pytań.

Jedyną rzeczą, o której musisz pamiętać, jest to, że na samym końcu potrzeba ma być konkretna i związana z biznesem klienta.

Odkrywanie potrzeby klienta nie jest algorytmem „krok po kroku”, lecz raczej kształtowaniem niewyrażonego oczekiwania klienta za pomocą świadomie formułowanych i bardzo precyzyjnych pytań wynikających z treści dotychczasowej konwersacji.

Przekształcanie problemów w korzyści i na odwrót

W trakcie sesji zbierania wymagań może się zdarzyć, że klient mówi wyłącznie o problemach. Bywa tak, gdy ludzie są naprawdę sfrustrowani nieefektywnie działającym oprogramowaniem. Trudno wtedy prowadzić konwersację, ponieważ trzeba mocno się wysilić, aby wspólnie wypracować oczekiwania co do nowego systemu. Może się również zdarzyć, że klient będzie mówił wyłącznie o korzyściach, a Ty będziesz chciał poznać również jego problemy, aby wiedzieć, na co zwrócić szczególną uwagę podczas projektowania oprogramowania. W takich sytuacjach przyda Ci się sposób na przekształcanie problemów w korzyści i odwrotnie. Zrobisz to bardzo prosto za pomocą odwrócenia. Odwrócenie polega na zanegowaniu problemu w celu określenia korzyści lub zanegowaniu korzyści w celu określenia problemu. Przeanalizuj fragmenty rozmów z tabel 6.6 i 6.7.

Przedstawione w tabelach 6.6 i 6.7 przykłady pochodzą ze wczesnych prac analitycznych, kiedy to definiowane są potrzeby klienta, które system ma zaspokajać. Tę technikę z powodzeniem można również stosować podczas szczegółowych prac programistycznych — zobacz przykład w tabeli 6.8.

Tabela 6.6. Odwrócenie problemu i określenie korzyści

Specjalista

Klient

Komentarz

Z jakimi trudnościami spotykasz się w obecnym procesie sprzedaży?

—

Pytanie o problemy.

—

Mamy bałagan w kontaktach i sprzedawcy wchodzą sobie w drogę.

Klient wskazuje problemy: bałagan w kontaktach i sprzedawcy wchodzą sobie w drogę.

Co mogłoby wprowadzić uporządkowanie i spójne działania sprzedażowe?

—

Specjalista odwraca problemy, wskazując na korzyści: bałagan — uporządkowanie, sprzedawcy wchodzą sobie w drogę — spójne działania sprzedażowe. Zwróć uwagę, że specjalista umieszcza korzyść w przyszłości.

—

Jednolity proces sprzedaży wsparty przez narzędzia.

Klient definiuje korzyść, której się spodziewa.

Tabela 6.7. Odwrócenie korzyści i określenie problemu

Specjalista

Klient

Komentarz

Czego spodziewasz się po nowym systemie?

—

Pytanie o korzyści.

—

Wdrożenia efektywnego procesu sprzedaży.

Klient wskazuje korzyści: efektywny proces sprzedaży.

Co w obecnym procesie sprzedaży działało do tej pory nieefektywnie?

—

Specjalista odwraca korzyść, wskazując na problem: efektywny proces sprzedaży — co działa nieefektywnie. Zwróć uwagę, że specjalista umieszcza problem w przeszłości.

—

Mamy bałagan w kontaktach i trudno nam zsynchronizować działania poszczególnych sprzedawców.

Klient definiuje problem. Wypowiada się w czasie teraźniejszym. Może to świadczyć o dużym nasileniu problemu, który dla klienta występuje teraz.

Tabela 6.8. Odwrócenie korzyści i określenie problemu w kontekście szczegółowych rozwiązań programistycznych

Specjalista

Klient

Komentarz

Dlaczego w wymaganiu, które zgłosiłeś, napisałeś, że wygenerowany raport ma uwzględniać pełne okresy budżetowe?

—

Pytanie o korzyść.

—

Żeby można było miarodajnie porównać wyniki sprzedaży naszych spółek.

Klient wskazuje korzyści: miarodajne porównania wyników sprzedaży.

W takim razie co obecnie sprawia, że wyniki są niemiarodajne?

—

Specjalista odwraca korzyść, wskazując na problem: miarodajne porównania wyników sprzedaży — co sprawia, że wyniki są niemiarodajne.

—

Część spółek ma przesunięty cykl budżetowy i okazało się, że porównujemy ze sobą nie te miesiące co trzeba.

Klient definiuje aktualnie występujący problem.

Używanie User Stories[8] do odkrywania potrzeb

Istnieją dwa popularne narzędzia do spisywania wymagań: User Stories (z ang. historie użytkownika) wraz ze scenariuszami albo kryteriami akceptacyjnymi oraz Use Cases (z ang. przypadki użycia). Nie wdając się w rozważania będące poza zakresem tej książki, różnica między nimi jest następująca:

- User Stories (US) są krótką notatką z konwersacji na temat działania systemu. Stoi za nimi założenie, że często rozmawiamy z klientem i doprecyzowujemy wymagania, a User Stories mają przypominać, o czym rozmawialiśmy i co ustaliliśmy. Zasadniczym celem User Stories jest wspomaganie konwersacji. Nie są więc one, brzydko mówiąc, „kwitami” do szukania winnych ewentualnych niedomówień.

- Use Cases (UC) są formalnym zapisem konwersacji na temat działania systemu. Stoi za nimi założenie, że zawierają wszystkie informacje niezbędne do tego, aby zespół dostarczył oprogramowanie działające zgodnie z zapisem w Use Cases.

User Stories spisywane są najczęściej według jednego z następujących schematów:

- JAKO <ROLA> CHCĘ <FUNKCJONALNOŚĆ>, PO TO, ABY <EFEKT BIZNESOWY>.

- ABY <EFEKT BIZNESOWY>, JAKO <ROLA> CHCĘ <FUNKCJONALNOŚĆ>.

Kłopoty ze spisywaniem wymagań

Pracując z różnymi zespołami, zauważyłem, że w przypadku US dość często pojawia się schemat ich formułowania, który można zilustrować następującymi przykładami:

- JAKO Operator chcę się zalogować, PO TO, ABY się zalogować.

- JAKO Sprzedawca chcę wygenerować raport miesięczny, PO TO, ABY obejrzeć miesięczne zestawienie sprzedaży.

- JAKO Doradca chcę złożyć nową ofertę, PONIEWAŻ Product Owner tak chce.

Rzeczą, która w przedstawionych przykładach wysuwa się na pierwszy plan, jest brak jednoznacznego sformułowania celu User Stories. Jak się za chwilę przekonasz, ma to bardzo poważne skutki biznesowe.

Analogiczne antywzorce można zauważyć również w stosunku do Use Cases. Do najczęściej wskazywanych przez ekspertów należą:

- UC jest zbyt ogólny;

- UC jest zbyt mocno związany z konkretną technologią;

- brak jest scenariuszy alternatywnych;

- UC jest zbyt złożony.

Zarówno US, jak i UC zostały stworzone jako narzędzia wspierające współpracę między biznesem a IT. Ten ich główny cel znika czasem z pola uwagi. Poniżej przedstawiam kilka związanych z tym obserwacji.

US i UC są traktowane jako cel same w sobie. Zazwyczaj ostatecznym celem projektu programistycznego jest wytworzenie produktu bądź usługi realizowanej za pomocą oprogramowania. Spisywanie oczekiwań w jakiejkolwiek postaci jest podporządkowane temu nadrzędnemu celowi[9]. Niebezpieczną sytuacją jest, gdy tworzenie UC bądź US „odrywa się” od procesu dostarczania oprogramowania, stając się sztuką dla sztuki.

US i UC są używane jako tarcza przed zawracaniem głowy ich autorowi. W niektórych kontekstach ilość tworzonej dokumentacji jest odwrotnie proporcjonalna do subiektywnie odczuwanej jakości współpracy między biznesem a IT. Wielokrotnie byłem świadkiem sytuacji, w których rozbudowane i szczegółowe UC tworzono przede wszystkim dlatego, żeby programiści przestali w końcu marudzić.

Zamiast na współpracy, skupiamy się na wypełnianiu formularzy. Nieracjonalnie zakładamy, że spisując doskonałe UC czy US, gwarantujemy sobie powodzenie projektu. Najczęściej ulegamy błędowi poznawczemu nazywanemu społecznym dowodem słuszności[10]. To zadziwiające, że ceniąc pierwszą wartość Manifestu Agile — ludzie i interakcje ponad procesy i narzędzia, możemy jednocześnie dawać pierwszeństwo narzędziom. Może dlatego, że tym razem są to narzędzia „edżajlowe”.

Nawet mając spisane US bądź UC, można nie rozumieć potrzeb biznesu. Jest taki żart, że w pewnym małym miasteczku zbudowano aż trzy mosty, ponieważ… dopiero za trzecim razem trafiono na rzekę. Można wykonać naprawdę dużo dobrej i kosztownej roboty, nie rozumiejąc, o co właściwie chodzi w projekcie.

User Stories, Use Cases i inne metody do nadawania kształtu wiedzy dziedzinowej używane są po to, aby lepiej rozumieć, czego potrzebują użytkownicy, czego oczekuje biznes. Istnieją również metody[11], które pozwalają lepiej modelować rzeczywistość biznesową. Tutaj powstaje pytanie: Gdzie mieszczą się wspomniana wiedza biznesowa, wiedza o dziedzinie, oczekiwania? Odpowiedź jest oczywista: w głowach ludzi z biznesu!

Szablony User Story, które ułatwiają konwersację o potrzebach

Przyjrzyj się dwóm powszechnie używanym szablonom User Story:

- JAKO <ROLA> CHCĘ <FUNKCJONALNOŚĆ>, PO TO, ABY <EFEKT BIZNESOWY>.

- ABY <EFEKT BIZNESOWY>, JAKO <ROLA> CHCĘ <FUNKCJONALNOŚĆ>.

Jakie będą, Twoim zdaniem, konsekwencje używania każdego z nich? Używając pierwszego, zaczynasz konwersację od konkretnej roli oraz funkcjonalności. Ponieważ rozmawianie o funkcjonalnościach jest dość łatwe i naturalne, można spędzić mnóstwo czasu na rysowaniu ekranów, modeli czy procesów. To są oczywiście bardzo ważne rzeczy, lecz na koniec dnia będziesz chciał mieć całą User Story w pełni spisaną. Pojawi się wtedy pokusa, aby w miejsce celu wpisać ogólne sformułowanie, a nie ten właściwy, który motywuje biznes do zamówienia danej funkcjonalności.

Drugi szablon przyniesie o wiele lepszy efekt, gdyż zaczynasz konwersację od poszukiwania celu, czyli potrzeby biznesowej. Używając drugiego szablonu, nie zaczynasz rozmawiać o funkcjonalnościach, dopóki nie zdefiniujesz potrzeby wystarczająco wyraźnie.

Zauważ, że możesz wykorzystać wiedzę na temat potrzeb do usprawnienia szablonu User Story. Zamiast jednego schematu pojawiają się dwa bardziej precyzyjne:

- ABY UNIKNĄĆ <PROBLEM DO UNIKNIĘCIA>, JAKO <ROLA> CHCĘ <FUNKCJONALNOŚĆ>.

- ABY OSIĄGNĄĆ <KORZYŚĆ DO OSIĄGNIĘCIA>, JAKO <ROLA> CHCĘ <FUNKCJONALNOŚĆ>.

Używając tych szablonów, łatwiej zauważysz potrzeby stojące za wymaganiami zgłaszanymi przez biznes, łatwiej poprowadzisz konwersację, a w konsekwencji będziesz mógł zaproponować funkcjonalności, które trafią w samo sedno potrzeb klienta.

Podsumowanie

Z tego rozdziału dowiedziałeś się:

- jak w tym, co mówi klient o funkcjonalnościach, słyszeć potrzeby biznesowe;

- jak świadomie używać pytań, aby precyzować potrzeby i osadzać je w kontekście biznesowym klienta;

- jak rozmawiać z klientem, aby pomóc mu dostrzegać zarówno problemy, jak i korzyści stojące za funkcjonalnościami;

- jak używać User Stories do odkrywania potrzeb stojących za funkcjonalnościami.

[1] Jeden z diagramów języka UML. Służy do modelowania fizycznych części systemu oraz zależności między nimi.

[2] W języku angielskim Application Programming Interface — interfejs programistyczny aplikacji.

[3] „Lub”, ponieważ problem i korzyść mogą występować jednocześnie, zazwyczaj z odmiennym nasileniem.

[4] Więcej na temat konkretyzowania znajdziesz w rozdziale 7., podrozdziale „Konkretyzowanie wymagań”.

[5] Są to również pytania konkretyzujące. Więcej informacji na ich temat znajdziesz w rozdziale 7., podrozdziale „Konkretyzowanie wymagań”.

[6] Czyli przekształcić problem w korzyść, o czym będzie jeszcze mowa w tym rozdziale.

[7] Co prawda nazwa User Story sugeruje, że autorem jest użytkownik, jednak w trakcie prac okazuje się, że istnieją historyjki, których „nie wypowiada” żaden ze znanych użytkowników, np. logowanie — który z użytkowników chce logowania? Jestem zwolennikiem szerszego stosowania User Stories również do wymagań pochodzących od innych interesariuszy niż użytkownicy, a także do wymagań technicznych. Szersza dyskusja tutaj: http://mbartyzel.blogspot.com/2013/04/stakeholder-stories.html.

[8] Wyjaśniam tu krótko, czym są User Story oraz Use Case. Zachęcam Cię do uzupełnienia informacji na ten temat z książek Krystiana Kaczora Scrum i nie tylko. Teoria i praktyka w metodach Agile oraz Alistaira Cockburna Writing Effective Use Cases.

[9] Istnieją sytuacje, w których tworzenie dokumentacji jest istotnym składnikiem wartości biznesowej (ang. business value) produktu. Pomijam je bez szkody dla treści rozdziału.

[10] Więcej o społecznym dowodzie słuszności pisze Robert Cialdini w książce Wywieranie wpływu na ludzi. Teoria i praktyka.

[11] http://www.infoq.com/articles/star-driven-approaches.

Rozdział 7.
Sztuka konwersacji z klientem

Konwersacja z klientem jest jednym z kluczowych etapów zbierania wymagań. W jej trakcie dowiadujesz się, jakie problemy trapią klienta, jakie ma cele do osiągnięcia i czego oczekuje od systemu informatycznego, którego chciałby używać. Jednocześnie na tym etapie jesteś narażony na pozyskanie błędnych informacji i niezrozumienie potrzeb klienta. Wynika to zazwyczaj z ogromnej złożoności komunikacji międzyludzkiej. Z tego względu w tym rozdziale znajdziesz odpowiedzi na następujące pytania:

- Jak prowadzić konwersację z klientem?

- W jaki sposób zadawać pytania tak, aby szybko odkryć potrzeby klienta?

- Jak odróżniać informacje konkretne od ogólnikowych?

- Po czym poznać, że zebrałeś już wystarczającą ilość informacji?

- Jak radzić sobie z impasem w trakcie konwersacji oraz jak proponować klientowi alternatywne rozwiązania?

Podstawowa struktura konwersacji

Wyobraź sobie, że każda konwersacja ma strukturę przedstawioną na rysunku 7.1. Wielkość prostokąta odpowiada konkretności albo pojemności danej informacji.

Rysunek 7.1. Struktura konwersacji

Czym jest pojemność informacji? Każda znana rzecz we wszechświecie ma swoją nazwę. Nazwie tej odpowiada konkretny rzeczywisty obiekt (desygnat) opisywany przez tę nazwę (rysunek 7.2). Sęk w tym, że jedna nazwa może mieć wiele desygnatów w rzeczywistości, czyli wiele obiektów może być określanych przez tę samą nazwę. Im więcej desygnatów danej nazwy istnieje, tym ta nazwa jest bardziej pojemna i jednocześnie mniej konkretna.

Rysunek 7.2. Nazwy i desygnaty nazw

Na przykład sformułowanie intuicyjny interfejs użytkownika jest bardzo pojemne i niekonkretne, gdyż istnieje ok. 7 mld desygnatów dla tego sformułowania[1]. W końcu każdy z nas opisze ten interfejs w zupełnie inny sposób. Jednocześnie sformułowanie Jan Kowalski o numerze PESEL … jest bardzo konkretne i ma pojemność jednostkową, ponieważ desygnatem tego sformułowania jest dokładnie jeden obiekt.

Im więcej jest rzeczywistych obiektów opisywanych przez daną informację, tym jest ona bardziej pojemna i jednocześnie mniej konkretna.

Schemat na rysunku 7.1 przedstawia pewien sposób, w jaki można patrzeć na konwersację między ludźmi. Oczywiście jest to schemat (albo, jak kto woli: model) bardzo uproszczony i nie sposób jednoznacznie odwzorować całej złożoności dialogu. W tym momencie nie interesuje nas, czy jest to model kompletny, a jedynie to, czy jest użyteczny i czy używając tego modelu, będziemy mogli lepiej porozumieć się z klientem.

Jeśli spojrzysz z perspektywy zaproponowanego modelu na te rozmowy z klientami, z których nie jesteś w pełni zadowolony, to zaczniesz zauważać, że były one prowadzone w sposób zobrazowany na rysunku 7.3.

Rysunek 7.3. Nieefektywna konwersacja

Konwersacja zaczyna się od pytania na jakiś temat, by po chwili przeskoczyć na szczegółowe dywagacje nad mniej lub bardziej istotną sprawą. Następnie zaczynamy mówić ogólnikowo, „ślizgając się” po tematach, i znów gwałtownie zmierzamy w stronę szczegółów. Co jakiś czas konwersacja odbiega od głównego tematu, fakty przeplatają się z emocjami, a konkretne informacje z pojęciami abstrakcyjnymi. W tabeli 7.1 znajduje się przykład konwersacji na temat systemu wspomagającego szpital. Konwersacja prowadzona jest w sposób nieuporządkowany.

Tabela 7.1. Chaotyczna konwersacja na temat systemu wspomagającego szpital

Specjalista

Klient

Komentarz

Czyli w jaki sposób chciałbyś używać tego narzędzia?

—

Pytanie umiarkowanie szczegółowe, więc można domniemywać, że padło w środku konwersacji.

—

Ważne, żebym mógł szybko wpisywać dawkowanie leków pełnymi zdaniami, podobnie jak robię na receptach. Widziałeś druczek recepty?

Pada kryterium jakości: szybkie wpisywanie dawkowania leków i jednocześnie brak jest szczegółowych informacji (scenariuszy) na temat działania.

Klient przestaje mówić o funkcjonalnościach programu, a zaczyna odnosić się do swojego procesu biznesowego (wypisywanie recept).

Tak, oczywiście.

—

Specjalista nie wykorzystał możliwości, aby dowiedzieć się więcej na temat procesu biznesowego, a następnie odwzorować go na funkcjonalności oprogramowania.

—

No właśnie, mogę tam pisać w dowolnej formie. W izbie przyjęć też powinna być taka możliwość. Pracownicy narzekają na zbyt wolne działanie programu…

Przeskok na inny temat (izba przyjęć) i na dużym poziomie ogólności.

Następnie pada kilka informacji na temat szczegółowych problemów z użytkowaniem systemu.

Okej, czyli wpisywanie dawkowania w formie luźnego tekstu. Czy coś jeszcze?

—

Próba powrócenia do głównego wątku.

—

Cóż, oczywiście powinno mieć to odwzorowanie w magazynie leków. Magazyn to dość złożony temat, ale najważniejsze jest, aby były przestrzegane przepisy XYZ. Zresztą w receptach również nie możemy odpuścić sobie przepisów, bo za to grożą olbrzymie kary (…).

Kolejny skok w inny ogólny temat (magazyn leków), a następnie powrót do opowieści o procesie biznesowym (wypisywanie recept). Klient w ten sposób próbuje pomóc, lecz czy programista wykorzysta tę możliwość?

Jeśli opiszemy ten dialog w kategoriach wspomnianej uprzednio struktury konwersacji, to otrzymamy schemat podobny do tego z rysunku 7.4.

Rysunek 7.4. Graficzna reprezentacja konwersacji

Efektami spotkania przebiegającego w podobnym stylu są zazwyczaj:

- duża ilość informacji luźno ze sobą powiązanych (lub wcale niepowiązanych);

- brak jasnego zrozumienia problemów i potrzeb klienta albo zrozumienie bardzo odległe od tego, jakiego życzyłby sobie klient;

- chaos w notatkach;

- poczucie dyskomfortu wynikające z tego, że niby wiemy, o co chodzi, ale nie bardzo wiadomo, co trzeba zrobić, żeby było lepiej[2].

Przyczyn, z powodu których konwersacja z klientem nie przynosi oczekiwanych efektów, jest z pewnością bardzo dużo. Jedne mają większy, inne mniejszy wpływ na ostateczny efekt. Niektórych z nich, takich jak: nastawienie klienta, atmosfera czy pogoda, nie możemy w pełni kontrolować, gdyż mamy na nie znikomy lub żaden wpływ. Tym, co na pewno możemy zrobić, jest skoncentrowanie się na tym, aby pozyskać wystarczająco dużo informacji na temat wymagań klienta i te wymagania zrozumieć. Chcemy również przeprowadzić konwersację w uporządkowany sposób i oczekujemy, że zebrane informacje będą konkretne.

Konkretyzowanie wymagań

Konkretyzowanie ma na celu poprowadzenie konwersacji w taki sposób, aby ogólne lub zdawkowe informacje pochodzące od klienta przekuć na jednoznaczne konkrety, które umożliwią rozpoczęcie prac projektowych.

Celem zbierania wymagań, a więc i konkretyzowania, nie jest poznanie absolutnie wszystkich detali. Głównym celem jest poznanie ich tylu i w takim stopniu, który umożliwi prowadzenie prac projektowych przez założony czas i pozwoli podejmować konieczne decyzje techniczne.

Konkretyzowanie oznacza poruszanie się w dół po naszej strukturze konwersacji, dochodzenie do jednoznacznych i mierzalnych informacji.

Kiedy konkretyzować?

Istnieje kilka sygnałów, po których będziesz wiedział, że warto rozpocząć konkretyzowanie. Rozpoznanie ich sprowadza się do uważnego słuchania tego, co mówi i o co pyta klient, dowiedzenia się, z jakiego rodzaju informacją mamy do czynienia, a następnie zareagowania we właściwy sposób, czyli w tym przypadku rozpoczęcia konkretyzowania danej informacji. Poniżej opisuję poszczególne sygnały, na które możesz się uwrażliwić.

Znasz potrzebę i zaczynasz nową konwersację

Najbardziej trywialnym przypadkiem jest sytuacja, w której rozpoczynasz konwersację. Jest to moment, kiedy zaczynasz zbieranie wymagań i nadajesz pierwszy kierunek konwersacji. Wtedy również pozyskujesz swoją pierwszą, ogólną wiedzę o dziedzinie, w której funkcjonuje klient. Ta ogólna wiedza musi zostać w kolejnych krokach przekształcona na konkrety.

Klient posługuje się ogólnikami

Pewne słowa i sformułowania powinny wzbudzać Twoją podejrzliwość. Oto one:

- dużo, mało, lepiej, szybciej;

- intuicyjny, ładny, prosty, poprawić;

- zależy od, kilka, idealnie, dobrze;

- zwiększać, zmniejszać, optymalizować;

- gdy to konieczne, kiedy trzeba, pomiędzy;

- taki jak, tak samo jak, wspierać;

- efektywny, drogi, tani.

Jak z pewnością trafnie zauważasz, wymienione określenia znajdują się na liście słów podejrzanych, gdyż są bardzo pojemne. Te i im podobne słowa dostarczają bardzo mało informacji i bardzo wiele kłopotów w momencie testów akceptacyjnych.

Klient „przeskakuje” z tematu na temat

Od razu zaznaczę, że mowa tu o sytuacji, w której rozpoczynasz z klientem rozpoznawanie kolejnego wymagania, a on bardzo szybko przechodzi do kolejnego wątku. Czasem mówimy o takim zachowaniu, że ktoś „ślizga się” po temacie. Zazwyczaj oznacza to, że wymagania klienta jeszcze nie są skonkretyzowane i powinieneś rozpocząć konkretyzowanie, aby mu pomóc.

Klient używa skrótów myślowych

W trakcie niektórych konwersacji można odnieść wrażenie, że rozmówca myślał nad czymś intensywnie, po czym w pewnym momencie zaczął wypowiadać swoje myśli na głos. Możesz wtedy zacząć zastanawiać się, czy przypadkiem nie umknął Ci jakiś istotny szczegół. Być może umknął, lecz w tym wypadku chodzi o to, że klient używa pojęć, których znaczenie nie jest zdefiniowane w tej konwersacji.

Pamiętasz rozdział na temat „myślenia biznesowego”? Pisałem tam o trzech poziomach, na których można przyglądać się informacjom: pojęcia (nazwy, słowa), ich znaczenia oraz zasady, które nimi rządzą (nazwałem je regułami albo algebrą nazw biznesowych). W przypadku skrótów myślowych masz dostęp tylko do pierwszego poziomu zrozumienia, zatem powinieneś rozpocząć procedurę konkretyzowania, aby zrozumieć słowa klienta w szerszym kontekście.

Klient posługuje się słownictwem branżowym

Gdy klient posługuje się terminami ze swojego kontekstu biznesowego, jest podobnie jak w przypadku skrótów myślowych — masz dostęp wyłącznie do poziomu nazw, których w dodatku nie znasz. To kolejny objaw, po którym poznasz, że czas skonkretyzować, co dokładnie oznacza dany termin i jakie konsekwencje się z nim wiążą. W celu zilustrowania tematu podaję kilka przykładów terminów branżowych:

- Emepek — w kontekście organizacji firmy jest to miejsce powstawania kosztów (MPK), czyli tam, gdzie mogą być wydawane pieniądze w organizacji, np. dział IT.

- Pudełko — w kontekście zarządzania produkcją oznacza fizyczny element sterujący, np. sprzętowy sterownik podajnika.

- Szkoda — w kontekście branży ubezpieczeniowej oznacza zdarzenie szkodowe, np. kradzież lusterek samochodowych.

- Briefing — w kontekście branży lotniczej oznacza zestaw informacji przekazywanych pilotowi na temat planu lotu.

Pytania konkretyzujące

Gdy już rozpoznasz sytuację, w której korzystnie będzie skonkretyzować to, co rozmówca ma na myśli, powinieneś dysponować narzędziem, które umożliwi Ci działanie. Tym narzędziem są pytania konkretyzujące. Bardzo wiele osób, gdy chce dowiedzieć się więcej szczegółów na dany temat, zazwyczaj pyta: Dlaczego? „Dlaczego?” nie jest jednak pytaniem konkretyzującym, lecz pytaniem o przyczynę. Nie kierunkuje ono rozmówcy w stronę uszczegółowiania swoich oczekiwań, lecz w stronę przyczyn tych oczekiwań. Zajmiemy się tym w podrozdziale „Pytania uogólniające”.

Typowymi pytaniami konkretyzującymi są:

- Jak konkretnie…?

- Po czym poznasz, że…?

- Jakie są kryteria…?

- Jak zmierzyć, że…?

- Z czego się składa…?

Są to pytania, które rozbijają duże porcje informacji na mniejsze albo rozbijają informacje ogólne na bardziej konkretne.

Spójrz jeszcze raz na rysunek 7.1. Są tam zaznaczone trzy poziomy konkretności, ale z pewnością domyślasz się, że może być ich więcej lub mniej. Czasem rozmówca od razu poda bardzo konkretną informację, a czasem trzeba kilka lub kilkanaście razy ją precyzować.

Ponieważ konkretyzowanie oznacza poruszanie się w dół po strukturze konwersacji, startujemy zazwyczaj od pytań o informację ogólną, by w kolejnych krokach zadawać pytania coraz bardziej szczegółowe. Poniżej zamieszczam przykłady grup pytań, z których każda kolejna doprecyzowuje informacje uzyskane z pomocą pytań z grupy poprzedzającej.

Pytania o duże kawałki informacji:

- Z jakich głównych części składa się…?

- Jakie działy funkcjonują w tej firmie?

- Jakie główne czynności wykonuje się w tym dziale? Co się robi po kolei?

- Jakie moduły powinny być w tej aplikacji?

Pytania o średnie kawałki informacji:

- Czym charakteryzuje się izba przyjęć?

- Jakie są główne funkcjonalności modułu X?

- Co należy do obowiązków pracownika Y?

I jeszcze konkretniej:

- Co po kolei trzeba zrobić, aby przyjąć chorego?

- Jak wylicza się wskaźnik efektywności?

- Ilu pacjentów w ciągu doby należy obsłużyć, aby można było uznać, że izba przyjęć działa efektywnie?

Chcę Ci jeszcze powiedzieć o jednej ważnej rzeczy. Po przeczytaniu powyższych przykładów możesz zacząć myśleć, że konkretyzowanie ma zastosowanie tylko wtedy, gdy poznajesz nową dziedzinę, której nie znasz, lub gdy rozmawiasz tylko na temat funkcjonalności widocznych na interfejsie użytkownika. Nic bardziej mylnego! Konkretyzowanie równie dobrze sprawdza się podczas rozważania bardzo szczegółowych problemów programistycznych. Struktura konwersacji jest po prostu „przeskalowana” i duże kawałki oznaczają jakieś zagadnienie techniczne. Następujący przykład przedstawia pytania konkretyzujące zastosowane do zagadnień programistycznych.

Pytania o duże kawałki informacji:

- Jakich danych potrzebujesz, aby zasilić swój algorytm wizualizacji?

- Które informacje powinien udostępniać ten serwis?

- Co po kolei powinno zadziać się na poszczególnych warstwach systemu w następstwie żądania X?

Pytania o średnie kawałki informacji:

- Jakich atrybutów oczekujesz w danych, które mam ci udostępnić?

- Z których baz danych należy pobrać informacje udostępniane przez ten serwis?

- Jakie kolejne kroki ma algorytm X?

I jeszcze konkretniej:

- Jaki zakres danych należy pobrać na żądanie?

- Jakie parametry należy przekazać do usługi, aby wykonała swoje zadanie?

- Jakie wyjątki może zgłosić ta usługa?

Sygnały STOP dla konkretyzowania

Z pewnością można konkretyzować do poziomu pojedynczych atomów, jednak niewielka z tego będzie korzyść dla całości procesu. Prawdopodobnie zastanawiałeś się już, kiedy powinieneś zakończyć konkretyzowanie albo bardziej technicznie: jaki jest sygnał „STOP” algorytmu konkretyzowania. Poznasz to po następujących symptomach:

- Pojawiły się konkrety — o konkretach pisałem na początku tego rozdziału; jeśli uzyskałeś wystarczającą ilość informacji, aby dalej pracować, to możesz zakończyć konkretyzowanie.

- Rozmówca mówi „nie wiem” — jeśli wciąż brak Ci konkretnych informacji, to być może klient powinien zastanowić się dłużej nad swoimi oczekiwaniami; możesz mu pomóc, proponując zorganizowanie kreatywnego spotkania w stylu burzy mózgów.

- Rozmówca powtarza się — powtarzanie tych samych informacji to silny sygnał, że rozmówca dotarł już do kresu swojego wyobrażenia o produkcie.

- Pojawiają się „wodotryski” — jeśli odnosisz wrażenie, że klient na siłę wymyśla funkcjonalności lub zaczyna mówić o funkcjonalnościach, które są ewidentnie nadmiarowe, to prawdopodobnie również można zakończyć konkretyzowanie. Prawdopodobnie, ponieważ istnieje szansa, że klient chce przekazać jakąś inną ważną potrzebę. W takim wypadku zamiast konkretyzować, powinieneś rozpocząć uogólnianie, któremu poświęcona jest jedna z kolejnych części tego rozdziału.

- Rozmówca „ucieka” w ulubione tematy — zazwyczaj jeśli nie wiemy, co powiedzieć na dany temat, zaczynamy mówić o rzeczach, na których się znamy, nawet jeśli nie są zbytnio związane z głównym wątkiem. Jeśli Twój rozmówca przejawia takie zachowanie, oznacza to, że więcej konkretów już nie pozyskasz. Od czasu do czasu może się zdarzyć, że mówiąc pozornie nie na temat, rozmówca stara się zbudować analogię, aby wyjaśnić coś, czego nie potrafi konkretnie wytłumaczyć. Analogię rozpoznasz po wyrażeniach takich jak: na przykład…, to jest tak jak…, analogicznie do…, podobnie gdy… itd. Wtedy powinieneś słuchać bardzo uważnie.

Algorytm konkretyzowania

Konkretyzowanie polega na metodycznym zadawaniu pytań i rozbijaniu dużych kawałków informacji na mniejsze według algorytmu przedstawionego na rysunku 7.5.

Rysunek 7.5. Algorytm konkretyzowania

W tabeli 7.2 znajduje się fragment konwersacji programisty z klientem na temat oprogramowania, które będzie wspomagało zarządzanie finansami osobistymi. Prześledź, w jaki sposób specjalista prowadzący konwersację używa algorytmu konkretyzowania do zdefiniowania oczekiwań klienta.

Tabela 7.2. Konkretyzowanie w trakcie konwersacji na temat oprogramowania do zarządzania finansami osobistymi

Specjalista

Klient

Komentarz

—

Ta aplikacja powinna analizować moje wydatki.

Klient wymienił jedną funkcjonalność: analizowanie wydatków. Jest to duży kawałek informacji. Symbolizuje go element A z rysunku 7.5.

Jak to powinno działać?

—

Pytanie konkretyzujące.

—

Chodzi o to, aby system połączył się z kontem bankowym i zaraportował, na co i ile pieniędzy wydałem.

—

A na co wydajesz pieniądze?

—

Kolejne pytanie konkretyzujące.

—

No, na przykład: na jedzenie, czynsz, paliwo.

Klient wymienia składowe analizy wydatków. Są to: jedzenie, czynsz, paliwo. Odpowiadają im elementy B, C, D z rysunku 7.5.

Czyli chodzi o to, aby wydatki były pogrupowane w kategorie, a kwoty wypływające z konta przyporządkowane do jednej z kategorii?

—

Specjalista upewnia się, czy dobrze zrozumiał wypowiedź klienta.

—

Dokładnie tak.

—

Czy po przejrzeniu historii z konta zawsze będzie wiadomo, na co pieniądze zostały wydane, czy potrzeba jeszcze jakichś dodatkowych informacji?

—

Następny krok w algorytmie konkretyzowania. Specjalista dopytuje się, czy klient wymienił wszystkie składowe analizy wydatków. Zadaje więc pytanie analogiczne do pytania: „Czy B, C wystarczą, aby A?” z rysunku 7.5.

—

Mogą jeszcze zostać wypłacone w bankomacie. Wtedy tylko ja wiem, na co zostały wydane.

Okazuje się, że to nie wszystkie składowe. Klient dodaje, że na analizę wydatków składają się również wypłaty w bankomacie.

Czyli płacenie z konta oraz wypłaty w bankomacie to jedyne sposoby wydawania pieniędzy?

—

Zgodnie z algorytmem konkretyzowania z rysunku 7.5 należy powtórzyć pytanie: „Czy B, C wystarczą, aby A?”. W ten sposób specjalista upewnia się, że poznał już wszystkie składowe analizy wydatków.

—

W zasadzie tak, tylko że przelewy z konta mogą iść na konkretne opłaty albo na inne moje konta, na przykład na oszczędności, albo muszą być przelane na inne konto, gdyż z niego spłacany jest jakiś kredyt.

Klient dodaje kolejną składową dużego kawałka informacji: przelewanie pieniędzy na inne konta własne.

Czyli aplikacja powinna analizować wydatki ze wszystkich twoich kont, przy czym pieniądze mogą być przeznaczane na konkretny zakup lub opłatę, wypłacane w bankomacie lub po prostu wędrują pomiędzy twoimi kontami. Zgadza się?

—

Zanim specjalista zapyta, czy to już wszystkie składowe, upewnia się, czy dobrze zrozumiał klienta.

—

Jak najbardziej.

Okazuje się, że dobrze ☺.

W trakcie przedstawionej konwersacji specjalista dowiedział się, że „analiza wydatków” składa się z:

- analizy wydatków na konkretny cel wypływających ze wszystkich kont klienta;

- analizy wydatków finansowanych z pieniędzy wypłaconych w bankomacie;

- analizy przepływów pomiędzy kontami należącymi do klienta.

Z pewnością zauważyłeś, że konwersacja nie przebiegała identycznie jak w algorytmie na rysunku 7.5. Nigdy nie będzie przebiegać identycznie. Język naturalny jest żywy i dynamiczny, wiele informacji przekazywanych jest niewerbalnie. Czasem, podobnie jak w przykładzie, niektóre części konwersacji będziesz musiał powtórzyć albo przeformułować, aby w pełni zrozumieć, czego potrzebuje Twój klient. Najważniejsze jest to, abyś mimo tych zwrotów akcji cały czas trzymał właściwy kurs. Mając w głowie strukturę konwersacji i wiedząc, jak działa algorytm konkretyzowania, możesz płynnie sterować kierunkiem dyskusji. Nie ma znaczenia, jak wiele razy Twój rozmówca odejdzie od interesującego Cię tematu albo ile różnych wątków pobocznych wtrąci — Ty i tak odnajdziesz właściwy kierunek.

Jeśli dokładnie przypatrzysz się algorytmowi konkretyzowania i przedstawionemu przykładowi konwersacji, zauważysz, że konwersacja prowadzona jest według schematu pokazanego na rysunku 7.6.

Rysunek 7.6. Eksploracja „wszerz”

Jeśli o strukturze konwersacji myśleć jak o drzewie danych, to algorytm konkretyzowania jest przeszukiwaniem tej struktury wszerz. Można powiedzieć, że stopniowo odsłaniamy kolejne poziomy szczegółowości danej informacji. Naturalną alternatywą jest przeszukiwanie „w głąb” (rysunek 7.7), gdzie drążymy daną informację od razu do najdrobniejszego detalu.

Rysunek 7.7. Eksploracja „w głąb”

Algorytm „wszerz” w przypadku konkretyzowania przynosi lepsze efekty, gdyż:

- bardzo szybko daje ogólny całościowy pogląd na to, czego potrzebuje klient;

- zatrzymując się na dowolnym poziomie, masz przynajmniej zręby informacji o całości zagadnienia;

- bardzo szybko orientujesz się, czego musisz się jeszcze dowiedzieć;

- możesz lepiej zaplanować spotkania i kierować przebiegiem rozmów, gdy wcześnie dowiadujesz się, z jak szerokim spektrum zagadnień masz do czynienia.

Przykład zamieszczony w tabeli 7.2 był dość okrojony, aby skupić Twoją uwagę na tym co najważniejsze. W tabeli 7.3 zamieszczam fragment rzeczywistej rozmowy analityka z klientem na temat systemu e-learningowego. Zauważ, do jakich komplikacji prowadzi brak jakiejkolwiek metodyki dyskusji z klientem.

Tabela 7.3. Fragment rzeczywistej konwersacji analityka z klientem na temat systemu e-learningowego

Specjalista

Klient

Komentarz

—

Chodzi mi o aplikację do nauki matematyki dla dzieci w szkole.

—

Powiedz więcej.

—

Dobry zabieg mający na celu to, aby klient przedstawił szerszy kontekst swoich oczekiwań.

—

Żeby była multimedialna i działała na wielu platformach.

Pada ważne wymaganie niefunkcjonalne: wieloplatformowość. Będzie ono miało duży wpływ na architekturę aplikacji.

Na jakich?

—

W tym momencie nie jest to aż tak istotne. Z pewnością warto zanotować to wymaganie i wrócić do niego później. W tej chwili lepiej skupić się na tym, co aplikacja ma robić dla użytkownika. Oczekiwanie, że aplikacja będzie działać na wielu platformach, prawdopodobnie zmieni się w trakcie dalszego odkrywania wymagań, a prawie na pewno zmieni się na etapie wyceny prac programistycznych.

—

Na przykład: komputer, telefon, laptop, tablet.

—

Jakie funkcjonalności będzie miała ta aplikacja?

—

Pytanie konkretyzujące.

—

Dla różnych klas będą różne lekcje z różnym poziomem wiedzy.

Dość ogólna odpowiedź, która z pewnością wymaga skonkretyzowania.

Jak to ma wyglądać?

—

Bardzo duży przeskok do szczegółu. Funkcjonalności aplikacji nie są jeszcze w pełni znane. W tym momencie lepiej skupić się na działaniu programu niż na jego wyglądzie[3].

—

Tak, żeby dzieci chciały z tego korzystać. Może kolorowo?

—

Dla jakich grup wiekowych będziemy opracowywać lekcje?

—

Kolejna próba skonkretyzowania.

—

Siedem, osiem, dziewięć, dziesięć, jedenaście, dwanaście, trzynaście i czternaście.

—

Czyli ma być jeden rodzaj lekcji na jedną grupę wiekową?

—

Specjalista upewnia się, czy dobrze zrozumiał.

—

Tak.

—

I co w tych lekcjach będzie?

—

Dość ryzykowne pytanie. Jest zbyt ogólne i daje klientowi możliwość opowiadania o czymkolwiek.

—

Materiał prezentowany na ekranie zakończony sprawdzianem i tak dalej.

Klient daje ważną wskazówkę: materiał prezentowany na ekranie zakończony sprawdzianem. Prawdopodobnie ma pomysł na proces przebiegu lekcji. Specjalista powinien to wykorzystać.

Jak to będzie wyglądać?

—

Oto pytanie, które może popsuć to, co się stało do tej pory. Pamiętaj, że zadając pytania, kierujesz uwagę klienta na określone tematy. Przed tym pytaniem klient był już mocno skoncentrowany na mechanizmie działania lekcji, a teraz jego koncentracja została rozproszona.

W poprzedniej odpowiedzi klient zasygnalizował, że ma konkretny pomysł. W tym momencie warto zadać pytanie: Weźmy na przykład lekcje dla czternastolatków. Co po kolei się tam dzieje?

Technika skrzynki[4]

Technika skrzynki jest odmianą algorytmu konkretyzowania, która doskonale sprawdza się w przypadku wymagań, gdzie da się wyodrębnić sekwencję kolejnych działań, jakiś proces. Innymi słowy: są to przypadki, w których można zadać pytanie: Co się po kolei dzieje? Na przykład:

- Uczeń może wziąć udział w zdalnej lekcji. Z jakich kolejnych części składa się lekcja?

- Użytkownik może wykonać przelew dowolny. Co po kolei należy zrobić, aby wykonać przelew?

- Usługa musi udostępniać informacje o pogodzie. Jakie są kroki algorytmu pozyskiwania informacji o pogodzie?

Ponieważ większość wymagań funkcjonalnych (czyli mówiących o tym, w jaki rodzaj interakcji z systemem wchodzi użytkownik) ma w mniejszym bądź większym stopniu charakter procesu, będziesz mieć bardzo wiele okazji do wykorzystania tej techniki.

Skrzynka krok po kroku

Na rysunku 7.8 znajduje się schemat pokazujący, w jaki sposób używać skrzynki.

Rysunek 7.8. Algorytm działania techniki skrzynki

Najważniejszą rzeczą jest rozpoczęcie konkretyzowania od końca. Jako pierwszy musi zostać zdefiniowany rezultat sekwencji działań, które konkretyzujesz. Dlaczego najpierw rezultat? Dlatego, że znając spodziewany efekt, łatwo jest eliminować wątki konwersacji oraz wymagania, które nie są związane z rezultatem. Stąd kierunek strzałek na rysunku 7.8:

1. najpierw rezultat (wyjście) — WY;

2. następnie: co jest potrzebne (wejście), aby uzyskać rezultat — WE;

3. na końcu: w jaki sposób WE jest przekształcane na WY, jakie są kroki algorytmu — ALG.
Rezultat (WY) możesz definiować za pomocą pytań konkretyzujących:

- Co jest efektem działania ALG?

- Jaki będzie rezultat, gdy stanie się ALG?

- Z czego składa się to, co wytwarza ALG?

Dane początkowe (WE) skonkretyzujesz za pomocą innego zestawu pytań:

- Co potrzeba, aby ALG wytworzył WY?

- Czego konkretnie potrzebuje ALG, aby móc wykonać swoje zadanie?

- Z jakich informacji korzysta ALG, żeby stało się WY?

Ostatnim etapem jest określenie algorytmu działającego wewnątrz skrzynki:

- W jaki sposób ALG przekształca WE na WY?

- Co się po kolei dzieje z WE, by otrzymać WY?

Zatrzymajmy się na chwilę nad przykładem ilustrującym wykorzystanie techniki skrzynki. W tabeli 7.4 zamieszczony jest fragment konwersacji analityka z ekspertem z dziedziny bankowości na temat funkcjonalności portalu banku internetowego.

Zauważ, że podobnie jak w przypadku podstawowego algorytmu konkretyzowania, w konwersacji zdarzają się przerywniki, odbiegnięcia od tematu i niejasności. Po to definiujemy sekwencje prowadzenia rozmów, abyś mimo tych trudności z łatwością zachowywał pożądany kierunek dyskusji.

Tabela 7.4. Jeden przebieg w technice skrzynki podczas konwersacji z ekspertem z dziedziny bankowości

Specjalista

Klient

Komentarz

—

(…) mogę również wykonać przelew dowolny.

—

Co jest rezultatem przelewu?

—

Próba zdefiniowania WY.

—

Pieniądze na koncie docelowym.

Klient określił rezultat, ale na poziomie procesu biznesowego. Pamiętaj, że chodzi o rezultat w tym systemie.

Chodzi mi o to, po czym ty jako użytkownik przelewu poznasz, że przelew został wykonany.

—

Specjalista zadaje bardziej konkretne pytanie, które pomoże klientowi zdefiniować spodziewany rezultat w tym systemie.

Pamiętaj, że jakość odpowiedzi klienta świadczy o jakości Twoich pytań.

—

Zobaczę potwierdzenie.

WY zostało zdefiniowane.

Jakie informacje muszą być zawarte w potwierdzeniu?

—

Specjalista konkretyzuje duży kawałek: potwierdzenie przelewu, korzystając z podstawowego algorytmu konkretyzowania.

—

Nazwa oddziału banku docelowego, numer konta docelowego, nazwa odbiorcy, data przelewu, data zaksięgowania, kwota, nasze logo, informacja na temat dokumentów elektronicznych zgodnych z ustawą o bankowości.

—

Rozumiem. Jakich informacji potrzeba, aby wykonać przelew?

—

Próba zdefiniowania WE.

—

Skąd? Gdzie? Ile?

Ponieważ pytanie było dość ogólne, ogólna jest również odpowiedź.

Sprecyzuję: jakie dane należy dostarczyć, aby poprawnie wykonać przelew?

—

Specjalista zadaje pytanie pozostawiające mniej przestrzeni do dowolności.

—

Numer konta docelowego, nazwę odbiorcy, kwotę, hasło jednorazowe.

WE zostało zdefiniowane.

Jeżeli teraz mamy numer konta, odbiorcę i hasło, to co po kolei musi się zadziać, abyś mógł zobaczyć potwierdzenie przelewu?

—

Próba zdefiniowania algorytmu działania skrzynki (ALG).

—

Cóż, najpierw trzeba sprawdzić, czy dane są poprawne, potem stworzyć paczkę przelewu, zarejestrować przelew w systemie, wysłać do Elixira i wygenerować potwierdzenie.

Algorytm wewnątrz skrzynki (ALG) został zdefiniowany.

W tabeli 7.4 przedstawiony jest jeden przebieg konkretyzowania za pomocą techniki skrzynki. Konkretyzowanie jest jednak procesem wielostopniowym, potrzebne są kolejne przebiegi, aby określić wymagania na poziomie użytecznym dla wykonawców oprogramowania. Każda z informacji pojawiająca się na wyjściu (WY), wejściu (WE) lub wewnątrz skrzynki (ALG) powinna zostać skonkretyzowana w takim stopniu, w jakim to konieczne. Możesz do tego użyć ponownie techniki skrzynki, jeśli informacja ma charakter procesu, lub podstawowego algorytmu konkretyzowania w każdym innym wypadku. Schematycznie można to przedstawić tak jak na rysunku 7.9.

Rysunek 7.9. Rekurencja w technice skrzynki

Uwzględniając regułę stopniowego konkretyzowania, kontynuacja konwersacji zamieszczonej w tabeli 7.4 mogłaby wyglądać następująco (tabela 7.5).

Tabela 7.5. Kolejne przebiegi w technice skrzynki podczas konwersacji z ekspertem z dziedziny bankowości

Specjalista

Klient

Komentarz

Powiedziałeś, że wykonanie przelewu odbywa się w następujących krokach: sprawdzenie poprawności danych, stworzenie paczki przelewu, zarejestrowanie przelewu w systemie, zgłoszenie przelewu do Elixira i wygenerowanie potwierdzenia. Zgadza się?

—

Specjalista potwierdza, czy dobrze zrozumiał to, co powiedział klient.

—

Tak.

—

Zajmijmy się każdym z tematów oddzielnie. Na początek generowanie potwierdzenia. Wiem już, jakie informacje są tam zawarte, lecz czym jest potwierdzenie? W jaki sposób objawia się użytkownikowi?

—

Rozpoczyna się kolejny przebieg techniki skrzynki. Krok generowanie potwierdzenia, który został wyodrębniony w poprzednim przebiegu, będzie teraz konkretyzowany w ten sam sposób.

Końcowe pytanie to próba zdefiniowania WY.

—

To jest po prostu strona w przeglądarce z tymi informacjami, którą można potem zapisać jako plik PDF.

WY zdefiniowane.

Rozumiem. A informacje, które mają się pojawić na potwierdzeniu, są brane z jednego miejsca?

—

Próba zdefiniowania WE.

—

Te, które są identyczne z danymi do przelewu, są brane właśnie z danych przelewu, a pozostałe z naszej bazy.

WE zdefiniowane.

(…)

—

Itd.

Zasada wyważenia

Oprócz rozpoczynania od określenia rezultatu w technice skrzynki istotna jest jeszcze jedna rzecz — wyważenie. Spójrz na rysunek 7.10. Jeśli jednocześnie niektóre informacje będziesz definiował na dużym poziomie ogólności (duże kawałki), a inne na dużym poziomie konkretności (małe kawałki), to skrzynka się przewróci…

Rysunek 7.10. Uwaga na brak wyważenia na obu końcach skrzynki!

Dlatego jeśli używasz techniki skrzynki, to dbaj, aby w trakcie jednego przebiegu definiować wszystkie informacje (WY, WE i ALG) na tym samym poziomie konkretności. W przeciwnym razie łatwo zgubisz się w gąszczu informacji o różnej granulacji.

W tabeli 7.6 znajdziesz alternatywną wersję konwersacji z ekspertem z dziedziny bankowości, w której analityk używa techniki, nie dbając o przestrzeganie wyważenia.

Tabela 7.6. Zaniedbywanie zasady wyważenia w technice skrzynki podczas konwersacji z ekspertem z dziedziny bankowości

Specjalista

Klient

Komentarz

Powiedziałeś, że wykonanie przelewu odbywa się w następujących krokach: sprawdzenie poprawności danych, stworzenie paczki przelewu, zarejestrowanie przelewu w systemie, zgłoszenie przelewu do Elixira i wygenerowanie potwierdzenia. Zgadza się?

—

Specjalista potwierdza, czy dobrze zrozumiał to, co powiedział klient.

—

Tak.

—

Zajmijmy się każdym z tematów oddzielnie. Na początek generowanie potwierdzenia. Wiem już, jakie informacje są tam zawarte, lecz czym jest potwierdzenie? W jaki sposób objawia się użytkownikowi?

—

Rozpoczyna się kolejny przebieg techniki skrzynki. Krok generowanie potwierdzenia, który został wyodrębniony w poprzednim przebiegu, będzie teraz konkretyzowany w ten sam sposób.

Końcowe pytanie to próba zdefiniowania WY.

—

Cóż, to zależy. Jeśli klient chce tylko zobaczyć potwierdzenie, to po prostu wyświetla się ono na ekranie. Jeśli chce je wydrukować, to ma możliwość pobrania pliku PDF. Jeśli jednak chce, żeby system przesłał potwierdzenie mailem, to w tym mailu powinien być załącznik PDF albo link do potwierdzenia w systemie — w zależności od opcji wybranej w preferencjach użytkownika.

Klient podaje więcej informacji, niż oczekiwał specjalista. Oprócz wiadomości, że istnieją dwa rodzaje potwierdzenia (PDF i widok na ekranie) pojawiały się również detale na temat reguł, według których wysyłany jest mail z potwierdzeniem.

Właściwym działaniem specjalisty byłoby zanotowanie, że taka reguła istnieje, i skonkretyzowanie jej w kolejnych przebiegach techniki skrzynki. W tym momencie lepiej skupić się na tym, na podstawie czego generowane jest potwierdzenie.

W jakich preferencjach?

—

Jednak specjalista konkretyzuje nadmiarową informację, czyli reguły wysłania maila.

—

No, w preferencjach konta.

—

Rozumiem. Czyli jeśli w preferencjach będzie podany mail i zostanie zaznaczone, że potwierdzenie ma być przesyłane jako link albo jako załącznik, to taki właśnie mail ma zostać wysłany. Zgadza się?

—

Wciąż konkretyzuje nadmiarową informację.

—

Jak najbardziej.

—

Czy potwierdzenie na ekranie zawiera dokładnie te same informacje co potwierdzenie z pliku PDF?

—

Rozpoczyna również konkretyzowanie głównej informacji — potwierdzenie wykonania przelewu.

—

Właściwie tak. Z tym wyjątkiem, że PDF musi być w naszym szablonie papieru firmowego. Trzeba również dodać klauzulę, że potwierdzenie elektroniczne nie wymaga podpisu i jest zgodne z ustawą o bankowości.

—

Rozumiem. A informacje, które mają się pojawić na potwierdzeniu, są brane z jednego miejsca?

—

Specjalista próbuje zdefiniować WE skrzynki.

—

Te, które są identyczne z danymi do przelewu, są brane właśnie z danych przelewu, a pozostałe z naszej bazy.

WE zostało zdefiniowane.

Zauważ, że w konwersacji z tabeli 7.6 WE i WY zostały dobrane bardzo niesymetrycznie. Po stronie WY mamy następujące informacje:

- Jeśli klient chce zobaczyć potwierdzenie, to wyświetla się ono na ekranie.

- Jeśli klient chce wydrukować potwierdzenie, to ma możliwość pobrania pliku PDF.

- Potwierdzenie PDF zawiera (prawdopodobnie) te same informacje co potwierdzenie na ekranie.

- Potwierdzenie PDF musi zostać umieszczone w szablonie papieru firmowego i zawierać klauzulę, że nie wymaga podpisu i jest zgodne z ustawą o bankowości.

- Klient może otrzymać potwierdzenie mailowe.

- Potwierdzenie mailowe może zawierać załącznik PDF albo link do wyświetlenia przelewu w systemie.

Natomiast po stronie WE mamy:

- Informacje umieszczone na potwierdzeniu wykonania przelewu, które są zgodne z danymi przelewu, pochodzą z danych przelewu.

- Informacje umieszczone na potwierdzeniu wykonania przelewu, które są nie zgodne z danymi z przelewu, pochodzą z wewnętrznej bazy danych.

WY jest bardzo szczegółowe i konkretne w stosunku do WE. Na tej podstawie trudno będzie zdefiniować algorytm (ALG), na podstawie którego WE jest przekształcane w WY. Analityk powinien był ograniczyć się do pierwszych dwóch informacji na WY, zanotować te nadmiarowe i wrócić do nich w kolejnym przebiegu.

Istotą techniki skrzynki jest konkretyzowanie poprzez metodyczne powtarzanie cyklu: WY-WE-ALG, WY-WE-ALG itd. Pozwala to na stopniowe przechodzenie w kierunku konkretnych informacji. Jeśli pozwalasz na to, aby WE i WY były określone na zupełnie różnych poziomach konkretności, to technika przestaje działać, ponieważ bardzo łatwo jest poświęcić zbyt dużą uwagę tylko samemu WY lub tylko samemu WE i trudno określić związek przyczynowo-skutkowy (ALG) pomiędzy informacjami bardzo konkretnymi a bardzo ogólnymi.

Przy technice skrzynki pamiętaj, aby:

- rozpoczynać od zdefiniowania rezultatu procesu;

- w trakcie jednego przebiegu techniki wszystkie informacje definiować na tym samym poziomie konkretności.

Do czego nie nadaje się technika skrzynki?

Skrzynka jest bardzo użyteczna, zwłaszcza gdy rysujesz ją razem z klientem, gdyż pomaga łatwo skupić uwagę na tym, co chcesz skonkretyzować. Napisałem, że nadaje się do wymagań mających charakter procesu. Nie jest natomiast odpowiednia do wymagań takich jak:

- dotyczące architektury — należy użyć architektury MVC;

- kryteria jakości — system ma być szybki, interfejs ma być intuicyjny;

- gdy mowa o końcowym kształcie, a nie działaniu (gdyż jest nieistotne albo oczywiste) — potrzebujemy raportów zawierających…;

- specyficzne wymagania funkcjonalne, w których system nie obsługuje pewnego procesu, lecz reaguje na określone zdarzenia (sygnały) i w ich wyniku zmienia swój stan.

Ten rodzaj wymagań zazwyczaj należy do grupy wymagań niefunkcjonalnych, czyli niezwiązanych z usługami, które system bezpośrednio świadczy użytkownikowi. W przypadku tych wymagań zamiast pytać: co się po kolei dzieje, wolelibyśmy zapytać: z czego się składa…, po czym poznasz, jakie są kryteria akceptacji itd. Zatem podstawowy algorytm konkretyzowania będzie się tu sprawdzał lepiej niż technika skrzynki.

Ekrany użytkownika podczas konkretyzowania

Po czym programista zazwyczaj poznaje, że aplikacja działa poprawnie? Po przechodzących testach. Po czym użytkownik[5] zazwyczaj poznaje, że aplikacja działa poprawnie? Po tym, że ekrany wyglądają i reagują w oczekiwany sposób. Interfejs (mam tu na myśli graficzny interfejs użytkownika) jest najczęściej jedyną częścią systemu, której użytkownik jest w pełni świadomy. Posługiwanie się w trakcie konkretyzowania szkicami ekranów pomaga w miarę szybko dojść do porozumienia. Przykładowy szkic ekranów użytkownika znajduje się na rysunku 7.11.

Rysunek 7.11. Szkic ekranów użytkownika

Zauważ, że przedstawione na rysunku 7.11 ekrany nie zawierają zbyt wielu detali. Celem szkicowania ekranów jest taka konwersacja z użytkownikiem, aby wyodrębnić i skonkretyzować wymagania. Szkice w żadnym wypadku nie służą do szczegółowego projektowania wyglądu aplikacji.

Celem szkicowania ekranów użytkownika jest taka konwersacja z użytkownikiem, aby wyodrębnić i skonkretyzować wymagania. Szkice w żadnym wypadku nie służą do szczegółowego projektowania wyglądu aplikacji.

Z powyższych względów na ekranach umieszczaj tylko te rzeczy, które mają związek z logiką działania systemu i wymaganiami funkcjonalnymi, a zatem:

- prostokąty oznaczające ekrany wraz z ich nazwami;

- prostokąty oznaczające pola, w których użytkownik wpisuje jakieś dane[6];

- napisy z podkreśleniem oznaczające elementy akcji (można tam kliknąć i coś się zadzieje);

- strzałki przejścia pomiędzy ekranami wraz z podpisem wskazującym, w wyniku jakiego zdarzenia następuje dane przejście.

Każdy z wymienionych elementów z łatwością odnajdziesz na rysunku 7.11.

Cykl pracy z ekranami użytkownika

Szkic ekranów powstaje stopniowo w trakcie konwersacji. W tabeli 7.7 znajdziesz poszczególne etapy konwersacji na temat portalu internetowego, natomiast na rysunku 7.12 kolejne fazy ekranów użytkownika powstających w trakcie konwersacji.

Tabela 7.7. Kolejne etapy pracy z ekranami użytkownika podczas konwersacji na temat portalu internetowego

Etap

Specjalista

Klient

Komentarz

1

Wyobraź sobie, że siadasz przed komputerem i zaczynasz pracę w tym systemie. Którą stronę widzisz jako pierwszą?

—

Zauważ, że specjalista odwołuje się do tego, co użytkownik widzi — w końcu rysujemy ekrany.

Specjalista celowo używa również czasu teraźniejszego, co stawia użytkownika w akcji działania.

Programista pyta, jaką stronę użytkownik widzi. Nawiązuje tu do konkretnej technologii, która jest zazwyczaj wcześniej wiadoma. Przy aplikacjach desktopowych można by zapytać, które okno użytkownik widzi.

—

Logowanie.

—

2

Okej. Co możesz na niej zrobić?

—

Ogólne pytanie, a zatem ogólna odpowiedź.

—

Zalogować się?

Miałem na myśli: co możesz tam wpisać?

—

Konkretne pytanie, konkretna odpowiedź.

—

Nazwę użytkownika oraz hasło.

3

Czy coś jeszcze możesz wpisać albo kliknąć?

—

—

Przycisk Zaloguj.

4

Gdy wciśniesz przycisk Zaloguj i login i hasło są prawidłowe, to którą stronę teraz widzisz?

—

Specjalista kieruje użytkownika w stronę typowego scenariusza. Scenariusz z błędną nazwą użytkownika lub hasłem będzie omówiony w dalszej kolejności.

4

—

Główną.

—

Nie rozumiem. Czy chodzi o główną stronę systemu?

—

—

Nie, o główną stronę dla mojego konta. Coś takiego jak pulpit albo panel główny.

Niemal wszystkie aplikacje webowe oferują zapamiętywanie danych uwierzytelniających. W związku z tym wystarczy wpisać nazwę portalu, aby znaleźć się w widoku swojego konta (nie trzeba „się logować”). Spowodowało to, że wielu użytkowników nie czyni rozróżnienia między publiczną a prywatną częścią portalu.

Rysunek 7.12. Fazy powstawania ekranów użytkownika

Zauważ, że zadawane przez programistę pytania były zwyczajnymi pytaniami konkretyzującymi. Rysowanie ekranów stanowi przede wszystkim medium komunikacyjne i pomaga skoncentrować uwagę na funkcjonalnościach aplikacji.

Z perspektywy użytkownika korzystanie z tej techniki wiąże się z następującymi korzyściami:

- użytkownik sam wymyśla, jak będzie pracował z aplikacją;

- w trakcie konwersacji używamy języka ekranów zrozumiałego dla użytkownika;

- po wdrożeniu systemu czas nauki jest krótszy, gdyż użytkownik zna ideę jego działania.

Z perspektywy programisty korzyści są następujące:

- programista nie musi wymyślać logiki działania interfejsu i pracy z aplikacją, gdyż jest ona efektem konwersacji;

- łatwiej zaplanować i oszacować prace, gdy znany jest kształt ekranów.

Podsumowując sposób pracy z ekranami, warto dodać kilka ważnych spraw, o których powinieneś pamiętać:

- Rysuj razem z użytkownikiem — wspólne rysowanie buduje zaangażowanie; ludzie są bardziej przywiązani do rzeczy, które stworzą sami, niż do tych, które są im narzucone z góry.

- Ekran to kontrakt — użytkownicy bardzo przywiązują się do narysowanych ekranów, z tego względu ekrany szkicujemy zamiast projektować (projektowanie ekranów to zupełnie inny etap prac). Mimo wszystko do naszkicowanych ekranów warto dodać podpis: „Rysunek przedstawia szkic interfejsu użytkownika, a nie docelowy jego kształt”.

- Ostrożnie z detalami — nie przeładowuj szkiców niepotrzebnymi szczegółami, na tym etapie nie mają one zbyt dużego znaczenia.

Narzędzia

Zdecydowanie odradzam tworzenie ekranów w środowiskach programistycznych, które to umożliwiają, np. NetBeans, Borland Delphi. Po pierwsze, te narzędzia przeznaczone są do tworzenia „prawdziwych” formularzy dla działającej aplikacji i służą do implementowania interfejsu, a nie do jego szkicowania. Przekłada się to bezpośrednio na czas przygotowywania ekranów, który jest zbyt długi, aby tworzyć je w trakcie konwersacji z użytkownikiem. Po drugie, ekrany są identyczne z tymi w działającej aplikacji, co spowoduje, że użytkownik będzie oczekiwał dokładnie takiego samego ekranu w końcowym produkcie. Po trzecie, w trakcie zbierania wymagań użytkownicy często zmieniają zdanie, a modyfikowanie ekranów w tych narzędziach jest czasochłonne. Środowiska programistyczne wkraczają do akcji, gdy interfejs użytkownika jest już (przynajmniej w większości) rozpoznany.

Nie zachęcam również do korzystania z projektanta ekranów użytkownika dostępnego (w chwili pisania drugiego wydania tej książki) w narzędziu Enterprise Architect. Liczba kliknięć, które należy wykonać, aby stworzyć dobrze wyglądające ekrany, jest wprost niewiarygodna. Praca z ekranami użytkownika podczas sesji zbierania wymagań trwa w tym narzędziu zdecydowanie zbyt długo.

Czy zatem cokolwiek mogę polecić? Jak najbardziej! Zdecydowanie rekomenduję narzędzia do tworzenia makiet interfejsu (ang. mockups). W tabeli 7.8 wymieniam kilka użytecznych.

Tabela 7.8. Narzędzia do tworzenia makiet interfejsu użytkownika

Narzędzie

Informacje

Balsamiq Mockups

- Płatne: 89 dolarów

- Dostępna wersja demonstracyjna o ograniczonych funkcjonalnościach

- Wersje online oraz desktop

- http://www.balsamiq.com

Pencil

- Darmowe

- Tylko wersja desktop

- Czasem uciążliwe w użytkowaniu przy ekranach zawierających kilka kontrolek

- http://pencil.evolus.vn

Lumzy

- Darmowe

- Tylko wersja online

- http://lumzy.com

Ograniczenia stosowania ekranów użytkownika

Ekrany użytkownika doskonale sprawdzają się wszędzie tam, gdzie system ma graficzny interfejs użytkownika. Nie sprawdzą się zatem tam, gdzie interfejsu graficznego nie ma, np.:

- w sterownikach urządzeń,

- w serwisach webowych,

- w aplikacjach konsolowych.

W wymienionych przypadkach jedynymi narzędziami konwersacji będą: podstawowy algorytm konkretyzowania, technika skrzynki oraz odręczne rysunki odwzorowujące ideę omawianego zagadnienia.

Ekrany użytkownika w trakcie prac programistycznych

Opracowane ekrany użytkownika stanowią bardzo dużą pomoc dla zespołu programistycznego. Gdy zostanie Ci przydzielone zadanie, możesz wydrukować szkic ekranów, a następnie zacząć zastanawiać się nad pytaniami:

- Z jakimi usługami powinny być powiązane poszczególne ekrany?

- Skąd pobrać dane do zaprezentowania na poszczególnych ekranach?

- Jakie informacje powinny być przekazywane pomiędzy ekranami?

Na wydruku nanieś szczegóły implementacyjne. Przykład pokazany jest na rysunku 7.13.

Rysunek 7.13. Ekrany użytkownika na jeszcze dalszym etapie prac

Takie uszczegółowienie ekranów sprawi, że zanim zabierzesz się do programowania, najpierw zaplanujesz swoje prace. Wynikającą z tego korzyścią jest chociażby lepsze oszacowanie czasu wykonywania zadania.

Szczegół to nie to samo co konkret

Intuicyjnie utożsamiamy informacje szczegółowe z informacjami konkretnymi, podczas gdy nie są to równoznaczne terminy. Konkretny oznacza „precyzyjnie określony, mierzalny”, natomiast szczegółowy to „zawierający wiele detali”. Jeśli informacja jest konkretna, to prawdopodobnie jest również szczegółowa, ale informacja szczegółowa nie musi być konkretna. Spójrz na poniższe dwa przykłady.

1. Kolor fuksja ma składową czerwoną równą 255, składową zieloną wynoszącą 0 oraz składową niebieską wynoszącą również 255.

2. Silnik spalinowy składa się z układu korbowego odpowiedzialnego za zasilanie, układu rozrządu sterującego procesem napełniania cylindrów, układu zasilania dostarczającego mieszankę paliwa i powietrza lub oddzielnie paliwo i powietrze, układu smarowania doprowadzającego olej między współpracujące ze sobą części silnika, układu chłodzenia utrzymującego odpowiednią temperaturę, układu zapłonowego oraz rozruchowego.

Pierwsza informacja jest konkretna, druga szczegółowa. Na podstawie pierwszej informacji jesteś w stanie stworzyć kolor fuksja, na podstawie drugiej nie zbudujesz silnika (chyba że jesteś ekspertem w temacie, lecz wtedy posiadasz dodatkową konkretną wiedzę).

W trakcie konwersacji z klientem zwracaj uwagę na szczegóły, ale najbardziej interesuj się konkretami.

Wspominam o rozróżnieniu między konkretem a szczegółem, ponieważ dość często zdarza się, że rozmówcy podają bardzo dużo szczegółowych informacji, które jednocześnie są mało konkretne. Rozpoznasz ten typ rozmówcy po następujących objawach:

- ma poczucie, że dziedzina, o której rozmawiacie, jest bardzo skomplikowana;

- gdy proponujesz mu rozwiązanie jednego z problemów, natychmiast znajduje wiele kontekstów, w których to rozwiązanie jest niewłaściwe, popierając swoje stwierdzenia mnóstwem szczegółowych i niekonkretnych informacji;

- często skacze z tematu na temat, omawiając raz jedną podaną przez siebie informację, raz drugą.

Kłopot z takim typem rozmówcy polega na tym, że trudno skonkretyzować jego oczekiwania, gdyż niemal każde pytanie konkretyzujące skutkuje nową porcją szczegółowych informacji i potencjalnych problemów. Zatem zanim przystąpisz do właściwego pozyskiwania informacji, musisz najpierw rozmówcę do tego przygotować, chciałoby się powiedzieć: uspokoić. W tym celu wykonaj następujące działania:

- Skup się na kilku podanych informacjach i zacznij je konkretyzować.

- Delikatnie, lecz stanowczo odmawiaj zajęcia się kolejnymi informacjami, dopóki te pierwsze nie zostaną skonkretyzowane. Po prostu powiedz, że musisz dobrze zrozumieć zagadnienie, którym będziesz się zajmował.

- Konkretyzuj cierpliwie aż do skutku.

W pewnym momencie zobaczysz, że rozmówca przeżywa coś, co można nazwać dysonansem poznawczym. Zaczyna zauważać, że rzeczy, które wydawały się mu bardzo skomplikowane, wcale takie nie są. Kontynuuj konkretyzowanie, do momentu kiedy Twój rozmówca stwierdzi, że informacje, które podaje, są nieprecyzyjne i należy je zweryfikować.

Gratulacje! Właśnie przygotowałeś klienta do właściwego pozyskiwania informacji. Do dzieła!

Zawsze pytaj o zgodę

Gdy zadajesz wnikliwe pytania, zawsze docierasz do granicy wiedzy klienta. W pewnym momencie zaczynasz pytać o sprawy, których Twój rozmówca nie brał pod uwagę albo o których nic nie wie. Klientowi może się wtedy wydawać, że uważasz, iż jest niekompetentny, albo że sam nie wie, czego chce. Sam przyznasz, że nie jest to zbyt miłe uczucie. Z tego względu przed przystąpieniem do konwersacji poinformuj klienta o swojej intencji, np. mówiąc: Żeby dokładnie zrozumieć pana potrzeby, chciałbym zadać nieco więcej szczegółowych pytań na temat X. Za każdym razem, gdy tylko zauważasz na twarzy klienta zmieszanie lub zaniepokojenie zbyt wnikliwymi pytaniami, przypominaj swoją intencję, że zależy Ci wyłącznie na jak najlepszym zrozumieniu potrzeb i wymagań.

Opisana wyżej sytuacja wynika z prostego spostrzeżenia, że zdenerwowany lub zirytowany rozmówca koncentruje się na swoich emocjach i poczuciu dyskomfortu zamiast skupiać się na funkcjonalnościach programowania, o którym mowa.

Uogólnianie wymagań

Przeczytaj fragment konwersacji zamieszczony w tabeli 7.9. Jest to fragment dotyczący tego, jak ma zostać rozwiązana kwestia konfigurowania ustawień aplikacji w oprogramowaniu antywirusowym.

Tabela 7.9. Fragment konwersacji na temat konfigurowania ustawień aplikacji w oprogramowaniu antywirusowym

Specjalista

Klient

Komentarz

—

Aplikacja powinna mieć jeden ekran ze wszystkimi ustawieniami konfiguracyjnymi.

—

Rozumiem. Jakiego rodzaju ustawienia można zmieniać na tym ekranie?

—

Pytanie konkretyzujące.

—

Wielkość czcionki, interlinię, kolor tła, skróty klawiszowe.

Narysujmy, jak wygląda ten ekran.

—

Konkretyzowanie za pomocą ekranów użytkownika.

—

(rysuje)

Czym jest to dodatkowe okno?

—

Pojawia się nieoczekiwana sytuacja.

—

To drugi ekran konfiguracyjny.

—

Miał być tylko jeden.

—

—

—

No tak, ale właściwie powinny być dwa.

Nowy ekran zostaje włączony do toku rozmów.

Dobrze. Co powinno znaleźć się na drugim ekranie konfiguracyjnym?

—

Pytanie konkretyzujące.

—

Jakieś bardziej zaawansowane opcje: do jakich folderów mogą być kopiowane pliki, które dyski są objęte kwarantanną, harmonogram alarmów.

—

Okej, a jak się można do niego dostać z pierwszego ekranu konfiguracyjnego?

—

Konkretyzowanie z użyciem ekranów użytkownika.

—

Na przykład klikając tu. (rysuje)

Narysuj, jak wygląda ten ekran.

—

—

(rysuje)

Czym jest to dodatkowe okno?

—

—

Hmmm… To trzeci ekran konfiguracyjny…

Kolejny nieoczekiwany zwrot akcji.

Co właściwie dzieje się w przytoczonej konwersacji? Programista robi wszystko zgodnie z prawidłami sztuki konkretyzowania, a jednak trudno mu odkrywać wymagania klienta oraz prowadzić konwersację. Dzieje się tak dlatego, że klient dodaje coraz to nowe informacje w toku konwersacji. Zaraz, zaraz — możesz pomyśleć — przecież w konkretyzowaniu o to właśnie chodzi, o pozyskiwanie kolejnych porcji informacji. W trakcie konkretyzowania dowiadujesz się nowych rzeczy, lecz one jedynie konkretyzują i uszczegółowiają to, czego już zdążyłeś się dowiedzieć. Natomiast w opisanej konwersacji nowe informacje zmieniają to, co już zostało z klientem ustalone.

W trakcie podobnej rozmowy odnosisz wrażenie, że klient „coś wie”, a Ty tego nie wiesz, i na tym „czymś” opiera on całe swoje rozumowanie. Spójrz na rysunek 7.14.

Rysunek 7.14. Klient wie coś, o czym Ty nie masz pojęcia

W tego typu rozmowie klient mówi o szczegółach (o konkretach również), lecz nie wspomina o większych kawałkach informacji. Odwołując się do znanej już struktury konwersacji, zauważysz, że nie wiadomo, co jest ponad tymi szczegółami, do czego są one „przypięte”. W tym wypadku konkretyzowanie nie powiedzie się, ponieważ będziesz poruszać się po omacku. Klient będzie dodawał coraz to nowe szczegóły do swoich wymagań, dla Ciebie nie będą one powiązane w żadną spójną całość. Tym, co należy w takim wypadku zrobić, jest dotarcie do przyczyny (rysunek 7.15), z powodu której klient mówi o szczegółach. W słowniku struktury konwersacji powiemy, że trzeba poznać duże kawałki informacji albo rozpocząć uogólnianie.

Rysunek 7.15. Uogólnianie jako docieranie do przyczyn

Miejsce potrzeb w strukturze konwersacji

Uwaga! Jesteśmy teraz w bardzo ważnym momencie, w którym połączymy w jedno: potrzeby, strukturę konwersacji, konkretyzowanie i uogólnianie.

Przyjrzyj się uważnie rysunkowi 7.16. Jest tam przedstawiony całościowy obraz potrzebny do efektywnego poruszania się po strukturze konwersacji. Do tej pory ograniczałem się do pokazywania tylko jej fragmentów (tak jak na rysunkach 7.14 i 7.15), teraz konieczne jest przedstawienie całości.

Rysunek 7.16. Struktura konwersacji — od potrzeb do konkretów

Kolejne poziomy struktury konwersacji zostały ponumerowane. Elementy z poziomu 0. nazwaliśmy konkretami, a elementy z wyższego poziomu nazwaliśmy ogólnikami. Jednak, jak widać na rysunku, relacja konkretności i ogólności jest względna. Elementy z poziomu 1. są konkretniejsze niż te z poziomu 2., lecz ogólniejsze niż te z poziomu 0.

Podstawowym celem konkretyzowania jest odnalezienie elementów leżących poniżej danego poziomu. Odpowiada to wizualnie poruszaniu się w dół po strukturze konwersacji. Celem uogólniania jest odnalezienie w myśleniu klienta pojęć integrujących i spajających w całość jakąś grupę konkretów. W tej książce wizualizuję to jako poruszanie się w górę po strukturze konwersacji.

W konkretyzowaniu elementem docelowym jest pojawienie się konkretu, a więc takiej informacji, na podstawie której wykonawca oprogramowania wie, jakie decyzje projektowe ma podjąć. Co jest celem uogólniania? Tak jak wspomniałem w poprzednim akapicie, w uogólnianiu chodzi o znalezienie pojęcia biznesowego spajającego pozornie niepowiązane ze sobą informacje — znalezienie przyczyny, dla której te informacje są wymieniane przez klienta. Wchodząc coraz wyżej po strukturze konwersacji, odkrywasz coraz to nowe przyczyny, natomiast na najwyższym poziomie jest potrzeba biznesowa.

Dlaczego więc w rozdziale 6., „Odkrywanie potrzeb”, podałem sposób na ich odkrywanie, natomiast teraz piszę, że posługując się algorytmem uogólniania, również dochodzimy do potrzeby? Chodzi o to, że odkrywanie potrzeb biznesowych to naprawdę nietrywialne zadanie i po publikacji pierwszego wydania tej książki wielokrotnie przekonałem się, że czytelnikom i uczestnikom moich szkoleń trudno jest namierzyć potrzebę, posługując się wyłącznie wizualizacją w postaci struktury konwersacji. Łatwiej jest utrzymać konwersację w ryzach, konkretyzując niż uogólniając.

Z tej przyczyny opracowałem łatwiejszy do zastosowania sposób w postaci przedstawionej w rozdziale „Odkrywanie potrzeb”. Jest to zadawanie określonego zestawu pytań w dążeniu do tego, aby potrzeba była konkretna i związana z biznesem klienta. Sam przedstawiony wyżej algorytm uogólniania działa bardzo dobrze, jeśli chodzi o poszukiwanie koncepcji biznesowych spajających jakiś zestaw informacji i radzenie sobie z impasem w trakcie konwersacji. Możesz za jego pomocą odkryć potrzebę, lecz w tym przypadku wygodnie jest wspomagać się metodą opisaną w rozdziale „Odkrywanie potrzeb”.

Kiedy uogólniać?

Istnieje kilka objawów, po których rozpoznasz, że trzeba dotrzeć do dużych kawałków informacji.

Klient mówi o cechach systemu

Cecha systemu to odpowiedź na pytanie: Jaki jest ten system? Na przykład:

- System ma być szybki.

- Ekran jest zielony.

- Interfejs użytkownika jest ładny.

Cechy zazwyczaj stanowią wstęp do odkrywania wymagań niefunkcjonalnych, lecz do opisu działania systemu nie wnoszą zbyt wielu informacji. Od razu muszę zaznaczyć, że cechy systemu są sygnałami do uogólniania tylko wtedy, gdy pojawiają się jako pierwsze w związku z nowym tematem konwersacji. Pojawienie się ich w trakcie konkretyzowania jest zupełnie w porządku i świadczy o prawidłowym prowadzeniu konwersacji.

Klient co chwila dokłada nowe szczegółowe funkcjonalności

Z podobną sytuacją mieliśmy do czynienia w przykładowej konwersacji z tabeli 7.9. Jeśli rozmówca dodaje coraz to nowe funkcjonalności w trakcie konwersacji, to znak, że prawdopodobnie nie znasz większych kawałków informacji, i powinieneś rozpocząć uogólnianie, aby dowiedzieć się więcej.

Klient mówi „od rzeczy” i sprawia wrażenie, że nie wie, czego chce

Piszę „sprawia wrażenie”, ponieważ wiemy już, że klient wie, czego chce, lecz nie wie, czego potrzebuje. Tak zwane mówienie od rzeczy prawdopodobnie świadczy, że wymagania klienta są na dość wczesnym, nieuporządkowanym etapie. Twoim zadaniem jest pomóc mu je uporządkować poprzez odkrycie przyczyny stojącej za tymi wymaganiami.

Klient „przeskakuje” pomiędzy szczegółowymi tematami

W przeciwieństwie do podobnego objawu, będącego sygnałem do konkretyzowania, w tym wypadku nie chodzi o „ślizganie się” po tematach, lecz o przeskakiwanie pomiędzy szczegółowymi tematami. Większość ekspertów dziedzinowych (klientów, użytkowników) utrzymuje swoją bogatą wiedzę w postaci reguł:

- Jeżeli stanie się X, to stanie się również Y.

- Wystąpienie X oznacza Y.

Reguł tych jest bardzo wiele. Taka jest natura wiedzy eksperckiej. Z tego powodu Twój rozmówca będzie często mówił o przypadkach szczególnych i małych porcjach informacji. Ty, jako twórca oprogramowania, nie potrzebujesz zbioru reguł, lecz uporządkowanego procesu z początkiem i końcem, gdyż w ten właśnie sposób działa większość systemów informatycznych[7]. Dlatego musisz cierpliwie dociekać przyczyn wielu szczegółowych informacji podawanych przez klienta.

Pytania uogólniające

Zgodnie z tym, o czym pisałem w rozdziale „Odkrywanie potrzeb”, pytania uogólniające to te same pytania, których używamy do odkrywania potrzeb. Prowadzą one w górę struktury konwersacji. Są to np.:

- Dlaczego?

- Po co?

- W jakim celu?

- Co chcesz poprzez to osiągnąć?

- Z jakiego powodu?

Sygnały STOP dla uogólniania

Uogólnienie ma swój koniec, gdy poznasz powód, dla którego klient oczekuje danej funkcjonalności. Powodami mogą być:

- problemy wynikające z tego, że tej funkcjonalności nie ma;

- korzyści, których klient się spodziewa po tej funkcjonalności;

- cele biznesowe ważne dla klienta.

Są to więc te same kryteria co w przypadku potrzeb. Różnica jest taka, że potrzeba jest tym najważniejszym problemem albo najważniejszą korzyścią. Natomiast problem albo potrzeba o niższym priorytecie to po prostu uogólnienie.

Potrzeba to nic innego jak uogólnienie o najwyższym priorytecie dla biznesu klienta.

Algorytm uogólniania

Elementarnym krokiem w algorytmie uogólniania jest (a jakże!) uogólnienie. Rysunek 7.17 przedstawia jego ideę.

Rysunek 7.17. Podstawowy krok uogólniania

Gdy rozmówca podaje dużo szczegółowych (niekoniecznie konkretnych) informacji (S_1, S_2, S_3), początkowo trudno Ci będzie odgadnąć, w jaki sposób są one ze sobą powiązane. Zupełnie nie znasz motywacji rozmówcy, z powodu której oczekuje on takich, a nie innych rozwiązań. Uogólnianie polega na poznaniu powodów (P_1, P_2) leżących u źródła każdego ze szczegółowych oczekiwań. Finalnym krokiem jest uogólnienie, czyli zastąpienie zebranej grupy powodów bardziej pojemnym słowem. W tabeli 7.10 znajduje się kilka przykładów takich uogólnień.

Tabela 7.10. Uogólnianie szczegółowych informacji

Szczegółowe informacje

Pytania uogólniające

Odpowiedzi na pytania

Uogólnienie

- Na pierwszym ekranie nic nie widać.

- Po trzech minutach bezczynności ekran jest zamykany.

- Dlaczego na pierwszym ekranie nie może być nic widać?

- Dlaczego to jest ważne?

- Żeby nikt niepowołany nie miał dostępu do systemu.

- Żeby chronić prywatność użytkownika.

Czyli brak ważnych informacji na pierwszym ekranie i zamykanie po okresie bezczynności są po to, aby zapewnić bezpieczeństwo użytkowania systemu?

- W ustawieniach powinien być dostęp do wszystkich dziesięciu opcji…

- …ale też nie mniej niż do trzech.

- Co dzięki temu zyska użytkownik?

- Z jakiego powodu nie może być mniej niż trzy?

- Będzie mógł zmienić swoje ustawienia.

- Bo badania dowodzą, że poniżej trzech informacji na ekranie ludzie się nudzą.

Czyli chodzi o to, żeby użytkownik mógł zmieniać wszystkie swoje ustawienia w czytelnym i przejrzystym menu?

- (…) odpowiedzi należy powiązać z pytaniami.

- Pamiętaj, że jedna odpowiedź może dotyczyć tylko jednego pytania.

- Jaki efekt uzyskasz, łącząc odpowiedzi z pytaniami?

- Dlaczego ważne jest, aby jedna odpowiedź dotyczyła tylko jednego pytania?

- Będę mógł przedstawić je w tabeli w raporcie.

- Bo inaczej nie będzie można wygenerować żadnych sensownych danych.

Czyli na podstawie tych danych chcesz generować raporty w postaci tabelarycznej?

Operację uogólniania będziesz powtarzać tak długo, aż dotrzesz do przyczyny szczegółowych informacji podawanych przez klienta. Całość algorytmu znajduje się na rysunku 7.18.

Rysunek 7.18. Algorytm uogólniania

Przeczytaj raz jeszcze fragment konwersacji zamieszczony w tabeli 7.10. W tabeli 7.11 znajduje się ta sama konwersacja, lecz tym razem programista zastosował uogólnianie, aby poznać oczekiwania klienta. Możesz teraz zauważyć, w jaki sposób zastosowanie uogólniania zmienia sposób prowadzenia konwersacji.

Tabela 7.11. Fragment konwersacji na temat konfigurowania ustawień aplikacji w oprogramowaniu antywirusowym.Tym razem z zastosowaniem algorytmu uogólniania

Specjalista

Klient

Komentarz

—

Aplikacja powinna mieć jeden ekran ze wszystkimi ustawieniami konfiguracyjnymi.

—

Co zyska użytkownik, jeśli wszystkie ustawienia zgromadzimy na jednym ekranie?

—

Poszukiwanie powodu (P_1) szczegółowej informacji (S_1): zobaczyć wszystkie ustawienia.

Specjalista kieruje konwersację w stronę potrzeb użytkownika związanych z konfiguracją aplikacji.

—

Nie będzie musiał szukać, jak i gdzie zmienić ustawienia, które chce zmienić.

Powód P_1 to: użytkownik nie będzie musiał szukać, gdzie zmieniać ustawienia.

Powód ten jest sformułowany poprzez zaprzeczenie. Na razie możemy to zaakceptować.

Dlaczego akurat na jednym, a nie na dwóch lub trzech?

—

Poszukiwanie powodu (P_2) szczegółowej informacji (S_2): na jednym ekranie.

—

Bo będzie łatwo i przejrzyście.

—

Czyli chodzi o to, aby użytkownik mógł łatwo odnaleźć i zmienić każde ustawienie aplikacji?

—

Rozmówca podaje powód P_2: ma być łatwo i przejrzyście.

Specjalista odnajduje uogólnienie (A) dla powodów P_1 i P_2: w aplikacji użytkownik nie będzie musiał szukać, gdzie zmieniać ustawienia (P_1), oraz ma być łatwo i przejrzyście (P_2), po to, aby szybko dotrzeć do poszczególnych ustawień (A).

Zatem klient może zobaczyć wszystkie ustawienia (S_1), a do tego na jednym ekranie (S_2), po to, aby szybko dotrzeć do poszczególnych ustawień (A).

—

Dokładnie tak.

Klient potwierdza uogólnienie.

Czy twoim zdaniem mógłby szybko dotrzeć do poszczególnych ustawień za pomocą tego ekranu?

—

Dopiero teraz specjalista przechodzi do pracy z ekranami użytkownika. Wykorzystuje przy tym znalezione uogólnienie.

Zwróć uwagę, że zbyt wczesne konkretyzowanie (tak jak w tabeli 7.10), bez poznania przyczyn, utrudnia definiowanie oczekiwań klienta, ponieważ poruszasz się po omacku w gąszczu szczegółów.

Pytaj zamiast zgadywać

W trakcie poszukiwania korzyści lub problemów, z których wynikają potrzeby klienta, możesz odczuwać pokusę, aby po prostu zgadywać: A może chce pan to? A może tamto? A może to? Może trafisz, może nie. Nie polegaj na przypadku. Zamiast zgadywać pytaj.

Radzenie sobie z impasem w trakcie konwersacji

Z pewnością domyślasz się, że żadna rozmowa z klientem nie przebiega tak, że najpierw konkretyzujesz, a następnie uogólniasz. Takie sztuczne ograniczenia tylko by przeszkadzały. Jeśli wrócisz na chwilę do tabeli 7.11, to zauważysz, że dzięki uogólnianiu programista doprowadził do momentu, w którym może już bezpiecznie konkretyzować. Można powiedzieć, że konkretyzujesz po to, aby nadać realny kształt oczekiwaniom klienta, a uogólniasz po to, aby poznać prawdziwe oczekiwania. Zbieranie wymagań to (tak jak na rysunku 7.19) naprzemienne schodzenie w dół po strukturze konwersacji i wspinanie się do góry, schodzenie i wspinanie się, zależnie od tego, co sygnalizuje klient.

Rysunek 7.19. Konkretyzowanie i uogólnianie działają razem

Cel jest tylko jeden: dokładna eksploracja wymagań.

Powiększanie przestrzeni rozwiązań

Bywa, że w trakcie konwersacji trafiamy na impas. W tabeli 7.12 znajduje się fragment konwersacji na temat bezpieczeństwa tworzonego systemu, gdy klient obstaje przy konkretnym rozwiązaniu.

Tabela 7.12. Impas w konwersacji na temat bezpieczeństwa tworzonego oprogramowania

Specjalista

Klient

Komentarz

—

Ta część aplikacji będzie dostępna przez internet…

—

Rozumiem. Jakie usługi powinna świadczyć użytkownikom?

—

Pytanie konkretyzujące o duże kawałki informacji.

—

O tym za chwilę. Najpierw chciałbym dodać, że powinna być wykonana w technologii JMS.

Klient formułuje zaskakujące oczekiwanie.

Hmm… Tego typu aplikacje zazwyczaj robi się w innych technologiach.

—

Specjalista oponuje.

—

Wiem, jednak w tym wypadku powinien być JMS.

Klient stanowczo potwierdza.

Ale to naprawdę nie jest dobry pomysł…

—

Specjalista mimo wszystko próbuje zaproponować inne rozwiązanie.

—

Zaczyna mnie pan denerwować…

Impas!

Od razu trzeba zaznaczyć, że obstawanie przy swoim pomyśle jest jak najbardziej w porządku. W tym wypadku chodzi o sytuacje, w których utknęliśmy na różnicy zdań i nie wiadomo, co dalej robić.

W przedstawionej rozmowie kłopot polega na tym, że punktem spornym jest szczegółowa informacja: „zastosowanie technologii JMS”. Postarajmy się nazwać problemy, z jakimi mamy do czynienia w tej sytuacji. Porozumienie trudno osiągnąć, ponieważ:

- specjalista na siłę próbuje przekonać klienta do swojego pomysłu;

- kwestia sporna jest tak konkretna, że właściwie nie ma tam miejsca na jakikolwiek konsensus.

Przekonywanie kogoś, że nie ma racji — przynajmniej w trakcie konwersacji na temat wymagań — mija się z celem, ponieważ zniechęcamy klienta. Cały sekret efektywnej współpracy z klientem polega na tym, że zanim zaproponujesz mu jakieś rozwiązanie, musisz najpierw dobrze zrozumieć jego potrzeby.

Najpierw zrozum potrzeby klienta, dopiero potem proponuj rozwiązania. Nigdy odwrotnie.

W jaki sposób dotrzeć do potrzeb? Oczywiście za pomocą uogólniania!

Drugi kłopot, który zdiagnozowaliśmy, polega na tym, że brak jest jakiejkolwiek przestrzeni na porozumienie. Należy zatem nieco powiększyć liczbę rozwiązań, które mogą być zaakceptowane przez obie strony i pomogą wyjść z impasu. Wyobraź sobie sytuację, w której chciałbyś kupić samochód z kimś na spółkę. Ty chcesz samochód w kolorze czerwonym, a ktoś w zielonym. I co z tym fantem zrobić? Zgodnie z tym, co zostało powiedziane przed chwilą, trzeba dotrzeć do potrzeb, a zatem zapytać: Dlaczego ważne jest, aby samochód był zielony/czerwony? Z dużą dozą prawdopodobieństwa każdy stwierdzi, że dlatego, aby był ładny. W tym momencie do akcji wkracza kluczowe pytanie: Jakie inne kolory oprócz czerwonego/zielonego są ładne? Dzięki temu pytaniu poszerzamy liczbę możliwych rozwiązań akceptowalnych przez obie strony zgodnie ze schematem na rysunku 7.20.

Rysunek 7.20. Powiększanie przestrzeni rozwiązań

Konflikt zazwyczaj dotyczy bardzo konkretnych rzeczy. Na poziomie ogólniejszych informacji łatwiej osiągnąć porozumienie.

Możemy teraz wykorzystać tę technikę do poradzenia sobie z impasem w konwersacji.

Przedstawiony w tabeli 7.13 przykład jest oczywiście ze względów praktycznych uproszczony. Niemniej zasada jest zawsze taka sama: dotarcie do potrzeby pomaga znaleźć nowe rozwiązania.

Tabela 7.13. Przezwyciężanie impasu w trakcie konwersacji na temat bezpieczeństwa tworzonego oprogramowania

Specjalista

Klient

Komentarz

—

Ta część aplikacji będzie dostępna przez internet…

—

Rozumiem. Jakie usługi powinna świadczyć użytkownikom?

—

Pytanie konkretyzujące o duże kawałki informacji.

—

O tym za chwilę. Najpierw chciałbym dodać, że powinna być wykonana w technologii JMS.

Klient formułuje zaskakujące oczekiwanie.

Hmm… Tego typu aplikacje zazwyczaj robi się w innych technologiach.

—

Specjalista oponuje.

—

Wiem, jednak w tym wypadku powinien być JMS.

Klient stanowczo potwierdza.

Dlaczego ważne jest, aby użyć technologii JMS?

—

Próba dotarcia do potrzeby poprzez uogólnianie.

—

Ponieważ słyszałem, że komunikacja asynchroniczna jest bardzo bezpieczna.

Aha! Chodzi więc o zapewnienie bezpieczeństwa.

Czyli istotne jest, aby ta część aplikacji zapewniała wysoki poziom bezpieczeństwa świadczonych usług?

—

Specjalista upewnia się, czy zdiagnozował właściwą potrzebę.

Przestrzeń możliwych rozwiązań została znacznie rozszerzona. Prawdopodobnie klient zaakceptuje każde rozwiązanie, które zapewni oczekiwany przez niego poziom bezpieczeństwa.

—

Dokładnie tak.

W naszych systemach stosujemy dedykowane rozwiązania zapewniające bezpieczeństwo na poziomie standardu X. Użyjemy go w tej aplikacji, zgodnie z pańskim życzeniem.

—

Specjalista sam formułuje odpowiedź na pytanie: Jak inaczej zapewnić bezpieczeństwo? Przedstawia to jako alternatywę dla propozycji klienta.

—

W porządku.

Klient się zgadza.

Nietrudno sobie wyobrazić sytuację, w której konkretne szczegółowe rozwiązanie, przy jakim obstaje klient, jest wymaganiem krytycznym. Po prostu z jakichś względów musi zostać zrealizowane i już. Na przykład jeśli Twój klient ma kilku programistów PHP, a Ty proponujesz rozwiązanie w Javie, to klient rzeczywiście może żądać stworzenia aplikacji PHP. Powód jest prosty: dla klienta taniej będzie utrzymywać oprogramowanie z pomocą własnych pracowników, niż płacić Twojej firmie dodatkową kwotę za wsparcie. W takiej sytuacji albo dostosujesz się do życzenia klienta, albo nie zrealizujesz kontraktu. Nie szukaj porozumienia na siłę tam, gdzie go nie ma. Nie wszystkie projekty opłaca się realizować i to również jest w porządku.

Proponowanie alternatywnych rozwiązań

Czy zdarza Ci się czasem, że już w pierwszych chwilach konwersacji z klientem dokładnie wiesz, że jesteś w stanie zaproponować optymalne (cokolwiek to znaczy) rozwiązanie? Co robisz w takiej sytuacji? Starasz się przekonać klienta do swojego pomysłu? Jak rozpoznajesz moment, w którym zaczynasz to robić? Czy ostatecznie Ci się udaje?

Na zakończenie tego rozdziału zaprezentuję Ci metodę na skuteczne proponowanie rozmówcy alternatywnych rozwiązań. Idea jest bardzo prosta i opiera się na technice radzenia sobie z impasem w trakcie konwersacji. Zabierz na spotkanie arkusz przedstawiony w tabeli 7.14.

Tabela 7.14. Mapa proponowania alternatyw

Główna potrzeba

Kryteria zaspokojenia potrzeby (rozwiązania problemu albo osiągnięcia korzyści)

Problemy do uniknięcia

Korzyści do osiągnięcia

Początkowe stanowisko

Proponowane alternatywy

Jest to arkusz, który polecam do trenowania umiejętności proponowania alternatywnych rozwiązań w trakcie konwersacji z klientem. Zawiera on wszystkie kroki konieczne do tego, aby skutecznie przedstawić rozmówcy inne rozwiązania niż to, które zaproponował.

Sposób pracy z arkuszem przedstawia rysunek 7.21.

Rysunek 7.21. Sposób pracy z arkuszem proponowania alternatyw

W sekcji „początkowe stanowisko” umieść to, co według deklaracji rozmówcy ma zostać dostarczone. Najważniejszym punktem całego procesu jest odkrycie głównej potrzeby stojącej za „początkowym stanowiskiem”. Algorytm konwersacji przebiega następująco:

1. Określ „początkowe stanowisko”.

a) Napisz pełnym zdaniem to, co mówi klient, że oczekuje, np.: Chcę wybierać użytkowników z listy rozwijalnej.

b) Unikaj skrótowego zapisywania w postaci samych rzeczowników, np. lista, pracownicy.

2. Odkryj problemy do uniknięcia albo oczekiwane korzyści stojące za „początkowym stanowiskiem”.

a) Użyj metod opisanych w rozdziale 6., „Odkrywanie potrzeb”.

3. Nazwij główną potrzebę.

b) Użyj kryteriów wyodrębniania głównej potrzeby opisanych w rozdziale 6., „Odkrywanie potrzeb”.

4. Zdefiniuj kryteria zaspokojenia potrzeby.

c) Po czym konkretnie rozmówca pozna, że problem został rozwiązany albo korzyść została osiągnięta?

d) Użyj technik konkretyzowania opisanych w bieżącym rozdziale.

5. Zaproponuj alternatywne rozwiązanie.

a) Zaproponuj alternatywne rozwiązanie dopiero wtedy, gdy poznasz potrzebę rozmówcy.

b) Wyodrębnione kryteria pomogą Ci dobrać takie alternatywne rozwiązania, które wychodzą naprzeciw potrzebom rozmówcy.

c) Może się zdarzyć, że klient nie zaakceptuje proponowanej alternatywy. Oznacza to tylko tyle, że istnieją jakieś dodatkowe kryteria zaspokojenia jego potrzeby, których jeszcze nie znasz. Wróć wtedy do punktu 4.

Proponuj alternatywne rozwiązania dopiero wtedy, gdy odkryjesz potrzebę rozmówcy. W przeciwnym razie napotkasz opór.

Podsumowanie

W tym rozdziale zająłem się uporządkowanym schematem prowadzenia konwersacji. Na początku zasugerowałem Ci, abyś zauważył, że konwersacja ma strukturę, której poziomy powstają poprzez rozróżnienie między informacjami ogólnymi i konkretnymi.

Konkretyzowanie pozwala na poruszanie się w dół struktury konwersacji, czyli na rozbijanie informacji ogólnych na coraz większe konkrety. Oprócz podstawowego algorytmu konkretyzowania zapoznałeś się również z:

- techniką skrzynki, która pomaga metodycznie konkretyzować informacje mające charakter procesu;

- ekranami użytkownika, dzięki którym możesz konkretyzować wymagania funkcjonalne dla oprogramowania posiadającego graficzny interfejs użytkownika.

Na poruszanie się w górę struktury konwersacji pozwala uogólnianie. Uogólnianie jest sposobem na odnajdywanie powodów, dla których klient oczekuje określonych rozwiązań.

W realnej konwersacji konkretyzowanie i uogólnianie będziesz stosować naprzemiennie w zależności od tego, co powie Twój rozmówca. Pełen cykl konkretyzowania i uogólniania pomaga również omijać impasy w konwersacji dzięki prostemu pytaniu: Jak inaczej? Ten sam sposób możesz wykorzystać do proponowania klientowi alternatywnych rozwiązań spełniających jego potrzeby.

[1] Liczba ludzi na Ziemi; stan na 01.01.2013.

[2] Jak mawia pewien znajomy menedżer: „Iszju nie zostało zaadresowane”.

[3] Jeśli zastanawiasz się, co konkretnie oznacza skupianie się na funkcjonalnościach zamiast na wyglądzie, koniecznie przeczytaj podrozdział „Ekrany użytkownika podczas konkretyzowania”.

[4] Początkowo używałem nazwy czarna skrzynka, ale uświadomiłem sobie, że skoro zaglądamy do środka, to nie jest już ona czarna. Z drugiej strony, wydawało mi się, że nazwa biała skrzynka narzuci zbyt wiele skojarzeń z testowaniem, więc ostatecznie została po prostu skrzynka.

[5] Słów „klient” i „użytkownik” używam często wymiennie. Choć to kompletnie inne odpowiedzialności, przy omawianych zagadnieniach nie trzeba wprowadzać między nimi rozróżnienia.

[6] Inputy, tekstfildy, jeśli używać nowomowy programistycznej.

[7] Poza skończoną ilością specjalistycznego oprogramowania, tzw. systemów eksperckich.

Rozdział 8.
Pytania trafiające w samo sedno

W tym rozdziale pojawi się więcej szczegółów związanych z konstruowaniem pytań. Dowiesz się:

- co zmienia w pytaniach używanie czasu przeszłego, teraźniejszego i przyszłego;

- jak używać pytań zamkniętych i otwartych;

- co robić z wymaganiami wyrażonymi jako zaprzeczenie;

- jak nadawać znaczenie wypowiedzi z użyciem ram odniesienia.

Bufor bezużytecznych odpowiedzi

Obserwując uważnie komunikację pomiędzy ludźmi, można dojść do przekonania, że każdy człowiek posiada w głowie „moduł”, który można by nazwać buforem bezużytecznych odpowiedzi. Bufor to takie miejsce, z którego rozmówca czerpie odpowiedzi, gdy zadasz mu nieprecyzyjne pytanie albo zrobisz to niedbale. Bufor jak to bufor — może zawierać cokolwiek:

- ostatnio użyte odpowiedzi: OK, OK;

- fragmenty konwersacji: dobra, użyjmy EJB;

- niepowiązane wspomnienia: zróbcie tak jak w starym systemie;

- standardowe zamknięcia konwersacji: zastanowię się, pogadajmy o tym następnym razem, zapytajcie Zdziśka.

Jeżeli w trakcie konwersacji chcesz uzyskać od rozmówcy użyteczne informacje, to Twoim najważniejszym zadaniem jest zadawanie pytań omijających bufor bezużytecznych odpowiedzi (rysunek 8.1).

Rysunek 8.1. Bufor bezużytecznych odpowiedzi

Załóżmy, że chcesz dowiedzieć się nieco więcej na temat funkcjonowania biura podróży. Jakie pytanie zadasz? Jak wygląda praca w biurze podróży? Jak działa biuro podróży? Co się dzieje w biurze podróży? Czy może jeszcze inne? Na każde z tych pytań otrzymasz nieco inną odpowiedź. Zobaczmy dlaczego.

- Jak wygląda praca w biurze podróży? Prawdopodobnie rozmówca odniesie słowo „praca” do siebie i opowie o swojej pracy w biurze podróży; będzie pewnie mówił o wykonywanych codziennie czynnościach, które sobie przypomni w trakcie konwersacji.

- Jak działa biuro podróży? Pytanie każe rozmówcy spojrzeć na biuro podróży jako całość, wskutek czego zacznie on podawać zasady, na jakich oparte jest działanie tego biura, sposób współpracy z zewnętrznymi dostawcami itp.

- Co się dzieje w biurze podróży? To pytanie najbardziej uwypukla codzienne interakcje, zatem dowiesz się dużo na temat konkretnych zadań, problemów i prawdopodobnie co nieco o poszczególnych pracownikach.

Które z pytań jest najwłaściwsze? To zależy od tego, czego chcesz się dowiedzieć. Jeśli więc interesuje Cię proces biznesowy w biurze podróży, to:

- Nie pytaj: Jak wygląda…?, bo nie wygląd ma dla Ciebie znaczenie.

- Nie pytaj: Jak działa…?, gdyż to sugeruje rozmówcy, że ma się skupić na procesie.

- Nie pytaj: Co się dzieje…?, ponieważ to pytanie daje rozmówcy możliwość mówienia o czymkolwiek.

- Nie pytaj o proces biznesowy, gdyż jest to termin wymyślony przez analityków; być może brzmi mądrze, ale dla większości klientów nic nie znaczy.

- Zapytaj: Jakie czynności są po kolei wykonywane w biurze podróży?, bo to pytanie narzuca charakter procesowy.

- Zapytaj: Co się po kolei dzieje z klientem od momentu, gdy zgłosi się do biura, do momentu, gdy otrzyma bilet na lotnisku?, ponieważ to pytanie odnosi się do bardzo konkretnego procesu, o wyraźnie oznaczonym początku i końcu.

Jakość otrzymywanych odpowiedzi świadczy o jakości pytań, którymi się posługujesz. Im lepsze zadasz pytanie, tym lepszą otrzymasz odpowiedź.

Wiele niejasności w zebranych wymaganiach wynika z niewłaściwych pytań zadawanych podczas konwersacji. Są one zbyt ogólne, nie dotyczą meritum sprawy albo niechcący skłaniają rozmówcę do opowiadania o czym innym niż to, co jest w danym momencie istotne.

„Jest” czy „powinno być”?

Przeprowadzając wywiady z klientami, zauważyłem, że gdy pytam o proces biznesowy, w którym biorą udział, niemal wszyscy opowiadają, jak powinien on funkcjonować, zamiast tego, jak funkcjonuje on teraz. Z tego względu co jakiś czas zadaję pytania: Czy to rzeczywiście działa tak, jak opisujesz? Jak w codziennej praktyce sprawdza się to, o czym mówiłeś? Zazwyczaj po takim pytaniu rozmówcy zaczynają opowiadać o problemach.

Pamiętaj o rozróżnieniu pomiędzy jak jest a jak powinno być. Skoro oprogramowanie, które tworzysz, ma wspierać procesy biznesowe, to powinny to być rzeczywiste procesy. Może się również okazać, że procesy biznesowe działają nieoptymalnie i należy je zmodyfikować, lecz będziesz mógł to zauważyć wyłącznie wtedy, gdy dowiesz się, jak one naprawdę działają.

„Może”, „mogłoby”, „powinno” czy „musi” zostać zrobione?

Zwracaj uwagę, którego ze słów: może, mogłoby, powinno, musi używa klient. Każdy z tych wyrazów nadaje wymaganiu odcień przemawiający za jego priorytetem. I tak: najwyższy priorytet otrzymują te wymagania, które muszą być zrobione, potem te, które powinny, dalej te, które mogą, a potem mogłyby zostać wykonane. Tu wkrada się pewien niuans. Ze względów grzecznościowych (przynajmniej w języku polskim) mówi się często powinno, mając na myśli musi.

Z tego względu upewnij się, jak krytyczne są wymagania, które powinny być wykonane, zadając np. pytania: Czy to koniecznie musi zostać zrobione? Czy system ma sens bez tej funkcjonalności?

Czas przeszły, przyszły i teraźniejszy

Zadając pytania odnoszące się do konkretnego momentu w czasie, sterujesz nie tylko uwagą, lecz również aktywnością rozmówcy (tabela 8.1):

- W czasie przeszłym rozmówca przypomina sobie czynności, które na co dzień wykonuje. Czas przeszły jest dobrym sposobem do uzyskania informacji o tym, jaki jest rzeczywisty obraz sytuacji. Zadając pytania: Jak to działało do tej pory? Czy to podejście przynosiło rezultaty? Jakie były twoje wrażenia z korzystania z…?, koncentrujesz uwagę rozmówcy na przeszłych doświadczeniach, w których rzeczywiście brał udział. Można więc powiedzieć, że dowiesz się prawdy na temat aktualnego stanu rzeczy zamiast tego, jak ów stan rzeczy powinien wyglądać (zob. podrozdział „»Jest« czy »powinno być«?”).

- W czasie teraźniejszym rozmówca wyobraża sobie, że właśnie bierze udział w jakimś wydarzeniu. W czasie teraźniejszym powinieneś rozmawiać o przypadkach użycia, scenariuszach i ekranach użytkownika. Zadawaj pytania w stylu: Jak wygląda ten ekran? Co się pojawia, gdy klikasz przycisk OK? Używaj czasu teraźniejszego nawet we frazach, gdzie nie jest on zupełnie naturalny lub gramatycznie poprawny, np.: Gdy klikasz menu Opcje, to jakie okno widzisz teraz? Pytając, jakie okno widzisz teraz, stawiasz rozmówcę w perspektywie użytkownika systemu. Wyobraża on sobie, że jest w akcji działania, że rzeczywiście teraz klika i teraz coś widzi. Ta perspektywa pozwala mu precyzyjnie określić własne oczekiwania. Sytuacja wyglądałaby inaczej, gdyby druga część pytania brzmiała: jakie okno zobaczysz. Pytanie odnoszące się do przyszłości stawia rozmówcę w perspektywie obserwatora kilku alternatywnych scenariuszy. Prawdopodobnie skupiłby się on na tym, jak mogłoby wyglądać to, co zobaczy, i rozważałby kilka opcji do wyboru.

- W czasie przyszłym umieszczaj korzyści i cele. Zadawaj pytania: Co zyskasz? Co osiągniesz?

Tabela 8.1. W jakim czasie formułować pytania do rozmówcy?

W czasie przeszłym

W czasie teraźniejszym

W czasie przyszłym

- Gdy chcesz poznać problemy rozmówcy.

- Gdy chcesz zebrać informacje na temat rzeczywistej sytuacji, w której znajduje się rozmówca.

- Gdy definiujesz przypadki użycia i ich scenariusze.

- Gdy projektujesz z rozmówcą ekrany użytkownika.

- Gdy chcesz się dowiedzieć, jak powinna działać tworzona aplikacja.

- Gdy chcesz poznać cele biznesowe klienta.

- Gdy chcesz poznać korzyści, jakie musi zapewnić tworzone oprogramowanie.

Bez skrupułów możesz łączyć czasy w jednej wypowiedzi, aby precyzyjnie pokierować uwagą rozmówcy i dokładnie zrozumieć wymagania, np.: Do tej pory wybierałeś pracowników z wielopoziomowego menu i było to uciążliwe. Teraz klikasz ikonę i od razu widzisz formularz dodawania pracownika. Czy to rzeczywiście usprawni twoją pracę?

Pytaj, nie sugeruj

Kiedyś widziałem w telewizji reportaż, w trakcie którego dziennikarz zapytał kogoś: Jak bardzo zbulwersowały panią wydarzenia w…? Jak myślisz: jaka była odpowiedź? Dziennikarza interesowało bardziej stworzenie nacechowanego emocjonalnie materiału niż prawdziwe przeżycia rozmówcy. Usłyszał dokładnie to, co chciał usłyszeć, i nic więcej. Jeżeli będziesz postępował podobnie w trakcie zbierania wymagań, z pewnością spotkają Cię kłopoty w trakcie odbioru produktu. Ponieważ wykonałeś to, co zasugerowałeś, zamiast tego, czego oczekiwał rozmówca, system może nie spotkać się z życzliwym przyjęciem.

W tabeli 8.2 znajduje się fragment rozmowy na temat wymagań co do systemu wspomagającego funkcjonowanie biura podróży, w której pojawia się kilka błędów.

Tabela 8.2. Niedbałe zadawanie pytań w konwersacji na temat systemu wspomagającego funkcjonowanie biura podróży

Specjalista

Klient

Komentarz

—

Chciałbym jakiś system do wspomagania biura podróży.

—

Czy to ma być system obsługujący jedno biuro, czy kilka biur współpracujących?

—

Specjalista zasugerował klientowi rozwiązanie, o którym on początkowo nie myślał. To pytanie powinno paść zdecydowanie później, gdy już specjalista zrozumie, na czym polega biznes klienta. W tym momencie znacznie poszerza to zakres systemu, wydłuża czas prac analitycznych, lecz nie daje gwarancji, że po usłyszeniu ceny klient rzeczywiście zaakceptuje rozwiązanie.

Na tym etapie odpowiedniejsze byłoby pytanie: Czy prowadzisz jedno, czy więcej biur podróży? Nie sugeruje ono odpowiedzi i jednocześnie daje ważną wskazówkę na temat późniejszych etapów zbierania wymagań.

—

No, w sumie planuję się rozrosnąć, więc dobrze by było, gdyby obsługiwał kilka.

Klient zainteresował się zasugerowanym rozwiązaniem.

Jak wygląda praca w biurze podróży? Jakie rzeczy są ważne?

—

To pytanie nie jest zbyt konkretne. Lepiej zapytać: Jakie czynności są po kolei wykonywane, aby obsłużyć klienta?

—

Klient może przyjść do biura, może zamówić wycieczkę przez internet. Wszystkie wycieczki muszą być pobierane z systemów dużych biur, bo my jesteśmy tylko pośrednikiem. Nie organizujemy wyjazdów na własną rękę.

Klient zasygnalizował dwa procesy obsługi: w biurze oraz przez internet. Te procesy powinny zostać jak najszybciej wzięte pod uwagę.

Czyli mówimy o modułach normalnej obsługi internetowej oraz integracji z dużymi biurami?

—

Specjalista przekształcił procesy w „moduły”. Poprzez ten zabieg straciły one swój dynamiczny charakter i trudniej będzie określić sekwencje kolejno wykonywanych działań podczas pracy biura podróży.

—

Tak, ale bardzo ważne jest też to, abym szybko odnajdywał oferty różnych biur. Mogłyby się one pokazywać w formie listy albo drzewka.

Klient robi duży przeskok do szczegółu. W tym momencie wygląd ekranu użytkownika nie jest najważniejszą sprawą, jaką trzeba się zająć. Aczkolwiek zostało zasygnalizowane ważne kryterium jakości: szybkie i łatwe odnajdywanie wycieczek spośród wszystkich ofert dużych biur podróży.

Jeśli chcesz poznać prawdziwe potrzeby swojego klienta, musisz skoncentrować się na zadawaniu pytań bez sugerowania odpowiedzi. To, co rzeczywiście myśli klient, z pewnością Cię zaskoczy.

Pytania zamknięte i otwarte

Na początek dwie definicje.

Pytanie zamknięte to takie, na które można udzielić tylko z góry założonej odpowiedzi:

- Czy chciałbyś teraz porozmawiać na temat nowego modułu? Dwie możliwe odpowiedzi: tak lub nie.

- Wolałbyś, aby spotkanie odbyło się teraz czy jutro o szesnastej? Dwie możliwe odpowiedzi: teraz lub jutro o szesnastej.

- Która technologia wydaje ci się bardziej odpowiednia do tego projektu: .NET, JEE czy PHP? Trzy możliwe odpowiedzi: .NET, Java lub PHP.

Pytanie otwarte to takie, na które można dać dowolną, swobodną odpowiedź:

- Jak twoim zdaniem należy podejść do tego projektu od strony technologicznej?

- Jak ci się pracuje z tym systemem?

- Jak można by ulepszyć państwa proces wytwarzania oprogramowania?

Jeśli za cechę rozróżniającą pytania zamknięte od otwartych przyjmiemy możliwość swobodnej wypowiedzi, to okaże się, że pytania te stoją na dwóch skrajnych biegunach (rysunek 8.2).

Rysunek 8.2. Pytania zamknięte i otwarte

Gdzieś pomiędzy nimi znajdują się pytania, które moglibyśmy nazwać pytaniami zawężonymi, czyli takimi, które umożliwiają w miarę swobodną wypowiedź, ale narzucają ściśle określony wąski obszar odpowiedzi, np.:

- Jakie problemy występują z modułem autoryzacji?

- Co należy ulepszyć w procesie obsługi klienta?

- Co po kolei musi się wydarzyć, aby obsłużyć klienta, od momentu, gdy wejdzie on do banku, do chwili, gdy wyjdzie z pokwitowaniem przelewu?

Zauważ, że główne rozróżnienie pomiędzy tymi trzema rodzajami pytań polega na tym, jak dużą przestrzeń, z której można brać odpowiedzi, pozostawiasz rozmówcy. W pytaniach zamkniętych jest ona najmniejsza, w pytaniach otwartych największa.

Pytania zamknięte, zawężone i otwarte to dodatkowe narzędzia, za pomocą których możesz prowadzić sesję zbierania wymagań, poruszając się po strukturze konwersacji w taki sposób, jaki w danym momencie uznasz za najodpowiedniejszy. W tabeli 8.3 znajdziesz kilka wskazówek na temat używania omawianych pytań.

Tabela 8.3. Kiedy używać pytań zamkniętych, kiedy zawężonych, a kiedy otwartych?

Rodzaj

Używaj, gdy

Przykład

Zamknięte

- Chcesz podsumować i ostatecznie skonkretyzować oczekiwania.

- Chcesz wybrać pomiędzy kilkoma rozwiązaniami.

- Definiujesz warunki akceptacji rozwiązania.

- Rozumiem, że z tego ekranu użytkownik musi mieć możliwość wykonania X, Y, Z. Czy mam rację?

- Której z technologii należy użyć: JEE czy PHP?

- Czyli jeśli będzie wykonane X, Y, Z, to uznają państwo zadanie za wykonane?

Zawężone

- Chcesz przejść poziom niżej (na mniejsze kawałki informacji) w strukturze konwersacji.

- Chcesz, aby odpowiedź klienta miała ściśle określoną strukturę.

- Jakie są najistotniejsze rzeczy w module X?

- Co po kolei musi się wydarzyć, aby obsłużyć klienta, od momentu, gdy wejdzie on do banku, do chwili, gdy wyjdzie z pokwitowaniem przelewu?

Otwarte

- Zaczynasz konwersację.

- Chcesz wyodrębnić duże kawałki informacji.

- Chcesz posłuchać opinii klienta na dany temat.

- Chcesz, aby klient się „wygadał”.

- Chcesz rozluźnić atmosferę.

- W czym mogę pomóc?

- Czego państwo oczekują po tym przedsięwzięciu?

- Co skłoniło pana do zmiany systemu?

- Co ciekawego się wydarzyło od ostatniego spotkania?

Wyrażanie oczekiwań poprzez zaprzeczenie

Podczas przygód ze zbieraniem wymagań możesz spotkać rozmówców, którzy definiują swoje oczekiwania poprzez zaprzeczenia. Mówi się często, że kryteria negatywne (nie w sensie oceniającym) są sformułowane z użyciem negacji. Takie osoby zazwyczaj mówią, czego nie chcą, jakie coś ma nie być, np.:

- To nie może być nic niebieskiego.

- Nie chcę, żeby w tym miejscu była lista rozwijalna.

- Interfejs jest nieładny.

Zazwyczaj, choć nie jest to bezwzględną regułą, osoby posługujące się podobną retoryką zaczynają działać, gdy liczba trudności zaburza komfort ich pracy. Z tego właśnie powodu skupiają się na usunięciu tych problemów i wyrażają swoje oczekiwania poprzez zaprzeczenia. Po przeciwnej stronie stoją kryteria pozytywne, czyli bez używania negacji.

Kłopot z kryteriami negatywnymi polega na tym, że trudno stworzyć rozwiązanie, które ze stuprocentową pewnością będzie spełniać te kryteria. Spróbuj podarować mi koszulę, która nie będzie zielona. Możesz zaproponować niebieską. Ja wtedy odpowiem, że nie o taką mi chodziło. Ty zaproponujesz granatową. I znowu błąd. Możemy tak grać dowolnie długo, dlatego jeśli definiujesz wymagania i kryteria akceptacji rozwiązania, to absolutnie muszą być one sformułowane pozytywnie. Kryteria pozytywne są jednoznacznym wyznacznikiem satysfakcji klienta.

Wymagania muszą być zdefiniowane w postaci kryteriów pozytywnych.

Nie staraj się zmusić klienta do formułowania kryteriów pozytywnych. Po pierwsze, robi to niedobre wrażenie — ludzie są różni i każdemu wolno formułować swoje oczekiwania, jak mu się tylko podoba. Po drugie, Twoim celem jest zbieranie wymagań i nic innego. W takiej sytuacji spróbuj sprytnie przekształcić kryteria negatywne w pozytywne. Możesz to zrobić w trzech krokach.

- Krok 1. Wyodrębnij typowe przypadki negowane przez kryteria.

- Formułując kryteria negatywne, rozmówca stara się odrzucić jakieś niepożądane rozwiązania. Zdefiniuj je.

- Przykład:

- Kryterium: Samochód nie może być brzydki.

- Wyodrębnienie przypadków: Jakie są przykłady brzydkich samochodów?

- Krok 2. Określ niepożądane atrybuty, o których myśli rozmówca.

- Dla każdego z wyodrębnionych przypadków określ związane z nimi niepożądane atrybuty, których rozmówca stara się pozbyć.

- Przykład:

- Przypadek: Samochód bez bagażnika jest brzydki.

- Pytanie: Co jest brzydkiego w samochodzie bez bagażnika?

- Problemy: Jest krótki, jakby spłaszczony.

- Krok 3. Sformułuj kryteria pozytywne jako odwrócenie wskazanych niepożądanych atrybutów.

- Przykład:

- Problem: Samochód jest krótki, jakby spłaszczony.

- Kryterium pozytywne: Samochód jest długi, o opływowym kształcie.

Przeanalizuj fragment konwersacji z tabeli 8.4, aby zaobserwować tę technikę w akcji.

Tabela 8.4. Konwersacja z klientem, który wyraża oczekiwania poprzez zaprzeczenie

Specjalista

Klient

Komentarz

—

Sterowanie radiem w naszych autach nie może być takie typowe jak w innych. Typowe są bardzo niewygodne.

Klient sformułował negatywne kryterium: nietypowe sterowanie radiem.

Jakie są typowe rozwiązania sterowania radiem stosowane obecnie w autach?

—

Krok 1. Próba wyodrębnienia przypadków negowanych przez to kryterium.

—

Ekrany dotykowe na panelu oraz pokrętła.

Wyodrębnione przypadki to: ekrany dotykowe i pokrętła.

Jakie problemy z nimi występują?

—

Krok 2. Próba zdefiniowania niepożądanych atrybutów dla wyodrębnionych przypadków.

—

Na panelu zostają ślady palców, co brzydko wygląda. Pokrętła są przestarzałe.

Niepożądane atrybuty to: zabrudzenia i przestarzały wygląd.

Czyli mechanizm sterowania nie może mieć śladów palców i nie może być przestarzały?

—

Specjalista upewnia się, czy rzeczywiście tych atrybutów klient chce się pozbyć.

—

Tak.

—

Czyli powinien być zawsze czysty i wyglądać nowocześnie?

—

Próba sformułowania kryteriów pozytywnych poprzez odwrócenie problemów: brudny — czysty, przestarzały — nowoczesny.

—

Tak.

Klient potwierdza.

Czym jeszcze powinien charakteryzować się mechanizm sterowania radiem prócz czystości i nowoczesności?

—

Specjalista sonduje, czy istnieją jeszcze jakieś kryteria.

—

Powinien być umieszczony niezależnie od panelu radia. Na przykład w okolicy dźwigni zmiany biegów.

Klient tym razem podaje kryterium pozytywne: sterowanie powinno być umieszczone np. w okolicy dźwigni zmiany biegów.

Jak przebiegałaby praca z takim systemem?

—

Specjalista rozpoczyna konkretyzowanie.

Ramy odniesienia i zmiana ram[1]

Wyobraź sobie, że idziesz ulicą i nagle spostrzegasz człowieka, który zawzięcie kopie w tylne koło samochodu. Co myślisz w tej sytuacji? Być może dochodzisz do wniosku, że to złodziej, i dzwonisz po policję albo sam interweniujesz. Snujmy opowieść dalej. Podchodzisz do wandala dewastującego samochód i żądasz wyjaśnień. Na co on, nieco roztargniony, odpowiada: Kilka godzin temu wjechałem w dużą kałużę, zamoczyłem koła i teraz się zablokowały. Nie wziąłem ze sobą narzędzi, więc próbuję jakoś naruszyć to zakleszczenie. Może się uda. Co teraz myślisz i robisz w tej sytuacji? Być może zaczynasz kopać razem z nim.

Proces, który zaszedł w opisanej sytuacji, wyglądał następująco:

1. Obserwowałeś jakieś wydarzenie.

2. Wyrobiłeś sobie opinię o tym wydarzeniu i przypisałeś mu konkretne znaczenie.

3. Zareagowałeś zgodnie ze znaczeniem, jakie tej sytuacji nadałeś.

Co w takim razie się stało, co się zmieniło, że raz chciałeś dzwonić na policję, a następnie kopniakami okładałeś samochód? Zmieniła się Twoja wiedza o sytuacji. Zdecydowałeś się pomóc kierowcy, bo zacząłeś rozpatrywać sytuację z innej perspektywy, w związku z czym zyskała ona w Twoich oczach inne znaczenie, co spowodowało, że zareagowałeś zupełnie inaczej — zgodnie z aktualnym znaczeniem sytuacji.

Czym są ramy odniesienia i dlaczego są ważne?

Rama odniesienia to kontekst, w obrębie którego rozpatrywane jest dane doświadczenie. Ramy odniesienia pozwalają nam nadawać znaczenia rzeczywistości, która jest wokół nas. Mówi się czasem, że „punkt widzenia zależy od punktu siedzenia”. Ów punkt siedzenia to właśnie rama odniesienia.

Jak myślisz: dlaczego dla jednych osób pływanie i nurkowanie w głębokiej wodzie to czysta przyjemność, a u innych już sama myśl o tym wywołuje atak paniki? Ludzie są różni — z pewnością powiesz. To prawda, lecz w tym konkretnym przypadku te dwie grupy osób postrzegają to samo doświadczenie z dwóch różnych „punktów siedzenia” albo w dwóch różnych ramach odniesienia. Przekłada się to bezpośrednio na odczuwane przez nich przyjemność albo strach.

Przeanalizujmy opisaną sytuację z samochodem (tabela 8.5).

Tabela 8.5. Kopanie samochodu rozłożone na czynniki pierwsze

Co się rzeczywiście dzieje?

Rama odniesienia („punkt siedzenia”)

Co myślę?

Co robię?

Człowiek kopie w tylne koło samochodu

- Jeśli ktoś kopie w samochód, to jest wandalem.

- To nie jest jego samochód.

- Nie wolno niszczyć cudzej własności, bo to złe.

- To jest złodziej.

- On dewastuje samochód.

- Dzwonię na policję.

- Żądam wyjaśnień od wandala.

Człowiek kopie w tylne koło samochodu

- Koło w samochodzie się zablokowało.

- On ma problem.

- Wezwanie lawety będzie go sporo kosztować.

- Może mu pomogę.

- Kopię w koło samochodu.

To jest właśnie moc ram odniesienia! Ta sama sytuacja rozpatrywana w różnych ramach (z różnych „punktów siedzenia”) powoduje inne nastawienia, a w konsekwencji różne zachowania. Poniżej znajdziesz kilka przykładów ram odniesienia.

- Wiedza o sytuacji — np.: koło w samochodzie się zablokowało.

- Założenia — np.: to nie jest jego samochód.

- Przekonania — np.: Jeśli ktoś kopie samochód, to jest wandalem, Nie wolno niszczyć cudzej własności, bo to złe.

- Czasem jedno słowo — przypomnij sobie, jak zareagowałeś na opisaną sytuację z samochodem, przeczytaj ją jeszcze raz i zwróć uwagę, że w pewnym momencie zmieniłem słowo „człowiek” na „wandal” oraz frazę „kopie w tylne koło samochodu” na „dewastuje samochód”. Dwie drobne zmiany narzucają na tę sytuację bardzo wyraźną ramę odniesienia, że oto dzieje się coś złego.

Chciałbym zaproponować Ci praktyczne i bardzo pouczające ćwiczenie. Zacznij uważnie przysłuchiwać się temu, co mówią w reklamach. Zauważaj ramy odniesienia narzucane odbiorcom, za pomocą których ktoś próbuje wtłoczyć nam do głowy określone założenia i przekonania. Przysłuchuj się temu, co mówią ludzie w mediach. Zwracaj uwagę na to, jakich słów używają, opisując aktualne wydarzenia. Z przerażeniem odkryjesz, że nie istnieje coś takiego jak obiektywizm w mediach. Obiektywizm w mediach nie ma prawa istnieć. Aby być obiektywnym, należy przekazywać informacje w matematycznie precyzyjnym i suchym języku faktów, lecz taki język się nie sprzedaje.

Ostatnio moją ulubioną rozrywką jest przysłuchiwanie się sejmowym debatom. To niewiarygodne, jak tę samą rzeczywistość można prezentować na tyle różnych sposobów. Polecam również Tobie tę wspaniałą rozrywkę. Od polityków nauczysz się wykorzystywać ramy odniesienia po mistrzowsku.

Techniki zmiany ram odniesienia

Wiesz już, że rama odniesienia, w której rozpatrujesz rzeczywiste wydarzenia, powoduje różne interpretacje tych wydarzeń i różne na nie reakcje. Zmienianie ram odniesienia podczas sesji zbierania wymagań pomoże Ci lepiej zrozumieć oczekiwania klienta. Klientowi pomoże zaś sformułować jego problemy i potrzeby.

Prostym i bardzo sprytnym przykładem na zmianę ramy jest zastąpienie słowa „problem” poprzez słowo „możliwość” albo „wyzwanie”. Porównaj ze sobą poniższe wypowiedzi:

- Mam problem ze snem. Wciąż przekręcam się z boku na bok. Z każdą minutą staję się coraz bardziej zirytowany.

- Mam możliwość przeczytania zaległej lektury, bo ostatnio odczuwam senność dużo później.

- Mam wyzwanie, aby zasnąć w ciągu piętnastu minut. Każdego dnia udaje mi się skrócić czas zasypiania o minutę. Jeszcze tylko tysiąc dwadzieścia cztery minuty i już! Fascynujące!

Zauważ, jak różne skojarzenia budzą w Tobie te zdania. Nie ma tu żadnej magii! Chodzi właśnie o skojarzenia. Problemy się rozwiązuje, z możliwości się korzysta, wyzwania się podejmuje. Nie chodzi tylko o mechaniczną podmianę wyrazu, lecz przede wszystkim o skojarzenia i emocje, jakie ta zmiana wywołuje. Dopiero Twoja reakcja pokazuje drastyczną różnicę między przytoczonymi wypowiedziami. Jedno słowo może sprawić, że będziesz z irytacją rzucał się na łóżku albo z pasją pochłaniał książki, albo rozwijał umiejętność zasypiania na żądanie. Tylko jedno słowo! Co za potęga kryje się w ramach odniesienia!

W rozdziale 6., „Odkrywanie potrzeb”, pisałem o klientach, którzy mogą mieć tendencję do koncentrowania się na problemach lub na możliwościach. Opisana tam technika przekształcania problemów w korzyści i odwrotnie to nic innego jak zmiana ramy odniesienia. Pytając: Jakie problemy rozwiąże ten system? albo Jakie korzyści przyniesie ten system?, narzucasz ramę problemu lub korzyści, która to rama skupia uwagę rozmówcy w określonym kierunku. Ramy problemu i korzyści pomagają dowiedzieć się więcej na temat całości zagadnienia i lepiej zrozumieć potrzeby klienta.

Odwrócenie ramy odniesienia

Znasz już technikę zmiany ramy. Klient, który nie wie, czego chce — klient, który wie, czego chce, ale nie wie, czego potrzebuje. W tym przypadku rama to przekonanie, które tkwi gdzieś na skraju świadomości. W początkowych rozdziałach tej książki wyeksponowałem tę ramę odniesienia, a następnie poprosiłem Cię, abyś pomyślał w bardziej użyteczny sposób. Jeśli czytasz tę książkę od początku rozdział po rozdziale, to przekonanie, że „klient wie, czego chce, ale nie wie, czego potrzebuje” zdążyło się już dobrze zadomowić w Twoim myśleniu. Zostało — jak to mawia mój znajomy — sprzedane.

Być może zanim otworzyłeś tę książkę, miałeś sporo argumentów na to, że „klient nie wie, czego chce”. Potem w rozdziale 1., „Między biznesem a IT”, odwróciliśmy to przekonanie. Być może Cię to zaskoczyło. Przez kolejne rozdziały poznawałeś techniki zadawania pytań. Jeśli nawet jeszcze nie w pełni zgadzasz się ze stwierdzeniem, że „klient wie, czego chce, ale nie wie, czego potrzebuje”, to nie możesz go tak po prostu nie zaakceptować. Musisz chociażby spróbować, czy to w ogóle działa. Być może klienci rzeczywiście wiedzą, czego chcą…

Odwracanie ramy odniesienia to po prostu zanegowanie już istniejącej ramy. W tabeli 8.6 znajdziesz przykłady zastosowania tej techniki.

Tabela 8.6. Odwracanie ramy odniesienia w akcji

Wypowiedź klienta

Interfejs nie może być tak brzydki jak ostatnio.

Różni lekarze nie mogą posługiwać się tą samą kartą pacjenta i to jest właśnie powód całego zamieszania.

Rama odniesienia

Brzydota poprzedniego interfejsu.

Założenie, że z jakiegoś powodu niemożliwe jest współdzielenie karty pacjenta przez wielu lekarzy.

Zróżnicowane potrzeby lekarzy powodują zamieszanie (problem).

O czym można rozmawiać?

Co oznacza brzydki interfejs?

Czym nowy interfejs ma się różnić od poprzedniego?

O różnicach w potrzebach poszczególnych lekarzy.

Jakie konkretne sytuacje powodują zamieszanie?

Zanegowana rama

Jakie interfejsy uważasz za ładne?

Gdyby lekarze mogli współdzielić kartę pacjenta, to co uległoby poprawie?

O czym teraz można rozmawiać?

O przykładach ładnych interfejsów.

Co oznacza ładny interfejs?

O pozytywnie sformułowanych kryteriach akceptacji nowego interfejsu.

O podobieństwach w potrzebach poszczególnych lekarzy.

O korzyściach wynikających z ujednolicenia karty pacjenta.

Powiększenie ramy odniesienia

Przeczytaj jeszcze raz fragment opisujący scenę z samochodem. W relacji ze zdarzenia jest wyraźna informacja, że jakiś człowiek „kopie w tylne koło samochodu”. Trzy zdania później nieco zniekształciłem tę informację i napisałem o „dewastowaniu samochodu”. W kolejnych akapitach posługiwałem się terminem „kopać w samochód”. Powiedz uczciwie, co sobie wyobrażasz i jakie skojarzenia przychodzą Ci do głowy, gdy słyszysz:

- ktoś „kopie w tylne koło samochodu”;

- ktoś „kopie w samochód”.

Jeśli chodzi o mnie, w pierwszej sytuacji widzę w wyobraźni dokładnie to, co jest napisane: człowieka kopiącego w tylne koło samochodu. W drugiej jednak wyobrażam sobie, że ktoś kopie w drzwi, utrąca lusterka, skacze po masce, jednym słowem: dewastuje. Tak działa powiększenie ramy odniesienia. Czynność kopania została rozszerzona z „koła samochodu” na cały „samochód”, co poskutkowało tym, że komunikat nabrał zupełnie innego znaczenia.

Jednym z problemów, na które narzekają programiści i analitycy, jest to, że klienci nie zdają sobie sprawy z własnych oczekiwań. Nie wiedzą, że zmiana jednej funkcjonalności ma swoje skutki w innej, często w zupełnie innym miejscu procesu biznesowego wspieranego przez system. Szczerze mówiąc, nie jest odpowiedzialnością klienta analiza wpływu zmian na istniejący system. Być może użytkownicy doświadczeni w pracy z systemem będą mieli tę świadomość, lecz lepiej tego nie oczekuj. Analiza wpływu zmian to przede wszystkim Twoje zadanie. Twoim zadaniem jest również pomóc klientowi szerzej spojrzeć na tworzone oprogramowanie. Tu właśnie w sukurs przychodzi powiększanie ram odniesienia (rysunek 8.3).

Rysunek 8.3. Zbyt wąska perspektywa patrzenia może powodować problemy

W tabeli 8.7 znajdziesz fragment konwersacji na temat raportów w systemie ankietowania, w którym zastosowana jest technika powiększania ram odniesienia.

Tabela 8.7. Powiększanie ram odniesienia w akcji podczas konwersacji na temat raportów w systemie ankietowania

Specjalista

Klient

Komentarz

—

W raporcie odpowiedzi powinny być pogrupowane ze względu na typ i rodzaj.

Klient formułuje wymaganie dotyczące modułu raportowania.

Jakie typy odpowiedzi i rodzaje pytań masz na myśli?

—

Wstępne konkretyzowanie wymagania.

—

No, na przykład: pytania otwarte, zamknięte, jednokrotnego wyboru, wielokrotnego wyboru, ze wskaźnikiem albo bez.

—

Okej. Raport jest efektem działania systemu. Tak jak określiłeś wcześniej, raport generowany jest na podstawie danych zebranych za pomocą ankiety. Czyli pierwszym krokiem jest stworzenie ankiety z różnych typów pytań i rodzajów odpowiedzi, potem zebranie danych, a następnie wygenerowanie raportu.

Określmy teraz w szczegółach, jak ma wyglądać raport, a potem będziemy musieli się zastanowić, jak powinna wyglądać ankieta, na podstawie której ten raport będzie można wygenerować.

—

Specjalista powiększa ramę odniesienia poprzez umieszczenie zgłoszonego wymagania w kontekście całego procesu biznesowego: najpierw ankieta, potem akwizycja danych, a następnie raport.

—

Rzeczywiście…

—

Skutecznym sposobem powiększania ramy odniesienia jest umiejscowienie wymagań w kontekście jakiegoś procesu. W zależności od poziomu rozmów mogą to być: proces biznesowy, przepływ danych, proces obsługi żądania przez system. Taki zabieg natychmiastowo sprawia, że rozmówca spogląda na temat z szerszej perspektywy.

Zmniejszanie ramy odniesienia

W poprzednim podrozdziale napisałem następujące zdanie: „Jednym z problemów, na które narzekają programiści i analitycy, jest to, że klienci nie zdają sobie sprawy z własnych oczekiwań”. W jaki sposób rama odniesienia została przemycona w tym zdaniu? Ramą odniesienia są „klienci” — w domyśle „wszyscy”. Gdy teraz analizujesz ten tekst, to taka generalizacja wydaje Ci się oczywistym nadużyciem. Jednak gdy czytałeś o powiększaniu ram, prawdopodobnie wpadłeś w tę pułapkę i tylko ze zrozumieniem pokiwałeś głową, myśląc: „No tak, klienci nie zdają sobie sprawy z konsekwencji własnych oczekiwań”.

Zbyt szeroka rama odniesienia jest niebezpieczna, ponieważ możesz wyciągnąć wnioski, które są prawdziwe dla jednego wymagania, natomiast dla innego już nie. Aby zneutralizować te negatywne skutki, ramę odniesienia należy zmniejszyć. Innymi słowy: musisz odnaleźć te obszary, w których dane informacje mają sens. Istnieją dwa proste sposoby na zmniejszenie ramy odniesienia:

- Zanegowanie kwantyfikatorów ogólnych. Kwantyfikatory ogólne to: wszystkie, każdy, żaden, zawsze, nigdy. Zwracaj uwagę zwłaszcza na kwantyfikatory ogólne formułowane w domyśle (takie jak w przykładzie z klientami), np.:

- Czy na pewno wszyscy klienci nie zdają sobie sprawy z własnych oczekiwań?

- Czy na pewno wszyscy programiści nie myślą biznesowo?

- Czy wszystkie moduły muszą być dostępne przez dwadzieścia cztery godziny na dobę?

- Podzielenie informacji na mniejsze kawałki — przy użyciu konkretyzowania, np.:

- Którzy konkretnie klienci nie zdają sobie sprawy z własnych oczekiwań?

- Którzy konkretnie programiści nie myślą biznesowo i co to oznacza?

- Które moduły muszą być dostępne przez dwadzieścia cztery godziny na dobę?

Analizując przykład w tabeli 8.8, dowiesz się, w jaki sposób zmniejszenie ramy odniesienia może skutkować podjęciem zupełnie różnych działań w projekcie.

Tabela 8.8. Zmniejszanie ram odniesienia w akcji

Komunikat

Zostało tak niewiele czasu, na pewno nie zdążymy wszystkiego zrobić.

Możliwa rama odniesienia

Wszystkie funkcjonalności muszą być wykonane.

Termin zakończenia jest nieprzekraczalny.

Nie wszystkie funkcjonalności są jednakowo ważne.

Z niektórych funkcjonalności można teraz zrezygnować.

Znaczenie dla uczestników projektu

Projekt się nie powiedzie.

Zawiedliśmy.

Możemy skoncentrować się na tym, co aktualnie jest najważniejsze.

Skutek

Spadek motywacji w zespole.

Negocjacje z klientem.

Podsumowanie

W tym rozdziale poznałeś kilka technik rozszerzających podstawowe algorytmy rozmowy. Dowiedziałeś się, jak używać czasu przeszłego, teraźniejszego i przyszłego oraz pytań otwartych i zamkniętych. Poznałeś również bardziej złożone techniki niezbędne w trakcie konwersacji z rozmówcą, który wyraża swoje oczekiwania poprzez zaprzeczenia. Na koniec podałem przykłady zaawansowanych technik konwersacji związanych z używaniem pytań zawężonych oraz ram odniesienia.

[1] Ramy odniesienia to dość obszerny temat. Opisuję go, o ile jest to użyteczne dla głównego wątku tej książki. Czytelnika zainteresowanego szerszym opracowaniem tematu odsyłam do książki Roberta Diltsa Zręczność językowa.

Rozdział 9.
Czy między nami jest chemia?

W poprzednich rozdziałach omawiałem techniki precyzyjnego zadawania pytań, moderowania w celu odnalezienia potrzeb rozmówcy i sprecyzowania jego oczekiwań. Przedstawione techniki mają jedno kluczowe założenie: rozmówca chętnie odpowiada na pytania. Trywialnie, prawda? A co, jeśli rozmowa „się nie klei”?

W tym rozdziale przyjrzymy się kilku działaniom, które można przedsięwziąć, aby poprawić atmosferę — albo, jak mawiają niektórzy, „chemię” — podczas konwersacji.

Mechanika a chemia konwersacji

Wyobraź sobie, że zaczynasz z przełożonym rozmawiać o Twojej podwyżce. Ledwo zdołałeś wypowiedzieć pierwsze zdanie i słyszysz: Po co? Co konkretnie zmotywowało cię do żądania podwyżki? Co się stanie, jeśli jej nie otrzymasz? Jak konkretnie sobie to wyobrażasz?

Czy po takim rozpoczęciu konwersacji masz jeszcze ochotę kontynuować? Co pomyślałbyś o swoim przełożonym? W jaki sposób ta konwersacja rzutowałaby na Twoje postrzeganie firmy jako organizacji? Domyślasz się już, że w przedstawionym przykładzie Twoje „ogólne nastawienie” w trakcie konwersacji byłoby raczej negatywne. Czy potrafisz precyzyjnie powiedzieć dlaczego? Co, Twoim zdaniem, było ważne dla Twojego przełożonego?

Zwróć uwagę, że zadaję pytania o „ogólne nastawienie”, „odbiór rozmowy”, przeżycia, uczucia. Trudno jest ująć w słowa takie rzeczy, zwłaszcza jeśli chcesz być precyzyjny. Oznacza to mówienie o przeżyciach w ten sposób, aby zostać zrozumianym zgodnie ze swą intencją. Gdybym mimo wszystko miał odgadnąć Twoje przeżycia, powiedziałbym, że atmosferę rozmowy na temat podwyżki oceniasz negatywnie, ponieważ przełożony chciał po prostu „załatwić sprawę”. Miałeś wrażenie, że ważniejsze jest dla niego odhaczenie kolejnego punktu z grafiku niż Ty sam. Mam rację?

Pytania przełożonego były precyzyjne, ale brakowało czegoś, co sprawiłoby, że rozmowa byłaby mniej mechaniczna i bardziej ludzka. Brakowało „chemii” między Tobą a przełożonym.

Wszystkie przedstawione do tej pory techniki konwersacji można nazwać mechaniką konwersacji. Zaprzęgnięcie ich do konwersacji da jednoznaczny efekt. Lecz jeśli jednocześnie brak jest chemii w trakcie konwersacji, sama mechanika nie będzie działać. Po prostu rozmówca nie będzie miał ochoty współpracować.

Parafrazowanie

Parafrazowanie jest jedną z najprostszych metod poprawiania chemii w konwersacji. Stosując parafrazowanie, słuchasz uważniej i jesteś skupiony na rozmówcy. Parafrazowanie ma jeszcze jedną bardzo praktyczną konsekwencję — chroni Cię przed błędnym zrozumieniem słów rozmówcy.

Czy zdarzały Ci się sytuacje, w których w trakcie konwersacji nagle przestawałeś rozumieć, co klient próbuje przekazać? Czy zdarzało się, że nagle padała informacja, która burzyła Twój dotychczasowy obraz sytuacji? Dzieje się tak, ponieważ w trakcie konwersacji poczyniłeś jakieś założenia i wytworzyłeś sobie pewne zrozumienie tego, czego oczekuje klient, a potem okazało się, że były to błędne założenia i błędne zrozumienie. Nie łudzę się, że takie sytuacje można całkowicie wyeliminować, w końcu jesteśmy tylko ludźmi. Zamiast tego zastanówmy się, jakiego rodzaju środki prewencji pomogą zmniejszyć częstotliwość ich występowania.

Podczas konwersacji klient dostarcza Ci kolejnych porcji informacji. W rozdziale 2., „Co to znaczy »myśleć biznesowo«?”, była mowa o tym, że pod słowami kryją się znaczenia, a jeszcze głębiej kryją się reguły rządzące pojęciami o określonych znaczeniach. Gdy zaczynasz konwersację, zwłaszcza w obcym Ci temacie, to niewiele wiesz o pojęciach, którymi posługuje się klient. Dopiero zaczniesz to stopniowo odkrywać poprzez zadawanie pytań. Pytanie po pytaniu będziesz budował swoje zrozumienie tego, czego chce klient. Nazwijmy to zrozumienie modelem zagadnienia, na temat którego rozmawiasz. W modelu zagadnienia zawarte będą pojęcia i ich znaczenia, definicje, relacje itd. Ideę powstawania modelu zagadnienia przedstawia rysunek 9.1.

Rysunek 9.1. Powstawanie modelu zagadnienia

Zwróć uwagę, że model jest żywy. Rozbudowuje się i uaktualnia w miarę dostarczania kolejnych wiadomości w trakcie konwersacji. Wcześniej wskazany kłopot wynika stąd, że nagle wpada jakaś informacja, która kompletnie burzy istniejący model zagadnienia. W jaki więc sposób uaktualniać model tak, aby budować dobre i trwałe modele? Należy stosować parafrazowanie.

Czym jest parafraza?

Parafrazować to „wyrazić przekaz rozmówcy swoimi słowami”. W ramce 9.1 znajduje się schemat, według którego możesz parafrazować wypowiedzi klienta.

Ramka 9.1. Schemat parafrazy

Jeśli dobrze cię zrozumiałem, to <WYPOWIEDŹ KLIENTA UJĘTA WŁASNYMI SŁOWAMI>.

Czy pominąłem coś istotnego?

Kilka przykładów:

- Wypowiedź 1. Nie można połączyć ze sobą tych dwu opcji, ponieważ na ekranie robi się wtedy całkowity bałagan.

- Parafraza 1. Jeśli dobrze cię zrozumiałem, to ważna jest tu przejrzystość tego ekranu, żeby użytkownik mógł go używać intuicyjnie. Czy pominąłem coś istotnego?

- Wypowiedź 2. Przyszłoroczne koszty są tylko w siedemdziesięciu procentach pokryte przychodami. Mamy do wyboru albo automatyzację i redukcję kosztów, albo zamykanie całych oddziałów.

- Parafraza 2. Jeśli dobrze cię zrozumiałem, to oczekujesz, że zautomatyzowanie niektórych procesów w organizacji zapewni wzrost przychodów/redukcję kosztów o trzydzieści punktów procentowych. Czy pominąłem coś istotnego?

- Wypowiedź 3. To chyba nie będzie nieopłacalne…

- Parafraza 3. Jeśli dobrze zrozumiałem, wydaje ci się, że jest to dobre posunięcie z finansowego punktu widzenia. Czy pominąłem coś istotnego?

Parafrazowanie może nastręczać trudności w następujących przypadkach:

- Porcje informacji są zbyt duże. Próbujemy sparafrazować rozbudowaną wypowiedź zawierającą zdania wielokrotnie złożone.

- W zdaniu występują wielokrotne negacje. Spójrz jeszcze raz na przykładową wypowiedź 3.: dwa zaprzeczenia w zdaniu powodują, że trzeba chwilę się zastanowić nad tym, co rozmówca miał na myśli. W języku polskim w jednym zdaniu może istnieć wiele negacji, np.: Chyba nie byłbyś sobą, gdybyś stale nie powtarzał, że to nigdy nie będzie tanie, co skutkuje zabawnymi wypowiedziami zawieszającymi mózg oraz trudnością w ich zrozumieniu i sparafrazowaniu.

- Czytamy w myślach. Niemal nawykowo dopowiadamy w myślach to, co naszym zdaniem rozmówca chciał powiedzieć. W związku z tym nie słuchamy dalszej wypowiedzi i parafrazujemy jedynie swoją wypowiedź zamiast wypowiedzi rozmówcy.

Schemat parafrazy ma swój cel

Za pomocą schematu parafrazy przedstawionego w ramce 9.1 przeformułujesz wypowiedź rozmówcy. Jednocześnie ten schemat ma również specyficzną konstrukcję, której celem jest skierowanie uwagi rozmówcy w określoną stronę.

- Jeśli dobrze cię zrozumiałem… Takie rozpoczęcie można nazwać bezpiecznym. W ten sposób wysyłasz jasny sygnał, że jeśli wystąpiły jakieś nieścisłości w przekazywaniu informacji, to stało się to wyłącznie z Twojej winy. Ten sposób rozpoczynania parafrazy stosuj w początkowej fazie zbierania wymagań z nieznanym Ci rozmówcą.

- Czy pominąłem coś istotnego? W ten sposób sugerujesz rozmówcy, aby jeszcze raz zastanowił się, czy w przekazanych przed chwilą informacjach nie pominął jakiegoś istotnego detalu. Gdy sesja zbierania wymagań trwa długo, ludzie się męczą. Wtedy mają tendencję do automatycznego potakiwania i akceptowania parafrazy. Zakończenie wypowiedzi tym pytaniem sprawia, że muszą wykonać jeszcze jeden wysiłek i przeanalizować, czy parafraza była właściwa, czy nie.

Cytowanie to nie parafrazowanie

Pamiętaj, że w parafrazie chodzi o przeformułowanie wypowiedzi i wyrażenie jej własnymi słowami. Tylko w ten sposób możesz upewnić się, czy dobrze ją zrozumiałeś. Poniższy dialog nie jest parafrazą.

Klient: Chciałbym dodać moduł kontrolingu.

Specjalista: Rozumiem, że chciałbyś dodać moduł kontrolingu. Czy pominąłem coś istotnego?

Klient: Chciałbym również zmienić kilka raportów.

Specjalista: Rozumiem, że chciałbyś również zmienić kilka raportów. Czy pominąłem coś istotnego?

To nie jest parafrazowanie, lecz cytowanie. Świetnie sprawdza się w sądowym stenogramie, lecz bardzo słabo weryfikuje poprawność Twojego modelu zagadnienia.

Kiedy parafrazować?

Wiele osób zastanawia się, kiedy właściwie należy parafrazować, jakie objawy na to wskazują. Najczęściej zaczynamy parafrazować, gdy już kompletnie nie rozumiemy, co klient próbuje przekazać. Zazwyczaj rozwija się wtedy długi poboczny wątek konwersacji. Powinieneś parafrazować po każdej nowej informacji usłyszanej od rozmówcy. Gdy tylko dowiesz się czegoś nowego, natychmiast użyj parafrazy. Dlaczego? Dlatego, że skuteczność zbierania wymagań zależy wprost od tego, jak dobry model zagadnienia wytworzysz. Im lepszy i stabilniejszy model, tym rzadziej może się zdarzyć sytuacja, że nowa informacja wywróci go do góry nogami. Z tego powodu w Twoim interesie leży weryfikowanie, na ile nowa informacja pasuje do obecnego modelu zagadnienia, oraz aktualizowanie go w razie potrzeby.

Parafrazuj po każdej nowej informacji usłyszanej od rozmówcy.

Rysunek 9.2 przedstawia omówiony wyżej cykl parafrazowania.

Rysunek 9.2. Cykl parafrazowania

Czy to nie będzie brzmieć dziwnie?

To pytanie zadaje właściwie każdy. Czy to nie będzie brzmieć dziwnie, gdy wciąż będę powtarzał: Jeśli dobrze zrozumiałem… Czy pominąłem coś istotnego? Czy rozmówca nie uzna, że coś ze mną nie tak? Czy się nie zniecierpliwi? Pamiętaj o tym, że:

- Z pewnością będzie brzmieć dziwnie, jeśli będziesz cytować zamiast parafrazować. Wystrzegaj się tego.

- W ramce 9.1 znajduje się typowy schemat parafrazy. W trakcie konwersacji w potocznym języku możesz używać mniej formalnych zwrotów. Użyj wyobraźni, aby gładko wpasować się w wypowiedź rozmówcy, np.:

- Aha, a więc chodzi o to… Dobrze zrozumiałem?

- Czyli to ma być… Zgadza się?

- A więc… Tak?

- W końcu parafrazowania w ogóle nie słychać. Naprawdę! Gdy z kimś rozmawiasz i angażujesz się w konwersację, to Twoja uwaga skupiona jest na jej treści, na odpowiedzi na zadawane pytania, a nie na tym, czy i jak często rozmówca używa parafrazy. Wręcz przeciwnie — brak reakcji z drugiej strony wzbudza podejrzenia. Spróbuj rozmawiać z kimś, kto tylko patrzy Ci w oczy i się nie odzywa. Przysłuchaj się z boku jakiejś rozmowie i zauważ, że ludzie cały czas parafrazują.

Technika pozytywnej intencji

Konwersacja na temat wymagań ma cechy każdej zwyczajnej rozmowy. Te mniej przyjemne również. Ludzie biorący udział w sesji przychodzą tam z całym swoim bagażem doświadczeń, wiedzy, umiejętności, emocji i również frustracji. Czasem możesz usłyszeć od zniecierpliwionego klienta, że niepotrzebnie zawracasz mu głowę, że nie ma dla Ciebie czasu albo nawet, że jesteś niekompetentny. Co Twoim zdaniem powinieneś zrobić w takiej sytuacji? Udać, że nie słyszałeś, i kontynuować zbieranie wymagań? Zripostować? Obrazić się i wyjść? Takie zachowania z pewnością popsują chemię konwersacji.

Czym jest intencja?

Co byś pomyślał, gdybym przeglądając Twój kod i z uznaniem kiwając głową, powiedział: Jesteś dobrym programistą? Być może pomyślałbyś, że cenię Twoje umiejętności albo że mi zaimponowałeś, albo że czegoś od Ciebie chcę. Zgadza się? Zmieńmy nieco scenerię. Wyobraź sobie teraz, że patrzę na Twój kod, przewracam oczami, a następnie głośno wzdychając, mówię kpiącym tonem: Jesteś dobrym programistą. Co teraz myślisz? Być może doszedłeś do wniosku, że się z Ciebie śmieję albo że jestem złośliwy.

Jak to możliwe, że ten sam komunikat wypowiedziany w dwóch różnych sytuacjach spowodował u Ciebie dwie różne reakcje? Z pewnością odpowiesz, że istotna była moja mimika, ton głosu itd. Zgadza się, lecz przeanalizujmy, jaki mechanizm zadziałał.

1. Ja powiedziałem: Jesteś dobrym programistą.

2. Ty przeanalizowałeś kontekst: ton głosu, mimikę i inne informacje na mój temat.

3. Następnie zastanowiłeś się, co chciałem Ci przez to przekazać, i w stosowny sposób zareagowałeś. Inaczej zareagowałeś, gdy doszedłeś do wniosku, że cenię Twoje umiejętności, a inaczej, gdy uznałeś, że zachowuję się złośliwie. Komunikat był wciąż ten sam, lecz kontekst sytuacyjny sprawił, że przypisałeś mu różne intencje, a zatem różne były Twoje reakcje na ten komunikat.

Ramka 9.2. Pytania o intencję

Intencja to Twoja odpowiedź na pytania:

- Po co on mi to powiedział?

- Po co on to zrobił?

- Co on chciał mi przez to przekazać?

Cóż za paranoja! Reagujemy nie na to, co powiedział rozmówca, lecz na to, co naszym zdaniem chciał powiedzieć. Masz rację, to brzmi naprawdę komicznie i bezsensownie, lecz tak właśnie zazwyczaj funkcjonujemy. Daje to pewien pogląd na to, jak trudne jest zwyczajne słuchanie, jak trudno oddzielić to, co rzeczywiście zostało powiedziane, od tego, jakie nadaliśmy temu czemuś znaczenie.

Schemat działania intencji przedstawia rysunek 9.3.

Rysunek 9.3. Mechanizm przypisywania rozmówcy intencji

Jak działa pozytywna intencja?

Skoro już mechanizm intencji wpisany jest w komunikację międzyludzką, zapanujmy nad nim i zróbmy z niego użytek. Technika pozytywnej intencji polega na tym, że gdy usłyszysz komunikat, który oględnie mówiąc, jest trudny, załóż, że rozmówca miał pozytywną intencję. Żeby odnaleźć pozytywną intencję, musisz zmienić pytania, które sobie zadajesz po usłyszeniu tego, co powiedział rozmówca. Zamień pytania z ramki 9.2 na pytania z ramki 9.3.

Ramka 9.3. Pytania o pozytywną intencję

- Co dobrego on chciał mi przekazać?

- Czego dobrego on chciał dla mnie?

- W czym on chciał mi pomóc, gdy to mówił?

- Do jakiej zmiany on chciał mnie zachęcić, mówiąc mi to, co powiedział?

Zadając sobie pytania o pozytywną intencję, kierujesz własną uwagę w stronę bardziej konstruktywnych zachowań niż angażowanie się w konflikt. Pozytywna intencja ma szczególne zastosowanie podczas radzenia sobie z trudnymi komunikatami, czyli takimi, które w normalnej sytuacji sprawiłyby, że atmosfera stałaby się napięta. Ponieważ w trakcie sesji z klientem/użytkownikiem Twoim nadrzędnym celem jest zebranie wymagań, musisz umiejętnie zarządzać komunikacją, tak aby przypadkowe trudności nie uniemożliwiły Ci pracy.

Aby zneutralizować trudny komunikat, możesz posłużyć się schematem zamieszczonym w ramce 9.4.

Ramka 9.4. Schemat techniki pozytywnej intencji

Rozumiem, że <POZYTYWNA INTENCJA>.

Jak zatem mogę <PYTANIE KONKRETYZUJĄCE Z ZAŁOŻENIEM POZYTYWNEJ INTENCJI>?

Zobacz, jak działa technika pozytywnej intencji, na przykładach z tabeli 9.1.

Tabela 9.1. Technika pozytywnej intencji w akcji

Komunikat

Możliwa pozytywna intencja

Możliwa odpowiedź

Przeglądałem twój raport. Jest beznadziejny.

Chce, żebym nauczył się lepiej pisać raporty.

Rozumiem, że chcesz, żebym nauczył się lepiej pisać raporty. Co powinienem zrobić inaczej następnym razem?

Czy ty zawsze musisz się tak spóźniać?

Zależy mu na tym, żebym efektywnie wykorzystywał mój i jego czas.

Rozumiem, że chcesz, abym lepiej wykorzystywał mój i twój czas. Jak możemy zaplanować naszą współpracę, aby uniezależnić się nieco od tak częstych spotkań?

Nie mam czasu na głupoty, którymi wciąż zawracasz mi głowę!

Chce, abym był bardziej samodzielny, bo wtedy będzie mógł przydzielać mi bardziej odpowiedzialne zadania.

Rozumiem, że chcesz, abym był bardziej samodzielny. Co konkretnie powinienem zrobić, abyś mógł mi przydzielać bardziej odpowiedzialne zadania?

Zwróć uwagę, że dzięki zastosowaniu pozytywnej intencji całkowicie zmieniasz kierunek fragmentu konwersacji. Zamiast spierać się o jakąś trudną kwestię, koncentrujesz swoją i rozmówcy uwagę na jej rozwiązaniu. Oczywiście, tak jak w przypadku parafrazy, zadanie z ramki 9.4 przedstawia jedynie schemat wypowiedzi. Nie musisz zawsze rozpoczynać jej od Rozumiem, że…

Czy pozytywna intencja rzeczywiście istnieje?

Czy ta konkretna osoba w tej konkretnej sytuacji, mówiąc to konkretne zadanie, miała rzeczywiście pozytywną intencję? Nigdy nie będziesz mieć co do tego pewności. Może tak, a może wprost przeciwnie: ktoś miał bardzo, bardzo negatywną intencję. Rzecz w tym, że pozytywna intencja to nie fakt, lecz założenie. Nie można więc rozważać jej w kategoriach prawda-nieprawda, bo to nie ten poziom rozumowania. Pozytywna intencja to tylko narzędzie, pewien trik, który pomaga wybrnąć z patowej sytuacji w trakcie konwersacji. Trudno doszukiwać się pozytywnej intencji w chwili, gdy nocą na wyludnionej ulicy podejrzanie wyglądający jegomość zagaduje Cię zaczepnie bełkotliwym głosem: Masz pan komórkie? To bardzo zły moment na trenowanie pozytywnej intencji. Zamiast jej szukać, czym prędzej bierz nogi za pas! Jednak podczas sesji z ważnym klientem, gdy prace są mocno zaawansowane, może zdarzyć się trudny komunikat. Wtedy nie opłaca się ani uciekać, ani się kłócić lub co gorsza obrażać. Zamiast tego znajdź pozytywną intencję, zneutralizuj komunikat i pokieruj konwersacją tak, aby pomogło to projektowi, nad którym Ty i Twój klient razem pracujecie.

Technika pozytywnej intencji to tylko narzędzie, które wykorzystujesz wtedy, gdy uważasz, że ma to sens. Gdy nie ma sensu, wcale nie musisz tego robić.

Pozytywna intencja a emocje

Może Cię zaskoczę, ale technika pozytywnej intencji to nie remedium na negatywne emocje. Trudny komunikat, który usłyszysz, prawdopodobnie wyzwoli w Tobie jakieś emocje. Możesz być zaskoczony, zdenerwowany, sfrustrowany, poirytowany czy nawet wściekły. Nawet gdy pamiętasz o odnajdywaniu pozytywnej intencji, bądź przygotowany, że takie emocje mogą się pojawić. Jednak często i regularnie praktykowana technika pozytywnej intencji sprawia, że w podobnych sytuacjach dzieje się coś zaskakującego. Nagle uświadamiasz sobie, że Ty i Twoje emocje to nie to samo, że istnieją one jakby „obok Ciebie”. Odnajdujesz w sobie zdolność do działania niezależnie od nich.

Przejmowanie kierunku konwersacji

Niewiele rzeczy tak marnuje czas przeznaczony na zbieranie wymagań jak rozmowa nie na temat. Gdy czytasz tę książkę i zastanawiasz się, jak można rozmawiać nie na temat, wydaje Ci się to prawie niemożliwe. Wiele rzeczy wydaje się nam niemożliwych, gdy patrzymy na nie z pozycji obserwatora. W chwili gdy stajemy się uczestnikami określonych sytuacji, kompletnie zmienia się nasza percepcja. Podczas konwersacji z klientem zadajesz pytania i odpowiadasz na pytania, niektóre z nich Cię zaskakują, nad niektórymi musisz się zastanowić — jesteś aktywnym uczestnikiem.

Konwersacja to bardzo dynamiczny proces. Sterowana jest wypowiedziami rozmówców i skojarzeniami, które one budzą. W takiej sytuacji bardzo łatwo zdryfować z głównego kierunku konwersacji, rozmawiać o sprawach mniej istotnych, traktować zagadnienia zbyt pobieżnie czy zbyt szczegółowo.

Model struktury konwersacji jest mapą, dzięki której możesz weryfikować, czy kierunek jest właściwy. Potrzebujesz jeszcze mechanizmu, za pomocą którego będziesz zawracał konwersację na właściwe tory. Bo co zrobić, gdy klient wciąż zmienia temat, rozpoczyna nowe wątki albo unika skonkretyzowania zagadnienia? Z jednej strony, skoro to robi, to być może chciałby przekazać coś ważnego. Z drugiej jednak, to Twoim zadaniem jest kierowanie przebiegiem spotkania, bo to Ty ostatecznie będziesz odpowiedzialny za to, żeby dostarczone oprogramowanie spełniało oczekiwania klienta. Możesz oczywiście uciąć krótkim: Teraz o tym nie będziemy rozmawiać, lecz może się to skończyć irytacją klienta, ponieważ stwierdzi, że go nie słuchasz. Trzeba to zrobić bardziej dyplomatycznie.

Kiedy przejmować kierunek konwersacji?

Przejmowanie kierunku konwersacji pozwala na płynne przeniesienie uwagi klienta na ten element w strukturze konwersacji, który w danym momencie uznasz za najbardziej istotny. Celem tej techniki jest skierowanie spotkania na odpowiadające Ci tory, przy jednoczesnym zadbaniu o komfort klienta. Stosuj ją w następujących sytuacjach:

- gdy chcesz porozmawiać o czymś innym, niż sugeruje klient;

- gdy klient „skacze” z tematu na temat;

- gdy chcesz zacząć rozmawiać o rozwiązaniu, zamiast skupiać się na problemie.

Schemat działania

Przejęcie kierunku konwersacji można podzielić na trzy kroki:

1. Dopasowanie — tutaj musisz upewnić rozmówcę, że to, co mówi, jest istotne i zostanie wzięte pod uwagę w dalszym toku konwersacji.

2. Przejęcie — teraz nadaj konwersacji pożądany kierunek.

3. Prowadzenie — następnie poprowadź ją we wskazanym kierunku poprzez zadanie pytania.

W ramce 9.5 znajduje się schemat, którego możesz używać.

Ramka 9.5. Schemat przejęcia kierunku konwersacji

1. Dopasowanie — Rozumiem, że ważna jest dla ciebie <PARAFRAZA ALBO POZYTYWNA INTENCJA>. Na pewno się tym zajmiemy,

2. Przejęcie — teraz jednak chciałbym porozmawiać o <TEMAT, NA KTÓRY CHCESZ PRZEKIEROWAĆ KONWERSACJĘ>,

3. Prowadzenie — a zatem <PYTANIE O POŻĄDANY WĄTEK KONWERSACJI>.

Podobnie jak w przypadku technik parafrazy i pozytywnej intencji ramka 9.5 przedstawia tylko pewien schemat, który może być stosowany w tak wielu wariacjach, na jakie tylko pozwala Ci zręczność językowa.

Wyobraź sobie następującą scenę. Rozmawiasz z klientem na temat złożonego modułu w systemie zarządzania sieciami telekomunikacyjnymi. Główny punkt ciężkości kładziony jest na to, aby system był przygotowany na zmianę protokołu komunikacyjnego, poprzez który komunikują się i są zarządzane poszczególne urządzenia. Klient jednak co chwila wytrwale kieruje konwersację na sprawy związane z wyglądem, intuicyjnością i ergonomią interfejsu użytkownika.

W tabeli 9.2 znajdziesz kilka przykładów przekierowania konwersacji z wykorzystaniem parafrazy albo pozytywnej intencji.

Tabela 9.2. Przejmowanie kierunku konwersacji w akcji

Parafraza

Pozytywna intencja

Przejęcie kierunku konwersacji

Łatwość użytkowania przez osobę korzystającą z oprogramowania

—

Dopasowanie

Oczywiście, że łatwość użytkowania przez osobę korzystającą z tego oprogramowania ma kluczowe znaczenie i szczegółowo zajmiemy się tym tematem,

Przejęcie

w tym momencie chciałbym jeszcze mieć całkowitą jasność na temat twoich oczekiwań co do protokołów zarządzania sieciami wspieranych przez ten system.

Prowadzenie

Jakie jeszcze protokoły, prócz SNMP i NetConf, muszą być zaimplementowane?

—

On chce dużo powiedzieć, żeby spotkanie było efektywniejsze.

Dopasowanie

Świetnie, że mówisz o wszystkich swoich przemyśleniach. Dzięki tylu informacjom nasze spotkanie będzie efektywniejsze.

Przejęcie

Oprócz interfejsu użytkownika chciałbym skupić się również na ważnej dla ciebie sprawie, czyli protokołach zarządzania sieciami wspieranych przez ten system.

Prowadzenie

Przypomnij, proszę, jakich protokołów teraz używacie, a jakich planujecie używać?

Zwróć uwagę, że trzeba trochę się „nagadać”, żeby gładko przejąć kierunek konwersacji. Nie wystarczy treściwe „tak” albo „nie”. Komunikowanie się jest złożonym procesem i zarządzanie nim wymaga wprawy i ćwiczeń.

Chemia konwersacji w duchu Nonviolent Communication[1]

Nonviolent Communication (NVC) to podejście pomagające w dbaniu o chemię w trakcie konwersacji. Z technicznego punktu widzenia NVC to metoda prowadzenia dialogu. Jednak prócz konkretnych technik postuluje taki zestaw założeń i przekonań, że można myśleć o NVC jak o filozofii traktowania drugiego człowieka, gdzie medium jest przede wszystkim komunikacja werbalna.

Z praktycznych przyczyn, przybliżając NVC, ograniczę się do dwóch najistotniejszych, moim zdaniem, spraw:

- podania minimum informacji niezbędnych do samodzielnego praktykowania NVC;

- wyjaśnienia nieporozumień na temat NVC, z którymi bardzo często spotykam się podczas konferencji związanych z IT.

Więcej informacji znajdziesz w książce Marshalla Rosenberga Porozumienie bez przemocy. Natomiast po umiejętności odsyłam Cię na warsztaty NVC. Zdecydowanie polecam trening prowadzony przez Zofię Schacht-Petersen[2].

Naucz się obserwować

— Wkurzasz mnie!

Jaka jest Twoja pierwsza reakcja na powyższy komunikat? Zdziwienie? Złość? Irytacja? Dysponując np. techniką pozytywnej intencji, mógłbyś odpowiedzieć:

— Widzę, że chciałbyś, abym zachowywał się inaczej… Może dasz mi jakąś podpowiedź?

Sądzę, że to byłaby właściwa reakcja w tej sytuacji. NVC definiuje natomiast bardziej precyzyjne i elastyczne narzędzie do nawiązania kontaktu z rozmówcą, który wypowiada taki komunikat.

Na początek zastanów się, co spowodowało, że rozmówca wykrzyknął: Wkurzasz mnie! Jeśli przychodzą Ci do głowy odpowiedzi w stylu: zrobiłem coś, co go wkurzyło, zirytowałem go, spóźniłem się, to zatrzymaj się. Posługujesz się zbyt dużymi uogólnieniami i wziąłeś wypowiedź do siebie ☺.

Wyobraź sobie, że patrzysz na konwersację z tym rozmówcą nieco z boku — jak naukowiec obserwujący rój mrówek w terrarium. Dostrzeż, jaka była ścieżka od jakiegoś rzeczywistego wydarzenia do momentu, w którym rozmówca wykrzyknął: Wkurzasz mnie!

Model komunikacji w NVC definiuje, że na początku jest obserwacja. Obserwacja to zdania zaczynające się od:

- widzę…, widziałem…,

- słyszę…, słyszałem…,

- mówię…, powiedziałem…,

- robię (fizycznie)…, robiłem (fizycznie)…

Co więc Twój rozmówca mógł zrobić/usłyszeć/powiedzieć/zobaczyć, że wykrzyczał: Wkurzasz mnie? Mógł np.:

- zobaczyć, że przyszedłeś na spotkanie pięć minut po umówionym czasie;

- usłyszeć, że nazwałeś jego pomysł bezsensownym.

Z punktu widzenia NVC rozmówca z całą pewnością nie mógł:

- zobaczyć, że się spóźniłeś na spotkanie;

- usłyszeć, jak krytykujesz jego pomysły.

„Spóźniać się” i „krytykować” to nie są obserwacje, lecz oceny. „Przybycie pięć minut po umówionym czasie” jest często nazywane spóźnianiem się, tak jak „nazwanie pomysłu bezsensownym” bywa określane jako krytykowanie. Lecz te skrótowe etykiety w żaden sposób nie opisują tego, co się faktycznie (najczęściej fizycznie) wydarzyło. Dlatego w modelu NVC zaleca się obserwowanie zamiast oceniania.

Rozpoznaj potrzebę ludzką

— Wkurzasz mnie!

Wiesz już, że zanim rozmówca wykrzyknął powyższe zdanie:

- zobaczył, że przyszedłeś na spotkanie pięć minut po umówionym czasie;

- lub usłyszał, że nazwałeś jego pomysł bezsensownym.

Kontynuujmy nasze śledztwo. Co się stało zaraz po tym, gdy rozmówca zaobserwował wymienione sytuacje?

Tu dochodzimy do sedna NVC, jakim są potrzeby. Potrzeby w NVC są uniwersalne, to znaczy wspólne dla wszystkich ludzi. Przyjrzyj się potrzebom zamieszczonym w tabeli 9.3. Są one bliskie każdemu człowiekowi na świecie. Marshall Rosenberg pisze, że potrzeby są tym, co jest w nas żywe. Z powodu uniwersalności tych potrzeb oraz dla odróżnienia ich od potrzeb biznesowych, o których była mowa wcześniej, nazywam je potrzebami ludzkimi.

Tabela 9.3. Potrzeby ludzkie według NVC (za Rosenbergiem)

- Swoboda wyboru marzeń, celów, wartości

- Swoboda wyboru planów

- Świętowanie rozwoju

- Opłakiwanie strat

- Autentyczność

- Twórczość

- Sens

- Poczucie osobistej wartości

- Akceptacja

- Uznanie

- Bliskość

- Wspólnota

- Znaczenie

- Empatia

- Uczciwość

- Miłość

- Otucha

- Wsparcie

- Szacunek

- Zaufanie

- Zrozumienie

- Bawienie się

- Śmiech

- Piękno

- Harmonia

- Natchnienie

- Porządek

- Pokój

- Odpoczynek

- Schronienie

- Pożywienie

NVC postrzega nieefektywną komunikację, konflikty, negatywne uczucia i zachowania jako bezpośredni efekt niezaspokojenia wymienionych wyżej potrzeb ludzkich. Istotą NVC jest umiejętność rozpoznawania i nazywania potrzeb swoich i innych oraz mówienia o nich, ponieważ wtedy zamiast nawzajem wytykać sobie błędy, toczymy rozmowę o tym, co cenimy najbardziej — o naszych ludzkich potrzebach.

Mówienie:

- potrzebuję spokoju, jestem zmęczony;

- potrzebuję wsparcia w najbliższym czasie;

- potrzebuję zrozumieć sens tego projektu

jest jak najbardziej mówieniem o potrzebach. Natomiast:

- potrzebuję, żebyś stąd poszedł;

- potrzebuję dokończyć ten projekt;

- potrzebuję zmienić pracę;

- daj mi spokój;

- ten projekt jest bez sensu

nie jest mówieniem o potrzebach. W przytoczonych wypowiedziach mowa o konkretnych rozwiązaniach: żebyś stąd poszedł, dokończyć ten projekt, zmienić pracę, które mają zaspokoić jakieś potrzeby. Jednak same potrzeby nie zostały jeszcze nazwane.

Naucz się nazywać uczucia

— Wkurzasz mnie!

Wiesz już, że zanim rozmówca wykrzyknął powyższe zdanie:

- zobaczył, że przyszedłeś na spotkanie pięć minut po umówionym czasie;

- lub usłyszał, że nazwałeś jego pomysł bezsensownym;

co sprawiło, że któraś z ważnych dla niego potrzeb ludzkich — załóżmy, że była to potrzeba porządku — nie została zaspokojona.

W tym momencie w Twoim rozmówcy pojawiło się coś, co bardzo go zaniepokoiło — nieprzyjemne uczucie. Uczucia biorą się z zaspokojenia albo niezaspokojenia potrzeb ludzkich. Z pewnością domyślasz się, że zaspokojenie potrzeby skutkuje przyjemnym uczuciem, natomiast efektem braku zaspokojenia potrzeb jest uczucie nieprzyjemne.

Uczucia działają bardzo szybko, wyzwalają w ludziach reakcje, których oni czasem świadomie nie kontrolują[3]. Technicznie rzecz biorąc, najpierw pojawia się emocja, która jest procesem psychicznym powodującym określone reakcje fizjologiczne w organizmie, takie jak wyrzut hormonów czy skurcz mięśni. Część mózgu odpowiedzialna za przekazywanie poleceń do ciała, aby zareagowało w wyniku bodźca emocjonalnego, jest ewolucyjnie bardzo stara. Odpowiada za podstawowe reakcje związane z przetrwaniem: uciekaj albo walcz. Musi więc działać bardzo szybko.

Istnieje jednak dość prosta (koncepcyjnie) metoda na zyskanie nieco czasu pomiędzy pojawieniem się bodźca a reakcją (emocjonalną). Ogólnie chodzi o uświadomienie sobie emocji. Co to znaczy? Jedynie to, że musisz „przepuścić” informację o bodźcu emocjonalnym, która wędruje od Twojego mózgu do reszty ciała, przez nieco dłuższą ścieżkę, aby zyskać trochę na czasie. Najłatwiej to zrobić, angażując ośrodek myślenia abstrakcyjnego oraz ośrodek mowy. Oba te obszary znajdują się w korze mózgowej, ewolucyjnie późno wykształconej i działającej wolniej niż część odpowiedzialna za emocje.

Co więc masz zrobić? Nazwać to co, przeżywasz (myślenie abstrakcyjne), mówiąc to na głos (ośrodek mowy). Aby przygotować Cię do tego brzemiennego w skutki zadania, nazwy uczuć zamieściłem w tabeli 9.4. Zapoznaj się z nią teraz, aby mieć więcej nazw do dyspozycji niż tylko dobrze i niedobrze.

Tabela 9.4. Uczucia według NVC (za Rosenbergiem)

- Błogość

- Przyjemność

- Odprężenie

- Poruszenie

- Rozbawienie

- Rozczulenie

- Rozweselenie

- Skoncentrowanie

- Spełnienie

- Swoboda

- Uniesienie

- Urzeczenie

- Wrażliwość

- Zachwyt

- Zaskoczenie

- Zdumienie

- Zrelaksowanie

- Zainspirowanie

- Zaintrygowanie

- Zaciekawienie

- Ekscytacja

- Duma

- Bierność

- Ból

- Niechęć

- Lęk

- Niewygoda

- Furia

- Niepewność

- Nieufność

- Przygnębienie

- Gniew

- Złość

- Obawa

- Obojętność

- Ociężałość

- Bezsilność

- Senność

- Frustracja

- Spięcie

- Przytłoczenie

- Przybicie

- Niezdecydowanie

- Przykrość

- Zdziwienie

Być może doszedłeś do wniosku, że nasz rozmówca krzycząc: Wkurzasz mnie!, zrobił właśnie to, o czym rozmawiamy — nazwał swoje uczucie „wkurzenia”. Nic bardziej mylnego! Istnieje kolosalna różnica pomiędzy”

— Wkurzasz mnie!

a

— Czuję wkurzenie!

W pierwszej wypowiedzi rozmówca czyni Cię odpowiedzialnym za jego własne uczucie. A przecież ono powstaje w nim samym z powodu niezaspokojonych potrzeb. Wkurzasz mnie! nie jest nazwaniem uczucia, lecz oskarżeniem. Opisywaniem uczuć byłyby zatem następujące wypowiedzi:

- Czuję złość!

- Czuję radość!

- Czuję frustrację!

- Czuję się poruszony!

Rozmówca mógłby jeszcze powiedzieć np.:

- Czuję, że mnie nie rozumiesz!

- Czuję się jak w pułapce!

- Czuję, że się wścieknę!

Są to wypowiedzi z potocznego języka. Jednocześnie nie opisują one uczuć, lecz stanowią zawoalowaną ocenę odpowiednio: rozmówcy ([ty] mnie nie rozumiesz), sytuacji (jak w pułapce) oraz opis przyszłego działania (się wścieknę). NVC nazywa takie wyrażenia poczuciami. Nie są to nazwane stany emocjonalne, lecz zabarwione emocjonalnie wypowiedzi, w których akurat zabłąkało się słowo „czuję”.

Pamiętaj, że po słowie „czuję” nie ma żadnego „się jak”, „że”.

Po słowie „czuję” następuje jedynie nazwa jednego lub wielu uczuć (tabela 9.4).

Wtedy rzeczywiście nazywasz to, co przeżywasz.

Model komunikacji według NVC

— Wkurzasz mnie!

Wiesz już, że zanim rozmówca wykrzyknął powyższe zdanie:

- zobaczył, że przyszedłeś na spotkanie pięć minut po umówionym czasie;

- lub usłyszał, że nazwałeś jego pomysł bezsensownym;

co sprawiło, że któraś z ważnych dla niego potrzeb ludzkich — załóżmy, że była to potrzeba porządku — nie została zaspokojona.

Poczuł wtedy złość, frustrację albo gniew, która sprawiła, że wykrzyknął:

— Wkurzasz mnie!

Model komunikacji według NVC[4] uwzględnia cały proces: od dostrzeżenia tego, co się dzieje w rzeczywistości, poprzez pojawiające się uczucia do wyrażenia potrzeb, które są niezaspokojone. W tym procesie chodzi o nawiązanie kontaktu z rozmówcą i ewentualną prośbę o zmianę zachowania. Model ten wygląda następująco:

1. Kiedy widzę/widzisz…/słyszę… <OBSERWACJA>,

2. czuję/czujesz… <UCZUCIE>,

3. bo potrzebuję/potrzebujesz… <POTRZEBA>.

4. Czy mógłbyś <PROŚBA O ZMIANĘ OBSERWOWANEGO ZACHOWANIA>.

W powyższym schemacie zawarte są dwie wersje modelu NVC:

- Gdy jakaś sytuacja sprawia, że moje potrzeby nie są zaspokojone, odczuwam w związku z tym nieprzyjemne uczucia i chcę prosić kogoś o zmianę zachowania.

- Gdy widzę u kogoś oznaki nieprzyjemnych uczuć, staram się nazwać te uczucia wraz z potrzebami, które za nimi stoją, a następnie zaproponować jakieś działanie z mojej strony.

Przeanalizuj konwersację w tabeli 9.5, aby uchwycić działanie tego modelu w praktyce.

Tabela 9.5. Model NVC w akcji

Klient

Specjalista

Komentarz

O, a dlaczego tu nie ma komunikatu o błędzie?

—

—

—

Chcieliśmy pokazać ideę, w ciągu tygodnia dodamy ładne ekrany.

—

Przecież ja tego nie mogę pokazać… Wiesz co, za każdym razem pokazujecie mi jakieś niedoróbki. Naprawdę mnie wkurzacie!

—

Klient wyraża swoje uczucia. Robi to w taki sposób, że nazywa niedoróbkami efekty pracy specjalistów oraz czyni ich odpowiedzialnymi za jego własne uczucia (wkurzacie mnie).

—

Gdy mówisz, że cię wkurzamy, to czujesz złość, bo potrzeba ci pewności…

Najpierw zrozum potrzeby rozmówcy, dopiero potem wyrażaj swoje.

Specjalista respektując powyższą wytyczną, zaczyna stosować model komunikacji NVC. Stara się odgadnąć potrzebę. Może chodzi o pewność?

Zwróć uwagę, że specjalista jest wyczulony na to, aby mówić o obserwacji (mówisz, że cię wkurzamy), i nie myli obserwacji z ocenami (gdy nas oskarżasz, gdy wytrząsasz się na nas).

Tak, jestem zły!

—

Okazuje się, że specjalista trafnie nazwał uczucia klienta.

Klient nie odnosi się wprost do potrzeby. Jest ona tutaj potwierdzeniem pozytywnej intencji stojącej za nieprzyjemnym uczuciem…

—

…i wolałbyś, aby nasze rozwiązania były gotowe do pokazania klientowi?

…i stanowi pomost do wyrażonej w kolejnym kroku sugestii zmiany zachowania.

No, o to mi właśnie chodzi.

—

Klient potwierdza: tak, takiej zmiany zachowania oczekuje.

—

Okej, rozumiem. Wiesz, gdy mówisz o naszych ekranach „niedoróbki”, to czuję smutek, bo potrzebuję uznania. Może następnym razem mógłbyś po prostu powiedzieć, że tego nie akceptujesz, a my to naprawimy i tyle?

Dopiero teraz specjalista mówi o swoich potrzebach i uczuciach, a następnie prosi klienta o zmianę zachowania.

Pomyślę nad tym…

—

Ponieważ potrzeby klienta zostały uznane, skłonny jest on również uznać potrzeby specjalisty.

Jeśli myślisz sobie teraz, że NVC jest dziwne, sztuczne i zastanawiasz się, po co w ogóle miałbyś mówić w taki sposób, to zanim odłożysz tę książkę, przeczytaj kolejny podrozdział. Koniecznie!

Czy ja muszę tak dziwnie mówić?

Nie, nie musisz. Nawet nie powinieneś, bo mówienie słowo w słowo według modelu NVC dziwi większość rozmówców, a po jakimś czasie zaczyna ich złościć. Po co to więc jest? Mniej więcej po to samo co code retreat i pisanie kodu bez użycia if-ów[5]. To trening. W codziennej pracy raczej tego nie zrobisz, ale unikając if-ów, uczysz się stosować polimorfizm[6].

Model NVC to tylko model. Trenujesz go po to, aby mieć go wewnątrz siebie. Tak jest! Trenuj mówienie z użyciem modelu NVC po to, aby zinternalizować ten model w swoim myśleniu, w swoim przetwarzaniu i analizowaniu komunikatów od rozmówców. Model pomoże Ci uporządkować to, co słyszysz.

Musisz dokładnie wiedzieć, co przekazuje Twój rozmówca, co jest obserwacją, co oceną, co uczuciem, a co potrzebą. Model jest po to, aby precyzyjnie zdekomponować nieprecyzyjny i nacechowany emocjonalnie komunikat, a następnie odpowiednio zareagować w celu nawiązania kontaktu z rozmówcą.

Miej model w myślach, ale nie wypowiadaj go na głos.

Skoro mam nie mówić głośno, to jak mam mówić — chcesz być może zapytać. Według modelu NVC analizujesz to, co mówi i robi rozmówca, a w rozmowie precyzyjnie odnosisz się do uczuć, potrzeb i obserwacji, stosując coś, co niektórzy nazywają ulicznym NVC. Przeanalizuj konwersację z tabeli 9.6.

Tabela 9.6. Uliczne NVC w praktyce

Klient

Specjalista

Komentarz

O, a dlaczego tu nie ma komunikatu o błędzie?

—

—

—

Chcieliśmy pokazać ideę, w ciągu tygodnia dodamy ładne ekrany.

—

Przecież ja tego nie mogę pokazać… Wiesz co, za każdym razem pokazujecie mi jakieś niedoróbki. Naprawdę mnie wkurzacie!

—

Klient wyraża swoje uczucia. Robi to w taki sposób, że nazywa niedoróbkami efekty pracy specjalistów oraz czyni ich odpowiedzialnymi za jego własne uczucia (wkurzacie mnie).

—

Nie wiem, co powiedzieć… Pewnie, że jesteś wściekły…

Specjalista usłyszał komunikat wkurzacie mnie. Następnie przeanalizował go (wewnętrznie ☺) według modelu NVC i zidentyfikował uczucie, które prawdopodobnie za nim stało — wściekłość.

Dopiero wtedy nazwał je na głos: widzę, że jesteś wściekły.

A jaki mam być, jak wciąż nie możemy dograć naszej współpracy!?

—

Klient potwierdza.

Pamiętaj, że uczucia to nie matematyka. Potwierdzenie klienta nie oznacza bynajmniej „tak, to jest »wściekłość« według specyfikacji ISO335-11”, lecz raczej „hmm… Tak, słowo »wściekłość« z grubsza pasuje do tego, co aktualnie przeżywam”.

—

Domyślam się, że lepiej byłoby ci pracować w lepszych warunkach. Jakkolwiek by było, zaufanie do zespołu ma znaczenie.

Specjalista próbuje nazwać potrzebę ludzką, która w tej sytuacji nie została zaspokojona. Stawia na zaufanie.

Ma. A ja już wam nie ufam.

—

Zgadza się. Słowo „zaufanie” z grubsza odpowiada temu, co klient ma na myśli.

Klient potwierdził, lecz wciąż mówi coś o specjalistach — nie ufam wam. Zwróć uwagę, że klient świadomie lub nie nazwał swoją potrzebę: brakuje mu zaufania.

—

Bo obawiasz się, że znów dostaniesz niedoróbkę?

Skoro klient nazwał potrzebę, specjalista stara się nazwać uczucie związane z brakiem zaspokojenia tej potrzeby. Stawia na obawę.

Następnie chce znaleźć wydarzenie, które spowodowało, że klient odczuwa obawę. Specjalista łączy tutaj potrzebę (obawa) z obserwacją (znów dostaniesz niedoróbkę).

Masz rację, specjalista pozwolił sobie na użycie słowa „niedoróbka”, które jest oceną, a nie obserwacją. Lecz zrobił to w pełni świadomie (po wewnętrznej analizie według modelu NVC), aby uprościć komunikację. Była to przecież nazwa „wymyślona” przez klienta.

Właśnie.

—

Znowu punkt. Specjalista trafnie nazwał to, co przeżywa klient. Jest to obawa.

A co, jeśli pomylisz się w nazywaniu potrzeb lub uczuć i rozminiesz się ze zdaniem klienta? Nic, próbuj dalej ☺.

—

Chyba widzę, w czym problem. Mogę coś zaproponować.

Specjalista okazał klientowi wystarczającą ilość empatii, aby nawiązać z nim dobry kontakt.

Teraz płynnie przechodzi do momentu, w którym będzie mógł powiedzieć o sobie i swoich potrzebach.

Słucham.

—

Okazuje się, że klient jest skłonny podążać za kierunkiem konwersacji wyznaczonym przez specjalistę.

—

Jak rozumiem, chodzi ostatecznie o dostarczanie całkowicie gotowych funkcjonalności. Z naszej strony duże znaczenie ma również to, jak załatwiamy sytuacje, gdy coś pójdzie nie tak, jak oczekiwałeś.

Pierwsze zdanie jest znaną już parafrazą. W ten sposób specjalista raz jeszcze upewnia się, że dobrze zrozumiał sytuację rozmówcy.

Dopiero teraz, w drugim zdaniu, specjalista rozpoczyna przekazywanie informacji o swoich potrzebach.

Co masz na myśli?

—

Klient jest w kontakcie ze specjalistą.

—

Na przykład gdy nazywasz to, co oddajemy, niedoróbkami, jest to naprawdę frustrujące. Zależy nam na dobrych relacjach i może wpadałbyś częściej, żeby zerkać na te ekrany na bieżąco?

Specjalista wskazuje na zachowanie: nazywasz (…) niedoróbkami, które wywołuje w nim konkretne uczucie: frustracja, następnie informuje o swojej potrzebie: dobre relacje i prosi o zmianę zachowania: wpadałbyś częściej.

Dobry pomysł.

—

A jednak porozumienie bez przemocy jest możliwe!

Jak widzisz, uliczne NVC brzmi zupełnie naturalnie i może być stosowane w każdej rozmowie.

Wyjaśnijmy kilka nieporozumień…

Od jakiegoś czasu na konferencjach związanych z IT, zwłaszcza tam, gdzie pojawiają się tematy zwinnego wytwarzania oprogramowania, jest mowa o NVC. Stale jednak pojawia się kilka tych samych nieporozumień, do których warto teraz nawiązać.

Literalne stosowanie modelu NVC

Tak, mówienie w ten sposób brzmi dziwnie. Omówiłem to szczegółowo wcześniej w tym rozdziale.

NVC nie działa

To bardzo często powtarzana obiekcja, np. w formach: próbowałem zastosować NVC w rozmowie z szefem i nie działało, próbowałem w zespole i nie działało, próbowałem z moimi dziećmi i nie działało. Zazwyczaj zadaję wtedy pytanie konkretyzujące: Po czym konkretnie poznałeś, że nie zadziałało? Okazuje się, że moi rozmówcy liczyli, że za pomocą NVC uda im się przekonać innych do swoich racji. O zgrozo! Tak oto z metody stawiającej na szacunek do człowieka i otwartą komunikację ktoś próbował zrobić narzędzie do wymuszania na rozmówcy zmiany zdania. To całkowite wynaturzenie metody. Trenerzy NVC, nieco przekornie, nazywają ten sposób myślenia VNC — Violent Noncommunication[7].

Samo pytanie: Czy NVC działa? jest trochę nie na miejscu. Celem NVC nie jest osiągnięcie jakiegoś wymiernego rezultatu w trakcie rozmowy czy rozwiązanie problemu. Celem NVC jest wyeliminowanie z komunikacji przemocy, okazanie empatii i bycie w kontakcie z potrzebami zarówno swoimi, jak i rozmówców.

Czym jest empatia?

Najtrafniej ujął to Marshall Rosenberg: „Im dłużej ćwiczymy się w takim odbiorze [za pomocą modelu NVC], tym wyraźniej uzmysławiamy sobie tę prostą prawdę, że za wszystkimi komunikatami, którym dotychczas pozwalaliśmy brzmieć groźnie, stoją jedynie ludzie o niezaspokojonych potrzebach, którzy proszą nas, żebyśmy coś zrobili dla poprawy ich samopoczucia”[8].

Po co w ogóle stosować NVC?

Skoro w NVC nie chodzi o jakiś konkretny rezultat ani o przekonywanie, to po co w ogóle zawracać sobie nim głowę? Najszczersza odpowiedź, jaka przychodzi mi do głowy, brzmi: bo to jest słuszne. Słuszne jest troszczenie się o siebie nawzajem, mówienie o własnych potrzebach na równi z troską o potrzeby innych. Słuszne jest mówienie o swoich przeżyciach i wsłuchiwanie się w uczucia rozmówców. Bez poczucia winy, bez przymusu robienia czegokolwiek — po prostu bądźmy w kontakcie. Przekonuje mnie wizja świata, w którym ludzie funkcjonują w ten sposób. Nawet jeśli wizja ta nie ziści się zbyt szybko.

Podsumowanie

W tym rozdziale skupiłem się na atmosferze, relacji, kontakcie, co w sumie nazwałem chemią konwersacji. W szczegółach poznałeś:

- technikę parafrazy,

- technikę pozytywnej intencji,

- przejmowanie kierunku konwersacji,

- model komunikacji według NVC.

[1] Tłumaczone na polski jako porozumienie bez przemocy.

[2] http://szkolaempatii.pl/trening-nvc.

[3] Przedstawiam tu tylko szkic tego tematu. Zainteresowanych odsyłam do zasobów sieciowych (np.: http://www.kognitywistyka.net) lub do literatury: https://www.fizyka.umk.pl/~duch/cv/pap-pl.html.

[4] Tak jest, to tylko model! To bardzo ważne stwierdzenie i wrócimy do niego jeszcze w tym rozdziale.

[5] Zapytaj najbliżej siedzącego programistę, co to oznacza ☺.

[6] Jak wyżej ☺.

[7] Co można przetłumaczyć jako „brutalna niekomunikacja”.

[8] Marshall Rosenberg, Porozumienie bez przemocy, s. 104.

Rozdział 10.
Ustalanie priorytetów wymagań

Tworzenie systemu informatycznego jest zadaniem, które podlega wielu ograniczeniom. Do najpowszechniej występujących należą ograniczenia czasu oraz budżetu. Nadanie wymaganiom priorytetów pomaga wpasować prace w istniejące ograniczenia. Innymi słowy: priorytety dają odpowiedź na pytania, czym zająć się w pierwszej kolejności i na co najpierw wydać pieniądze.

Główną cechą różnicującą techniki ustalania priorytetów jest ich pośredniość. Pośredniość określa to, jak bardzo jawnie mówimy o priorytetach. Techniki bezpośrednie odwołują się do pojęcia priorytet, po czym następuje próba uszeregowania wymagań od najważniejszych do najmniej istotnych. Techniki pośrednie koncentrują się na określeniu łatwych do zdefiniowania czynników, np. potencjalny zysk, złożoność. Dopiero na podstawie tych czynników wnioskujemy coś na temat priorytetów. Możesz zastanawiać się, jaki ma sens taka pośredniość lub bezpośredniość. Ze strony wykonawcy priorytety są potrzebne, by zaplanować prace, z punktu widzenia klienta po to, aby odpowiednio wydatkować środki. Klient najchętniej chciałby zrealizować wszystkie wymagania, lecz często nie jest to możliwe, ze względu na wspomniane już ograniczenia czasu i budżetu. Kłopot w tym, że klient może nie posiadać jednoznacznego kryterium określania ważności wymagań. Wszystkie są ważne, wszystkie są jego dziełem. Dzięki stopniowaniu pośredniości technik nadawania priorytetów możesz pomóc klientowi wyłuskać te wymagania, z których odniesie największą korzyść.

W tym rozdziale zajmiemy się pięcioma różnymi technikami ustalania priorytetów wymagań, które sprawdzają się zależnie od okoliczności. Są to:

- pytanie wprost;

- eliminowanie poprzez korzyść;

- eliminowanie poprzez problem;

- analiza pilności i ważności;

- excelowe czary-mary.

Pytanie i eliminowanie

Aby pomóc klientowi określić priorytety w wymaganiach, musisz tak poprowadzić konwersację, aby spojrzał na system z wielu różnych perspektyw, dzięki czemu uzyska dostatecznie wiele informacji i będzie mógł podjąć dobrą decyzję. Musisz więc płynnie tworzyć różne ramy odniesienia. Jeśli pominąłeś podrozdział „Ramy odniesienia i zmiana ram”, to nadszedł dobry moment, aby nadrobić tę zaległość. Przeczytaj ten podrozdział teraz.

Pytanie wprost

Pytanie wprost jest bezpośrednim i trywialnym sposobem ustalenia priorytetów i polega na zapytaniu: Co musi powstać jako pierwsze? Celowo nie mówię tu o pytaniu: Co jest najważniejsze? Termin „najważniejsze” jest bardzo niejednoznaczny. Po pierwsze dlatego, że z perspektywy klienta wszystkie wymagania są ważne. Gdyby nie były, to by o nich nie wspominał. Po drugie, ważność zmienia się w zależności od perspektyw, z jakich spoglądamy na dane wymaganie. Coś może być ważne z punktu widzenia bezpieczeństwa, ale nieważne z punktu widzenia funkcjonalności, coś innego może być ważne z użytkowego punktu widzenia, ale nieważne z perspektywy finansowej. Ważność jest wypadkową wielu czynników. Nie możesz być do końca pewny, jakie czynniki wziął pod uwagę klient i z jakiej perspektywy patrzył, gdy odpowiadał na pytanie: Co jest najważniejsze? Z tego powodu przy pytaniu wprost poprzestań na kwestii: Co musi powstać jako pierwsze i jej wariacjach.

Pytanie wprost zazwyczaj dobrze się sprawdza w przypadku klientów, którzy już wcześniej dokładnie przeanalizowali swoje potrzeby i określili harmonogram wdrażania nowego produktu. Jest tak zazwyczaj wtedy, gdy Twoim bezpośrednim kontaktem ze strony klienta jest zatrudniony przez niego analityk. Możesz do woli pytać wprost i otrzymasz zdecydowaną odpowiedź.

Poza przypadkami, w których klient już uprzednio wykonał analizę wdrożenia systemu, zapytanie: Co musi powstać jako pierwsze wiąże się z pewnym niebezpieczeństwem. Wyobraź sobie, że zajmujesz się badaniami rynku i przygotowujesz wyrafinowane raporty dla swoich klientów. Aby pozyskać dane do raportów, przeprowadzasz ankietowanie. Jeśli jako wykonawca oprogramowania dla Ciebie zadam Ci pytanie: Co powinno powstać jako pierwsze, to co odpowiesz? Prawie na pewno Twoja lista priorytetów będzie następująca:

1. Moduł do przygotowywania ankiet.

2. Moduł do wysyłki ankiet i pozyskiwania danych.

3. Moduł do analizy danych i tworzenia raportów.

Wymienione priorytety biorą się stąd, że tak właśnie pracujesz, tak to działa w Twojej firmie. Jeśli zapytasz klienta, co należy wykonać w pierwszej kolejności, to prawdopodobnie skoncentruje się on na procesie biznesowym, w którym bierze udział (rysunek 10.1).

Rysunek 10.1. Czasem mówiąc o priorytetach, myślimy o procesie biznesowym

Wyodrębnione priorytety odzwierciedlają przede wszystkim kolejność czynności wykonywanych w procesie biznesowym.

Gdy spytasz klienta, co należy wykonać w pierwszej kolejności, to jako priorytety otrzymasz kolejność czynności wykonywanych w procesie biznesowym.

Poprzez to niewinne pytanie niechcący narzuciłeś ramę kolejności. Z tego powodu klient zastanawiając się nad odpowiedzią, prawdopodobnie wyobraża sobie samego siebie wykonującego w pracy poszczególne czynności. Odtwarza w wyobraźni proces biznesowy i o nim opowiada.

Wróć ponownie do swojej roli badacza rynku i odpowiedz mi na pytanie: Na czym właściwie zarabiasz? Z pewnością odpowiesz, że na sprzedaży raportów. Jeśli opierając się na poprzednich priorytetach, dostarczyłbym Ci moduł przygotowywania ankiet, to żaden byłby z tego pożytek. To na raportach zarabiasz w swoim biznesie! Przygotowywanie ankiet jest ważne, ale na samych ankietach nie zarobisz. Dane możesz zebrać na inne sposoby (np. zlecając to zadanie zewnętrznym ankieterom), lecz to właśnie raporty stanowią o Twojej przewadze konkurencyjnej. Zadając pytanie, na czym właściwie zarabiasz, sformułowałem inną ramę odniesienia, dzięki której zastanowiłeś się, w jakiej kolejności należy wdrażać moduły, aby jak najszybciej odnieść korzyść finansową.

Eliminowanie poprzez korzyść

Jeśli zorientujesz się, że Twój rozmówca mówi o kolejności w procesie biznesowym zamiast o priorytetach, musisz skorzystać z mniej bezpośredniej techniki ustalania priorytetów. Powinieneś skonstruować taką ramę odniesienia, która skieruje uwagę w kontekst użytkowania systemu. Innymi słowy: nowa rama odniesienia musi sprawić, że użytkownik wyobrazi sobie, że właśnie chce użyć omawianego systemu. Jego uwaga skoncentruje się na tym, co jest mu w danym momencie najbardziej potrzebne. Zadaj pytanie: Jeśli miałbyś zacząć używać tego systemu już jutro, to z których funkcjonalności chciałbyś skorzystać najpierw?

Pytając: Jeśli miałbyś zacząć używać tego systemu już jutro, to z których funkcjonalności chciałbyś skorzystać najpierw, kierujesz uwagę rozmówcy na kontekst użytkowania systemu i na korzyści, które chciałby osiągnąć najszybciej.

Zauważ, że w przytoczonym przykładzie nie skłaniasz rozmówcy do zastanowienia się, co chciałby możliwie szybko osiągnąć za pomocą nowego systemu, a w związku z tym które funkcjonalności należy zaimplementować jako pierwsze. Sprawiasz więc, że rozmówca poszukuje najważniejszych dla siebie korzyści, które ma osiągnąć dzięki oprogramowaniu.

Zadając konsekwentnie to pytanie w stosunku do zebranych wymagań, uporządkujesz je według priorytetów od najbardziej znaczącego do najmniej istotnego (rysunek 10.2).

Rysunek 10.2. Eliminowanie poprzez korzyść

Eliminowanie „od problemu”

Wiesz już z poprzednich rozdziałów, że potrzeba osiągnięcia korzyści to tylko jeden z motywatorów skłaniających ludzi do działania, do rozpoczęcia prac nad nowym systemem. Drugi to potrzeba uniknięcia problemów związanych z pracą bez nowego oprogramowania. Rozmówcy, którego celem jest zabezpieczanie się, trudno będzie odpowiadać na pytania związane z eliminowaniem poprzez korzyść. W takim przypadku powinieneś dostosować się do kierunku motywacji rozmówcy i wykorzystać taką ramę odniesienia, która uwypukli pewien problem, a nadanie wymaganiom priorytetów pozwoli go uniknąć. W kontekście biznesowym najbardziej typowymi problemami są brak pieniędzy albo brak czasu. Zapytaj więc: Gdyby zabrakło Ci teraz czasu/budżetu, to z której funkcjonalności zrezygnowałbyś na tę chwilę?

Pytając: Gdyby zabrakło Ci teraz czasu/budżetu, to z której funkcjonalności zrezygnowałbyś na tę chwilę, kierujesz uwagę rozmówcy na wymagania, które mają dla niego w tym momencie najmniejsze znaczenie.

W przytoczonej formule pytania szczególnie podkreślam frazy: teraz, na tę chwilę, w tym momencie. W ten sposób mocno osadzasz swoje pytanie w teraźniejszości i informujesz, że wymagania, o których mowa, nie znikną na zawsze, ale będą zaimplementowane w następnej kolejności.

Zadając to pytanie kilkakrotnie, otrzymasz wymagania uporządkowane od najmniej do najbardziej istotnego (rysunek 10.3). W pewnym momencie klient może odpowiedzieć: Jeśli miałbym zrezygnować i z tego, to nie ma sensu w ogóle robić tego systemu. Jest to sygnał, że dotarłeś do krytycznej grupy wymagań, które muszą zostać wykonane łącznie.

Rysunek 10.3. Eliminowanie „od problemu”

Pamiętaj, że kierunki motywowania „ku korzyściom” oraz „od problemu” to bardzo uproszczone modele ludzkiego myślenia. W rzeczywistości jesteśmy bardziej skomplikowani. Wiele również zależy od kontekstu, w jakim się znajdujemy. Miej więc oczy stale otwarte i reaguj na to, co mówi Twój rozmówca.

Ważność a pilność[1]

Jeśli mimo stosowania wskazanych sposobów ustalania priorytetów napotykasz trudności, możesz uciec się do jeszcze mniej bezpośrednich metod. Metody pośrednie polegają na przeanalizowaniu czynników, które nie są wprost związane z priorytetami, a następnie, na podstawie analizy, wyciągnięciu wniosków na temat tych priorytetów. W tym przypadku chodzi o rozróżnienie pomiędzy dwoma cechami charakteryzującymi każde wymaganie: ważnością a pilnością.

W trakcie definiowania wymagań klient lub użytkownik mogą być skoncentrowani na rzeczach bieżących, na aktualnych (albo bardziej ściśle: lokalnych) problemach, w związku z czym ich priorytety mogą nie być osadzone w wystarczająco szerokiej perspektywie. Podstawowa zasada tej techniki brzmi: Nie wszystko, co jest pilne, jest również ważne i nie wszystko, co jest ważne, jest również pilne.

Co jest pilne?

Z pilnością sprawa jest dość prosta. Pilne jest to, co ma wyznaczony i bliski termin wykonania (albo pierwszy wyznaczony termin jest już za nami). Jednocześnie jeśli zaniedbamy w danym momencie rzeczy pilne, to nie wiążą się z tym poważne konsekwencje.

Które wymaganie jest pilne?

Pilne jest to wymaganie, które wspomaga osiągnięcie pewnego efektu biznesowego przez klienta, a termin osiągnięcia tego efektu jest dostatecznie bliski. Jednocześnie rezygnacja na ten moment[2] z wymagania pilnego, a w konsekwencji nieosiągnięcie zamierzonego efektu, nie wiąże się z poważnymi konsekwencjami dla działalności biznesowej klienta.

Przytoczona definicja pilności jest nieco rozbudowana, ponieważ chciałbym, aby z jednej strony była precyzyjna, a z drugiej uwypuklała fakt, że pilność bardzo zależy od kontekstu, czyli od: danego klienta, wielkości projektu, obowiązujących terminów, celów stawianych przed tworzonym systemem informatycznym. Ponieważ podawanie prostych recept grozi literalnym traktowaniem sztywnych wytycznych bez uwzględniania szerszego kontekstu, poniżej zamieszczam przykłady pilnych wymagań.

Przykład 1. System rozliczeniowy musi wystawiać dokumenty według nowych stawek VAT

Powiedzmy, że nowa ustawa o podatku VAT wchodzi w życie pierwszego stycznia, a teraz mamy luty roku poprzedzającego. W tym konkretnym systemie zaimplementowanie i wdrożenie tego wymagania szacowane jest na jeden miesiąc. Załóżmy również, że nowa wersja oprogramowania wydawana jest co trzy miesiące. Choć w systemie rozliczeniowym to wymaganie ma dość kluczowe znaczenie, to w momencie, w którym je rozważamy, nie wydaje się ono pilne. Co się stanie, jeśli nie wejdzie do bieżącej iteracji (cały czas podkreślamy, że chodzi o sytuację „na teraz”)? Nic się nie stanie. Za trzy miesiące nikt jeszcze tego nie będzie potrzebował. Dla uproszczenia oczywiście pominąłem narzut czasowy związany ze sprzedażą i dostosowaniem do procesów biznesowych.

Przykład 2. Logo w portalu XYZ powinno mieć czapkę Świętego Mikołaja

Portal XYZ jest masowo odwiedzany przez użytkowników sieci i musi stale uatrakcyjniać swoją wizualizację. Jednym z elementów strategii wizualizacji jest dostosowywanie się do aktualnych wydarzeń kalendarzowych. Przypuśćmy, że powyższe wymaganie Twój klient sformułował 23 grudnia. Z pewnością domyślasz się, że wymaganie to automatycznie staje się pilne. Niektórych terminów nie da się przesunąć.

Co jest ważne?

Z ważnością jest więcej zachodu. Stephen Covey[3] zwrócił uwagę, że nałogowo mylimy pilność z ważnością. O sprawach pilnych myślimy tak, jakby były ważne. Ważność wymagania oznacza, że jego zaimplementowanie bądź odrzucenie wiąże się z poważnymi konsekwencjami.

Które wymaganie jest ważne?

Ważne jest to wymaganie, które w kluczowy sposób wpływa na realizację celów biznesowych klienta. Odrzucenie ważnego wymagania skutkuje poważnymi utrudnieniami bądź niemożnością zrealizowania tych celów.

Zgodnie z przytoczoną definicją to „kluczowość wpływu” na cele biznesowe decyduje o wadze wymagania. Potrzebujesz więc metody, aby ową „kluczowość” przeanalizować.

Korzyści, problemy, cele biznesowe

W rozdziale 7., „Sztuka konwersacji z klientem” (jeśli ominąłeś ten rozdział, to warto teraz go przeczytać), pisałem o tym, że podczas konwersacji z klientem poprzez umiejętne zadawanie pytań odkrywamy przyczynę stojącą za oczekiwanymi wymaganiami. Przyczyną może być:

- korzyść, którą klient spodziewa się osiągnąć za pomocą nowego systemu;

- problem, którego klient spodziewa się uniknąć, używając nowego systemu;

- cel biznesowy organizacji, który należy zrealizować przy użyciu nowego systemu.

Jeśli któreś z następujących kryteriów jest spełnione, to z dużym prawdopodobieństwem wymaganie można zakwalifikować jako ważne.

- Wymaganie bezpośrednio pozwala osiągnąć korzyść oczekiwaną przez klienta, np.:

- Korzyść: Komfort pracy i przejrzystość interfejsu.

- Wymaganie: W CRM-ie widzę tylko swoich klientów zamiast wszystkich.

- Wymaganie bezpośrednio wpływa na rozwiązanie/uniknięcie problemu klienta, np.:

- Problem: Ręczne tworzenie raportów jest bardzo czasochłonne.

- Wymaganie: Automatycznie generować wykresy w raporcie z pozostawionym miejscem na część ekspercką.

- Wymaganie bezpośrednio wpływa na osiągnięcie celu biznesowego organizacji, np.:

- Cel biznesowy: Zwiększyć liczbę likwidowanych szkód do 600/dzień do końca roku.

- Wymaganie: Wdrożyć moduł automatycznej korespondencji z uczestnikami szkód komunikacyjnych.

Zwróć uwagę, że kłopotliwe jest zestawianie bardzo ogólnych korzyści/problemów/celów biznesowych z bardzo szczegółowymi wymaganiami. Na przykład wymagania Jako użytkownik mogę dodać pracownika do bazy nie sposób zestawić z celem biznesowym Zwiększyć sprzedaż o 15% do końca roku obrotowego. Przy tego typu zestawieniach trudno odnaleźć ścieżkę między wymaganiem a problemem i stwierdzić jednoznacznie, że dane wymaganie z pewnością przyczyni się do jego rozwiązania. Z tego powodu dbaj o to, aby kawałki informacji definiujące korzyść/problem/cel biznesowy i odpowiadające im wymagania były tej samej wielkości. Zrobisz to względnie łatwo, odnajdując potrzeby, a następnie posługując się strukturą konwersacji oraz pytaniami konkretyzującymi i uogólniającymi.

Pytania kartezjańskie

Doszliśmy do momentu, w którym poprzez umiejętne zadawanie pytań możesz dotrzeć do wagi danego wymagania. Poprzestaliśmy jednak na stwierdzeniu, że należy posłużyć się strukturą konwersacji oraz pytaniami. Jeśli to ma być książka o konkretyzowaniu, to słusznie oczekujesz, że powinienem określić, jakie konkretnie to mają być pytania.

Potężnym narzędziem, które pozwala przeanalizować skutki (a więc i ważność) danego wymagania, są pytania kartezjańskie. To zestaw czterech pytań:

1. Co się stanie, jeśli to zrobimy?

2. Co się stanie, jeśli tego nie zrobimy?

3. Co się nie stanie, jeśli to zrobimy?

4. Co się nie stanie, jeśli tego nie zrobimy?

Pytania te zestawiają możliwe przyczyny z możliwymi konsekwencjami każdy z każdym, czyli tworzą iloczyn kartezjański. Zauważ, że każde z pytań zmienia nieco perspektywę rozpatrywania danej kwestii, narzuca inną ramę odniesienia. Można powiedzieć, że odpowiedzi na pytania kartezjańskie w stosunku do wymagania pomagają ujrzeć jego konsekwencje ze wszystkich stron.

Pytania, które przytoczyłem, są bardzo ogólne i musisz je dostosować do kontekstu, w którym ich używasz. W tabeli 10.1 zajdziesz kilka przykładów dostosowania pytań kartezjańskich do specyfiki zbierania wymagań.

Tabela 10.1. Pytania kartezjańskie w kontekście zbierania wymagań

Ogólne pytania kartezjańskie

Szczegółowe pytania kartezjańskie

Co się stanie, jeśli to zrobimy?

- Do osiągnięcia którego z celów biznesowych to wymaganie jest nam niezbędne?

- Które problemy zostaną rozwiązane, jeśli zrealizujemy to wymaganie?

- Jakich nowych problemów możemy się spodziewać, jeśli zrealizujemy to wymaganie?

- Co dodatkowo zyskamy, jeśli zrealizujemy to wymaganie?

Co się stanie, jeśli tego nie zrobimy?

- Jeśli to wymaganie nie zostanie teraz wykonane, to który z celów biznesowych na tym ucierpi?

- Który z celów biznesowych szybciej zrealizujemy, jeśli teraz odrzucimy to wymaganie?

- Który z problemów szybciej rozwiążemy, jeśli teraz odrzucimy to wymaganie?

- Które z istniejących problemów się spotęgują, jeśli teraz odrzucimy to wymaganie?

- Jakie nowe problemy mogą się pojawić, jeśli teraz odrzucimy to wymaganie?

Co się nie stanie, jeśli to zrobimy?

- Osiągnięcie którego z celów biznesowych może się opóźnić, jeśli zajmiemy się tym wymaganiem teraz?

- Co zaniedbamy, jeśli zrealizujemy to wymaganie?

- Którego z celów biznesowych możemy nie osiągnąć, jeśli zrealizujemy to wymaganie?

- Jakie dotychczasowe korzyści utracimy, jeśli zajmiemy się tym wymaganiem?

Co się nie stanie, jeśli tego nie zrobimy?

- Który z celów biznesowych będzie zagrożony, jeśli odrzucimy teraz to wymaganie?

- Jakie korzyści utracimy, jeśli odrzucimy teraz to wymaganie?

- Który z problemów pozostanie nierozwiązany, jeśli zaniechamy teraz realizowania tego wymagania?

- Jakie problemy odsuniemy w związku z tym, że zrezygnujemy teraz z tego wymagania?

Zwróć uwagę, że szczegółowe pytania kartezjańskie odnoszą do celów biznesowych, korzyści i problemów, ponieważ uprawomocniają one projekt stworzenia nowego oprogramowania. A co w przypadkach, w których ani cel biznesowy, ani korzyść, ani problem nie są określone? Co będzie wtedy podstawą pytań kartezjańskich? Nic, absolutnie nic. Taki system nie ma sensu. Do czego przyda się oprogramowanie, które w niczym nie pomaga, niczego nie ułatwia i nic nie można dzięki niemu zyskać? Do powieszenia na ścianie? Są ładniejsze i tańsze formy przyozdabiania wnętrz.

Macierz Eisenhowera

Analizowanie wymagań pod kątem pilności oraz ważności służy jako przygotowanie do nadania wymaganiom priorytetów. Idąc za Stephenem Coveyem, przedstawiam Ci macierz Eisenhowera[4] (rysunek 10.4).

Rysunek 10.4. Macierz Eisenhowera

Główne założenia stojące za nadawaniem priorytetów za pomocą macierzy Eisenhowera to:

- ważność ma przewagę nad pilnością;

- zajmuj się rzeczami ważnymi, zanim staną się pilne;

- jeśli coś nie jest ani ważne, ani pilne, to prawdopodobnie nie ma sensu się tym zajmować.

Z powodu wymienionych założeń wymagania pilne i ważne uzyskują najwyższy priorytet, ponieważ, zgodnie z wcześniejszą analizą, ich zaniedbanie będzie miało poważne konsekwencje dla działalności biznesowej klienta, i jednocześnie muszą być wykonane „na już”. Natomiast sprawy niepilne i nieważne prawdopodobnie mają charakter wymagań nazywanych przez programistów wodotryskami.

Excelowe czary-mary[5]

Najbardziej pośrednią metodą ustalania priorytetów wymagań jest coś, co nazywam excelowymi czarami-marami[6]. Zanim wytłumaczę się z tej nazwy, przedstawię metodę. Metoda definiuje priorytet jako procentowo wyrażony stosunek wartości wymagania do średniej kosztów i ryzyk. Wartość wymagania jest rozumiana jako średnia ważona korzyści i potencjalnych strat. Przy czym wartość, koszty i ryzyko są określane w odniesieniu do reszty wymagań.

Głównymi pojęciami w tym podejściu są cztery atrybuty, które można przypisać do wymagania:

- korzyść z zaimplementowania w skali od 1 do 9;

- strata wynikająca z pominięcia w skali od 1 do 9;

- koszt zaimplementowania w skali od 1 do 9;

- ryzyko wynikające z zaimplementowania w skali od 1 do 9.

Pierwszym etapem jest wyliczenie wartości oraz względnej wartości kosztu i ryzyka dla k-tego wymagania:

Ostatecznie priorytet wymagania wynosi:

Pod adresem: http://bnsit.pl/files/priorytety.zip możesz pobrać arkusz kalkulacyjny, w którym jedyne, co musisz zrobić, to wpisać wartości korzyści, straty, kosztów i ryzyk, natomiast formuły wyliczą priorytety wymagań. Z pewnością domyślasz się, że nie tyle istotna jest konkretna wartość priorytetu, ile kolejność, w jakiej za pomocą tego priorytetu wymagania zostaną ułożone. Przykład znajduje się w tabeli 10.2.

Tabela 10.2. Czary-mary z priorytetami

Wagi

2

1

0,5

1

Wymaganie

Korzyść

Strata

Wartość

Wartość %

Koszt

Koszt %

Ryzyko

Ryzyko %

Priorytet

Napisać moduł automatycznego generowania raportów

2

4

8

13,6

1

9,1

1

10,0

0,93

Stworzyć edytor raportów dla użytkownika

5

3

13

22,0

2

18,2

1

10,0

1,15

Umożliwić rozpoznawanie pisma odręcznego w formularzach zgłoszenia

9

7

25

42,4

5

45,5

6

60,0

0,51

Stworzyć funkcjonalność importu danych z dokumentów papierowych

5

3

13

22,0

3

27,3

2

20,0

0,66

Razem

59

11

10

Warto dodać jeszcze jedną ważną uwagę. Ponieważ poszczególne wymagania są rozpatrywane względem innych, każde z nich musi być na tym samym poziomie szczegółowości. Trudno przecież porównać stworzenie modułu raportowego i dodanie czerwonego przycisku wylogowania. Zestawianie wymagań o różnym poziomie ogólności z pewnością zafałszuje priorytety.

Porównuj priorytety wymagań tylko wtedy, gdy wymagania te zdefiniowane są na tym samym poziomie szczegółowości.

Dlaczego czary-mary?

Przedstawiona metoda na pierwszy rzut oka wygląda bardziej wiarygodnie niż poprzednie. Zwróć jednak uwagę, że atrybuty, na których się opiera, czyli: korzyść, strata, koszt i ryzyko, są ustalane subiektywnie w skali od 1 do 9. Trik tej metody polega na tym, że jeśli mamy do dyspozycji rozmówców, którym trudno jest określić, czym należy zająć się w pierwszej kolejności, to uciekamy się do wyspecyfikowania bardziej jednoznacznych atrybutów, aby na ich podstawie wnioskować o priorytetach. Kłopot w tym, że owo wnioskowanie również jest dość subiektywne i polega na zastosowaniu mniej lub bardziej skomplikowanego wzoru z wagami dla poszczególnych czynników. Istne czary-mary! Metoda ma jednak tę zaletę, że zamienia rozmyte i czasem trudne do ustalenia relacje pomiędzy wymaganiami na cztery dość intuicyjne atrybuty.

Podsumowanie

W tym rozdziale zapoznałeś się z pięcioma technikami określania priorytetów w wymaganiach:

1. pytanie wprost;

2. eliminowanie poprzez korzyść;

3. eliminowanie „od problemu”;

4. analiza pilności i ważności;

5. excelowe czary-mary.

W tabeli 10.3 znajdziesz zestawienie, w jakich sytuacjach używać danego podejścia.

Tabela 10.3. Korzystanie z technik nadawania priorytetów

Technika

Kiedy używać?

Pytanie wprost

- Zawsze zaczynaj od pytania wprost. Jest to najprostszy i najmniej czasochłonny sposób uzyskania informacji.

- Gdy klient sam sygnalizuje, że posiada listę priorytetów, np. w postaci celów biznesowych, które należy zrealizować w określonym terminie, a tworzone moduły systemu się do tego bezpośrednio przyczyniają.

Eliminowanie poprzez korzyść

- Gdy masz do czynienia z rozmówcą, który wyjątkowo mocno podkreśla korzyści wynikające z wdrożenia tworzonego oprogramowania.

Eliminowanie „od problemu”

- Gdy masz do czynienia z rozmówcą, który wyjątkowo mocno podkreśla problemy do rozwiązania za pomocą tworzonego oprogramowania.

Analiza pilności i ważności

- Gdy z jakichkolwiek względów (np. finansowych) należy ustalić priorytety „na teraz”, jednak klientowi trudno się zdecydować, które z wymagań powinien wybrać.

- Gdy odkryjesz, że oprogramowanie ma zaspokajać sprzeczne potrzeby (np. niedające się pogodzić oczekiwania różnych komórek organizacyjnych).

Excelowe czary-mary

- Gdy cele wymagania pochodzą od różnych decydentów i trudno im się porozumieć w sprawie priorytetów.

[1] Więcej o pilności i ważności możesz dowiedzieć się z publikacji na temat zarządzania czasem albo osobistej efektywności, np. Siedem nawyków skutecznego działania Stephena Coveya. Tutaj rozpatrujemy je pod kątem użyteczności do nadawania priorytetów wymaganiom.

[2] Zwróć uwagę, że mówimy tu o zrezygnowaniu z wymagania „na teraz”. Odrzucone wymaganie może kiedyś wrócić do konwersacji w tej czy innej postaci. Rzeczywistość się zmienia, potrzeby się zmieniają — wymagania również.

[3] Ponownie: Siedem nawyków skutecznego działania.

[4] Nazwa pochodzi stąd, że cytat „To co ważne rzadko bywa pilne, a to co pilne rzadko bywa ważne” przypisywany jest generałowi armii amerykańskiej Dwightowi Eisenhowerowi.

[5] Podaję przykład tej metody za Karlem Wiegersem: Software Requirements, Second Edition.

[6] Choć właściwie nazywa się Quality Function Deployment.

Rozdział 11.
Spotkania

Do tej pory wszystkie poznawane techniki osadzaliśmy w jakiejś abstrakcyjnej przestrzeni, którą nazywaliśmy sesją zbierania wymagań, mając na myśli spotkanie w cztery lub więcej oczu z klientami bądź użytkownikami. Teraz przyjrzymy się bliżej temu tematowi.

Z jednostkowego punktu widzenia spotkanie jest dużo droższe niż wymiana maili. Z tego powodu analitycy starają się czasem precyzować wymagania mailowo, telefonicznie lub poprzez wideokonferencje. Wygląda to mniej więcej tak:

1. Najpierw odbywa się jedno dwugodzinne spotkanie biznesowe, podczas którego klient określa swoje wymagania na poziomie więcej niż ogólnym.

2. Następnie analityk kontaktuje się mailowo[1] z osobami odpowiedzialnymi za projekt po stronie klienta. Ponieważ mailowy ping-pong trwa długo, po pewnym czasie trudno odszyfrować, która linijka jest odpowiedzią na którą inną. Bez wtyczek do programu pocztowego kolorujących cytaty ani rusz.

3. Po dojściu do porozumienia najczęściej analityk wykonawcy wpisuje ustalenia do dokumentu będącego załącznikiem do umowy, a następnie przesyła stronie klienta do akceptacji.

4. W dokumencie ustalenia wyglądają nieco inaczej niż w mailu: inne sformułowania, bardziej formalny język. Klient miewa zastrzeżenia do niektórych punktów. Rozpoczyna się kolejny mailowy ping-pong. Tym razem wymieniany jest dokument, w którym od dymków narzędzia śledzenia zmian i recenzji robi się coraz bardziej kolorowo.

Żadna pisemna forma wymiany informacji nie zastąpi osobistego spotkania i rozmowy z klientem lub użytkownikiem. Ponieważ w trakcie spotkania jesteś (a przynajmniej powinieneś być) w kontakcie z klientem, możesz natychmiast rozwiać wszystkie wątpliwości. Czasem mam wrażenie, że w trakcie rozmowy projekt szybko posuwa się do przodu, a gdy wracam do biura i wysyłam mail do klienta z krótkim pytaniem, wtedy wydaje mi się, że wszystko baaardzo zwalnia.

Kluczową cechą spotkania jest bezpośrednia interakcja ze zleceniodawcą, dlatego sposoby zbierania wymagań można podzielić ze względu na ich interakcyjność oraz skuteczność na:

1. Bezpośrednie spotkanie — gdy możesz bezpośrednio zadawać pytania i otrzymywać odpowiedzi. Do tej kategorii wchodzą również różnego rodzaju warsztaty zbierania wymagań prowadzone z grupami użytkowników.

2. Wideokonferencje — jeśli nie można się spotkać, np. ze względu na odległość, wideokonferencja jest dobrym sposobem na prowadzenie sesji zbierania wymagań. Zatroszcz się o możliwość współdzielenia pulpitu, a nie będziesz musiał wyobrażać sobie, co rozmówca ma na myśli. Zwyczajnie Ci to narysuje. Zadbaj również o odpowiednią jakość techniczną łącza i używanego sprzętu. Ciągłe przerwy techniczne bardzo rozpraszają uwagę i czynią wideospotkanie mało efektywnym.

3. Komunikator głosowy albo telefon — jeśli nie ma obrazu, to niech chociaż będzie dźwięk. Będziesz musiał się nieco natrudzić, aby obrazowo przedstawić swoje myśli, ale przy odrobinie dobrej woli z obu stron można sobie poradzić. Moim zdaniem ten sposób zbierania wymagań zupełnie nie wchodzi w grę, jeśli masz do czynienia z nowym tematem i nowym klientem. Najpierw koniecznie trzeba się spotkać, poznać, zbudować relację i wyrazić oczekiwania, żeby później można było ustalać szczegóły na odległość. Jeśli jednak nawet pierwsze rozpoznawcze spotkanie (w ostateczności wideokonferencja) jest zbyt kosztowne, to może projekt nie jest tak ważny, jak mogłoby się wydawać.

4. Poczta mailowa — dobrze sprawdza się jako narzędzie informacyjne, lecz do prowadzenia dyskusji absolutnie się nie nadaje.

5. Ankietowanie — przydatne, gdy trzeba zebrać dane od dużej grupy użytkowników. Świetnie nadaje się do zbierania problemów i pomysłów na ich rozwiązanie. Zazwyczaj użytkownicy, którzy na co dzień stykają się z istniejącym systemem (bądź jego brakiem), mają pełną świadomość występujących problemów oraz konkretne pomysły na ich rozwiązanie. Często warto z nich skorzystać.

Spotkania efektywne i te, podczas których tylko tracisz czas

Na temat złych spotkań napisano już takie rzeczy, że aż nie wypada ich tu cytować. Oto główne zarzuty przeciwko złym spotkaniom:

- podczas spotkań nie są podejmowane żadne wiążące decyzje;

- uczestnicy są nieprzygotowani;

- uczestnicy nie wiedzą, czego się po nich oczekuje w trakcie spotkania;

- zapraszanych jest zbyt wiele osób;

- spotkania zajmują czas;

- spotkania odbywają się tak często, że nie ma kiedy pracować.

To wszystko prawda. Złe spotkania charakteryzują się tymi wszystkimi cechami. Nas jednak przede wszystkim interesuje, co zrobić, aby spotkanie było dobre.

W kontekście biznesowym każde spotkanie musi mieć jakiś cel. Jeśli go nie ma, to (poza wyjątkiem w postaci odpoczynku) jest stratą czasu, a więc i pieniędzy. Nie roszczę sobie praw do stworzenia kompleksowej typologii, lecz z grubsza rzecz biorąc, spotkania można, ze względu na ich cel, podzielić na następujące kategorie:

1. Burze mózgów — celem jest kolektywne wymyślenie rozwiązań w danej kwestii.

2. Informacyjne — celem jest przedstawienie jakichś informacji (np. prezentacja produktu).

3. Wywiady i pozyskiwanie informacji — celem jest zebranie faktów, potrzeb i oczekiwań w danym obszarze.

4. Decyzyjne — celem jest podjęcie decyzji dotyczących przedstawionych tematów.

Myślę, że jedną z istotnych przyczyn nieefektywności spotkań jest to, że uczestnicy mają tendencję do dryfowania. W trakcie spotkania i rozmowy płynnie przechodzą przez różne wątki tematyczne, sprawiając, że raz ma miejsce intensywna burza mózgów, raz przekazywanie informacji, a czasem nic się nie dzieje. Zróżnicowana dynamika spotkania jest zupełnie naturalna, w końcu to proces grupowy. Źle zaczyna się dziać wtedy, gdy upojeni rozmową zapominamy, po co właściwie się spotkaliśmy, czyli jaki w zasadzie jest podstawowy cel spotkania.

W obszarze zbierania wymagań interesują nas przede wszystkim: wywiad i pozyskiwanie informacji oraz kryteria decyzyjne. Do tej pory koncentrowaliśmy się na technikach pozyskiwania przez Ciebie informacji, teraz skupimy się na projektowaniu struktury spotkania tak, aby było ono efektywne.

Efektywne spotkanie

Efektywne spotkanie to takie, które ma ustalony cel i kończy się jego osiągnięciem. Ponadto jest określone w czasie, a każdy z uczestników zna swoją rolę w trakcie spotkania.

Przygotowanie spotkania

Jeśli przyjdziesz na spotkanie bez założonych do osiągnięcia celów, to być może będzie ono przebiegać w miłej atmosferze, być może wszyscy będą zadowoleni, być może nawet coś uda się ustalić. Jednocześnie istnieje spore prawdopodobieństwo, że będzie to wyłącznie zmarnowany czas. Przygotowując się do spotkania, opracuj jego cele, zastanawiając się nad tym:

- Co należy ustalić podczas spotkania?

- Jakie decyzje należy podjąć?

- Jakich informacji potrzebujesz?

Odpowiedzi na te pytania będą stale przyciągać Twoją uwagę w trakcie rozmów. To niesamowite, ale mając wyraźnie zdefiniowane to, co potrzebujesz osiągnąć na danym spotkaniu, posiadasz bardzo czuły miernik jego efektywności. Gdy tylko rozmowa zaczyna dryfować, natychmiast otrzymujesz sygnał, że coś idzie nie tak. Podobnie jak w przypadku zbierania wymagań, również podczas definiowania celów spotkania obowiązuje absolutna precyzja i konkretność. Na wszelki wypadek w tabeli 11.1 zamieszczam przykłady wadliwie zdefiniowanych celów spotkań i pokazuję, jak wynieść z nich więcej konkretów.

Tabela 11.1. Precyzowanie celów spotkań

Wadliwe cele spotkań

Więcej konkretów

- Porozmawiać o raporcie.

- Na kiedy ma być gotowy raport?

- Jakie dane mają być raportowane? Skąd je wziąć?

- Jak ma wyglądać raport? (Przykład raportu).

- Kto jest odbiorcą raportu?

- Kto będzie przygotowywał i generował raport?

- Zrobić burzę mózgów na temat nowej iteracji.

Burza mózgów również powinna mieć zdefiniowane cele. Przykłady poniżej.

- Przygotować szkic modelu dla tej iteracji.

- Określić możliwe zmiany w architekturze.

- Wstępnie przydzielić User Stories do programistów.

- Zebrać wymagania do funkcjonalności rozpoznawania pisma na zleceniach.

- O jakiego rodzaju zleceniach mówimy? (Przykłady).

- Czy treść zlecenia ma jakąś strukturę?

- Czy zlecenie jest pisane dowolnym tekstem, czy częściowo standaryzowanym?

- Czy istnieją jakieś często używane skróty?

Być może jeszcze kiedyś się spotkamy, przy okazji książki na temat zarządzania czasem, gdzie na temat definiowania celów porozmawiamy szczegółowo. Teraz proszę Cię, abyś uwierzył mi na słowo: zapisz cele spotkania. Wypisz je na kartce pełnymi zdaniami, żadnych skrótów myślowych i haseł. Tylko pełne zdania! Przeniesienie myśli na papier wyklaruje Twoje oczekiwania co do spotkania i wyostrzy Twoją uwagę.

Ile osób zaprosić na spotkanie?

Czy brałeś kiedyś udział w spotkaniu, w którym jedna osoba mówiła, dwóch uczestników omawiało teatralnym szeptem jakąś ważną sprawę, ktoś sprawdzał mail, ktoś inny ukrywał się za murem ekranu laptopa, a kilka osób na końcu stołu prowadziło ożywioną dyskusję na temat ostatnich wydarzeń sportowych? Gdy obok siebie znajduje się więcej niż pięć osób, zaczynają tworzyć się podgrupy. Do pięciu osób wszyscy wchodzą we wzajemne interakcje mniej więcej w równym stopniu. Powyżej tej liczby trudno jest zarządzać spotkaniem, zwłaszcza że często będą pojawiać się tematy znane tylko niektórym uczestnikom.

Z wymienionych względów zapraszaj na spotkania nie więcej niż cztery osoby (pięć razem z Tobą). Moim zdaniem, jeśli opanujesz techniki rozmowy przedstawione w tej książce, z powodzeniem poprowadzisz spotkanie z czterema uczestnikami (wyjątkiem od tej zasady są warsztaty z użytkownikami, lecz tym zajmiemy się później). Może się zdarzyć, że na spotkanie przyjdzie więcej osób, np. zarząd liczy dziesięciu członków i wszyscy są zainteresowani i mają akurat czas. W tych rzadkich przypadkach nie masz wyjścia i po prostu prowadzisz spotkanie z większą liczbą osób. Jeżeli jednak masz jakiś wpływ na ilość uczestników, to dąż do jak najmniejszej ich liczby.

Gdy jest wielu zainteresowanych danym tematem, możesz spotkać się z każdym z nich albo z mniejszymi podgrupami niezależnie. Wtedy kwestia z liczbą uczestników rozwiąże się automatycznie. W jednym przypadku możesz chcieć celowo spotkać się ze wszystkimi zainteresowanymi jednocześnie: wtedy, gdy ich zdania co do celu Twoich prac są tak różne, że nie masz pomysłu, jak je pogodzić. Dość często ludzie pracujący razem mają bardzo odmienne pomysły na tworzony system informatyczny. Jednocześnie rzadko o tych pomysłach ze sobą rozmawiają. Wspólne spotkanie będzie okazją do skonfrontowania różnych potrzeb i wypracowania wspólnego zdania.

Zapamiętaj

Twoją rolą nie jest podejmowanie decyzji na podstawie rozbieżnych opinii po stronie klienta. Twoje zadania to: zdefiniowanie potrzeb, korzyści, problemów, zaproponowanie opcji rozwiązań i przedstawienie konsekwencji, moderowanie dyskusji. Decyzje są przywilejem klienta.

Jak długo ma trwać spotkanie?

Spotkanie z pewnością trwać będzie tyle czasu, ile zostanie nań przeznaczone. Dlatego ważniejsze od długości spotkania jest to, że czas trwania musi zostać z góry ustalony. Na przykładzie spotkań z klientami wypracowałem własne parametry spotkań, które zamieszczam w tabeli 11.2.

Tabela 11.2. Parametry spotkań

Rodzaj spotkania

Czas trwania

Liczba spotkań/dzień

Przykład

Krótkie na jeden temat

1 – 2 h

+ 15 min przerwy między spotkaniami.

6

- Określenie, z jakimi systemami ma współpracować nowe oprogramowanie.

- Określenie, jakie usługi system ma udostępniać zewnętrznym klientom.

- Zdefiniowanie zakresów bezpieczeństwa usług udostępnianych przez system.

Krótkie na różne tematy

1 – 2 h

+ 30 min przerwy między spotkaniami.

4 – 5

- Określenie, jakie dane mają być widoczne w raporcie X.

- Zebranie informacji na temat niedogodności występujących w interfejsie użytkownika.

Długie

Cały dzień.

Prowadzone iteracyjnie (iteracyjnemu prowadzeniu spotkań przyjrzymy się w kolejnych podrozdziałach).

1

- Warsztaty z użytkownikami na temat interfejsu oprogramowania.

- Definiowanie zakresu nowo tworzonego systemu.

Podana liczba spotkań to raczej „maksymalna liczba spotkań, którą jesteś w stanie wytrzymać” niż ilość optymalna. Praca z wymaganiami pociąga za sobą częste i dalekie wyjazdy, dlatego planuję je tak, aby były jak najbardziej efektywne, kolokwialnie mówiąc: aby wycisnąć z nich jak najwięcej. W moim przypadku przekraczanie podanej liczby spotkań skutkuje bardzo małą uważnością podczas ostatnich spotkań w danym dniu, co przekłada się na niską jakość zebranych wtedy wymagań.

Intensywne spotkania przypominają maraton. W trakcie przerw odpoczywasz i zbierasz siły. Nie ma wtedy zbyt wiele czasu nawet na porządkowanie notatek. Jeśli więc będziesz kolejno spotykał się z różnymi rozmówcami, miej ze sobą wydrukowany harmonogram z imionami i nazwiskami oraz godzinami spotkań. Po całym dniu rozmów możesz wygenerować kilka, kilkanaście, a nawet kilkadziesiąt kartek z notatkami. Łatwo nad nimi zapanujesz, jeśli na wydruku z harmonogramem rozmówcom przypiszesz np. litery alfabetu i będziesz oznaczać nimi poszczególne kartki. Liczby arabskie zarezerwuj do numerowania stron.

Na przedłużające się spotkania

Czasem (zwłaszcza gdy pracujesz dla klienta wewnętrznego), gdy spotkania, które organizujesz, nieustannie się przedłużają, możesz sobie pozwolić na wywarcie pewnej presji na uczestników. Zaczynaj i kończ spotkania zawsze o ustalonej porze, bez względu na to, czy ich cel został osiągnięty, czy nie. Jeśli nie ustalono tego, co zostało założone, od razu zapowiedz kolejne spotkanie z tymi samymi uczestnikami na ten sam temat. Bardzo szybko zmotywujesz uczestników do bezpośredniego przechodzenia do konkluzji.

Pamiętaj, że opisana metoda nie służy do wprowadzania musztry i stresującej atmosfery. Dlatego stosuj ją, jak mawia Frank Farelly[2], „z delikatnym uśmiechem i otwartym sercem”.

Z kim i ile razy się spotykać?

Niestety, na pytanie, ile razy się spotykać, nie znam jednoznacznej odpowiedzi. Ogólna zasada: spotykaj się możliwie rzadko i jednocześnie wystarczająco często, aby móc wykonać zlecone oprogramowanie. Z jednej strony, zdajesz sobie z pewnością sprawę, że oprogramowanie, do którego zbierasz wymagania, nie jest jedynym zajęciem klienta, z drugiej strony, musisz posiadać jednoznaczne informacje na ten temat. Pamiętaj, że celem zbierania wymagań nie jest kompletne ich zebranie i szczegółowe opisanie, lecz zebranie na tyle konkretne, aby móc bezpiecznie kontynuować prace programistyczne.

Spotykaj się możliwie rzadko i jednocześnie wystarczająco często, aby móc wykonać oprogramowanie, które odpowie na potrzeby klienta.

Zdecydowanie łatwiej jest odpowiedzieć na pytanie, z kim się spotykać. Zależy to od tego, czego potrzebujesz się dowiedzieć (oto, dlaczego ważne są cele planowanego spotkania!). Dalej wymieniam grupy osób, które mogą dostarczyć użytecznych informacji.

Sponsorzy

To osoby, które podejmują ostateczne decyzje na temat prowadzonych prac. Z nimi negocjujesz termin i zakres prac. Sponsorzy mają również ostatnie zdanie w kwestiach spornych. Intuicyjnie etykietkę sponsora przykleja się osobie, która „podpisuje fakturę”, albo szefowi organizacji. Prezes albo zarząd mogą występować w roli sponsora, to się zdarza, lecz bardzo często te osoby obejmują raczej „honorowy patronat” nad przedsięwzięciem. Faktycznym sponsorem (ewentualnie sponsorami) jest wydelegowana przez nich osoba w postaci np.: dyrektora, kierownika lub specjalisty, która dokładnie wie, czego potrzebuje organizacja.

Od sponsorów możesz oczekiwać:

- określenia celów biznesowych, czyli tego, czego potrzebuje organizacja;

- ustalania terminów i cen;

- zatwierdzania zakresu produktu;

- ustalenia priorytetów na poziomie produktu;

- podejmowania decyzji odnośnie do sprzecznych interesów na niższych szczeblach.

Sponsorzy to grupa osób, z którą powinieneś spotkać się w pierwszej kolejności.

Właściciele procesów biznesowych

Właścicieli procesów biznesowych najczęściej utożsamiam z menedżerami wydzielonych komórek w organizacji (dyrektor hurtowni, kierownik magazynu, dyrektor IT). Od właścicieli procesów dowiesz się, co, na ogólnym poziomie, dzieje się w organizacji i jakie są potrzeby podlegających im komórek odnośnie do tworzonego systemu informatycznego.

Właściciele procesów to druga (po sponsorach) grupa osób, z którą musisz się spotkać, zwłaszcza wtedy, gdy branża jest Ci obca.

Od właścicieli procesów możesz oczekiwać:

- określenia, jak działa podlegająca im komórka;

- informacji na temat dziedziny, którą się zajmują;

- zdefiniowania procesu biznesowego;

- wskazania problemów w istniejącym procesie;

- określenia potrzeb co do nowego oprogramowania;

- wskazania specjalistów, z którymi można omówić szczegóły na temat kolejnych elementów procesu biznesowego.

Specjaliści biznesowi

Mowa o ludziach wykonujących w organizacji klienta określone prace, które będą wspierane przez system informatyczny. Specjaliści to np.: księgowa, kierownik budowy, windykator, kontroler lotów.

Od specjalistów biznesowych możesz oczekiwać:

- informacji na temat dziedziny, którą się zajmują;

- wyjaśnienia specyficznych pojęć, reguł, zasad działania, wzorów;

- objaśniania regulacji dotyczących dziedziny, którą się zajmują;

- informacji o problemach na stanowisku pracy.

Użytkownicy

Z użytkownikami spotkasz się najczęściej podczas warsztatów (o których będzie mowa już za chwilę). Użytkownicy ostatecznie będą korzystać ze stworzonego na podstawie zebranych przez Ciebie wymagań systemu. W dużych organizacjach czasem zaniedbuje się zdanie użytkowników. Wymagania definiują właściciele procesów biznesowych i specjaliści, natomiast użytkownicy są szkoleni w momencie wdrożenia systemu. Jeśli nie możesz spotkać się z użytkownikami osobiście, to z pewnością dotrzesz do nich poprzez badanie ankietowe.

Od użytkowników możesz oczekiwać:

- informacji o problemach podczas korzystania z systemu;

- spostrzeżeń dotyczących wydajności („wolno działa”);

- pomysłów polepszenia wyglądu i łatwości użytkowania (ang. usability).

Pracownicy działu IT po stronie klienta

Jeśli takie osoby istnieją po stronie klienta, to z nimi będziesz prawdopodobnie kontaktować się najczęściej. Mogą to być: analitycy, architekci systemowi, programiści, projektanci baz danych. Uzyskasz od nich wszystkie niezbędne informacje na temat wewnętrznej struktury i działania systemu.

Od pracowników działu IT możesz oczekiwać:

- informacji na temat infrastruktury sprzętowej organizacji;

- informacji na temat infrastruktury programowej organizacji;

- zdefiniowania interfejsów do integracji tworzonego systemu z istniejącymi systemami;

- określenia ograniczeń technologicznych w stosunku do tworzonego systemu;

- informacji na temat wewnętrznej struktury istniejącego oprogramowania, w granicach wyznaczonych przez zawartą umowę o poufności.

Spotkania kurtuazyjne

Czasem, zwłaszcza na początku projektu, warto odbyć spotkania, które nazywam kurtuazyjnymi. Załóżmy, że nowe oprogramowanie będzie dotyczyć trzech z czterech komórek organizacji. Planujesz więc, w najlepszej wierze, spotkania z osobami z trzech interesujących Cię działów, a z czwartym nie. Jak sądzisz: co myślą osoby pracujące w dziale numer cztery? Postaw się w ich sytuacji. Prawdopodobnie chodzi im po głowie coś takiego: Hmmm, ciekawe, co się dzieje. Ze wszystkimi się spotkał, a z nami nie. Dlaczego? Może chcą nas zwolnić? Brak współpracy ze strony klienta to najczęstsza przyczyna fiaska w projektach IT. Jeśli Twoim zadaniem jest prowadzenie projektu programistycznego dla dużej organizacji i według Ciebie dana komórka nie ma znaczenia w projekcie, to powinieneś spotkać się przynajmniej raz z kluczową osobą (lub osobami) stamtąd. Twoim celem będzie poinformowanie ich, co się dzieje w organizacji i w jaki sposób dotyczy to ich działu, a nie faktyczne zbieranie wymagań.

W zależności od wielkości organizacji oraz jej wewnętrznej struktury wymienione role mogą się pokrywać. Możesz rozmawiać ze specjalistą biznesowym, który jest jednocześnie użytkownikiem systemu, szefem działu i został oddelegowany do prowadzenia tego projektu po stronie organizacji.

Przygotuj uczestników do spotkania

Jeśli w trakcie spotkania zaskoczysz nieprzygotowanego użytkownika jakimś pytaniem (zwłaszcza jeśli chodzi o podjęcie decyzji), to możesz usłyszeć: Cóż, muszę się zastanowić. Ustalimy to na następnym spotkaniu. Aby zminimalizować prawdopodobieństwo wystąpienia takich sytuacji, przygotuj użytkowników do spotkania. Wyślij mail z informacjami:

- czego dotyczy spotkanie;

- jak mają się do niego przygotować;

- jakie są cele spotkania: decyzje do podjęcia, informacje do pozyskania.

W taki sposób zwiększasz szanse na pomyślny przebieg rozmowy.

Na zakończenie krótka uwaga: pamiętaj o tym, żeby się umówić. Może to oczywiste, ale szkoda by było przejechać 500 km, aby stwierdzić, że część osób jest w terenie.

O zorganizowanie spotkań możesz bez wyrzutów sumienia poprosić osobę odpowiedzialną za projekt po stronie klienta. Określ ramy czasowe, napisz, z kim chcesz się spotkać, na jaki temat rozmawiać, a następnie poproś o przysłanie harmonogramu. To rozwiązanie ma tę korzyść, że pracownikowi organizacji łatwiej będzie dotrzeć do poszczególnych osób i wyegzekwować ich obecność.

Prowadzenie spotkania

Jeśli Ty nie prowadzisz spotkania, zaczyna to robić ktoś inny. Pamiętam moment, w którym zauważyłem tę zaskakującą zależność. Rozmawiałem z dwoma specjalistkami na temat kontrolingu finansowego. Z jakichś powodów był również obecny dyrektor departamentu, w którym pracowały. Byłem wtedy nieco onieśmielony obecnością dyrektora i po zadaniu kilku początkowych pytań oparłem się o krzesło i nie za wiele się odzywałem. Panie cierpliwie tłumaczyły mi zawiłości ich pracy. W pewnym momencie zauważyłem, że dyrektor zaczyna wypytywać pracownice o to, o co ja chciałem zapytać, oraz konkretyzować ich odpowiedzi. Miałem wrażenie, że ów człowiek odgrywa moją rolę. To, co stało się później, całkowicie mnie zaskoczyło. Wyprostowałem się na krześle i zadałem jakieś pytanie, potem następne i następne. Dyrektor posłusznie odpowiadał. Potem znów się wycofałem i znów dyrektor działu zajął moje miejsce. To było dla mnie przełomowe odkrycie! Uświadomiłem sobie, że gdy tylko wykazujesz inicjatywę podczas spotkania (poprzez zadawanie pytań i sterowanie kierunkiem rozmowy), to uczestnicy podążają za Tobą. Jeśli się wycofujesz, to zostawiasz coś w rodzaju wolnego miejsca, które może zająć każdy, kto tylko zechce.

Gdy jesteś odpowiedzialny za przebieg spotkania, to wykazuj inicjatywę i prowadź je. Jeśli Ty nie będziesz prowadził spotkania, zrobi to ktoś inny.

Iteracyjność spotkania

Czy zdarzyło Ci się kiedyś, że prowadząc sesję zbierania wymagań, wszystko było jasne, a gdy zaczynałeś analizować temat u siebie w biurze, nagle przychodziło Ci na myśl mnóstwo pytań? Jest to do przewidzenia, ponieważ wtedy starasz się poukładać wymagania w całość, w związku z czym od razu zwracasz uwagę na różnego rodzaju niespójności. Najlepiej byłoby wyjaśniać nieścisłości na bieżąco, aby jak najmniej z nich zaskoczyło Cię podczas analizy. Aby to zrobić, prowadź spotkanie w sposób iteracyjny (rysunek 11.1).

Rysunek 11.1. Iteracyjny sposób prowadzenia spotkania

Iteracyjność polega na tym, że prowadzisz spotkanie w blokach o ustalonej długości, pomiędzy którymi jest przerwa na podsumowanie tego, co się do tej pory wydarzyło. W trakcie podsumowania formułujesz pytania i wątpliwości, o których należy porozmawiać podczas kolejnej sesji. W ten sposób wyjaśnisz sporą część pojawiających się niejasności.

Podsumowania między iteracjami

Zastanawiasz się pewnie, jak przez piętnaście lub dwadzieścia minut wykonać podsumowanie, które pozwoli namierzyć potencjalne sprawy do wyjaśnienia. Czy używać diagramów UML, korzystać z jakiegoś szablonu, a może istnieje narzędzie informatyczne do wykonywania takich podsumowań?

Każde z wymienionych podejść ma tę samą wadę: jest uporządkowane. Natomiast Twoje myśli po sesji zbierania wymagań przypominają raczej kłębek wełny niż czytelne diagramy. Aby opracować czytelną dokumentację, trzeba najpierw uporządkować tę kotłowaninę myśli. Proces porządkowania zajmuje czas, dużo czasu. Tylko czy w trakcie przygotowywania podsumowania jest Ci to potrzebne? Nie, nie potrzeba Ci dokumentacji, lecz „wyciągnięcia na wierzch” wszystkich nieścisłości i wątpliwości. Doskonałym sposobem jest narysowanie mapy myśli[3].

Mapa myśli pozwala na bezpośrednie przeniesienie tego, co masz akurat w głowie, na papier[4]. Zamiast starać się uporządkować informacje, po prostu przenosisz je na kartkę w takiej postaci, w jakiej aktualnie znajdują się w Twojej głowie (rysunek 11.2).

Rysunek 11.2. Mapa myśli „działa” szybko

Praca z mapą myśli

Przede wszystkim w mapie myśli nie chodzi o precyzję, tylko o skojarzenia, o przerzucenie na kartkę wszystkiego, co w danym momencie masz w głowie. Aby przygotować mapę myśli, wykonaj następujące kroki:

1. Na środku czystej kartki A4 napisz nazwę zagadnienia, którego dotyczyła sesja zbierania rozmowy. W celu pobudzenia prawej półkuli mózgowej możesz napisane hasło ozdobić odręcznym rysunkiem.

2. Pomyśl o napisanym haśle i rysując odnogę od niego, napisz skojarzenie, które przychodzi Ci do głowy. Potem dodaj kolejne skojarzenia i skojarzenia na temat skojarzeń. Wypisz pojawiające się pytania.

3. Po pewnym czasie poczujesz, że wypisałeś już wszystko, co nurtowało Cię w danym temacie. Wtedy zakończ. Z tego, co obserwuję, trwa to nie dłużej niż pięć – dziesięć minut.

Przykładowa mapa myśli, która może powstać przy okazji takiego podsumowania, znajduje się na rysunku 11.3.

Rysunek 11.3. Fragment mapy myśli z podsumowaniem sesji zbierania wymagań

W wielu publikacjach i przykładach mapy myśli kształtem przypominają neuron. To tylko zwyczajowa konwencja, wcale nie muszą tak wyglądać. Ja np. każde hasło na mapie lubię umieszczać w owalnych bąbelkach, czasem stosuję wypunktowania i dodatkowe rysunki, rzadko daję napisy nad odnogami. Zapewniam Cię jednak, że mapy myśli w moim wydaniu sprawdzają się równie dobrze jak te „książkowe”. Znajdź własny sposób na ich rysowanie.

Gdy już sporządzisz mapę swoich myśli z podsumowaniem rozmowy na temat wymagań, odetchnij przez chwilę, a następnie spójrz na nią jeszcze raz. Zaznacz innym kolorem zagadnienia, co do których nie masz jasności, i pytania, które sformułowałeś. W ten prosty sposób przygotowałeś pytania, które zadasz rozmówcy zaraz na początku kolejnej sesji.

Zaleta map myśli

Mapy myśli, prócz szybkości i łatwości tworzenia, mają jeszcze jedną ważną zaletę: potrafią przenosić w czasie. Wcale nie żartuję! Gdy po jakimś okresie zaglądasz do przygotowanej uprzednio mapy myśli, wczytujesz się w nią, to zaczynasz się poruszać po tych samych ścieżkach skojarzeń w swoim umyśle. Mimo że upłynęło wiele czasu, zaczynasz przypominać sobie kontekst rozmowy, pomieszczenie, w którym się odbywała, gdzie siedzieli uczestnicy, co mówili. Odręczne rysunki i skreślenia na mapie prowadzą Cię do ważnych problemów, które zostały poruszone. Czy to nie jest podróż w czasie? Na mapie są tylko hasłowe skojarzenia i rysunki, ale potrafią przywołać wyraźne wspomnienia przeszłych sytuacji. Spróbuj uzyskać coś podobnego za pomocą pisanej dokumentacji. Musiałbyś stworzyć powieść!

Wadą mapy myśli jest to, że są nieprzenośne. Moje skojarzenia nie są Twoimi i odwrotnie. Jeśli wykonasz mapę myśli wspólnie z rozmówcą, to będą to Wasze wspólne skojarzenia na temat Waszej rozmowy i mapa będzie przywoływać Wasze określone wspomnienia. Formalna dokumentacja nie ma tych ograniczeń. Ma jednak inne, o których wspominałem w początkowych rozdziałach tej książki.

Narzędzia do rysowania map myśli

W sieci znajdziesz wiele narzędzi do przygotowywania map myśli[5]. Odradzam ich używanie z następujących powodów:

- ideą mapy myśli jest pobudzenie prawej (kreatywnej) półkuli mózgowej dzięki komunikacji ręka-mózg;

- najszybsze narzędzia nie są tak szybkie jak odręczne szkice;

- rysowanie odręczne zapewnia większą elastyczność;

- mapy myśli są półproduktem — na ich podstawie projekt przechodzi przez kolejne stadia. Ich główne przeznaczenie w zbieraniu wymagań nie polega na archiwizowaniu i dokumentowaniu.

Najlepszymi narzędziami do przygotowywania map myśli są kartki papieru, długopis i kolorowe flamastry. Jeśli jesteś fanem elektronicznych narzędzi, to ze spokojnym sumieniem mogę polecić tablet. Dobry tablet jest równie efektywny jak kartka papieru i możesz robić ze swoimi dokumentami co tylko chcesz.

Używaj kartek co najmniej rozmiaru A4 i tabletów o dużej rozdzielczości. Zauważyłem, że gdy w celu oszczędności miejsca rysuję mapę na połowie kartki, to przychodzi mi do głowy mniej pomysłów, niż gdy używam całej dostępnej przestrzeni. Można wysnuć heurystykę: dużo miejsca — dużo pomysłów, mało miejsca — mało pomysłów. Przyznasz chyba, że to ma sens?

Podsumowanie końcowe

W literaturze na temat technik zapamiętywania[6] nieustannie przewija się jeden wątek: okresowe podsumowania. Zapamiętywanie i przypominanie, nawet z wykorzystaniem mapy myśli, zależą silnie od Twojej uważności i skupienia podczas rozmowy. Aby utrwalić to, czego dowiedziałeś się podczas całodniowego spotkania (rzecz jasna prowadzonego iteracyjnie), wykonaj co najmniej jedno podsumowanie po zakończonym spotkaniu. Możesz oczywiście wykonać je po powrocie do biura, ale zalecam zrobienie tego „na gorąco” — od razu po spotkaniu. Możesz np. zaraz po wyjściu z siedziby klienta udać się na herbatę do pobliskiej restauracji i tam podsumować spotkanie. Ja zazwyczaj robię to właśnie w ten sposób. Trwa to nie dłużej niż wypicie herbaty, a przynosi ogromne korzyści. Końcowe podsumowanie wykonaj również w postaci mapy myśli, pamiętając o:

- przejrzeniu notatek z rozmowy pod kątem potrzeb i problemów zgłaszanych przez rozmówców;

- zanotowaniu swoich pomysłów na konkretne tematy;

- zanotowaniu pytań, nad którymi należy się zastanowić w następnej kolejności;

- umieszczeniu na mapie tych informacji z notatek, które wydadzą Ci się najbardziej istotne;

- wyraźnym zapisaniu tego, co w notatkach jest nieczytelne.

Zamykanie spotkania

Zamknięcie spotkania ma na celu potwierdzenie osiągnięcia celów spotkania (jeśli oczywiście zostały wskazane i osiągnięte). Zamykając spotkanie:

- przypomnij jego cele;

- podsumuj to, co zostało ustalone w odniesieniu do każdego z celów (dobrze sprawdza się tu technika parafrazy);

- uzyskaj potwierdzenie uczestników co do przedstawionych ustaleń.

Dobrym zwyczajem jest wysyłanie uczestnikom podsumowania ze spotkania, ma on jednak parę uciążliwych wad:

- jest to pracochłonne, gdyż swoje odręczne notatki musisz uporządkować, spisać w zrozumiały sposób, umieścić w szablonie podsumowania i wysłać;

- przy sześciu spotkaniach dziennie przygotowywanie podsumowań może zająć Ci całe popołudnie i znaczną część wieczoru; jest to męczące zwłaszcza wówczas, gdy zbieranie wymagań trwa kilka dni z rzędu;

- adresaci będą zgłaszać swoje poprawki do podsumowania — to akurat pozytywny objaw, lecz skutkuje ponownym wysyłaniem zaktualizowanych podsumowań;

- niektórzy adresaci wcale nie przeczytają podsumowania, co jednak nie będzie im przeszkadzać w podważaniu sensowności ustaleń podczas kolejnych spotkań.

Spisywanie wymagań po to, aby przedstawić je uczestnikom spotkań, ma jednocześnie tę wielką zaletę, że zmusza Cię do analizy. Jednak czas na szczegółową analizę przyjdzie nieco później, teraz przede wszystkim musisz zebrać wymagania.

Z przedstawionymi uciążliwościami możesz poradzić sobie na jeden z poniższych sposobów:

- ograniczyć się do zbiorczego podsumowania po kilku seriach spotkań;

- poprosić użytkowników o przesłanie podsumowania do Ciebie;

- prowadzić sesje zbierania wymagań z drugą osobą.

Na szczególną uwagę zasługuje ostatnie rozwiązanie. Zbieranie wymagań we dwójkę pozwala jednej osobie w pełni zaangażować się w proces, natomiast druga dba o podsumowania, przygląda się z pozycji obserwatora i interweniuje w razie potrzeby. Będąc mocno zaangażowanym w rozmowę z klientem, możesz przeoczyć oczywiste rozwiązania lub ważne szczegóły. Druga niezaangażowana osoba, dysponująca świeżym spojrzeniem na sytuację, z pewnością to wychwyci.

Formuły spotkań na różne okazje

Na zakończenie chciałbym podać Ci kilka gotowych przepisów na spotkania. Możesz je wykorzystać przy różnych okazjach w trakcie prac nad systemem informatycznym. Niektóre z opisanych formuł mają zastosowanie do spotkań z klientem, niektóre do spotkań z programistami i testerami, a inne są uniwersalne.

Warsztaty z użytkownikami

Warsztaty są dobrym sposobem na pozyskanie wymagań dotyczących funkcjonowania i użyteczności interfejsu użytkownika (mowa o interfejsie graficznym). Użytkownicy są najbardziej świadomi słabości istniejącego interfejsu i mogą dostarczyć wielu użytecznych pomysłów. Nie prowadziłem warsztatu dla więcej niż dwudziestu osób i nie twierdzę, że to niemożliwe, ale wątpię, by było to użyteczne. Nie chodzi o zebranie wszystkich pomysłów, lecz tych najbardziej popularnych. Z tego powodu uważam, że grupa dwudziestu użytkowników, którzy na co dzień używają istniejącego lub będą używać nowego systemu, jest w pełni reprezentatywna. Podczas warsztatów będą opracowywane scenariusze przypadków użycia systemu, tyle że na sposób graficzny.

Wcześniej przygotuj:

- duże arkusze papieru, kartki do flipchartu;

- kolorowe flamastry, przynajmniej po jednym na dwie osoby;

- taśmę klejącą, która nie zniszczy ścian;

- przypadki użycia systemu, które chcesz opracować, np.:

- wykonaj przelew dowolny,

- sporządź nowe pismo wychodzące,

- zdefiniuj obieg faktury.

Schemat postępowania:

1. Wyjaśnij cel warsztatów i powiedz, co spodziewasz się osiągnąć.

2. Przeprowadź pokaz rysowania ekranów użytkownika dla wybranego przypadku użycia[7].

3. Podziel uczestników na grupy co najwyżej czteroosobowe.

4. Przydziel przypadek użycia do każdej z grup i poproś o narysowanie scenariusza użycia w postaci ekranów użytkownika.

5. Poproś każdą z grup o przedstawienie swojego pomysłu, a resztę osób o dodawanie swoich.

6. Poprawki nanoś bezpośrednio na arkusze przygotowane przez grupy.

Stand-up meeting

Zgodnie z przyjętą na początku zasadą nie tłumaczę terminów, które już funkcjonują w języku mówionym. Stand-up meeting (inna nazwa: standing meeting) jest rodzajem spotkania, które możesz praktykować z zespołem tworzącym oprogramowanie, nad jakim pracujesz, po to, aby być na bieżąco z postępem prac i reagować na występujące problemy.

Charakterystyczne cechy stand-up meeting to:

- Ma krótki czas trwania — każdy z uczestników ma na wypowiedź minutę lub dwie;

- odbywa się na stojąco — taka postawa (bez podpierania się o ściany, biurka czy krzesła) sprzyja szybkiemu zakończeniu spotkania;

- odbywa się regularnie o ustalonej porze — jeśli to możliwe, to codziennie.

Podczas spotkania każdy z uczestników odpowiada na trzy pytania:

1. Co robiłem?

2. Co będę robił?

3. Z czym miałem problemy?

Pamiętaj, że stand-up meeting służy informowaniu, a nie rozwiązywaniu problemów. Jeśli zauważysz jakieś kwestie, którym należy przyjrzeć się bliżej, rozwiąż je indywidualnie z poszczególnymi osobami po zakończeniu spotkania.

Główne zalety spotkań w tym stylu to:

- wymiana informacji w zespole;

- możliwość wczesnego zareagowania na zaistniałe problemy;

- ogniskowanie energii zespołu w jednym kierunku — czasem w zespole zdarzają się osoby z tendencją do przedłużania lub komplikowania zadań ponad konieczność. Regularne informowanie reszty zespołu o tym, co robią, pomaga im skoncentrować się na rzeczach najważniejszych, jak długo można bowiem mówić, że wciąż robi się to samo zadanie?

Kick-off meeting

Spotkanie rozpoczynające projekt — albo, jak się często mówi: kick-off meeting[8] — organizuje się, jak nazwa wskazuje, przy okazji rozpoczęcia prac nad projektem. Trzeba jednak ustalić, co mamy na myśli, mówiąc „projekt”. Nie musi wcale chodzić o gigantyczne przedsięwzięcie. Kick-off meeting możesz zorganizować również, gdy:

- rozpoczynasz pracę nad modułem;

- wprowadzasz znaczne zmiany w już działającym oprogramowaniu;

- rozpoczynasz pracę nad pakietem nowych funkcjonalności;

- rozpoczynasz pracę nad pakietem zmian w funkcjonalnościach.

Spotkanie to służy zbudowaniu wspólnego rozumienia (wizji!), jaki produkt należy dostarczyć na zakończenie prac.

Role poszczególnych osób biorących udział w spotkaniu są następujące:

- Ty — reprezentujesz klienta, omawiasz zakres prac, odpowiadasz na pytania uczestników.

- Programiści, architekci — zgłaszają potencjalne uwagi, zadają pytania; odgrywają ważną rolę, gdyż jako wykonawcy tego projektu mogą zaproponować prostsze lub tańsze rozwiązania.

- Testerzy — dostarczają cennych wskazówek dotyczących bezpieczeństwa i stabilności produktu.

- Użytkownicy (opcjonalnie) — zgłaszają uwagi na temat użyteczności interfejsu użytkownika.

Ważne jest, aby uczestnicy kick-off meeting były osobami, które fizycznie będą realizować zadania w projekcie. Nie spotykaj się z kierownikiem testerów i kierownikiem programistów (przynajmniej nie na tym spotkaniu), lecz z testerami i programistami, którzy faktycznie będą brali udział w pracach.

Podczas kick-off meeting omawiane są fundamentalne założenia projektu i wyjaśniane wątpliwości. Późniejsze szczegóły są nie mniej ważne, jednak wszystko opiera się na określonych podczas kick-off meeting ramach wspólnej wizji.

Retrospekcja

Spotkania retrospekcyjne zapewniają zwrotną pętlę uczenia się. Retrospekcja to podsumowanie jakiegoś istotnego okresu prac wraz z wyciągnięciem wniosków na przyszłość. To właśnie wyciągnięcie wniosków jest kluczowym wyróżnikiem spotkania retrospekcyjnego. Dzięki takim okresowym przeglądom możesz stale ulepszać proces wytwórczy, w którym bierzesz udział.

Retrospekcje możesz przeprowadzać zarówno z klientem, jak i z zespołem projektowym, który wytwarza oprogramowanie. Poniżej omawiam trzy kolejne etapy spotkania retrospekcyjnego.

Linia czasu

Ponieważ podsumowywany etap może być dość długi (np. sześć miesięcy), ważne jest, aby wszyscy przypomnieli sobie istotne rzeczy, które się do tej pory wydarzyły (zob. rysunek 11.4).

Rysunek 11.4. Linia czasu

Wcześniej przygotuj:

- samoprzylepne karteczki,

- tablicę albo flipchart,

- flamaster.

Schemat postępowania:

1. Na tablicy albo kartce z flipchartu narysuj poziomą oś liczbową.

2. Poproś uczestników o wypisanie na karteczkach ważnych, ich zdaniem, wydarzeń w rozpatrywanym okresie. Daj im kilka chwil do namysłu.

3. Poproś uczestników o naklejenie karteczek na osi liczbowej w takiej kolejności, w jakiej pamiętają zdarzenia. Mogą dodać kilka słów komentarza.

Opisana procedura to tylko jeden ze sposobów postępowania. Zamiast naklejania karteczek ludzie mogliby pisać na tablicy. Karteczki mają tę zaletę, że mocno angażują uczestników.

Pytania C5

Po omówieniu tego, co się wydarzyło, należy wyciągnąć wnioski z przeszłości. Pomogą Ci w tym pytania C5[9]:

1. Co należy zacząć robić?

2. Co należy przestać robić?

3. Czego robić więcej?

4. Czego robić mniej?

5. Co robić inaczej?

Dzięki pytaniom C5 wspólnie z uczestnikami spotkania retrospekcyjnego uwypuklisz i skonkretyzujesz sprawy, którymi należy zająć się w najbliższej przyszłości.

Zaplanowanie wdrożenia zmian

Gdy już wiecie, co należy zrobić, musicie zaplanować wdrożenie zmian (zob. rysunek 11.5). W tym celu podziel tematy, które wyniknęły z pytań C5, na dwie kategorie:

- My — są to rzeczy, których wprowadzenie całkowicie leży w mocy osób obecnych na spotkaniu, np.: Piszemy tygodniowe podsumowania prac.

- Organizacja — są to rzeczy, których wprowadzenie jest poza mocą decyzyjną uczestników spotkania. Najczęściej dotyczą zmian organizacyjnych, np.: Umożliwić odbieranie telefonów tylko w ustalonych godzinach. Tych zmian nie można wprowadzić tak po prostu, lecz można za nimi lobbować u osób, które mają odpowiednie kompetencje.

Rysunek 11.5. Planowanie wdrożenia zmian i przydzielanie odpowiedzialności

Z każdej z powyższych grup wybierzcie po dwie zmiany, a następnie przydzielcie osoby odpowiedzialne i określcie terminy zrealizowania. Rolą osoby odpowiedzialnej nie jest wykonywanie wszystkiego własnoręcznie. Jej głównymi zadaniami są: troszczenie się o to, aby wybrana zmiana została wdrożona, i szukanie sposobów, jak to zrobić.

Niech się zadzieje!

Gdy ludzie wezmą udział w retrospekcji i wysilą się, żeby sformułować zmiany, to niech coś się w tym temacie zadzieje. Niech będzie widoczne i wszystkim wiadome, jakie są postępy, co się udało, a co nie, i dlaczego. Jeśli nic się nie stanie po spotkaniu retrospekcyjnym, to ludzie przestaną widzieć sens zmian, przestaną próbować. Na kolejne spotkanie prawdopodobnie nikt nie przyjdzie.

Podsumowanie

W tym rozdziale skupiłem się na spotkaniach. Określiłem kryteria efektywnego spotkania, a następnie przeanalizowałem poszczególne jego etapy. Były to:

1. Przygotowanie spotkania — tu skoncentrowałem się na konkretnych parametrach spotkania, takich jak: liczba uczestników, czas trwania oraz organizacja.

2. Prowadzenie spotkania — głównym celem tego etapu jest dowiedzenie się wszystkiego co trzeba podczas jak najmniejszej liczby spotkań. Z tego względu duży nacisk kładłem na iteracyjny sposób prowadzenia spotkania, z regularnymi podsumowaniami w postaci szybko tworzonych map myśli.

3. Zamykanie spotkania — poświęciłem tu nieco miejsca na wskazówki pomagające ostatecznie skonkludować ustalenia spotkania.

Na sam koniec otrzymałeś kilka przepisów na spotkania. Możesz je wykorzystać w swojej pracy.

[1] Z przeprowadzonych w trakcie naszych projektów doradczych ankiet wynika, że doprecyzowanie oczekiwań klienta (uwaga: podczas wdrożenia istniejącego systemu, nie nowo tworzonego) wymaga wymienienia ze stroną klienta średnio 100 maili i 120 telefonów.

[2] Twórca terapii prowokatywnej.

[3] Więcej na ten temat w książce Tony’ego Buzana Mapy twoich myśli.

[4] Programiści powiedzieliby, że jest to core dump mózgu.

[5] Bardzo funkcjonalnym narzędziem dostępnym na licencjach EPL i LGPL jest XMind: http://www.xmind.net.

[6] Na przykład Pamięć. Trening interaktywny Macieja Szurawskiego.

[7] Szczegóły na temat tej techniki znajdziesz w rozdziale 7., podrozdziale „Ekrany użytkownika podczas konkretyzowania”.

[8] Kilka razy słyszałem „wykop projektu”, ale dla bezpieczeństwa pozostanę przy sprawdzonej nazwie angielskiej.

[9] Nazywają się tak, ponieważ w języku polskim wszystkie rozpoczynają się literą „C” i jest ich pięć.

Rozdział 12.
Techniki zbierania wymagań w pigułce

Gdy już zaczniesz stosować przedstawione w tej książce techniki rozmowy z klientami, wertowanie jej może zabierać sporo czasu. Z tego względu zamieszczam streszczenie opisanych technik, abyś miał je zawsze pod ręką.

Rysunek 12.1. Techniki zbierania wymagań

Wizja

Cel formułowania wizji:

- zdefiniowanie celu dla tworzonego oprogramowania.

Cechy wizji:

- pochodzi od klienta;

- jest współdzielona przez wszystkich interesariuszy;

- jest stale komunikowana wszystkim interesariuszom.

Definiowanie wizji poprzez krótki opis:

System <NAZWA> jest to <PRZEZNACZENIE, GŁÓWNE FUNKCJONALNOŚCI>.

Albo:

System <NAZWA> jest to <WIĘKSZA KATEGORIA>

w <CZYJA? GDZIE?> dla <GŁÓWNI UŻYTKOWNICY>

odpowiedzialna za <GŁÓWNE USŁUGI, FUNKCJONALNOŚCI>.

Definiowanie wizji przy użyciu arkusza wizji:

- Jak się nazywa produkt?

- Jakiej kategorii/klasy jest to produkt?

- Dla kogo jest przeznaczony?

- Jakie potrzeby zaspokaja?

- Jakie możliwości wykorzystuje?

- Jakie przynosi korzyści, za które klient zechce zapłacić?

- Jakie są alternatywy?

- Co odróżnia produkt od konkurencyjnych alternatyw?

Odkrywanie potrzeb

Zawsze dąż do odkrycia potrzeb:

- klienci zazwyczaj opowiadają o tym, co chcą, Ty zaś masz się przede wszystkim dowiedzieć, dlaczego lub po co.

Szukaj potrzeb, które są:

- konkretne,

- związane z danym biznesem.

Rodzaje potrzeb:

Tabela 12.1. Rodzaje potrzeb, które można usłyszeć w wypowiedzi klienta

Rodzaje potrzeb

Wypowiedź klienta pasuje do schematu…

Problem do uniknięcia

- Chcę uniknąć <WYPOWIEDŹ KLIENTA>.

- Nie chcę, aby <WYPOWIEDŹ KLIENTA>.

- To trudne, ponieważ <WYPOWIEDŹ KLIENTA>.

- Jeśli tego nie zrobimy, to <WYPOWIEDŹ KLIENTA>.

Korzyść do osiągnięcia

- Chcę osiągnąć <WYPOWIEDŹ KLIENTA>.

- To sprawi, że <WYPOWIEDŹ KLIENTA>.

- To będzie oznaczać, że <WYPOWIEDŹ KLIENTA>.

Pytania o potrzeby:

Tabela 12.2. Pytania o potrzeby

Pytania neutralne (rozpoczynające konwersację na temat potrzeb)

- Co spowodowało, że chcesz tej funkcjonalności?

- Co takiego ważnego jest w tej funkcjonalności?

- Co zmotywowało cię do tego, że chcesz tej funkcjonalności?

- Co konkretnie spowodowało, że chcesz tej funkcjonalności?

- Dla kogo właściwie ważne jest, aby ta funkcjonalność powstała?

- Co ta funkcjonalność zmieni w biznesie?

- Gdy ta funkcjonalność już powstanie, to na kogo będzie miała wpływ?

- Gdyby ta funkcjonalność nie powstała, to na kogo będzie to miało negatywny wpływ, a na kogo pozytywny?

Problemy do uniknięcia

- Dlaczego?

- Dlaczego to jest ważne?

- Z jakiego powodu?

- Co może się stać, jeśli to zaniedbamy?

- Jakiego problemu można dzięki temu uniknąć?

- Ile można na tym zaoszczędzić?

- Przed jakimi stratami może cię to uchronić?

- Jaki problem to rozwiązuje?

Korzyść do osiągnięcia

- Po co?

- Co to da?

- W jakim celu?

- Co się stanie, jeśli to zrealizujemy?

- Co dzięki temu można osiągnąć?

- Jakich korzyści się po tym spodziewasz?

- Jakie zyski to przyniesie?

- Jakie to daje możliwości?

Szablony User Stories pomagające w odkrywaniu potrzeb:

- ABY UNIKNĄĆ <PROBLEM DO UNIKNIĘCIA>, JAKO <ROLA> CHCĘ <FUNKCJONALNOŚĆ>.

- ABY OSIĄGNĄĆ <KORZYŚĆ DO OSIĄGNIĘCIA>, JAKO <ROLA> CHCĘ <FUNKCJONALNOŚĆ>.

Konkretyzowanie

Zacznij konkretyzować, gdy:

- klient posługuje się ogólnikami;

- klient „przeskakuje” z tematu na temat;

- klient używa skrótów myślowych;

- klient posługuje się słownictwem branżowym.

Pytania konkretyzujące:

- Jak konkretnie…?

- Po czym poznasz, że…?

- Jakie są kryteria…?

- Jak zmierzyć, że…?

- Z czego się składa…?

Sygnały STOP dla konkretyzowania:

- pojawiły się konkrety;

- rozmówca mówi „nie wiem”;

- rozmówca powtarza się;

- pojawiają się „wodotryski”;

- rozmówca „ucieka” w ulubione tematy.

Algorytm konkretyzowania:

Rysunek 12.2. Algorytm konkretyzowania

Technika skrzynki

Używaj techniki skrzynki, gdy:

- wymaganie ma charakter procesu.

NIE używaj techniki skrzynki do wymagań takich jak:

- dotyczące architektury;

- kryteria jakości;

- gdy mowa o końcowym kształcie, a nie działaniu (gdyż jest nieistotne albo oczywiste);

- specyficzne wymagania funkcjonalne, w których system nie obsługuje pewnego procesu, lecz reaguje na określone zdarzenia (sygnały) i w ich wyniku zmienia swój stan.

Algorytm techniki skrzynki:

Rysunek 12.3. Algorytm działania techniki skrzynki

Rysunek 12.4. Rekurencja w technice skrzynki

Ekrany użytkownika

Używaj ekranów użytkownika do:

- definiowania wymagań funkcjonalnych dla aplikacji posiadających graficzny interfejs użytkownika.

Na ekranach umieszczaj:

- prostokąty oznaczające ekrany wraz z ich nazwami;

- prostokąty oznaczające pola, w których użytkownik wpisuje jakieś dane;

- napisy z podkreśleniem oznaczające elementy akcji (można tam kliknąć i coś się zadzieje);

- strzałki przejścia pomiędzy ekranami wraz z podpisem wskazującym, w wyniku jakiego zdarzenia następuje dane przejście.

Pamiętaj o tym, aby:

- rysować razem z użytkownikiem;

- mieć świadomość, że ekran to kontrakt między Tobą a użytkownikiem;

- z wyczuciem stosować detale.

Uogólnianie

Zacznij uogólniać, gdy:

- klient mówi o cechach systemu;

- klient co chwila dokłada nowe szczegółowe funkcjonalności;

- klient mówi „od rzeczy” i sprawia wrażenie, że nie wie, czego chce;

- klient „przeskakuje” między szczegółowymi tematami.

Pytania uogólniające:

Tabela 12.3. Pytania uogólniające (o problemy i o korzyści)

Pytania o problemy

Pytania o korzyści

- Dlaczego?

- Dlaczego to jest ważne?

- Z jakiego powodu?

- Co może się stać, jeśli to zaniedbamy?

- Jakiego problemu można dzięki temu uniknąć?

- Ile można na tym zaoszczędzić?

- Przed jakimi stratami może cię to uchronić?

- Jaki problem to rozwiązuje?

- Po co?

- Co to da?

- W jakim celu?

- Co się stanie, jeśli to zrealizujemy?

- Co dzięki temu można osiągnąć?

- Jakich korzyści się po tym spodziewasz?

- Jakie zyski to przyniesie?

- Jakie to daje możliwości?

Sygnały STOP dla uogólniania:

- znalazłeś przyczynę, dla której klient oczekuje danej cechy systemu;

- klient zaczął mówić o celu biznesowym;

- klient zaczął mówić o swoich potrzebach (potrzeba jest uogólnieniem o aktualnie najwyższym priorytecie w biznesie klienta).

Algorytm uogólniania:

Rysunek 12.5. Algorytm uogólniania

Powiększanie przestrzeni możliwych rozwiązań

Kiedy używać?

- Gdy w rozmowie napotykasz impas i należy zwiększyć liczbę możliwych rozwiązań, aby wybrać to, które będzie satysfakcjonujące dla obu stron.

Algorytm powiększania przestrzeni możliwych rozwiązań:

Rysunek 12.6. Powiększanie przestrzeni rozwiązań

Proponowanie alternatywnych rozwiązań

Kiedy używać?

- Gdy chcesz zasugerować klientowi rozwiązanie, które w Twojej eksperckiej ocenie w większym stopniu spełnia jego potrzeby.

Schemat alternatywnych rozwiązań:

Rysunek 12.7. Sposób pracy z arkuszem proponowania alternatyw

Pytania trafiające w samo sedno

Ogólne zalecenia:

- Jakość odpowiedzi, które uzyskujesz, świadczy o jakości pytań, które zadajesz.

- Pytaj zamiast sugerować odpowiedzi.

Korzystanie z pytań otwartych, zawężonych i zamkniętych:

Tabela 12.4. Kiedy używać pytań zamkniętych, zawężonych i otwartych?

Rodzaj

Używaj, gdy

Przykład

Zamknięte

- Chcesz podsumować i ostatecznie skonkretyzować oczekiwania.

- Chcesz wybrać pomiędzy kilkoma alternatywnymi rozwiązaniami.

- Definiujesz warunki akceptacji rozwiązania.

- Rozumiem, że z tego ekranu użytkownik musi mieć możliwość wykonania X, Y, Z. Czy mam rację?

- Której z technologii należy użyć: JEE czy PHP?

- Czyli jeśli będzie wykonane X, Y, Z, to uznają państwo zadanie za wykonane?

Zawężone

- Chcesz przejść poziom niżej (na mniejsze kawałki informacji) w strukturze rozmowy.

- Chcesz, aby odpowiedź klienta miała ściśle określoną strukturę.

- Jakie są najistotniejsze rzeczy w module X?

- Co po kolei musi się wydarzyć, aby obsłużyć klienta, od momentu, gdy wejdzie on do banku, do chwili, gdy wyjdzie z pokwitowaniem przelewu?

Otwarte

- Zaczynasz rozmowę.

- Chcesz wyodrębnić duże kawałki informacji.

- Chcesz posłuchać opinii klienta na dany temat.

- Chcesz, aby klient się „wygadał”.

- Chcesz rozluźnić atmosferę.

- W czym mogę pomóc?

- Czego państwo oczekują po tym przedsięwzięciu?

- Co skłoniło pana do zmiany systemu?

- Co ciekawego się wydarzyło od ostatniego spotkania?

Używanie czasów w pytaniach:

Tabela 12.5. W jakim czasie formułować pytania do rozmówcy?

W czasie przeszłym

W czasie teraźniejszym

W czasie przyszłym

- Gdy chcesz poznać problemy rozmówcy.

- Gdy chcesz zebrać informacje na temat rzeczywistej sytuacji, w której znajduje się rozmówca.

- Gdy definiujesz przypadki użycia i ich scenariusze.

- Gdy projektujesz z rozmówcą ekrany użytkownika.

- Gdy chcesz się dowiedzieć, jak powinna działać tworzona aplikacja.

- Gdy chcesz poznać cele biznesowe klienta.

- Gdy chcesz poznać korzyści, jakie musi zapewnić tworzone oprogramowanie.

Zmiana ram odniesienia

Kiedy korzystać ze zmiany ramy odniesienia?

- Gdy chcesz przedstawić zagadnienie z różnych perspektyw.

- Gdy chcesz uświadomić rozmówcy konsekwencje formułowanych wymagań.

Powiększanie ram odniesienia:

- Podczas zbierania wymagań zawsze umieszczaj nowe wymaganie w kontekście jakiegoś procesu.

Zmniejszanie ramy odniesienia:

- Zanegowanie kwantyfikatorów ogólnych — kwantyfikatory ogólne to: wszystkie, każdy, żaden, zawsze, nigdy. Zwracaj uwagę zwłaszcza na kwantyfikatory ogólne formułowane w domyśle, np.:

- Czy na pewno wszyscy klienci nie zdają sobie sprawy z własnych oczekiwań?

- Czy na pewno wszyscy programiści nie myślą biznesowo?

- Czy wszystkie moduły muszą być dostępne przez dwadzieścia cztery godziny na dobę?

- Podzielenie informacji na mniejsze porcje — przy użyciu konkretyzowania, np.:

- Którzy konkretnie klienci nie zdają sobie sprawy z własnych oczekiwań?

- Którzy konkretnie programiści nie myślą biznesowo i co to oznacza?

- Które moduły muszą być dostępne przez dwadzieścia cztery godziny na dobę?

Parafrazowanie

Cele parafrazowania:

- budowanie zrozumienia potrzeb klienta;

- pozostawanie w kontakcie z klientem;

- aktywne słuchanie.

Kiedy parafrazować?

- Po każdej nowej informacji usłyszanej od rozmówcy.

Struktura komunikatu parafrazy:

Jeśli dobrze cię zrozumiałem, to <WYPOWIEDŹ KLIENTA UJĘTA WŁASNYMI SŁOWAMI>.

Czy pominąłem coś istotnego?

Algorytm parafrazowania:

Rysunek 12.8. Cykl parafrazowania

Technika pozytywnej intencji

Cel techniki pozytywnej intencji:

- zareagowanie na trudny komunikat ze strony rozmówcy.

Kiedy używać techniki pozytywnej intencji?

- Gdy ze strony rozmówcy padł trudny komunikat, a zakończenie sesji jest biznesowo nieopłacalne.

Aby znaleźć pozytywną intencję, odpowiedz sobie na pytania:

- Co dobrego on chciał mi przekazać?

- Co dobrego on chciał dla mnie?

- W czym on chciał mi pomóc, gdy to mówił?

- Do jakiej zmiany on chciał mnie zachęcić, mówiąc mi to, co powiedział?

Struktura komunikatu pozytywnej intencji:

Rozumiem, że <POZYTYWNA INTENCJA>. Jak zatem mogę <PYTANIE KONKRETYZUJĄCE Z ZAŁOŻENIEM POZYTYWNEJ INTENCJI>?

Przejmowanie kierunku rozmowy

Kiedy stosować przejmowanie kierunku rozmowy?

- Gdy chcesz zmienić temat rozmowy.

- Gdy rozmówca nieoczekiwanie zmienia temat rozmowy, a Ty potrzebujesz pozostać przy poprzednim.

Struktura komunikatu przejęcia kierunku rozmowy:

1. Dopasowanie — Rozumiem, że ważna jest dla ciebie <PARAFRAZA ALBO POZYTYWNA INTENCJA>. Na pewno się tym zajmiemy,

2. Przejęcie — teraz jednak chciałbym porozmawiać o <TEMAT, NA KTÓRY CHCESZ PRZEKIEROWAĆ ROZMOWĘ>,

3. Prowadzenie — a zatem <PYTANIE O POŻĄDANY WĄTEK ROZMOWY>.

Komunikacja według modelu NVC

Kiedy używać?

- Gdy chcesz nawiązać kontakt z rozmówcą.

- Gdy chcesz okazać rozmówcy empatię.

Ogólny schemat wypowiedzi:

1. Kiedy widzę/widzisz…/słyszę…<OBSERWACJA>,

2. czuję/czujesz… <UCZUCIE>,

3. bo potrzebuję/potrzebujesz… <POTRZEBA>.

4. Czy mógłbyś <PROŚBA O ZMIANĘ OBSERWOWANEGO ZACHOWANIA>?

Tabela 12.6. Uczucia według NVC (za Rosenbergiem)

- Błogość

- Przyjemność

- Odprężenie

- Poruszenie

- Rozbawienie

- Rozczulenie

- Rozweselenie

- Skoncentrowanie

- Spełnienie

- Swoboda

- Uniesienie

- Urzeczenie

- Wrażliwość

- Zachwyt

- Zaskoczenie

- Zdumienie

- Zrelaksowanie

- Zainspirowanie

- Zaintrygowanie

- Zaciekawienie

- Ekscytacja

- Duma

- Bierność

- Ból

- Niechęć

- Lęk

- Niewygoda

- Furia

- Niepewność

- Nieufność

- Przygnębienie

- Gniew

- Złość

- Obawa

- Obojętność

- Ociężałość

- Bezsilność

- Senność

- Frustracja

- Spięcie

- Przytłoczenie

- Przybicie

- Niezdecydowanie

- Przykrość

- Zdziwienie

Tabela 12.7. Potrzeby ludzkie według NVC (za Rosenbergiem)

- Swoboda wyboru marzeń, celów, wartości

- Swoboda wyboru planów

- Świętowanie rozwoju

- Opłakiwanie strat

- Autentyczność

- Twórczość

- Sens

- Poczucie osobistej wartości

- Akceptacja

- Uznanie

- Bliskość

- Wspólnota

- Znaczenie

- Empatia

- Uczciwość

- Miłość

- Otucha

- Wsparcie

- Szacunek

- Zaufanie

- Zrozumienie

- Bawienie się

- Śmiech

- Piękno

- Harmonia

- Natchnienie

- Porządek

- Pokój

- Odpoczynek

- Schronienie

- Pożywienie

Ważne wskazówki:

- Schemat NVC ma się pojawiać w Twoim myśleniu i działaniu, nie musisz go wypowiadać słowo w słowo.

- NVC nie służy do tego, aby przekonać innych do swojego zdania, lecz aby nawiązać z nimi kontakt oraz okazać empatię.

Ustalanie priorytetów za pomocą pytań

Pytanie wprost:

Zapytaj: Co należy wykonać jako pierwsze?

Eliminowanie poprzez korzyść:

Zapytaj: Jeśli miałbyś zacząć używać tego systemu już jutro, to z których funkcjonalności chciałbyś skorzystać najpierw?

Eliminowanie „od problemu”:

Zapytaj: Gdyby zabrakło Ci teraz czasu/budżetu, to z której funkcjonalności zrezygnowałbyś na tę chwilę?

Analiza pilności i ważności:

- Wymagania pilne to te, które mają wyznaczony względnie bliski termin zakończenia.

- Wymagania ważne to te, których wykonanie lub zaniechanie będzie miało poważny wpływ na cele biznesowe klienta.

Rysunek 12.9. Priorytety na podstawie pilności i ważności

Kiedy korzystać z konkretnej techniki nadawania priorytetów:

Tabela 12.8. Korzystanie z technik nadawania priorytetów

Technika

Kiedy używać?

Pytanie wprost

- Zawsze zaczynaj od pytania wprost. Jest to najprostszy i najmniej czasochłonny sposób uzyskania informacji.

- Gdy klient sam sygnalizuje, że posiada listę priorytetów, np. w postaci celów biznesowych, które należy zrealizować w określonym terminie, a tworzone moduły systemu się do tego bezpośrednio przyczyniają.

Eliminowanie poprzez korzyść

- Gdy masz do czynienia z rozmówcą, który wyjątkowo mocno podkreśla korzyści wynikające z wdrożenia tworzonego oprogramowania.

Eliminowanie „od problemu”

- Gdy masz do czynienia z rozmówcą, który wyjątkowo mocno podkreśla problemy do rozwiązania za pomocą tworzonego oprogramowania.

Analiza pilności i ważności

- Gdy z jakichkolwiek względów (np. finansowych) należy ustalić priorytety „na teraz”, jednak klientowi trudno się zdecydować, które z wymagań powinien wybrać.

- Gdy odkryjesz, że oprogramowanie ma zaspokajać sprzeczne potrzeby (np. niedające się pogodzić oczekiwania różnych komórek organizacyjnych).

Excelowe czary-mary

- Gdy cele wymagania pochodzą od różnych decydentów i trudno im się porozumieć w sprawie priorytetów.

Spotkania

Pytania pomagające przygotować spotkanie:

- Co należy ustalić podczas spotkania?

- Jakie decyzje należy podjąć?

- Jakich informacji potrzebujesz?

Ile osób zaprosić na spotkanie?

- O ile to możliwe, nie więcej niż cztery.

Parametry spotkań:

Tabela 12.9. Parametry spotkań

Rodzaj spotkania

Czas trwania

Liczba spotkań/dzień

Przykład

Krótkie na jeden temat

1 – 2 h

+ 15 min przerwy między spotkaniami.

6

- Określenie, z jakimi systemami ma współpracować nowe oprogramowanie.

- Określenie, jakie usługi system ma udostępniać zewnętrznym klientom.

- Zdefiniowanie zakresów bezpieczeństwa usług udostępnianych przez system.

Krótkie na różne tematy

1 – 2 h

+ 30 min przerwy między spotkaniami.

4 – 5

- Określenie, jakie dane mają być widoczne w raporcie X.

- Zebranie informacji na temat niedogodności występujących w interfejsie użytkownika.

Długie

Cały dzień.

Prowadzone iteracyjnie.

1

- Warsztaty z użytkownikami na temat interfejsu oprogramowania.

- Definiowanie zakresu nowo tworzonego systemu.

Iteracyjne prowadzenie spotkania:

Rysunek 12.10. Iteracyjny sposób prowadzenia spotkania

Rozdział 13.
Kiedy techniki przedstawione w tej książce NIE zadziałają?

Z najszczerszą niecierpliwością czekałem na napisanie tego krótkiego rozdziału. Czy rzeczywiście, po przebrnięciu przez wiele technik przygotowujących Cię na różne sytuacje, może się okazać, że w pewnym przypadku nic z tego, czego się dowiedziałeś, nie zadziała? Niestety tak.

Żadna z technik nie zadziała, jeśli Twój rozmówca nie będzie chciał współpracować. Jakie to oczywiste, prawda? Ani pozytywna intencja, ani przejęcie kierunku rozmowy, ani nawet najbardziej wyrafinowana zmiana ramy odniesienia nie zadziałają, gdy klient postanowi sabotować spotkanie. Granica współpracy rozmówców to zakres stosowalności metod przedstawionych w tej książce, o czym Cię uczciwie informuję.

W pierwszym wydaniu książki napisałem tu, że jeśli nie ma dobrej atmosfery rozmowy, to żadna z technik nie zadziała. W drugim wydaniu rozbudowałem tematy związane z atmosferą rozmowy, dodając techniki oparte na trosce o rozmówcę i jego potrzeby. Mimo to ten rozdział jest wciąż aktualny.

Jeśli atmosfera będzie dobra, techniki zadziałają. Efektywnie poprowadzisz rozmowę, a rozmówcy będą za Tobą podążać. Przy złej atmosferze Twoje wysiłki tylko ich zirytują. Przez cały czas zbierania wymagań musisz dbać o atmosferę rozmowy. Bądź szczery, słuchaj klienta, pytaj o zgodę na zadawanie pytań, dotrzymuj słowa, traktuj go jak równego sobie, staraj się mu pomóc, bądź uczciwy. Szanuj go. Czasem może się zdarzyć, że mimo wszystko klient nie będzie chciał współpracować. To również musisz uszanować.

Lektura uzupełniająca

Adzic G., Specification by Example: How Successful Teams Deliver the Right Software, Manning Publications Co, New York 2011.

Buzan T., Mapy twoich myśli, Wydawnictwo AHA!, Łódź 2014.

Cockburn A., Writing Effective Use Cases, Addison-Wesley, Ann Arbor 2011.

Covey S.R., Siedem nawyków skutecznego działania, MEDIUM, Warszawa 1996.

Cialdini R., Wywieranie wpływu na ludzi. Teoria i praktyka, GWP Gdańskie Wydawnictwo Psychologiczne, Gdańsk 2011.

Dilts R.B., Zręczność językowa, NLP Neuroedukacja, Lublin 2008.

Evans E., Domain-Driven Design: Tackling Complexity in the Heart of Software, Addison-Wesley Pub Co, Westford 2003.

Goleman D., Inteligencja emocjonalna, Media Rodzina, Warszawa 1997.

Hull E., Jackson K., Dick J., Requirements Engineering, Springer-Verlag Ltd, London 2011.

Kaczor K., SCRUM i nie tylko. Teoria i praktyka w metodach Agile, Wydawnictwo Naukowe PWN, Warszawa 2014.

Leffingwell D., Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, Pearson Education, Inc., Boston 2011.

Pichler R., Agile Product Management with Scrum: Creating Products that Customers Love, Pearson Education, Inc., Stoughton 2010.

Rosenberg M.B., Porozumienie bez przemocy. O języku serca, Czarna Owca, Warszawa 2013.

Szurawski M., Pamięć. Trening interaktywny, Wydawnictwo AHA!, Łódź 2007.

Wiegers K.E., More About Software Requirements: Thorny Issues and Practical Advice, Microsoft Press, Redmond 2006.

Wiegers K.E., Software Requirements, Second Edition, Microsoft Press, Redmond 2003.

Spis treści

Wstęp do wydania drugiego

Wstęp do wydania pierwszego

Rozdział 1. Między biznesem a IT

Dla kogo jest ta książka?

O nazewnictwie

Kim są: biznes, IT i klient?

Ile zarządzania jest w zarządzaniu wymaganiami?

Klient, który wie, czego chce

Podsumowanie

Rozdział 2. Co to znaczy „myśleć biznesowo”?

Nonszalancja programistów

Słowa i ich znaczenia

Pojęcia biznesowe istnieją w kontekście

Myśleć biznesowo

Podsumowanie

Rozdział 3. Wspólna wizja

Czym jest wizja?

Kto jest odpowiedzialny za wizję?

Wizja a zakres systemu

Formułowanie wizji

Wizja jako krótki opis

Arkusz wizji

Nazwa jest ważna

Wizja jest współdzielona albo nie ma jej wcale

Wizja pochodzi od klienta

Komunikowanie wizji

Kiedy wizja bywa niebezpieczna?

Podsumowanie

Rozdział 4. Rozpoznanie procesu biznesowego

Proces biznesowy, czyli co się dzieje u klienta

Modelowanie procesu biznesowego

Proces biznesowy a zakres systemu

Podsumowanie

Rozdział 5. Sztuka zadawania pytań

Kto prowadzi konwersację?

Co to znaczy patrzeć z perspektywy klienta?

Czyja to dziedzina?

Świadomość słownictwa w trakcie konwersacji

Podsumowanie

Rozdział 6. Odkrywanie potrzeb

Czym jest potrzeba?

„Chcę” czy „potrzebuję”?

Potrzeba jako problem do uniknięcia

Nazwij problem rozmówcy

Potrzeba jako korzyść do osiągnięcia

Nazwij korzyść oczekiwaną przez rozmówcę

Pytania odkrywające potrzeby

Pytania o przyczyny i o rezultaty

Pytania o problemy i o korzyści

Która z potrzeb jest tą właściwą?

Zacznij od neutralnych pytań

Szukaj potrzeby konkretnej

Szukaj potrzeby związanej z danym biznesem

Potrzeby i korzyści nie są odwrotnościami

Odkrywanie potrzeb w pełnej krasie

Przekształcanie problemów w korzyści i na odwrót

Używanie User Stories do odkrywania potrzeb

Kłopoty ze spisywaniem wymagań

Szablony User Story, które ułatwiają konwersację o potrzebach

Podsumowanie

Rozdział 7. Sztuka konwersacji z klientem

Podstawowa struktura konwersacji

Konkretyzowanie wymagań

Kiedy konkretyzować?

Znasz potrzebę i zaczynasz nową konwersację

Klient posługuje się ogólnikami

Klient „przeskakuje” z tematu na temat

Klient używa skrótów myślowych

Klient posługuje się słownictwem branżowym

Pytania konkretyzujące

Sygnały STOP dla konkretyzowania

Algorytm konkretyzowania

Technika skrzynki

Skrzynka krok po kroku

Zasada wyważenia

Do czego nie nadaje się technika skrzynki?

Ekrany użytkownika podczas konkretyzowania

Cykl pracy z ekranami użytkownika

Narzędzia

Ograniczenia stosowania ekranów użytkownika

Ekrany użytkownika w trakcie prac programistycznych

Szczegół to nie to samo co konkret

Zawsze pytaj o zgodę

Uogólnianie wymagań

Miejsce potrzeb w strukturze konwersacji

Kiedy uogólniać?

Klient mówi o cechach systemu

Klient co chwila dokłada nowe szczegółowe funkcjonalności

Klient mówi „od rzeczy” i sprawia wrażenie, że nie wie, czego chce

Klient „przeskakuje” pomiędzy szczegółowymi tematami

Pytania uogólniające

Sygnały STOP dla uogólniania

Algorytm uogólniania

Pytaj zamiast zgadywać

Radzenie sobie z impasem w trakcie konwersacji

Powiększanie przestrzeni rozwiązań

Proponowanie alternatywnych rozwiązań

Podsumowanie

Rozdział 8. Pytania trafiające w samo sedno

Bufor bezużytecznych odpowiedzi

„Jest” czy „powinno być”?

„Może”, „mogłoby”, „powinno” czy „musi” zostać zrobione?

Czas przeszły, przyszły i teraźniejszy

Pytaj, nie sugeruj

Pytania zamknięte i otwarte

Wyrażanie oczekiwań poprzez zaprzeczenie

Ramy odniesienia i zmiana ram

Czym są ramy odniesienia i dlaczego są ważne?

Techniki zmiany ram odniesienia

Odwrócenie ramy odniesienia

Powiększenie ramy odniesienia

Zmniejszanie ramy odniesienia

Podsumowanie

Rozdział 9. Czy między nami jest chemia?

Mechanika a chemia konwersacji

Parafrazowanie

Czym jest parafraza?

Schemat parafrazy ma swój cel

Cytowanie to nie parafrazowanie

Kiedy parafrazować?

Czy to nie będzie brzmieć dziwnie?

Technika pozytywnej intencji

Czym jest intencja?

Jak działa pozytywna intencja?

Czy pozytywna intencja rzeczywiście istnieje?

Pozytywna intencja a emocje

Przejmowanie kierunku konwersacji

Kiedy przejmować kierunek konwersacji?

Schemat działania

Chemia konwersacji w duchu Nonviolent Communication

Naucz się obserwować

Rozpoznaj potrzebę ludzką

Naucz się nazywać uczucia

Model komunikacji według NVC

Czy ja muszę tak dziwnie mówić?

Wyjaśnijmy kilka nieporozumień…

Literalne stosowanie modelu NVC

NVC nie działa

Czym jest empatia?

Po co w ogóle stosować NVC?

Podsumowanie

Rozdział 10. Ustalanie priorytetów wymagań

Pytanie i eliminowanie

Pytanie wprost

Eliminowanie poprzez korzyść

Eliminowanie „od problemu”

Ważność a pilność

Co jest pilne?

Co jest ważne?

Korzyści, problemy, cele biznesowe

Pytania kartezjańskie

Macierz Eisenhowera

Excelowe czary-mary

Dlaczego czary-mary?

Podsumowanie

Rozdział 11. Spotkania

Spotkania efektywne i te, podczas których tylko tracisz czas

Przygotowanie spotkania

Ile osób zaprosić na spotkanie?

Jak długo ma trwać spotkanie?

Na przedłużające się spotkania

Z kim i ile razy się spotykać?

Sponsorzy

Właściciele procesów biznesowych

Specjaliści biznesowi

Użytkownicy

Pracownicy działu IT po stronie klienta

Spotkania kurtuazyjne

Przygotuj uczestników do spotkania

Prowadzenie spotkania

Iteracyjność spotkania

Podsumowania między iteracjami

Praca z mapą myśli

Zaleta map myśli

Narzędzia do rysowania map myśli

Podsumowanie końcowe

Zamykanie spotkania

Formuły spotkań na różne okazje

Warsztaty z użytkownikami

Stand-up meeting

Kick-off meeting

Retrospekcja

Linia czasu

Pytania C5

Zaplanowanie wdrożenia zmian

Niech się zadzieje!

Podsumowanie

Rozdział 12. Techniki zbierania wymagań w pigułce

Wizja

Odkrywanie potrzeb

Konkretyzowanie

Technika skrzynki

Ekrany użytkownika

Uogólnianie

Powiększanie przestrzeni możliwych rozwiązań

Proponowanie alternatywnych rozwiązań

Pytania trafiające w samo sedno

Zmiana ram odniesienia

Parafrazowanie

Technika pozytywnej intencji

Przejmowanie kierunku rozmowy

Komunikacja według modelu NVC

Ustalanie priorytetów za pomocą pytań

Spotkania

Rozdział 13. Kiedy techniki przedstawione w tej książce NIE zadziałają?

Lektura uzupełniająca