O dopasowaniu (nieco) filozoficznie

Data: 2017-06-21
Autor: Sebastian Konkol
O dopasowaniu (nieco) filozoficznie

Podstawą Agile Architecture jest zdolność do użycia rozwiązania lub komponentu na nowe sposoby, nie przewidziane podczas projektowania takiego rozwiązania czy komponentu. Brzmi prawie jak herezja inżynierska – wszak informatyka to nie magiczna różdżka zmieniająca coś bez zmieniania. Jak więc uzyskać zdolność dopasowania rozwiązań informatycznych? Jak sprawić, aby architektura była naprawdę zwinna?

Nie, zdecydowanie nie chcę oddać wszystkiego AI – wizje Skynetu i Matrixa są fajne na ekranie w kinie. Rozwiązań dopatruję się w innym obszarze, zdecydowanie bardziej ludzkim, choć nie na pierwszy rzut oka. Teoria złożoności powołuje do życia systemy złożone (Complex Systems). To takie ciekawe twory, które charakteryzują się bardzo małą liczbą prostych reguł obowiązujących w działaniu tych systemów oraz dużą liczbą z grubsza takich samych jednostek stosujących się do tych reguł. Te jednostki nie charakteryzują się inteligencją – po prostu wykonują narzucone im reguły. Badacze systemów złożonych dowiedli, że systemy złożone (np. mrowisko) mają zdolność do samoorganizacji, w wyniku której system jako całość przejawia nowe, zaskakujące cechy nie wynikające z prostych reguł. Do utworzenia takiego systemu złożonego potrzebny jest jedynie element przypadkowości w sposobie wykonywania tych reguł przez poszczególne jednostki. O ciekawych przykładach takich zjawisk pisałem już kiedyś. Rozwinięciem teorii systemów złożonych są prace nad systemami adaptacyjnymi (Complex Adaptive Systems), w których zakłada się możliwość zmiany reguł obowiązujących w systemie w pewnym zakresie. Na poziomie całego systemu daje to efekty ewolucyjnej zmiany „zachowania” systemu jako całości, mimo braku inteligencji, czy choćby „całkowicie wolnej woli” na poziomie pojedynczej jednostki.

Choć współczesne systemy informatyczne wyglądają czasami tak, jakby rządziła nimi jakaś „wyższa świadomość”, w esencji są to maszyny deterministyczne, o bardzo różnych cechach. Nie ma co po nich oczekiwać, że same przejawią „zdolność dopasowania” – prędzej wszystkie się popsują, niż adaptują samodzielnie. Systemy informatyczne mogą jednak zapewniać część „przypadkowości”, przez umożliwienie wykorzystania ich funkcji w sposób inny, niż zamierzony na etapie projektowania rozwiązania. Dla przykładu, system ERP mógłby umożliwić zarejestrowanie faktury zakupu nie tylko z „pełną obstawą” procesu dekretacji i księgowania, ale tak po prostu, do obróbki przez człowieka przed jakimkolwiek dalszym działaniem. W typowych warunkach firm systemów informatycznych nie ma jednak tyle, aby „uruchomić” mechanizmy adaptacyjne systemów złożonych. Aby to uzyskać, musimy przestać traktować użytkowników systemów jak składowe systemu – musimy ich zacząć traktować jako elementy systemu złożonego. W takim systemie rozwiązania informatyczne pełnią rolę środowisk działania reguł, a cała organizacja pełni rolę zbioru jednostek. Inteligencja jednostek stanowi tu bezpiecznik stabilności systemu złożonego i organizuje zmianę reguł systemu adaptacyjnego. W przykładzie z systemem ERP w sytuacji nagłej konieczności moglibyśmy pozwolić na rejestrację faktur „bez obstawy” i zorganizować ad-hoc grupę ludzi obsługujących ten wyjątek. Rzecz jasna, celem jest zdecydowanie dalej posunięta zdolność adaptacji, ale mechanizm podstawowy powinien być właśnie taki – ludzie jako element systemu złożonego.

Jeśli taki poziom zdolności dostosowania ma zacząć obowiązywać, systemy informatyczne muszą się zmienić – miejsce ciężkich, zintegrowanych systemów muszą zająć systemy o architekturze luźno powiązanych, relatywnie małych i atomowych komponentów, które na poziomie całego systemu jedynie mogą (a nie muszą) być połączone procesami. Komponenty systemów muszą być na tyle małe, aby reguły rządzące ich działaniem były proste. Złożoność, a przez to adaptacyjność, musi spoczywać na ludziach. Zintegrowane monolity (np. ERP, CRM) są konstrukcjami „przesztywnionymi”, utrudniającymi wprowadzanie nawet relatywnie drobnych zmian, nie mówiąc już o wbudowanej adaptacyjności – będą musiały odejść do lamusa.

Skoro podstawą dla dopasowania w biznesie jest udział człowieka w działaniu systemu (wykonywanie reguł) a nie jedynie jego użytkowaniu (poddawanie się regułom), z jednej strony korzystamy z dobrodziejstw włączenia DNA do systemu, lecz z drugiej narażamy system na efekty nieprzewidywalności poczynań autonomicznych jednostek Homo Sappiens. Jeśli więc cała zabawa z adaptowalnością ma wyjść firmie na zdrowie, musimy zadbać o obniżanie kosztów prowadzenia eksperymentów dopasowania oraz o kontrolę ryzyka takiej działalności. Z umożliwienie prowadzenia eksperymentów przy niskim jego koszcie potrafimy sobie poradzić – wzorzec architektoniczny Sandbox jest uniwersalny i możliwy do wdrożenia w obszarze każdego biznesu. Włączenie ludzi do działania systemu, nie wyłącznie jego użytkowania, oznacza jednak zwiększenie ryzyka, a im większe możliwości adaptacji, tym słabsze mechanizmy kontrolne. Włączenie człowieka jako elementu systemu oznacza rezygnację z dużego zakresu „głupotoodporności”, jaką charakteryzują się współczesne systemy, broniące swego działania przed „nieuzasadnioną” działalnością użyszkodnika. Współczesne systemy w dużej mierze są konstruowane tak, aby nie dopuszczać do eksperymentowania, w każdym razie nie przy niskich kosztach.

 

Skuteczność adaptacji rozwiązań informatycznych nie zasadza się na łatwości ich modyfikacji, lecz na zdolności do wykorzystania na różne sposoby. Adaptacja to cecha ludzi i na tym powinny się opierać systemy złożone cechujące się adaptowalnością. Wielkie możliwości wymagają jednak wielkiej odpowiedzialności, jednak nie tylko po stronie twórców rozwiązań informatycznych, lecz przede wszystkim świadomych użytkowników, bo dopasowanie wyklucza „głupotoodporność”. Czy jednak istnieje inne wyjście w obecnych warunkach?

Pozostaw komentarz