środa, 21 września 2011

Specyfikacja

Po wakacjach wyraźnie wzrosła liczba zapytań kierowanych w różny sposób przez potencjalnych klientów, dotyczących projektów jakie zamierzają zrealizować. Pozwala to dostrzec pewne elementy, które ułatwiają wybór klienta, ponieważ mam wrażenie, że przy obecnej liczbie potencjalnych klientów sztuką jest odpowiedni dobór, a nie samo pozyskanie klienta.
Pojęciem które zwykle wiąże się z przygotowaniem projektu jest specyfikacja, która to trafia do nas najczęściej w załączniku, lub po wcześniejszym zapytaniu o samą chęć podjęcia współpracy, bywa też tak genialna (zdaniem wysyłającego), że jest tajna i może być przesłana dopiero po podpisaniu umowy o poufności.
Wśród specyfikacji wyróżniłbym następujące typy:

Specyfikacja wirtualna

Jest to specyfikacja, która nie istnieje. Zwykle pojawia się kiedy ktoś ma jakąś wizję i jest napalony żeby jak najszybciej ją zrealizować, często jest gotowy uprościć ją do minimum byleby zacząć, a potem nie da już spokoju odkrywając przed nami coraz głębsze i co raz bardziej nietrzymające się kupy jej elementy. Wirtualna napisałem dlatego, żeby odróżnić ją od kolejnej sytuacji kiedy również nie ma specyfikacji, ale klient nie twierdzi że ma i nie twierdzi że wie :)

Brak specyfikacji

Mam na myśli sytuację kiedy klient ma jakiś ogólny pomysł, a może nawet częściej potrzebę, ale nie zna się lub nie ma zamiaru narzucać szczegółów rozwiązania. Chociaż na pierwszy rzut oka mogłoby się wydawać, że to źle, to z moich doświadczeń wynika, że szczególnie przy małych i średnich projektach jest to najlepsze co może być. Narzucamy wtedy swoje rozwiązania o których mamy pojęcie i tłumaczymy mu tylko co i jak. Jeśli klient jest kumaty, to wszystko idzie sprawnie :) Piszę "kumaty", bo chodzi o to żeby łatwo rozumiał co mu mówimy i logicznie formułował swoje pomysły, a nie o to żeby znał się na komputerach...

Specyfikacja baaaardzo szczegółowa

Chyba jako człowiek leniwy szczególnie takich nie lubię. Wygląda to zwykle tak, że ktoś opisuje bardzo szczegółowo oczywiste funkcje, a w skrajnych przypadkach powtarza te opisy dla każdego elementu np opisuje każdą podstronę która różni się tylko treścią i jeszcze robi do tego makiety najlepiej w jakimś programie, który do tego nie służy. W takiej specyfikacji autor objaśni nam, że jak w wyszukiwarce ktoś wybierze Warszawę to mają się pokazać oferty z Warszawy, a jak Gdańsk to z Gdańska. Czytanie czegoś takiego jest męką, tym bardziej, że połowę (jeśli nie całość) czyta się często nie mając nawet informacji o czym się czyta, ponieważ autor skupiony na szczegółach zapomniał wpisać tytułu, czy krótkiego wstępu. Jak się już człowiek zorientuje o co chodzi to wypada przeczytać od nowa ze zrozumieniem, a potem przed rozpoczęciem pracy wypadałoby wyłapać i wyjaśnić każdy szczegół, który:
  • powinien być zrealizowany inaczej z przyczyn obiektywnych jak np: są gotowe rozwiązania działające trochę inaczej (czasem lepiej), więc np ze względu na koszty i czas lepiej wziąć gotowiec
  • jest niemożliwy do zrealizowania - kiedyś mi klient napisał że strona ma mieć ekran pożegnalny, który jak potem nieszczęsny zrozumiałem miał się pokazywać po jej zamknięciu :)
  • wydaje się dziwny, niepotrzebny, wynikający z niewiedzy...
Jeżeli tego nie przemielimy i nie wyjaśnimy narażamy się na ryzyko, że potem ktoś będzie nam mógł wypunktować niezgodności ze specyfikacją, a za analizę specyfikacji nikt nam nie płaci, więc szczególnie jeśli ich dużo nie możemy poświęcać na nie za wiele czasu. Osobiście mnie takie projekty trochę odstraszają - zamiast specyfikacją kieruję się opinią o kliencie - zarówno o firmie jak i osobie kontaktowej. Problem osoby kontaktowej jest dość ważny - większe firmy mają pracownika, który podczas realizacji projektu będzie nam ułatwiał pracę, a nawet wykonywał jej część, lub zatruwał życie debilnymi pomysłami. Źle jeśli jest to osoba, która dużo wymyśla, ale o wszystko musi pytać szefa, ponieważ najpierw coś wymyśla i pyta nas (boi się że szef uzna pomysł za głupi) my wyjaśniamy, wtedy jest mądrzejsza i albo pyta szefa albo nie, a potem szef albo się zgadza albo nie. Stajemy się więc trochę takim korepetytorem ;) Dobrze jak jest to osoba komunikatywna, decyzyjna, inteligentna i sympatyczna.

Specyfikacja "taka jak" oraz specyfikacja "taka jak sprzeczna"

Specyfikacja "taka jak" to krótkie pytanie w stylu: Ile kosztowałaby u pana strona taka jak allegro/maxmodels/grupon/facebook. W sumie należałoby do tego opatentować typ odpowiedzi "tyle co". I odpowiadać tyle co allegro/maxmodels/grupon/facebook. Nie są to takie złe tematy jeśli mamy na oku jakiegoś gotowca działającego podobnie, zwykle prostszego. Posyłamy linka do dema i jeśli klientowi to odpowiada to jest git... Jeżeli nie ma gotowca to pewnie jest to za duży projekt do realizacji przez freelancera.
Specyfikacja "taka jak sprzeczna" to pytanie typu: chciałbym stronę coś jak nk.pl, lub wp.pl gdzie nie dostrzegamy żadnego podobieństwa poza dwuliterową domeną ;] W tej sytuacji proponuję poprosić klienta o przesłanie specyfikacji ;)

Specyfikacja marzeniowa

Widać, że autor specyfikacji siedzi w temacie i pomyślał o wszystkim. Pisze o systemie który ma wszystkie funkcje o jakich można zamarzyć, może być rozbudowywany na wszelakie sposoby, komunikuje się z innymi dzięki funkcjonalnemu api, może zmieścić nieograniczone ilości danych działając przy tym szybko i bez zakłóceń. Jest to połączenie najlepszych wzorców, funkcje są jakby zbitką najlepszych haseł wziętych z opisów różnych dużych CMSów, czy sklepów, które nawet w nich nie koniecznie w praktyce sprawdzają się tak dobrze. Dzisiaj miałem zapytanie w którym sklep miał obsługiwać 7 systemów płatności wymienionych z nazwy i oczywiście mieć możliwość łatwego dodania kolejnych - nie wiem komu jest potrzebne 7 systemów płatności w 1 sklepie? Co zrobić z takim zapytaniem? wpadłem na to klepiąc ten wpis - należy polecić firmę która specjalizuje się w obiecywaniu cudów, a potem instaluje gotowca i zmienia CSS, lub podzleca to zadanie. Ktoś jednak musi napompować tą realizację by jej wyjątkowość odpowiadała oczekiwaniom zleceniodawcy :)

ps. obiecuję że się wezmę i napiszę coś przydatnego następnym razem

2 komentarze:

  1. Bardzo ciekawie to zostało opisane.

    OdpowiedzUsuń
  2. Specyfikacja jest niezwykle ważnym narzędziem dla każdego projektu informatycznego. Dzięki niej łatwiej zrozumieć, co jest wymagane, a co można zrobić, jakie są ograniczenia i jakie cele chcemy osiągnąć.

    OdpowiedzUsuń

Masz uwagę, sugestię, albo po prostu ochotę - zostaw komentarz