Rola analityka
Podczas jednego z meetupów w którym uczestniczyłem ostatnio, jeden z prelegentów podczas swojej prezentacji zastanawiał się nad różnicami pomiędzy analitykiem biznesowym, a projektantem UX. Wynikiem jego rozważań było stwierdzenie, że analityk biznesowy, to ktoś kto pośredniczy pomiędzy „biznesem” a zespołem deweloperskim, a projektant UX to ktoś kto pracuje na styku użytkownik – zespół deweloperski. Sugestia, jakoby analitykom biznesowym nie bardzo zależało na zadowoleniu użytkownika, trochę mnie dotknęła. Po chwili jednak doszedłem do wniosku, że taka opinia nie wzięła się znikąd. Zacząłem się zastanawiać czy faktycznie jest tak, że ogromna część naszej pracy skupiona jest na modelowaniu wymagań, a trochę gorzej wygląda to gdy przychodzi sprawdzić wyniki naszych prac.
Dość często zdarza się (niestety), że analityk nie uczestniczy w fazie testowania i rozruchu systemu, bądź jego rola ogranicza się do weryfikacji czy określona wartość została dostarczona. Organizujemy i przeprowadzamy testy akceptacyjne, weryfikujemy, czy kryteria akceptacji zostały spełnione, czasem nawet dokonujemy pomiarów. Czy jednak nie powinniśmy pójść krok dalej i zweryfikować potencjalne usprawnienia? Niejeden z Was odpowie: „ale przecież to mają na celu testy akceptacyjne”, nieliczni powiedzą: „ale przecież prowadzimy badania użytkowników i weryfikujemy użyteczność systemu”. Ja przekornie zapytam: „Może da się zrobić coś wcześniej i bez angażowania sporych zasobów”? Co gdy nie mamy możliwości przeprowadzenia badań (np. brak zrozumienia klienta dla potrzeby przeprowadzenia takich badań, bądź ograniczona dostępność do potencjalnej grupy badawczej)?
Moim zdaniem jest rozwiązanie. Przebadaj system samemu! Brzmi trywialnie, prawda? Często jednak w natłoku codziennych obowiązków potykamy się o „oczywistą oczywistość” i tylko zatrzymanie się i spojrzenie wstecz pozwala nam ją dostrzec. Jak mówi jeden z moich ulubionych bohaterów „Nothing is ever easy”.
Lotniskowy paraliż
Klika lat temu miałem przyjemność uczestniczyć w projekcie mającym na celu stworzenie systemu obsługi taksówek na jednym z lotnisk. Pierwsza wersja systemu powstawała przez klika miesięcy. Włożyliśmy ogrom pracy w przeanalizowanie potrzeb i zamodelowanie systemu w taki sposób, aby osiągnąć zakładaną zmianę głównego wskaźnika (czas oczekiwania taksówki na podjęcie pasażera). Ponieważ wdrożenie systemu powodowało bardzo duże zmiany procesowe (w tym zmiany fizycznych lokalizacji do których musi udać się taksówka), nie byliśmy w stanie przetestować systemu na „żywym” organizmie. Zbudowaliśmy więc „symulator ruchu na lotnisku” (bazujący na rzeczywistych danych, które zmierzyliśmy), dzięki któremu byliśmy w stanie obserwować jak zachowuje się system i wyregulować go tak, aby zmiana wskaźnika była na akceptowalnym poziomie. Byliśmy pewni, ze zrobiliśmy wszystko, aby system zadziałał prawidłowo. W piątek wieczorem przed planowanym uruchomieniem produkcyjnym (poniedziałek rano) przyjechaliśmy na lotnisko. Zadowoleni z pracy, którą wykonaliśmy, wpadliśmy na „genialny” pomysł: „Wsiądźmy w samochód i poudawajmy taksówkę”.
Tak naprawdę w naszych głowach brzmiało to bardziej jak: „Przejedźmy się i podziwiajmy jaki super system stworzyliśmy”. Tak też zrobiliśmy. Jakież było nasze zdziwienie, gdy po dwóch przejazdach okazało się, że owszem, system działa zgodnie z założeniami, ale jeśli nic nie zmienimy to w poniedziałek rano możemy doprowadzić do paraliżu komunikacyjnego lotniska. Było spowodowane przez drobne rzeczy, których wcześniej nie uwzględniliśmy, takie jak np. czas wyświetlania komunikatu dla taksówki czy konieczność oczekiwania taksówki na skrzyżowaniu z sygnalizacją świetlną. Rzeczy, które można było wykryć tylko wcielając się w rolę użytkownika w jego naturalnym środowisku. Całe szczęście mieliśmy jeszcze 2 dni, katastrofy udało się uniknąć i wdrożenie zakończyło się sukcesem (oczywiście nie obyło się bez problemów, ale nie były one krytyczne). System był przetestowany „z każdej strony” – niestety nie w realnych warunkach w których będzie działał.
Budowlaniec z IT
Innym razem pracowałem nad projektem mającym na celu wsparcie prowadzenia projektów budowlanych (rejestracja czasu, możliwość dokumentowania prac itp.). System tworzony w modelu SaaS, co powodowało mnogość wariacji procesów, które są obsługiwane i różne (czasem sprzeczne) wymagania. Jednym z modułów systemu była aplikacja mobilna dla pracowników. Kiedy mieliśmy gotową pierwszą wersję (sporo przed wdrożeniem produkcyjnym) pojawiła się możliwość abym popracował tydzień na budowie. Wziąłem więc krótki urlop od analizy i zatrudniłem się jako budowlaniec.
Pierwszego dnia namówiłem moich współpracowników, aby pomogli mi sprawdzić jak działa i do czego nadaje się aplikacja, którą stworzyliśmy. Jak możecie się domyślić, to było najlepszy test, jaki kiedykolwiek udało mi się przeprowadzić. Użyteczność aplikacji była wcześniej weryfikowana, ale zobaczyć ją działającą w naturalnym środowisku było przejściem o dwa lub trzy poziomy świadomości wyżej. Pozyskaliśmy mnóstwo wartościowych informacji, począwszy od ograniczeń środowiskowych (np. okazało się, że pracownicy nie zawsze mają telefon przy sobie), przez ograniczenia infrastrukturalne (pracownicy tylko od czasu do czasu włączali transfer danych w telefonach, żeby nie wyczerpać limitu – takie czasy 🙂 oraz nie zawsze był odpowiedni zasięg), ograniczenia powodowane przez zaawansowanie technologiczne użytkowników (część funkcjonalności w aplikacji nie została nawet odkryta, ponieważ zastosowaliśmy rozwiązania, które były zbyt zaawansowane w stosunku do poziomu świadomości technologicznej użytkowników), do problemów ze stabilnością rozwiązania i propozycji kliku potencjalnych funkcjonalności.
Wyjdź ze strefy komfortu
Mogła się w Was zrodzić pewna wątpliwość: „No dobra, ale chwilę wcześniej pisałeś o testowaniu bez angażowaniu użytkowników, a uraczyłeś nas historyjką o tym jak testowałeś z potencjalnymi użytkownikami”. To prawda. Co więcej, zrobiłem to celowo. Nie oszukujmy się – najlepsze rezultaty dadzą testy z użytkownikami i to do nich powinniśmy dążyć. Często to my jesteśmy główną barierą, która blokuje przeprowadzenie takiego testu. My którzy mówimy: „nie, mój klient nigdy się na to nie zgodzi”, „nie, ta aplikacja nie jest jeszcze gotowa na tyle, aby sprawdzać ją na potencjalnych użytkownikach”, „nie, użytkownicy mojej aplikacji są po drugiej stronie świata”, „nie, osoby na których mógłbym to przetestować są zbyt zajęte”… i takich przykładów można by napisać jeszcze kilkanaście. Tak naprawdę wystarczy trochę zaangażowania i wysiłku, a czasem szczypty kreatywności i odwagi, a okazuje się, że jednak można. Przykład powyżej jest tego niezłą ilustracją. System, który tworzyliśmy dedykowany był na rynki skandynawskie. Zorganizowanie takiego samego testu w Norwegii byłoby dużo trudniejsze (odległość, koszty, bariera kulturowa, bariera językowa). Podjęliśmy więc próbę lokalnie. W takiej sytuacji trzeba jednak pamiętać, aby odpowiednio interpretować uzyskane informacje (w końcu uwarunkowania skandynawskie i polskie są inne). Pamiętajmy, że:
- test taki nie sprawdza, czy dostarczamy wartość (to jesteśmy w stanie zweryfikować tylko mając właściwą dobraną grupę badawczą), lecz jak tę wartość dostarczamy,
- jeśli rzetelnie przeprowadziliśmy analizę na wcześniejszych etapach projektu, mamy wiedzę, która pozwoli nam na interpretację wyników.
Przykładowo, wystarczyła szybka weryfikacja rynku skandynawskiego aby jedną z pozyskanych podczas mojego testu informacji „wyłączanie transferu danych przez użytkowników” wyeliminować jako nieistotną z punktu widzenia rynku docelowego.
Jeśli nie chcecie zatrudniać się na budowie, lub nie jesteście w stanie opuścić swego ciała, tak aby jako niewidzialny byt obserwować potencjalnych użytkowników naszej aplikacji (jak bardzo chciałbym, aby to było możliwe :), poszukajcie innego sposobu. Może macie ciocię – księgową, która robi dokładnie to do czego dedykowany jest Wasz system i wpisuje się w profil użytkownika docelowego? Zapytajcie – może zgodzi się używać przez jakiś czas aplikacji nawet jeśli utrudni to jej życie i będzie musiała wprowadzać dane do dwóch systemów równocześnie. Może wystarczy zapytać znajomych?
Najważniejsze rzeczy o których należy pamiętać:
- wybrana osoba (grupa osób) powinna być jak najbardziej zbliżona profilem do użytkownika docelowego systemu,
- osoba powinna używać system, w schemacie przewidzianym dla tego systemu (przebadanie z osobą jednorazowego utworzenia faktury w systemie, który używany będzie do wystawiania kilkudziesięciu faktur dziennie przez testowaną osobę, może dać nam zupełnie inne wnioski niż rzeczywiste używanie tego systemu przez kilka dni).
Czy da się przeprowadzić taki test w przypadku każdego systemu – oczywiście, że nie. Pytanie tylko na ile faktycznie się nie da, a na ile my sami jesteśmy przeszkodą. Czasem trzeba powalczyć o dobro na tym świecie 🙂
Odkryj w sobie aktora
Co jednak w sytuacji, kiedy nie będziecie w stanie przeprowadzić testów z użytkownikami (czasem potencjalnymi), lub po prostu będziecie chcieli pogłębić swoją wiedzę o odczuwaniu systemu? Zostańcie użytkownikami sami. Spróbujcie znaleźć sferę swojego życia, w której można go zastosować i zacznijcie go używać. Notujcie wszystkie rzeczy, które Wam się nie podobają, które poddalibyście optymalizacji, wszystko co utrudnia Wam prace i Was irytuje – począwszy od przycisku w niewłaściwym miejscu, przez brak potrzebnych danych na niektórych widokach, do szybkości odpowiedzi systemu. Brzmi znajomo? Możecie teraz pomyśleć „Chwila, ale przecież zawsze tak robimy…”. Moje pytanie brzmi – czy na pewno używacie tego systemu jako użytkownik, czy może tylko sprawdzacie, czy działa zgodnie z projektem?
Po pewnym czasie od wdrożenia ww. systemu do zarządzania projektami budowlanymi (system cały czas jest rozwijany) zacząłem się zastanawiać co tak naprawdę czuje się jego użytkownik. O drugim eksperymencie z budową nie było raczej mowy (szkoda :), ale wiedziałem, że w pewnych kontekstach praca na projektami budowlanymi, nie różni się tak bardzo od pracy nad projektami informatycznymi – też są zadania do wykonania, też trzeba zarejestrować czas pracy. Utworzyłem więc konto produkcyjne i zacząłem na co dzień używać aplikacji. Co więcej – zachęciłem część z developerów do zrobienia tego samego. Po tygodniu użytkowania zauważyłem rzeczy, których nie widziałem przechodząc te same ścieżki kilkaset razy wcześniej podczas testów. Poczynając od drobnych usprawnień, które zwiększyłyby użyteczność systemu, po pewne zjawiska, które były po prostu irytujące.
Problem z testami akceptacyjnymi polega na tym, że sprawdzamy czy funkcjonalność systemu działa poprawnie (zgodnie z projektem) dla różnych scenariuszy i mamy bardzo ograniczone szanse na wykrycie potencjalnych problemów wynikających z rzeczywistego użycia systemu (które często jest wielokrotnym powtarzaniem tych samych scenariuszy).
Gdzie zatem tkwi haczyk? W tym, że my (choćbyśmy udawali najlepiej jak potrafimy) nie jesteśmy docelowymi użytkownikami systemu. Uwagi, które wynotowaliśmy są wynikiem subiektywnej oceny na którą mają wpływ nasze środowisko, doświadczenia, kontekst użytkowania i osobiste upodobania oraz potrzeby. Zanim więc wrzucimy je do backlogu, musimy przeanalizować, czy będą miały taką samą wagę dla użytkownika końcowego i wyeliminować te, które będą dla Niego nieistotne lub wręcz nieprawidłowe. Dobra wiadomość jest taka, że posiadamy odpowiednią wiedzę, aby to zrobić. W końcu przeprowadziliśmy wcześniej analizę systemu 🙂 Dla przykładu: jedna z uwag z moich testów brzmiała: „na raporcie czasu z danego dnia chciałbym widzieć sumę godzin zarejestrowaną dla zadania, a nie czas rozpoczęcia i zakończenia pracy w tym zadaniu”. Z wywiadów przeprowadzonych z firmami budowlanymi, wiem jednak, że dość często ich klienci wymagają dostarczenia dokładnego rejestru godzin (który jest później przez nich weryfikowany). Pracownik musi więc mieć możliwość łatwego sprawdzenia poprawności czasu rozpoczęcia i zakończenia prac. Moja uwaga w dużej mierze wynikała ze sposobu, w który ja raportuję czas (ilość czasu poświęconego na zadanie). Można jednak rozważyć wyświetlenie sumy godzin jako dodatkowej informacji (choć należałoby zweryfikować, czy wniesie to jakąś wartość dla firm budowlanych).
Zmieniaj systemy na lepsze
Pozostaje tylko pytanie: „Czy warto?”. W końcu prędzej czy później prawdopodobnie użytkownicy zaczną używać tego systemu i może sami zgłoszą te problemy. Tylko czy wtedy nie będzie już za późno? Czy nie uderzy to w nasz wizerunek? Czy będzie można jeszcze wprowadzić zmiany, czy może projekt będzie już zamknięty? Ja żyję w przekonaniu, że Analityk Biznesowy bierze na siebie odpowiedzialność dostarczenia jak najlepszego rozwiązania.
Największą nagrodą jest zadowolony klient. Warto więc spróbować usprawnić to co dostarczyliśmy, po to aby na koniec usłyszeć: „Ten system jest dokładnie tym, czego potrzebowaliśmy”. potrzebowaliśmy”.
autor: Przemysław Machlowski