Tao programowania

Tao programowania – znalezione w odmętach sieci.
Prawdy zawarte w Tao programowania są wieczne i niezmienne.

Milcząca Pustka – Księga Pierwsza

Oto rzekł Mistrz Programista:
„Gdy nauczysz się odczytywać z trapu kod błędu, będzie to znak, że możesz odejść.”

1.1

Coś tajemniczego się uformowało, narodzone w milczącej pustce. Czekając samotnie w bezruchu, jest naraz nieruchome i zmienne. Ono jest źródłem wszystkich programów. Nie znam jego imienia, więc będę je nazywał Tao Programowania.

Jeżeli Tao jest dobre, to i system operacyjny jest dobry.
Jeżeli system operacyjny jest dobry, to i kompilator jest dobry.
Jeżeli kompilator jest dobry to i aplikacja jest dobra.
Użytkownik jest zadowolony i na świecie panuje harmonia.

Zaś Tao Programowania odlatuje daleko i wraca wraz z wiatrem poranka.

1.2

Tao zrodziło kod maszynowy.
Kod maszynowy zrodził assembler.
Assembler zrodził kompilator.
Obecnie jest dziesięć tysięcy języków. Każdy język ma swoja siłę, jak i słabość. Każdy język wyraża Jin i Jang oprogramowania.
Każdy język ma swoje miejsce w Tao. Lecz nie pisz w COBOLu, jeżeli tylko możesz tego uniknąć.

1.3

Na początku było Tao. Tao zrodziło Czas i Przestrzeń.

Zatem Czas i Przestrzeń są Jin i Jang programowania.

Programistom, którzy nie pojęli Tao, zawsze brakuje czasu i przestrzeni dla ich programów. Programiści rozumiejący Tao zawsze maja dość czasu i przestrzeni by osiągnąć swoje założenia.

Jak mogłoby być inaczej?

1.4

Mądremu programiście powiedziano o Tao i ten według niego postępuje.
Średniemu programiście powiedziano o Tao i ten go poszukuje.
Głupiemu programiście powiedziano o Tao i ten się z niego śmieje.
Lecz gdyby nie było śmiechu, nie byłoby i Tao.

Najwyższe tony najtrudniej usłyszeć. Odchodzi się idąc naprzód. Wielki talent długo pozostaje niedostrzeżony. Najdoskonalszy program ma błędy.

Starożytni Mistrzowie – Księga Druga

Oto rzekł Mistrz Programista:

„Po trzech dniach bez programowania, życie staje się pozbawione sensu”

2.1

Programiści dawnych czasów byli tajemniczy i niezgłębieni. Nie możemy odgadnąć ich myśli, zatem jedyne co możemy zrobić to opisać ich wygląd.

Ostrożni, jak lis przekraczający rzekę. Gotowi, jak generał na polu walki. Delikatni, jak hostessa zapraszająca gości. Prości, jak nieobrobiony blok drewna. Nieprzeniknieni, jak czarne jeziora w ciemnych jaskiniach.

Któż mógłby poznać sekrety ich serc i umysłów?

Tylko w Tao istnieje odpowiedz.

2.2

Wielkiemu Mistrzowi Turingowi śniło się raz, ze jest maszyną. Gdy się obudził, oświadczył:

„Nie wiem, czy jestem Turingiem śniącym, że jest maszyna, czy maszyna śnia , ze jest Turingiem!.”

2.3

Pewien programista z dużej firmy komputerowej poszedł na naradę programistów, a potem wrócił do swojego szefa mówiąc: „Jacy dziwni programiści pracują dla innych firm. Zachowywali się okropnie i w ogóle nie dbali o swój wygląd. Ich włosy były długie i zaniedbane, ubrania stare i wymięte. W ogóle nie uszanowali naszej gościnności i do tego wydawali brzydkie dźwięki w czasie mojej prezentacji.”

Szef powiedział:

-Nigdy nie powinienem cię wysyłać na naradę. Ci programiści żyją poza fizycznym światem. Życie uważają za absurd, przypadkowy zbieg okoliczności. Przychodzą i odchodzą nie mając pojęcia o ograniczeniach.

– Bez szacunku, żyją wyłącznie dla swoich programów. Dlaczego miały by ich obchodzić konwenanse?

– Zaprawdę, oni żyją w Tao.

2.4

I uczeń zapytał Mistrza: „Oto jest programista, który nigdy nie projektuje, nie dokumentuje ani nie testuje swoich programów. Mimo to każdy kto go zna, uważa go za najlepszego programistę na świecie. Dlaczego tak jest?”

Mistrz odpowiedział:

-Ten programista poznał Tao. On uniósł się ponad potrzebę projektowania; nie gniewa się gdy system wysiada, lecz odbiera rzeczywistość nie oceniając. On uniósł się ponad potrzebę dokumentowania; nie dba czy ktokolwiek będzie oglądał jego kod. On uniósł się ponad potrzebę testowania; każdy z jego programów jest doskonałością samą w sobie, piękny i elegancki, a jego funkcje są oczywiste. Zaprawdę, on poznał tajemnice Tao.

Projekt – Księga Trzecia

Oto rzekł Mistrz Programista:

-Gdy program jest testowany, jest już zbyt późno na zmiany w projekcie.

3.1

Był raz człowiek, który poszedł na targi komputerowe. Każdego dnia gdy wchodził, mówił do strażnika przy drzwiach:

„Jestem wielkim złodziejem, chełpiącym się osiągnięciami w dziedzinie kradzieży sklepowych. Bądź ostrzeżony, z tych targów nie zamierzam wyjść bez łupu.”

Taka mowa bardzo zdenerwowała strażnika, gdyż na wystawie zgromadzono sprzęt wart miliony dolarów, wiec obserwował tego człowieka uważnie.Lecz człowiek ów tylko chodził od stoiska do stoiska, mamrocząc coś cicho do siebie. Gdy człowiek wyszedł, strażnik wziął go na stronę i dokładnie przeszukał, ale nic nie znalazł.
Następnego dnia targów, człowiek wrócił i skarcił strażnika mówiac:
„Wczoraj zgarnąłem piękny fancik. Ale dziś będzie jeszcze lepiej!”
Wiec strażnik obserwował go jeszcze uważniej, ale bez skutku. Ostatniego dnia targów strażnik nie potrafił już dłużej powstrzymywać swojej ciekawości. Podszedł do człowieka i zapytał: „Panie Złodzieju, jestem tak zdumiony, ze już nie mogę żyć w spokoju. Proszę mnie oświecić. Co pan kradnie?”

Człowiek się uśmiechnął.

-Ja kradnę pomysły.

3.2

Był raz programista, który pisał niestrukturalne programy. Nowicjusz, próbujący go naśladować, także zaczął pisać niestrukturalne programy. Gdy nowicjusz poprosił mistrza o ocenę postępów, mistrz skarcił go za pisanie niestrukturalnych programów, mówiąc:

-Co jest odpowiednie dla mistrza, nie jest odpowiednie dla ucznia. Musisz zrozumieć Tao zanim przenikniesz strukturę.

3.3

Pewien programista służył na dworze Lorda Wu. Raz Lord zapytał programistę:

-Co jest łatwiej zaprojektować: system finansowo-księgowy czy system operacyjny?

-System operacyjny,” odpowiedział programista.

Lord wyraził niedowierzanie.

-Z pewnością system finansowo-księgowy jest trywialnie prosty w porównaniu do systemu operacyjnego,- powiedział

– Niezupełnie – odpowiedział programista.

– Projektując system finansowo-księgowy, programista działa jako mediator pomiędzy ludźmi mającymi różne pomysły: jak to musi działać, jak maja wyglądać raporty i jak to ma spełniać wymogi prawa podatkowego. Dla kontrastu, system operacyjny nie jest ograniczany przez przez czynniki zewnętrzne. Projektując system operacyjny, programista szuka najprostszej harmonii pomiędzy maszyną a pomysłem. Dlatego system operacyjny jest łatwiej zaprojektować.

Władca Wu skinął głową i uśmiechnął się.

-Wszystko pięknie i ładnie, lecz który z tych systemów łatwiej zdebugować?

Programista nie odpowiedział.

3.4

Do mistrza programisty przyszedł menadżer i pokazał założenia techniczne na nowa aplikacje. Szef zapytał mistrza: „Ile czasu zajmie zaprojektowanie tego systemu gdy przydzielę do tego pięciu programistów?”

„To zajmie jeden rok,” natychmiast odpowiedział mistrz.

„Ale my potrzebujemy ten system natychmiast, albo i jeszcze szybciej! Ile to potrwa, gdy przydzielę dziesięciu programistów do projektu?”

Mistrz skrzywił się. „W tym wypadku, to potrwa dwa lata.”

„A gdy przydzielę stu programistów?!”
Mistrz programista wzruszył ramionami. „Wtedy ten projekt nigdy nie zostanie ukończony.”

Kodowanie – Księga Czwarta

Oto rzekł Mistrz Programista:

„Dobrze napisany program jest we własnym niebie. Źle napisany program jest we własnym piekle.”

4.1

Program powinien być lekki i zwinny, jego procedury połączone jak sznur pereł. Przeznaczenie i duch programu powinny wypełniać całą jego istotę. Nie powinno w nim być niczego za mało ani niczego za dużo, żadnych niepotrzebnych pętli ani bezużytecznych zmiennych. Powinien byc strukturalny, ale bez nadmiernej sztywnosci.

Program powinien działać według „Zasady Minimalnego Zdziwienia”.

Na czym polega ta zasada? Po prostu na tym, ze program powinien reagować na działania użytkownika w sposób jaki najmniej go zdziwi.

Program, nieważne jak skomplikowany, powinien się zachowywać jak jednorodna całość. Powinien się kierować logiką raczej, niż czynnikami zewnętrznymi.

Jeżeli program nie będzie spełniał tych wymagań, będzie pełen nieporządku i zagmatwania. Jedynym sposobem na skorygowanie tego stanu bedzie przepisanie programu od początku.

4.2

Nowicjusz zapytał mistrza: „Mam program, który czasem działa a czasem nie. Kierowałem się wszelkimi zasadami programowania, ale nie pomogło.

Jestem kompletnie bezradny. Dlaczego tak się dzieje?”Mistrz odpowiedział:”

Jesteś bezradny, bo nie rozumiesz Tao. Tylko głupiec może oczekiwać racjonalnego zachowania od innych ludzi. Czemu oczekujesz go od maszyny skonstruowanej przez nich?

Komputery symulują determinizm; tylko Tao jest doskonałe.

Reguły programowania są ulotne; tylko Tao jest wieczne. Musisz zatem poznać Tao zanim doznasz oświecenia.”

„Mistrzu, a po czym poznam, ze już osiągnąłem oświecenie?” zapytał nowicjusz.
„Twój program będzie działał.”

4.3

Mistrz wyjaśniał naturę Tao jednemu ze swoich uczniów. „Tao jest w każdym oprogramowaniu – nawet najmniej istotnym,” powiedział.

„Czy Tao jest w kalkulatorze?” zapytał uczeń.
„Tak,” brzmiała odpowiedź.”
Czy Tao jest w grze telewizyjnej?” ciągnął uczeń.
„Jest nawet w grze telewizyjnej,” odpowiedział mistrz.”
A czy Tao jest w systemie DOS na PC?”
Mistrz zakaszlał i nieznacznie się poruszył mówiąc: „Na dzisiaj lekcja skończona.”

4.4

Programista Księcia Wang kodował program. Jego palce tańczyly po klawiaturze. Program skompilował się bez jednego komunikatu o błędzie, a potem działał jak delikatny zefirek.

„Wyśmienicie!” wykrzyknął Książę. „Twa technika jest bezbłędna!”

„Technika?” powiedział programista odwracając się od terminala.”
Ja postępuje według Tao – ponad wszelkie techniki! Gdy zaczynałem programował, widziałem program jako jeden wielki bałagan. Po trzech latach nie widziałem już bałaganu, tylko procedury. Teraz nic nie widzę. Cale moje jestestwo zanurza się w pozbawionej formy pustce. Moje zmysły są bezczynne. Mój duch, uwolniony do pracy według planu, kieruje się własnym instynktem. Krótko mówiąc, mój program sam się pisze. Owszem, zdarzają się trudniejsze problemy. Widzę jak nadchodzą, zwalniam i patrze w milczeniu. Potem zmieniam jedną linijkę kodu i trudności znikają jak obłoczek dymu. Wreszcie kompiluje program. Siedzę nieruchomo i pozwalam, by przyjemność pracy wypełniła moje wnętrze. Zamykam oczy na moment i wylogowuje się.

Książę Wang powiedział: „Oby wszyscy moi programiści byli tak roztropni!”

Obsługa – Księga Piąta

Oto rzekł Mistrz Programista:

„Każdy program mający więcej niż trzy linijki będzie kiedyś musiał być konserwowany.”

5.1

Dobrze używane drzwi nie potrzebują oleju do zawiasów.
Rwący potok nie zarasta.
Dźwięk ani myśl nie może się poruszać w próżni.
Nie używane programy butwieją.

To są wielkie tajemnice.

5.2

Menadżer zapytał programistę, ile czasu zajmie mu ukończenie programu, nad którym pracuje. „Skończę go jutro,” natychmiast odpowiedział programista.

„Ten termin wydaje mi się nierealny,” powiedział menadżer. „Tak szczerze, ile to potrwa?”.

Programista chwilę pomyślał. „Chce dodać kilka funkcji. Myślę, ze to zajmie co najmniej dwa tygodnie.”

Menadżer upierał się. „Nawet to wydaje mi się niemożliwe. No cóż, będę zadowolony, gdy po prostu powiadomi mnie pan, gdy już wszystko będzie skończone.”

Programista się zgodził.

Kilka lat później menadżer odchodził na emeryturę. W drodze na pożegnalny obiad zauważył programistę śpiącego przy swoim terminalu. Pisał całą noc.

5.3

Polecono raz młodemu programiście zakodowanie prostego pakietu finansowego.

Programista pracował wściekle przez kilka dni, lecz gdy mistrz obejrzał jego program, odkrył, że zawiera tylko edytor ekranowy, zestaw ogólnych procedur graficznych, interfejs dla sztucznej inteligencji, lecz najmniejszego fragmentu dotyczącego finansów.

Gdy mistrz zapytał się o to, nowicjusz zrobił się opryskliwy.

„Proszę się tak nie niecierpliwić. Dodam te finanse na końcu.”

5.4

Czy dobry rolnik zostawi plon, który uprawiał?
Czy dobry nauczyciel przeoczy najskromniejszego ucznia?
Czy ojciec pozwoli by jego dzieci głodowały?
Czy programista odmówi konserwacji swojego programu?

Zarządzanie – Księga Szósta

Oto rzekł Mistrz Programista:

„Niech będzie wielu programistów i mało menadżerów – wtedy wszyscy będą produktywni”.

6.1

Gdy menadżerowie odbywają niekończące się konsultacje, programiści piszą gry. Gdy księgowi mówią o zyskach kwartalnych, budżet rozwojowy jest bliski obcięcia. Gdy uczeni mówią o błękitnym niebie, chmury już czają się za horyzontem.

Zaprawdę, nie jest to Tao Programowania.

Gdy menadżerowie osiągają porozumienie, gry są ignorowane. Gdy księgowi snuja dalekosiężne plany, harmonia i porządek bliskie są powrotu. Gdy uczeni z miejsca wskazują problemy, rychło będą one rozwiązane.

Zaprawdę, to jest właśnie Tao Programowania.

6.2

Dlaczego programiści są nieproduktywni? Ponieważ ich czas jest tracony na spotkaniach.
Dlaczego programiści są tak buntowniczy? Bo menadżerowie za bardzo się wtrącają.
Dlaczego programiści zwalniają się jeden po drugim?
Bo się wypalają. Pracując pod kiepskim zarządem, już nie cenią swej pracy.

6.3

Menadżer miał być zwolniony, ale programista pracujący dla niego wymyślił program, który stał się popularny i świetnie się sprzedawał. W rezultacie menadżer zachował swoją pracę.

Menadżer próbował dać programiście premie, lecz programista odmówił mówiąc „Napisałem ten program dla sprawdzenia koncepcji i dlatego nie oczekuję nagrody”.

Menadżer, gdy to usłyszał, zauważył: „Ten programista, choć nisko się ceni, dobrze rozumie obowiązki pracownika. Awansujmy go na stanowisko konsultanta!”

Lecz gdy to powiedział, programista ponownie odmówił, mówiąc:

„Programuję, więc jestem. Gdybym został awansowany, nie robił bym nic innego poza marnowaniem cudzego czasu. Czy mogę już odejść?

Mam program, nad którym właśnie pracuję.”

6.4

Menadżer poszedł do swoich programistów i im powiedział:
„Jeśli chodzi o wasze godziny pracy, to macie przychodzić o 9:00 a wychodzić o 17:00.”
Wszyscy programiści się zdenerwowali a kilku z miejsca złożyło rezygnacje.

Więc menadżer powiedział:
„Dobrze, w takim razie możecie ustanowić własne godziny pracy, pod warunkiem, że wszystkie projekty będą kończone w terminie.” Zadowoleni programiści zaczęli przychodzić do pracy w południe i pracować do bladego świtu.

Korporacyjna Mądrość – Księga Siódma

Oto rzekł Mistrz Programista:

„Możecie pokazać program prezesowi firmy, ale nie sprawicie, że będzie się znał na komputerach”.

7.1

Uczeń zapytał mistrza: „Tam gdzie wschodzi słońce jest taka wielka drzewiasta struktura, którą ludzie nazywają „Zarządem Firmy”. Składa się z wicedyrektorów i księgowych. Wydaje liczne oświadczenia, z których każde mówi „Zgodnie z zarządzeniem” albo „W terminie do” i nikt nie wie o co chodzi. Co roku nowe nazwiska pojawiają się na gałęziach i żadnego z tego pożytku. Jak taka nienaturalna rzecz może istnieć?”

Mistrz odpowiedział: „Obserwujesz ta wspaniałą strukturę i jesteś oburzony, ze nie ma z niej żadnego pożytku. Czy nie możesz rozkoszować się jej nie kończącymi się zawirowaniami? Czy nie podoba ci się swoboda programowania pod osłoną jej gałęzi? Czemu obchodzi cie jej bezużyteczność?”

7.2

Tam gdzie wschodzi słońce drzemie rekin większy od największej ryby.

Czasem budzi się i zamienia w ptaka o skrzydłach zasłaniających niebo. Gdy leci nad krainą, przynosi wiadomość od Zarządu Firmy. Wiadomość spada pomiędzy programistów niczym mewa, która upatrzyła zdobycz. Wówczas ptak zbiera wiatr i, odsłaniając niebo za sobą, wraca do gniazda.

Programista-nowicjusz gapi się na ptaka, bo nie rozumie zjawiska. Średni programista drży przed jego nadejściem, bo boi się wiadomości. Mistrz programista siedzi przy swoim terminalu i nawet nie wie, ze ptak się pojawił i zniknął.

7.3

Mag z Wieży Ivory przyniósł mistrzowi programiście swój najnowszy wynalazek. Wtoczył do biura programisty duże czarne pudło, podczas gdy mistrz czekał w milczeniu.
„To jest zintegrowana, rozproszona stacja robocza ogólnego przeznaczenia, zaprojektowana ergonomicznie, z firmowym systemem operacyjnym, językami szóstej generacji i wieloma najwyższej klasy interfejsami. Moi asystenci potrzebowali kilkaset roboczolat na jej skonstruowanie. Czy to nie zdumiewające?” powiedział Mag. Mistrz programista podniósł nieco brwi. „Rzeczywiście, zdumiewające.”Mag ciągnął dalej: „Zarząd zadecydował, że wszyscy maja używać tej stacji roboczej jako platformy dla nowych programów. Czy Pan się na to zgadza?”

„Oczywiście!” odpowiedział mistrz. „Chce ją natychmiast mieć przewieziona do centrum obliczeniowego!”.

Mag wrócił do swojej wieży wielce zadowolony.

Kilka dni później programista-nowicjusz wszedł do pokoju mistrza i zapytał: „Nie mogę znaleźć listingu mojego nowego programu. Nie wie Pan przypadkiem, gdzie on może być?”

Mistrz na to: „Wiem. Wszystkie listingi są wyłożone na platformie w centrum obliczeniowym”.

7.4

Mistrz programista bez strachu przechodzi od programu do programu. Żadna zmiana zarządu go nie ruszy. Nie będzie zwolniony, nawet gdy projekt zostanie zaniechany. Dlaczego? On jest przepełniony Tao.

Sprzęt i Oprogramowanie – Księga Ósma

Oto rzekł Mistrz Programista:

„Bez wiatru trawa się nie porusza. Bez oprogramowania sprzęt jest bezużyteczny”.

8.1

Nowicjusz zapytał mistrza: „Zauważyłem, ze jedna firma komputerowa jest o wiele większa od innych. Góruje nad konkurencja niczym olbrzym pośród karłów. Każdy z jej oddziałów mógłby być samodzielna firma. Czemu tak jest?”
Mistrz odpowiedział: „Czemu zadajesz takie głupie pytania? Ta Firma jest duża, bo ma być duża. Gdyby robiła wyłącznie sprzęt, nikt by go nie kupił. Gdyby robiła tylko oprogramowanie, nikt by go nie używał. Gdyby zajmowała się utrzymaniem systemów, ludzie traktowaliby ją jak służącego. Ale ponieważ ona łączy te trzy rzeczy, ludzie myślą, że jest jednym z bogów! Nie musząc walczyć o przeżycie, zwycięża bez wysiłku”.

8.2

Pewnego dnia mistrz programista przechodził obok biurka nowicjusza i zauważył na nim ręczna grę komputerowa. „Przepraszam,” powiedział, „czy mogę to obejrzeć?”
Zaskoczony nowicjusz stanął niemal na baczność i dal grę mistrzowi.Ten powiedział: „To urządzenie zdaje się mieć trzy poziomy gry: łatwy, średni i trudny. Ale każde takie urządzenie ma tez czwarty poziom, w którym nie próbuje pokonać człowieka ani nie zamierza być pokonane przez niego”.
Nowicjusz zaczął błagać: „Mistrzu, jak znaleźć ten tajemniczy poziom?” Mistrz rzucił urządzenie na ziemie i rozgniótł je nogą.
A uczeń został nagle oświecony.

8.3

Był sobie raz programista pracujący przy mikroprocesorach. „Patrz jak mi tu dobrze,” rzekł, gdy wpadł do niego na chwile kolega pracujący przy mainframe’ach, „mam tu własny system operacyjny i pamięć masową.

Nie muszę z nikim dzielić swoich zasobów. Oprogramowanie jest zwarte i łatwe w użyciu. Czemu nie rzucisz tej swojej roboty i nie przyłączysz się do mnie?”

Wtedy kolega zaczął opisywać swojego mainframe jako starożytnego mędrca pogrążonego w medytacji na środku centrum obliczeniowego.

„Jego dyski rozpościerają się od końca do końca niczym ocean.

Oprogramowanie jak diament ma wiele twarzy, zwarte i posplatane niczym dziewicza dżungla. Programy, każdy unikalny, przepływają rwącym potokiem przez system. To wszystko sprawia, ze czuje się tam szczęśliwy.”

Pierwszy programista zamilkł po tej mowie. Ale obaj programiści pozostali przyjaciółmi do końca swoich dni.

8.4

Sprzęt spotkał Oprogramowanie na drodze do Changtse.

Oprogramowanie rzekło: „Ty jesteś Jin, a ja jestem Jang. Jeżeli pójdziemy razem, staniemy się sławni i zarobimy masę pieniędzy.” I poszli oboje dalej omawiając plany zdobycia świata.

Nagle spotkali Firmware, w postrzępionych lachach, kulejące, podpierające się sękatą laska. Powiedziało im ono: „Tao leży pomiędzy Jin a Jang. Jest ciche i nieruchome niczym staw w lesie. Nie szuka sławy, zatem nikt nie wie o jego istnieniu. Nie poszukuje fortuny, gdyż jest kompletne samo w sobie. Istnieje poza czasem i przestrzenią.”
Zawstydzone, sprzęt i oprogramowanie, zawróciły do swych domów.

Epilog – Księga Dziewiąta

Oto rzekł Mistrz Programista:

„Teraz pora, byś odszedł.”

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.