Zastanawiałeś się kiedyś w jaki sposób można trafiać do celu w nocy? Dajmy na to, że obsługujesz działo balistyczne lub po prostu karabin i chcesz trafić do celu. Jest noc i wystrzelony kula ginie w niej po sekundzie od wystrzału. Cel jest daleko, więc nie jesteś pewien czy pocisk zbliżył się czy oddalił, nie bardzo możesz poprawić swój kolejny strzał.

działo

 

źródło: http://www.handmet-military.net

Jak trafić do celu w nocy?

Nie byłem w wojsku ale ponoć są dwa sposoby trafiania do celu w takich przypadkach:

  1. Obliczenie dokładnej trajektorii – biorąc pod uwagę kierunek i szybkość wiatru, masę oraz aerodynamikę pocisku, kąt wystrzelenia, dokładną odległość do celu.
  2. Użycie tzw. amunicji smugowej – której pociski zawierają specjalny środek chemiczny (np. magnez lub używany w NATO azotan baru), który w czasie lotu utlenia się tworząc charakterystyczną jasną smugę.

Jak nietrudno się domyślić w warunkach bojowych używa się raczej amunicji smugowej i szybkich poprawek kierunku niż żmudnych i ryzykownych obliczeń. Które przede wszystkim długo trwają przez co zakładają trafienie za pierwszym razem. Co prawie nigdy się nie zdarza.

Czy to Ci coś przypomina?

Tworzenie oprogramowania jest trochę jak strzelanie w ciemnej nocy. Często (bo nie zawsze!) widzisz cel, ale trafienie do niego nie jest proste.

Klasyczne, wodospadowe podejście do tworzenia oprogramowania zakłada, że zespół projektowy jest w stanie zaprojektować produkt dokładnie spełniający oczekiwania użytkowników. Następnie wystarczy go wdrożyć (co czasami trwa kilka miesięcy), aby odnieść sukces. Z poprzedniego wpisu – o tym, że tworzenie oprogramowania to bardziej ogrodnictwo niż inżynieria dowiedzieliśmy się, że tak nie jest :-)

Nie istnieją genialne zespoły projektowe, a sam czas od stworzenia projektu do jego wdrożenia może mieć wpływ na zmianę potrzeb użytkowników. W praktyce aby stworzyć dobrze spełniający wymagania produkt nie warto poświęcać przesadnej ilości czasu na dopracowanie projektu.

Historia widziała wiele produktów – które zapowiadały się świetnie, poświęcono na ich stworzenie wiele miesięcy – aby uzyskać nikomu nieprzydatny, bardzo dopracowany projekt.

Lepiej wdrożyć wersję minimalnie spełniającą potrzeby użytkowników (MVP – Minimum Viable Product) i na jej podstawie tworzyć kolejne, dopracowując to co działa i rezygnując z tego co się nie sprawdziło. Przez kolejne coraz bardziej dopracowane prototypy możemy bardzo dużo oszczędzić i zapobiec marnotrawstwu.

To jest właśnie celowanie z amunicji smugowej w tworzeniu oprogramowania. Nie tylko zresztą w inżynierii oprogramowania takie podejście się sprawdza. Cała filozofia Lean Startup – podpowiadająca podejście do tworzenia nowych biznesów i startupów – opiera się właśnie o celowanie ze smugowej amunicji.

Warto zwrócić uwagę, że aby faktycznie korzystać z pocisków smugowych – trzeba dokładnie obserwować to gdzie trafiają, aby wyciągnąć wnioski. W przypadku produktów obserwacja nie jest taka prosta i aby była skuteczna trzeba wyznaczyć mierzalne współczynniki. Takimi współczynnikami mogą być wartości współczynnika konwersji, mikro-konwersje – czyli częstotliwość wykorzystania danych funkcji w programie czy w końcu ankiety do użytkowników. Ważne aby otrzymywać rzetelne informacje zwrotne i na ich podstawie wyciągać wnioski.

W przypadku systemów webowych pomocny jest dobry system analityki (chociażby Google Analytics) w przypadku programów desktopowych twórcy tworzą różnego rodzaju „Programy doskonalenia produktów” które przesyłają dane statystyczne o wykorzystywanych (i sposobie ich wykorzystania) funkcjach w danej aplikacji.

W samej inżynierii oprogramowania – zespoły stosują technikę pocisków smugowych – równie często wewnętrznie na swoje potrzeby. Idea opiera się wtedy na wykorzystaniu integracji ciągłej (z ang. continous integration) która polega na częstym, regularnym włączaniu zmian wprowadzanych przez programistów do wersji testowej systemu. Dzięki temu bardzo szybko można wykrywać błędy, wprowadzać poprawki i sprawdzać jak nasze zmiany działają w całym systemie – tworzonym przez zespół.

Z obrazowym porównaniem do strzelania z amunicji smugowej spotkałem się pierwszy raz podczas lektury Pragmatycznego programisty Davida Thomasa i Andy’ego Hunta. Bardzo polecam tę książkę – oczywiście nie tylko – programistom.