Upadki i wzloty Homo Logicus

Oryginalny post: The Rise and Fall of Homo Logicus

Autor: Jeff Atwood

Pośród całej apodyktycznej dumy, którą zaobserwowałem wśród programistów, prawdopodobnie największym grzechem ze wszystkich jest to, iż uważamy siebie za typowych użytkowników. Obsesyjnie używamy komputerów, wiele wiemy o tym jak one działają, nawet udzielamy rad przyjaciołom i rodzinie. Jesteśmy ekspertami. Któż mógłby lepiej zaprojektować oprogramowanie niż my? Większość programistów nie zdaje sobie sprawy z tego, jak bardzo odstajemy od normy. Nawet w najmniejszym stopniu nie jesteśmy średniakami -- jesteśmy warunkami brzegowymi. Często mawiałem program menadżerom: jeśli pozwalasz mi projektować swoje oprogramowanie, to Twój projekt jest zagrożony.

W książce Wariaci rządzą domem wariatów, Alan Cooper określa to zjawisko mianem Homo Logicus:

Homo Logicus chce mieć kontrolę nad tym, co go interesuje, a rzeczy, które go interesują to skomplikowane, deterministyczne systemy. Ludzie są skomplikowani, ale nie zachowują się w logiczny i przewidywalny sposób, jak maszyny. Najlepsza maszyna to cyfrowa maszyna — mimo, iż może być ona najbardziej skomplikowana i wyrafinowana, to jest łatwo konfigurowalna przez programistę.

Cena jaką trzeba zapłacić za kontrolę, to zawsze więcej zachodu oraz zwiększona złożoność. Większość ludzi wolałoby podjąć umiarkowany wysiłek, ale to co odróżnia programistów od większości ludzi, to ich wola i możliwości opanowania niesamowitej złożoności. Wiedza i możliwość zarządzania systemami złożonymi z wielu oddziałujących na siebie sił, to satysfakcjonująca część pracy programisty. Latanie samolotami to archetypowe hobby programisty. Panel sterowania w kokpicie samolotu jest pełen wskaźników, pokręteł i dźwigni, ale programiści odżywają przy takim zniechęcającym stopniu skomplikowania. Homo Logicus uważa to za ciekawe i zajmujące, pomimo (z powodu!) długiej i ciężkiej nauki, jaka jest wymagana. Homo Sapiens wolałby się przelecieć jako pasażer.

Dla Homo Logicus, kontrola to cel, a złożoność to cena, którą trzeba za to zapłacić. Dla normalnego człowieka, prostota jest celem, a porzucenie kontroli jest ceną, którą zapłacą. W oprogramowaniu kontrola przekłada się na funkcjonalności. Dla przykładu, w systemie Windows 95, funkcja "Znajdź plik" daje mi wiele kontroli nad całą procedurą. Mogę określić, którą część dysku chcę przeszukać, typ pliku, który mnie interesuje, albo czy szukać po nazwie pliku, czy po jego zawartości oraz parę innych parametrów. Z punktu widzenia programisty, to bardzo fajne. Przy odrobinie początkowego zachodu otrzymuje on możliwość szybszego i wydajniejszego wyszukiwania. I na odwrót, punkt widzenia użytkownika jest mniej różowy, ponieważ musi on określić obszar poszukiwań, typ pliku, który poszukuje oraz czy szukać po nazwie, czy po zawartości. Homo Sapiens z miłą chęcią poświęci jedną ekstra minutę czasu obliczeniowego, jeśli nie będzie musiał znać tego, jak działa funkcja do wyszukiwania. Dla nich, każdy dodatkowy parametr wyszukiwania, to kolejne miejsce na wpisanie czegoś niepoprawnego. Prawdopodobieństwo popełnienia błędu i zwrócenia błędnych wyników wyszukiwania jest wyższe, nie niższe, jeśli dodamy więcej możliwości. Z chęcią poświęciliby całą niepotrzebną złożoność, kontrolę i przymus zrozumienia na rzecz tego, aby ich praca była łatwiejsza.

Homo Logicus jest napędzany przez nieustające pożądanie zrozumienia, jak wszystko działa. Dla kontrastu, Homo Sapiens ma silną potrzebę osiągania celu. O ile programiści też chcą osiągać cele, o tyle często będą akceptować porażkę jako cenę, którą trzeba zapłacić za zrozumienie. Jest taki stary żart o inżynierach, który daje pewien pogląd na temat tej potrzeby zrozumienia.

Troje ludzi zostało skazanych na egzekucję: kapłan, prawnik oraz inżynier. Kapłan jako pierwszy wchodzi na szubienicę. Kat pociąga za dźwignię, aby uruchomić zapadnię, ale nic się nie dzieje. Kapłan twierdzi, że to boska interwencja i domaga się uwolnienia. Tak też się stało. Jako następny, miejsce na szubienicy zajmuje prawnik. Kat pociąga za dźwignię i znów nic się nie dzieje. Prawnik stwierdza, iż kolejna próba byłaby powtórnym pociągnięciem do odpowiedzialności i domaga się uwolnienia. Tak też się stało. W końcu, inżynier wchodzi na szubienicę i zaczyna dokładnie przyglądać się rusztowaniu. Przed pociągnięciem dźwigni przez kata, podnosi wzrok i stwierdza, "Aha, tu jest Twój problem."

Cooper dalej wymienia parę kolejnych cech Homo Logicus:

  • sprzedaje prostotę za kontrolę
  • wymienia osiąganie celu za zrozumienie
  • skupia się nad tym, co jest możliwe z pominięciem tego, co jest prawdopodobne
  • zachowuje się jak mięśniak

Biedny ten użytkownik, Homo Sapiens, który nie jest zainteresowany komputerami i złożonością; on tylko chce wykonać swoją pracę.

Każdy może stworzyć złożoną aplikację, której nikt nie będzie w stanie opanować. To proste. Stworzenie aplikacji, która jest łatwa w użyciu.. cóż, to wymaga już pewnych umiejętności. Nie jestem pewien, czy potrzebujesz drogich projektantów interakcji, aby osiągnąć ten cel, ale musisz przestać myśleć jak Homo Logicus -- a zacząć myśleć jak Homo Sapiens.

Data publikacji oryginału: 27 września, 2004

11 komentarze:

AdamK pisze...

"The Inmates Are Running the Aslum" zostało wydane po polsku jako "Wariaci rządzący domem wariatów" (http://merlin.pl/Wariaci-rzadza-domem-wariatow-Dlaczego-produkty-wysokich-technologii-doprowadzaja-nas-do_A/browse/product/1,262289.html)

rafek pisze...

@AdamK: Dziekuję, podmienię tytuł i odnośnik w tekscie.

Konradzik pisze...

Strasznie do bani ten kawał :)

To, że kontrola - którą rozumiem tutaj jako więcej 'ficzerów' - jest dla programisty ważniejsza niż intuicyjność to znany fakt myślę. Z zamiłowania do dodatków bierze się też np. antywzorzec 'gold-plating'. No, ale w dzisiejszych czasach ergonomią interfejsu nie zajmują się już raczej programiści - wymyślono na to osobny zawód i z tego co widzę 'ludzie od ergonomii' pojawiają się nawet w średnich firmach. Jeżeli jesteśmy zdani na siebie to pozostają nam książki Kruga i testerzy.

Tomasz Kowalczyk pisze...

Ten kawał kończył się inaczej: "Kiedy inżynier wszedł na podest i kat pociągnął za dźwignię znowu nic się nie stało. Inżynier stanął nieco z boku, popatrzył i powiedział: "Mogę to naprawić!"".

Sam artykuł bardzo mi się podobał, wiele razy było tak, że dla mnie jasne i fajne było wykorzystanie wielu opcji jakiegoś programu gdzie inny użytkownik mówił "a po co mi tyle opcji jak używam dwóch". ;]

Anonimowy pisze...

Hmm, nie wiem jak tu się zgodzić z tym artykułem (ja sam chciałbym, ale patrząc na współczesne podejście do programowania nie mogę). Od zawsze walczyłem z tym, że programista nie ma mieć łatwiej! tylko ma mieć kontrolę. Jednak w dzisiejszych czasach w 'programowaniu' ważne jest to, aby napisać program szybko, a nie dobrze. Nie ważne jest, że 'programista' nie rozumie kodu - ważne, że działa. Takich ludzi jak dla mnie nie powinno się nazywać programistami (a na pewno sami nie powinni się nazywać programistami). Niedługo będzie tak (oczywiście ironizuję), że powstanie pełno bibliotek, w których będzie do dyspozycji funkcja zróbGrę i jako parametry podamy, czy to rpg, czy fps, czy multi, czy nie, czy 3d, czy 2d. Ale ludzie używający takiej funkcji i tak mimo wszystko też będą siebie nazywać programistami. Zresztą powinni, bo przecież według nich samych mają kontrolę - nad parametrami.

Podsumowując: ten artykuł jest tylko zgodny z wyidealizowanym przypadkiem, których na świecie brak (no chyba, że mówimy o firmach takich jak blizzard, gdzie nie liczy się to, żeby wydać grę szybko, ale żeby była przetestowana i dopracowana).

PS: Sam tego wszystkiego nie wymyśliłem, po prostu widzę jak zachowują się inni ludzie (ja mam inne podejście, więc zwracam na takie rzeczy uwagę).

Anonimowy pisze...

Wg autora Paint powinien wyprzeć PhotoShopa w końcu jest prosty, niewymagający większej wiedzy. Niestety ludzie są leniwi, a coraz częściej tworzone narzędzia mają aspirację do zastąpienia procesu myślowego i decyzyjnego. Coraz więcej jest głosów za tworzeniem oprogramowania w stylu "Przycisk zrób wszystko". I okazuje się że mimo tych wszytkich technologii, a moze dzięki nim poziom inteligencji spada.

Anonimowy pisze...

Ależ to nie tak do końca. Paint nie musi wyprzeć Photoshopa. W końcu Adobe pracuje nad funkcją, która dokona retuszu za nas :)

Anonimowy pisze...

"Jednak w dzisiejszych czasach w 'programowaniu' ważne jest to, aby napisać program szybko, a nie dobrze. Nie ważne jest, że 'programista' nie rozumie kodu"

Nie do końca się zgadzam z tym, co napisałeś. Programista musi rozumieć, co się dzieje, nawet jeśli większość kodu nie jest jego autorstwa. Znajdujesz konkretną bibliotekę/komponent i po prostu ich używasz. Nie musisz wiedzieć jak funkcjonują poszczególne podsystemy biblioteki, bo co Cię obchodzi sposób w jaki trzyma dane/stan, skoro masz interfejs do tego? Owszem - jak się psuje lub ma słabą wydajność, to analizujesz :)
To nadal jest programowanie, tylko na wyższym poziomie abstrakcji - wymuszone przez rynek.

Anonimowy pisze...

widzę ze blog chyba zdechł

rafek pisze...

@Anonimowy: Mogłoby się wydawać, że "zdechł", niemniej jednak inicjatywa jest wciąż żywa. Jest nas tylko trzech i każdy z nas ma natłok obowiązków, więc na tłumaczenia zostało trochę mniej czasu. Tak czy siak - tłumaczenia będą się pojawiały, tylko teraz przez jakiś czas trochę rzadziej. :)

Anonimowy pisze...

Znaczy się zdechł, tylko ładnie ujęte :(

@Rafek - jak nie zdechł, to udowodnij ;)

Prześlij komentarz

Related Posts with Thumbnails