Czas zacząć na nowo

Przyzwyczailiśmy się do tego, że wytwarzanie oprogramowania musi wyglądać tak, jak dzisiaj wygląda. Tymczasem niektórzy kwestionują to przekonanie, twierdząc, że musimy głęboko przewartościować paradygmaty obowiązujące dzisiaj w IT.

Przyzwyczailiśmy się do tego, że wytwarzanie oprogramowania musi wyglądać tak, jak dzisiaj wygląda. Tymczasem niektórzy kwestionują to przekonanie, twierdząc, że musimy głęboko przewartościować paradygmaty obowiązujące dzisiaj w IT.

Choć oprogramowanie komputerowe tworzone jest już od ponad pół wieku, to nadal projekty informatyczne nie są kończone na czas, przekraczają zakładany budżet, nie spełniają oczekiwań użytkowników, są zawodne i mało przyjazne w użyciu. W latach 60. określono taką sytuację mianem kryzysu oprogramowania - na który lekarstwem miało być powstanie inżynierii oprogramowania, bowiem systemy informatyczne miały powstawać już nie jako dzieła niezorganizowanych programistów artystów, lecz w ramach dobrze zdefiniowanego i kontrolowanego procesu, podobnie jak wytwarzane są samochody czy meble w fabryce. Wkrótce jak grzyby po deszczu zaczęły się pojawiać różne metodyki, standardy i procesy tworzenia oprogramowania. Niewątpliwie dało to zatrudnienie rzeszy nowych specjalistów, jednak poza szczególnymi rodzajami systemów okazało się mało skutecznym lekarstwem na kryzys, który wydaje się być chorobą chroniczną, trwającą aż do dzisiaj.

Czy taki stan rzeczy jest nieunikniony? A może potrzebujemy lepszych metodyk lub narzędzi? Pytania o tyle istotne, że systemy informatyczne coraz głębiej wnikają w tkankę społeczeństwa, a tempo informatyzacji wydaje się rosnąć wykładniczo. Coraz częściej pojawiają się głosy, że nie wystarczą kosmetyczne zmiany, bowiem fundamentalne błędy zostały popełnione, gdy zaczęliśmy budować pierwsze komputery, projektować pierwsze języki oprogramowania i tworzyć pierwsze aplikacje. Niektórzy nawet twierdzą, że sprawy zaszły tak daleko, że praktycznie trzeba zacząć od nowa.

Projekt Feyerabend

Jedną z inicjatyw mających na celu stworzenia nowych podstaw wytwarzania oprogramowania jest projekt Feyerabend zainicjowany przez Richarda Gabriela z Sun Microsystems. Żeby zobaczyć, jakie zmiany są potrzebne, konieczne jest krytyczne przeanalizowanie świadomych i nieświadomych założeń, na których opiera się przemysł informatyczny. Podejście takie jest zgodne z ideami Paula Feyerabenda, filozofa nauki, od którego pochodzi nazwa projektu. Tak na ten temat pisze w książce "Against Method" (Przeciwko metodzie) - "Jedną z najbardziej uderzających cech ostatnich dyskusji o historii i filozofii nauki jest uświadomienie sobie, że różne zdarzenia i rozwój (...) zachodziły tylko dlatego, że niektórzy myśliciele albo zdecydowali, że nie będą związani przez pewne «oczywiste» reguły metodyczne, albo nieświadomie je łamali. Taka praktyka nie jest tylko faktem z historii nauki, jest ona zarówno logiczna, jak i konieczna".

Dlaczego założenia, na których opiera się przemysł informatyczny, miałyby być błędne? Po pierwsze, w przeciągu kilku dekad ogromnej zmianie uległy zarówno możliwości sprzętu, jak i obszar zastosowania informatyki. Kilkadziesiąt lat temu głównymi ograniczeniami były szybkość i pamięć, powstające systemy były monolityczne, działały na jednym komputerze z jednym procesorem, aplikacje były stosowane głównie do obliczeń naukowych, ewentualnie w wojskowości. Komputery kosztowały miliony dolarów, a praca programisty była tania. Obecnie środowisko, w którym funkcjonuje przemysł informatyczny, jest dramatycznie odmienne. Komputery są miliony razy szybsze, pamięć mierzy się w gigabajtach, coraz bardziej dominują systemy rozproszone, zastosowania naukowe stały się marginalną częścią rynku informatycznego, a koszt komputera stał się praktycznie zaniedbywalny w porównaniu z kosztem utrzymania programisty. Przyczyn błędnych założeń, czy, jak niektórzy to formułują, obowiązującej oficjalnej ideologii środowiska IT, można jednak szukać jeszcze wcześniej.

Dziedzictwo minionych epok

Za ojca komputerów zazwyczaj uważa się angielskiego filozofa i matematyka Charlesa Babbage'a, który w XIX w. projektował i próbował budować mechaniczne pierwowzory współczesnych komputerów, np. maszynę różnicową do obliczania funkcji matematycznych. Na jego pracach opierali się zarówno Howard Aiken - twórca jednego z pierwszych komputerów współczesnych, jak i twórcy matematycznych podstaw informatyki, przede wszystkim Alan Turing i John von Neumann. Dziedzictwo Babbage'a w świecie IT jest jednak znacznie głębsze niż tylko naukowe i techniczne zasady - korzenie swoje ma w... mrokach średniowiecza.

Jako informatycy lubimy wierzyć, że przynajmniej w pracy kierujemy się racjonalnymi przesłankami. Często zapominamy, że wiedza i praktyki stosowane przez daną grupę powstają w wyniku złożonych procesów społecznych, których jesteśmy świadomi tylko w części. Procesów tych nie można rozpatrywać w oderwaniu od uwarunkowań kulturowych i dziedzictwa minionych epok. Przejmowane są nie tylko "zdobycze racjonalnego umysłu", ale również głęboko zakorzenione wierzenia i mity, które mają tym silniejsze oddziaływanie, że często zepchnięte do zbiorowej podświadomości nie są uświadomione przez członków danej społeczności.

Nie inaczej jest w przypadku społeczności IT.

Teologia Babbage'a

Charles Babbage zajmował się nie tylko konstruowaniem maszyn liczących, ale był także apostołem rewolucji przemysłowej. W pracach swoich zastosował obraz świata średniowiecznych inżynierów do projektu technologii współczesnej fabryki. Dla średniowiecznego inżyniera celem jego pracy było wprowadzenie na ziemi idealnego, racjonalnego porządku boskiego - to pogląd, który przez Babbage'a był w dużej mierze podzielany. Maszyny (czyli w naszym przypadku oprogramowanie) traktował jako środek zarządzania tym porządkiem. Z filozofią tą związanych jest szereg głębokich założeń, takich jak wszechwiedza (projektant maszyny ma całkowitą wiedzę o zadaniach, które będzie ona wykonywała i o środowisku, w którym będzie działała), wszechmoc (moc zbudowania zaprojektowanej maszyny i zapewnienia współpracy stron oddziałujących z maszyną) czy transcendencja (wprowadzenie doskonałego porządku wznosi ponad przypadkową i chaotyczną przeszłość do jakościowo nowej natury bardziej przypominającej rzeczywistość duchową niż fizyczną). Przy czym nie jest to tak naprawdę system przekonań wymyślony przez Babbage'a - jest to raczej przejaw długiej tradycji, która w jego pracach znalazła mocny wyraz. Taki system przekonań niektórzy określają mianem teologii Babbage'a i uważają, że można w nim odnaleźć korzenie wielu praktyk i przekonań powszechnych wśród twórców oprogramowania.

Czy rzeczywiście w podświadomości informatyków funkcjonuje taki system wierzeń? Że to niedorzeczne? Może śmieszne? A co powiecie na maszynę Turinga, model współczesnych komputerów: bez ograniczeń szybkości; nieskończona, niezawodna pamięć; doskonałe środowisko, bez awarii, bez wirusów, bez hakerów; potrzebne zasoby zawsze dostępne. A oczekiwanie, że programy będą bez błędów, dowodzenie poprawności, ideał six-sigma. Dorzućmy do tego jeszcze przekonanie, że można poznać wszystkie wymagania (jeżeli nawet nie na samym początku projektu, jak wierzyli w to twórcy liniowego cyklu życia oprogramowania, to na pewno w trakcie, w ramach metodyki przyrostowej), jak również wiarę w możliwość (i zasadność!) pełnej kontroli procesu, czy powszechną ufność, wbrew zdrowemu rozsądkowi, że wdrożenie kolejnego nowego systemu na pewno wprowadzi porządek w chaotycznym funkcjonowaniu firmy. Skojarzenia z wizją Babbage'a są niepokojąco mocne.

Nie chodzi o to, że próbujemy postępować zgodnie z tymi przekonaniami, wręcz przeciwnie - są one w tak oczywisty sposób nieprawdziwe, że cały czas próbujemy nie postępować zgodnie z nimi (wystarczy zwrócić uwagę na rozbieżność między oficjalnym i rzeczywistym procesem w większości firm informatycznych). Pomimo to są one tak głęboko zakorzenione w naszym sposobie myślenia, postrzegania, rozwiązywania problemów, że ciągle pojawiają się pod nowymi postaciami. Podobnie jak wyniesiony z domu rodzinnego, nierzadko nieuświadomiony, bagaż - system wartości, sposób zachowania, mówienia, reagowania na różne sytuacje - często nie przystający do środowiska, w którym funkcjonujemy, niezwykle trudno zmienić, tak odrzucenie dziedzictwa Babbage'a będzie wymagało od środowiska informatycznego ogromnego wysiłku.

Młotek? Wszystko to gwoździe!

Sprawa jest o tyle trudniejsza, że system przekonań działa trochę na zasadzie dodatniego sprzężenia zwrotnego. Wpływa on na dominujące pojęcie, teorie czy narzędzia. Te z kolei, ponieważ powstały w danym paradygmacie, zmuszają do myślenia i działania w tym paradygmacie i błędne koło się zamyka.

Spójrzmy na przykład na podstawowe narzędzie stosowane przez programistów: język programowania. Wpływa on nie tylko na to, jakie programy możemy napisać, ale kształtuje również sposób myślenia o programach i problemach. O sile tego wpływu przekonany był pionier informatyki Edsger Dijkstra. Znany był z tego, że jednym z wymogów objęcia stanowiska asystenta był brak wcześniejszej styczności z Fortranem. Uważał, że dłuższa styczność z tym językiem powoduje praktycznie nieodwracalne zmiany w psychice. Świadomy tego był również sam twórca Fortrana, John Backus. Na początku lat 80. tak pisał o dominujących językach programowania - "Chociaż prawdopodobnie powstanie języków takich jak Fortran i jego następcy było naturalną i nieuniknioną konsekwencją idei komputera von Neumanna, to już fakt, że języki takie zdominowały nasz sposób myślenia przez dwadzieścia lat jest wysoce niefortunny. Jest niefortunny z tego względu, że długa znajomość ich sprawia, że trudno nam będzie zrozumieć i zaadaptować nowe style programowania, oferujące większe możliwości obliczeniowe i intelektualne".

Niestety, słowa Backusa okazały się prorocze. Dwadzieścia kilka lat później przemysł informatyczny jest jeszcze bardziej zdominowany przez następców Fortrana. Obecnie wielu programistów wybierając język nie wyobraża sobie, że istnieje jakaś alternatywa dla Javy, C++ i Visual Basica. Języki wyrażające inny paradygmat programowania, takie jak Prolog lub Lisp, zostały zepchnięte na margines.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200