 |
|
|
|
Prawa Murphy'ego
3.0 Ludzie
Jak głoszą nie potwierdzone pogłoski, oprócz trójkąta:
maniak komputerowy - komputer - drugi maniak komputerowy istnieje inny,
tajemniczy świat pełen komputerowych nie-maniaków.
- Prawo strukturalnej sprzeczności pomiędzy komputerem a żoną:
- Tylko wtedy, gdy nie zapiszesz dłuższego kodu źródłowego, Twoja żona
użyje jedynego użądzenia w promieniu 10 kilometrów, które natychmiast
spowoduje spalenie głównego bezpiecznika.
- Aksjomat dziecka-na-kolanach:
- Dziecko, które dostaje rączkami do klawiatury, za pierwszym razem złapie
za jedyną kombinację klawiszy, którą można coś zniszczyć. Jeśli
istnieje więcej niż jedna taka możliwość, to wybierze sobie tę
najbardziej opłakaną w skutkach.
- Fenomen zainteresowanej młodzieży:
- Jedyną rzeczą w komputerze, jaką zainteresują się Twoje dorastające
dzieci, są liczne kradzione kopie gier, które podczas Twojej nieobecności
zapisują na dysku twardym.
- Wniosek z fenomenu zainteresowanej młodzieży:
- Działalność ta sprowadzi na Twój komputer każdy wirus krążący w
promieniu 400 kilometrów.
- Fenomen Innego Systemu:
- Najbardziej doświadczony maniak komputerowy z Twojego
otoczenia będzie miał inny system komputerowy, niż Ty.
- Przy każdej nadarzającej się okazji zwróci Ci uwagę
na to, że Twój komputer kupują wyłącznie absolutni nowicjusze.
- Wszyscy będą mu wierzyć.
- Sprecyzowanie fenomenu innego systemu:
- Jeśli posiadasz Amigę, będziesz wyśmiewany za
komputer do gier.
- Jeśli posiadasz Atari, będziesz wyśmiewany za
komputer graficzny, co by dużo chciał, a nie może.
- Jeśli posiadasz Commodore-64, będziesz wyśmiewany za
komputer dla przedszkolaka.
- Jeśli posiadasz MacIntosh'a, będziesz wyśmiewany za
komputer o bajońskiej cenie.
- Przypowieść o obiektywizmie:
- Niezależnie od tego, jaki komputer posiadasz, nie jest on ani najnowszy,
ani najlepszy.
3.1 Maniacy komputerowi.
- Definicja posiadacza komputera "profesjonalnego":
- Stworzenie męskie, któremu nie robi różnicy to, że poświęca nie kończące
się godziny zajęciu, z którego nie ma żadnej praktycznej korzyści, a
przy czym traci wszelki kontakt z rzeczywistością i nie ma już w ogóle
czasu dla swojego otoczenia, rodziny, przyjaciół.
- Definicja posiadacza komputera "domowego" i
"półprofesjonalnego":
- Stworzenie męskie, któremu nie robi różnicy to, że poświęca nie kończące
się godziny zajęciu, z którgo nie ma żadnej praktycznej korzyści, a
przy czym traci wszelki kontakt z rzeczywistością i nie ma już w ogóle
czasu dla swojego otoczenia, rodziny, przyjaciół.
I dla kotrastu:
- Definicja użytkownika komputerów:
Zestresowana istota, zazwyczaj rodzaju żeńskiego, która wykonuje swoją
pracę przy oślepiającym oczy monitorze, wykorzystując do tego bezużyteczne
programy, niezrozumiałe podręczniki i niedostosowane urządzenia
peryferyjne. Bez pomocy komputera można by było wykonać tę pracę w o połowę
krótszym czasie.
- Dwa prawa kobiety:
- Jeżeli mężczyzna zaczyna wyrażać uwagi w rodzaju
"żyjemy w epoce informacji", to znaczy, że chce kupić
komputer.
- Jeżeli mężczyzna o tym nie wspomina, to znaczy, że
już go kupił.
- Zjawisko problemu:
- Maniak komputerowy opracowuje problem w trzech różnych etapach:
- W czym problem? Nic nie widzę. Zostaw mnie w spokoju.
- Lubię grzebać w problemach nie do rozwiązania.
- Który problem? Nie, nie rozwiązałem go, był dla
mnie zbyt nużący. Zostaw mnie w spokoju.
- Rozpoznanie finansowe:
- Każdy musi mieć komputer. Jednak żaden posiadacz komputera nie straci
twarzy, jeśli przyzna, że cała sprawa była kosztowną pomyłką.
- Rozszerzone prawo Gerti:
- Mężczyźni kochają komputery, ponieważ komputery
wykonują to, co się im poleci. I jest im obojętne, czy jest to zgodne
z tym, czego naprawdę chcieli.
- Zaimkiem "on" jest określany zarówno mężczyzna,
jak i komputer.
- Reguła Doros:
- Jeśli fachowcy od komputerów sądzą, że ludzie powinni rozumieć
komputery, to w rzeczywistości mają na myśli to, że ludzie powinni przyjąć
komputery jako dar boży i nie robić tyle hałasu wokół tej sprawy - aby
maniacy komputerowi mogli spokojnie robić to co chcą, nie będąc
atakowani przez świat zewnętrzny.
- Westchnienie Dorothy:
- Jeśli na przyjęciu dosiądziesz się do stolika, przy którym siedzą
dwaj pozornie interesujący mężczyźni, okazuje się, że tak naprawdę są
to maniacy komputerowi, którzy całymi godzinami będą rozmawiać o
algorytmach sortowania nie zwracając na Ciebie najmniejszej uwagi.
- Pierwsze prawo Platta:
- Nie ważne, po co ktoś kupił sobie komputer. Najdalej po upływie
tygodnia będzie grał przez 26 godzin na dobę w "Prince'a"
- Paradoks oszczędności czasu:
- Czas, który maniak komputerowy zyska dzięki
automatyzacji zadań, jest odwrotnie proporcjonalny do czasu
programowania. Zyskany czas Z można określić następującym wzorem: Z=1/1+(P*H)
gdzie P - czas potrzebny na programowanie, H - częstotliwość występowania
zadania. W najlepszym przypadku nie zyskuje nic.
- Czas samodzielnej pracy komputera maniak komputerowy
wykorzysta do tego, by nieruchomo obserwować sprawność jego działania.
- Pogląd feministyczny:
- Przestrzeń w pamięci i męski rozum mają z sobą coś wspólnego:
wielkość nie jest aż tak znowu ważna, lecz żaden mężczyzna nie
przyzna się do tego.
3.2 Programista
- Założenie podstawowe:
- Żaden program nigdy nie będzie funkcjonował całkowicie poprawnie.
- Wniosek pierwszy:
- Przekleństwa są jedynym językiem, który programiści opanowują
perfekcyjnie.
- Wniosek końcowy:
- Komputer wykona to, co zaprogramujesz, a nie to, czego od niego
oczekujesz.
- Przypadek programistów-hobbystów:
- Oczywiste błędy zauważysz dopiero przy pierwszej publicznej prezentacji
własnego programu.
- Diagnoza Axela:
- Nic tak korzystnie nie wpływa na program, jak brak procedur kontrolnych.
- Wniosek Axela:
- Jeżeli nie wiesz, co czynisz, rób to w sposób elegancki.
- Pierwsze Prawo Specjalizacji Informatycznej:
- Każdy programista przybywający z innego miasta jest fachowcem.
- Drugie Prawo Specjalizacji Informatycznej:
- Idealny fachowiec wie absolutnie wszystko o niczym.
- Cykl rozwojowy programu według Clark'a:
- To jest niemożliwe - nie będę przecież marnotrawił
mojego czasu.
- To jest możliwe, ale nieopłacalne.
- Przecież od początku mówię, że moja idea jest
genialna.
- Czy ktoś może mi wyjaśnić, dlaczego idea ta jest ogólnie
znana?
- Aksjomat Mexner'a o pamięci operacyjnej:
- Każdy kod programowy dąży do kompletnego wypełnienia całej, wolnej
przestrzeni pamięci operacyjnej.
- Rozszerzenie Cerbera:
- Jeżeli wykasujesz wszystkie komentarze i napiszesz pogmatwane procedury
na nowo - krócej i efektywniej, to na koniec otrzymasz program dłuższy,
wymagający więcej pamięci, przerastający możliwości kompilatora, a
ponadto niefunkcjonujący.
- Prawa pracowni:
- Wszystkie powierzchnie horyzontalne zostaną w krótkim
czasie pokryte rupieciami.
- Dyskietki leżą "pod spodem"
- Pilnie potrzebny projekt programu znajduje się "niewiadomogdzie"
- Popiół z papierosów i kawa znajdują się gdzieś
"pomiędzy"
- Ochrona przed katastrofą:
- Kto wykazuje zadowolenie, gdy program zawodzi, ten zna kogoś, na kogo można
przerzucić odpowiedzialność.
- Osiem Praw Szanownego Klienta:
- Klientowi nigdy nie przyjdzie na myśl, ile kosztuje
projekt, ale ile można na nim zaoszczędzić.
- Jeżeli udało Ci się wprowadzić w programie wymagane
przez klienta poprawki, wtedy on z nich rezygnuje.
- Żaden klient nie wie, czego właściwie chce.
- Każdy klient wie dokładnie, czego nie chce.
- Żaden klient nie chce tego, co już masz gotowe.
- Nie wie także, co chciałby mieć zamiast tego.
- Klient, który najmniej płaci, marudzi majwięcej.
- Klient żąda większych zmian dokładnie wtedy, kiedy
produkt jest już gotowy.
- Uwagi o opóźnionym błędzie:
- Decydujący błąd odkryjesz dopiero wtedy, kiedy
program działa 6 miesięcy bez zastrzeżeń.
- Błąd ten zafałszuje albo zniszczy dokładnie te
dane, które nie są w żaden sposób do odtworzenia i które są
najistotniejsze dla funkcjonowania systemu.
- Kod źródłowy zniknął w międzyczasie i jest nie do
odnalezienia.
- Prawo Peter'a:
- Program rozwija się do czasu przekroczenia możliwości programisty, który
ma go nadal rozwijać.
- Rozszerzenie prawa Peter'a:
- Prace wstępne przeprowadzane są zawsze przez osoby osiągające szczyty
swoich niemożności.
- Przesłanka o niezmiennym stresie:
- wysiłek * czas = constans
- Rozszerzenie 1:
- Jeżeli masz dużo czasu, pracujesz niewiele.
- Rozszerzenie 2:
- Wraz ze zbliżaniem się terminu pracy, wysiłek zmierza do nieskończoności.
- Rozszerzenie 3:
- W "ostatniej minucie" rozwiązujesz najistotniejsze problemy.
- Ogólne prawa koncepcyjne:
- Nigdy nie masz czasu na wniesienie poprawek,
ale zawsze masz czas napisać program od nowa.
- Zmiany w projekcie programu trwają tak długo, że nie
ma już czasu na poprawki w samym programie.
- Prawo Ridigera:
- W każdym programie błędy wykazują skłonność do występowania w tym
miejscu, które sprawdzasz jako ostatnie.
- Syndrom jakości:
- Każdy program, który się dobrze zaczyna, kończy się źle. Program, który
zaczyna się źle, kończy się przerażająco.
- Wniosek 1:
To co wygląda łatwo, jest trudne.
To, co wygląda trudno, jest niemożliwe.
To, co wygląda na niemożliwe potrafi rozwiązać nawet Twoja teściowa i
to bez pomocy komputera.
- Wniosek 2:
- Rzeczywistość może być zawsze gorsza od najbardziej pesymistycznych
wyobrażeń.
- Lemat o zespole programistów:
- W zespole programistów każdy ma genialny plan rozwiązania problemu.
Wszystkie plany wzajemnie się wykluczają i żaden nie prowadzi do
poprawnego rozwiązania.
- Prawa procedur:
- Każda procedura, do której może wkraść się błąd,
będzie go zawierać.
- Także w procedurach, które muszą być bezbłędne,
znajdują się błędy.
- Wniosek 1:
- Każdy błąd umiejscowi się tam, gdzie zostanie najpóźniej odkryty i
gdzie wyrządzi maksymalne szkody.
- Wniosek 2:
- Każdy błąd ujawni się dopiero po przeprowadzonej kontroli programu.
- Wniosek 3:
- Jeżeli błąd został wcześniej dostrzeżony, to ustalenie jego
przyczyny jest niemożliwe.
- Prawo końca:
- Napisanie programu trwa dwukrotnie dłużej, niż zaplanowano.
- Lemat o adaptacji:
- Skonfigurowanie programu na innym komputerze powoduje, że nie funkcjonuje
on na komputerze, dla którego został pierwotnie napisany. Próba ponownego
dostosowania programu do pierwotnego komputera powoduje, że nie funkcjonuje
on na żadnym z tych dwóch komputerów.
- Teoria mnożenia:
- Liczba osób w zespole programistycznym ma tendencje wzrastające niezależnie
od ilości pracy.
- Uzupełnienie:
- Jeżeli uczynisz komuś przysługę, to jesteś od zaraz trwale za to
odpowiedzialny.
- Wartość graniczna według Robbins'a:
- Minimalne wymagania programu są zarazem maksymalnymi dla danego
komputera.
- Czynnik niepewności Hartz'a:
- Niejasność jest wielkością niezmienną.
- Prawo zmaian:
- Im mniejsza pozornie korekta tym większy nakład pracy przy jej
wprowadzaniu.
- Rozszerzenie:
- Nic nie jest na tyle proste by nie można było tego wykonać źle.
- Reguła przechwytywania:
- Jeżeli napiszesz procedurę, która zapobiega pojawianiu się błędnych
wartości, to zawsze znajdzie się użytkownik, który ją pominie.
- Aksjomat o wyszukiwaniu informacji:
- Inforamcja, która jest najbardziej potrzebna, jest najmniej dostępna.
- Uwaga o pomysłowości użytkownika:
- Jeżeli stwierdzono, że istnieją 4 różne możliwości doprowadzenia
programu do krachu, i wszystkie 4 się zablokuje, wtedy użytkownik znajdzie
piątą metodę.
- Uogólnienie:
- Nie ma programów całkowicie idiotoodpornych.
- Prawo dokumentacji:
- Nikt jej nigdy dokładnie nie czyta.
- Aksjomat o relacji pomiędzy podręcznikiem a programem:
- Jeżeli wytłumaczyłeś coś tak dokładnie, że nie można tego zrobić
błędnie, zawsze znajdzie się ktoś, kto to potrafi.
- Dogmat o podstępnym algorytmie:
- Niezależnie od tego, co się popsuje,
wszystko będzie dobrze wyglądać.
- Ci, których poprosisz o pomoc, nic nie zauważą.
- Ten, który pojawi się z nieproszon radą, odkryje
natychmiast wiele błędów.
- Niezależnie od tego, co się psuje, zawsze istnieje
ktoś, kto już wcześniej wiedział, że tak będzie.
- Nie wierz w cuda. Zdaj się na nie.
- Uogólnienie:
- Skrót jest najdłuższą drogą pomiędzy dwoma punktami.
- Ogólna teoria algorytmów:
- Każda formuła i każda stała muszą być traktowane
jako zmienne.
- Najważniejsze punkty algorytmu mają największą
szansę na to, by zostać pominięte lub zapomniane.
- Jeżeli tylko jakiś moduł funkcjonuje perfekcyjnie,
to nie potrafi współpracować z innymi modułami.
- Nic się nie kończy w sposób zaplanowany.
- Teoretyczne Prawo Kompatybilności Języków Programowania:
- Założenie: Nawet, gdyby udało się opracować taki język
programowania, który zastąpiłby wszystkie dotychczasowe, to zawsze
znajdzie się dostatecznie dużo producentów, którzy będą
rozpowszechniać własną wersję specjalną tego jednolitego i
uniwersalnego języka.
- Dedukcja: Ta własna wersja specjalna nie będzie
kompatybilna z niczym innym oprócz samej siebie.
- Ograniczenie: Niekompatybilność będzie się oczywiście
powiększać wraz z kolejnymi edycjami wersji specjalnej.
- Zastosowanie Praktycznej Kompatybilności Języków
Programowania:
- Ponieważ nie ma jednolitego języka programowania,
panuje totalny rozgardiasz.
- Odczuwasz to sam najdotkliwiej.
- Reguła 90-90-10
- Na pierwsze 90% programu potrzeba 10% przeznaczonego na
jego realizację czasu.
- Pozostałe 10% programu wymaga 90% przeznaczonego na
jego realizację czasu.
- Rozpoczynasz zawsze od pozostałych 10%.
- Reguła Klienta (na bazie 90-90-10)
- 10% od których rozpoczynasz pracę, stanowią te procedury, które w
ostatecznym rozrachunku zostaną usunięte na życzenie klienta.
- Prawo Gray'a:
- Na realizację n+1 zadań będziesz miał tyle samo czasu, co na realizację
n zadań.
- Rozszerzona zasada Epstein'a - Heinsenberga:
- Z paramertrów czas, pieniądze i zadanie tylko dwa dadzą się określić
jednoznacznie w danym momencie:
- Jeżeli znane są zadanie i czas, to określenie kosztów
całkowitych jest niemożliwe.
- Jeżeli znane są czas i wolne moce przerobowe, to nikt
nie wie, jaką część zadania należy wykonać.
- Jeżeli ktoś potrafi określić wszystkie trzy
parametry, to znaczy, że nie zajmuje się tematyką formułowania zadań.
- Postulaty:
- Wyjątki są liczniejsze od reguł.
- Od wszystkich uznanych wyjątków istnieją wyjątki.
- Jeżeli opanowałeś już wyjątki, to nie pamiętasz,
jakich reguł one dotyczą.
- Prawo Irytacji
- Po skasowaniu pliku, co do którego jesteś pewien, że już nigdy i do
niczego się nie przyda, okaże się, że jest on w krótce niezbędnie
potrzebny.
- Prawo struktury kompilatora:
- Im więcej poleceń strukturalnych zamieścisz w swoim programie, tym
mniej będzie w stanie przetłumaczyć kompilator.
- Uzupełnienie prawa struktury kompilatora:
- Przetłumaczone zostaną jedynie struktury błędne.
- Prawo Konwersji Znaków:
- stan początkowy jest nie do odtworzenia.
- prawidłowo napisany tekst pojawi się tylko wtedy,
kiedy napiszesz go ręcznie.
- Aksjomat Helt'a:
- Żadem rozkaz nie jest na tyle krótki, żeby przy jego pisaniu nie pomylić
się co najmniej trzykrotnie.
- Spostrzeżenie Programisty Aplikacyjnego:
Założenie: Użytkownik wykonuje wszystko błędnie.
- Na polecenie "NAPISZ TAK lub NIE" wpisuje
"TAK lub NIE"
- Na polecenie "Wciśnij ENTER" wpisuje "ENTER"
- Na polecenie "Naciśnij dowolny klawisz"
naciska klawisz SHIFT, albo ESCAPE.
- Spostrzerzenie Mull'a o rejestrach:
- Jeżeli zapisujesz coś w jakimś rejestrze, i dokładnie
zapamiętujesz, co dana oznacza, to zapominasz, który to był rejestr.
- Jeżeli zapamiętasz rejestr, to już go nigdy więcej
nie musisz używać.
- Reguła pp (poniedziałek - piątek):
- Program oddany użytkownikowi w piątek wraca do autora w poniedziałek.
- Dwa kardynalne błędy firm software'owych:
- Jeżeli jakiś problem nie istnieje od dawna, to wciąż
istnieją ludzie, którzy pracują nad jego rozwiązaniem.
- Przydzielenie większej ilości ludzi do realizacji
powalającego ogromem projektu opóźnia termin jego zakończenia.
3.3 Użytkownik.
- Prawo logiki statystycznej:
- Zgodnie z wynikami badań rynku 80 procent użytkowników programów
stosuje tylko 20 procent ich funkcji.
- Pierwsza konsekwencja logiczna:
- 20 procent użytkowników wymaga 80 procent funkcji, których program nie
posiada.
- Druga konsekwencja logiczna:
- Należysz z pewnością do tych 20 procent.
- Wyjaśnienie:
- Programista jest ostatnią osobą, która chciałaby stosować własny
program.
- Uogólnienie:
- Kiedy już opanujesz dany program, to pojawi się jego nowa wersja, czyniąc
poprzednią zupełnie przestarzałą.
- Reguła kupna:
- Jeżeli po długotrwałych poszukiwaniach kupiłeś już komputer, jego
cena w następnym tygodniu będzie o połowę mniejsza. Ewentualnie pojawi
się inny model, który za tę samą cenę oferuje podwójną moc
obliczeniową.
- Gwarancja:
- Zapłacenie rachunku powoduje utratę uprawnień
gwarancyjnych.
- 180-dniowa gwarancja gwarantuje tylko tyle, że 181-go
dnia komputer eksploduje.
- Aksjomat o rozszerzaniu pamięci operacyjnej:
- Pamięć operacyjna każdego komputera jest niewystarczająca. Jeśli ją
jednak rozszerzysz, to pojawi się nowa wersja programu, która wymaga co
najmniej 10 kilobajtów pamięci więcej od tej, którą dysponujesz.
- Łatwowierny klient ("Odpowiedzi sprzedawcy na
krytyczne pytania klientów"):
- "To wczoraj jeszcze działało"
- "Oczywiście, że będzie to można później
zainstalować"
- "Nasz specjalista od tego zagadnienia jest właśnie
na urlopie"
- "Oczywiście, że prowadzimy serwis
gwarancyjny"
- "Nie, do tej ceny nie dochodzą już żadne koszta
dodatkowe"
|
|