Harmony Christmas by jpellgen na licencji CC BY NC ND 2.0 |
Wpis z cyklu: nietypowo na Święta. ^_^
Zanim jednak powiemy sobie czemu tak
jest, trzeba powiedzieć - w obronie programistów i programowania - że to nie
zawsze jest ich wina. Po prostu pewne rzeczy będą trudne do oprogramowania,
niezależnie od tego jakie współcześnie istniejące narzędzie im dać. Prosty
przykład: zdanie zaczyna się od dużej litery. A jak powiedzieć maszynie, kiedy
zaczyna się zdanie? Zwykle po kropce. O ile można jeszcze nauczyć komputer, że
niektórych kropkach, takich jak w "np." czy "S.A." nie zawsze
jest wielka litera, to jednak nikt nie wpadł jeszcze na to, że są inne kropki,
po których czasem jest duża, a czasem nie. Ot na przykład "tys.",
"itd." czy "itp." i często gęsto trzeba to samemu
poprawiać. Bo widzicie, kiedy pracując w jakimś programie, nagle wyskoczy Ci
okienko, które pojawia Ci się raz na 10 tys. przypadków, to komputer
"zgłupieje", a ty je zamkniesz albo coś innego zrobisz. I tak samo
jest z kropkami i wielkimi literami: to nie działa tak prosto.
Problem ten wiąże się z tym, że
programiści męczą się nad tym jak oprogramować kolejne przypadki i scenariusze,
ale jak nauczyć komputer rozpoznawać kiedy po "ul" dać kropkę (od
"ulica"), a kiedy jest to pszczeli ul? Czy wiecie jak wiele rzeczy
"musi" sprawdzić komputer by powiedzieć, kiedy w danym miesiącu jest
każda z niedziel? Jest to nieustanna walka z tym, by komputer umiał jak
najwięcej (bo użytkownik końcowy chciałby), a tym by jak najmniej popsuł (bo
nie udało się zaprogramować wszystkich przypadków). W tej materii, jesteśmy za
zdaniem, że najczęściej najlepiej działa opcja minimalna. To znaczy, że jeśli
czegoś się nie da zrobić inaczej, to domyślnie powinno się wybrać opcję
najmniej szkodliwą, czyli "najmniej czyniącą". Lepiej by maszyna nie
zrobiła i trzeba było samemu zrobić, niż po niej poprawiać. Przecież sam sobie
mogę tą kropkę wstawić i wielką literą uczynić.
Prosty przykład: czy wiecie, że w Excelu
domyślnie zmieniany jest format dat i cyfr? Jeśli wpiszecie jakiś ciąg cyfr
zaczynający się od zer, to Excel je
usunie? Przed chwilą wpisałam ciąg "123456789123456789", a w komórce
wygląda on tak 1,23457E+17, a w jej podglądzie jako 123456789123456000. To są
trzy inne liczby... Dlatego o wiele
lepiej by Excel sam z siebie nic nie poprawiał. Ale domyślnie ustawione
formatowanie komórek mu na to nie pozwala. Zresztą, domyślne formatowanie
Excela - tzn. ogólne - z powodzeniem i to lepiej zastąpiłoby "tekstowe".
Na interesie tenże stoją jednak dwie
rzeczy: pierwszą jest syndrom listy lektur obowiązkowych. A cóż to takiego? Jest
to sposób myślenia, który nakazuje pewną rzecz zrobić według logiki i sposobu
myślenia osoby, którą tą rzecz kreuje ("eksperta"), bez uwzględnienia tej, którą ją
faktycznie będzie używać. Coś jak właśnie z listą lektur. Dzieciom i młodzieży
próbuje się sprzedać "wielkie dzieła", które dla nich nie nadają się
do czytania albo nie są wstanie ich zrozumieć bez "specjalistycznej" wiedzy.
Analogicznie jest z maszynami i
programami. Powinny być one tworzone pod użytkownika końcowego, tak by to on
mógł ich używać bezproblemowo - o ile jest to możliwe, a nie programistę
("eksperta"), który zna mechanizmy, zasady działania i logikę
programu. Może się mylę, ale większość użytkowników Excela oczekuje po
domyślnym formatowaniu (tzn. ogólnym) tego, co daje im formatowanie tekstowe. I tak dalej. Chodzi mi o to, że ktoś, kto
napisał jakiś program powinien na niego patrzeć z perspektywy użytkownika
końcowego, odbiorcy. Tak jak ucznia nie interesuje jak wspaniała jest
"Lalka", tak użytkownika nie interesują tabele przestawne i ich
milion funkcji, kiedy nie może on spokojnie po prostu wpisać do komórki numeru
faktury, listu poleconego, ewidencyjnego czy liczby bez ich zmiany przez
Excela. A odpowiedź "wystarczy wpisać przed apostrof/zmienić formatowanie
komórki/cokolwiek" nie jest dobrą odpowiedzią, ponieważ to oznacza, że od użytkownika oczekuje się dodatkowej wiedzy (coś jakby od ucznia wymagać by znał od razu kontekst historyczny/kulturowy powstania lektury). To jest właśnie przykład
pisania programu pod eksperta, a nie zwykłego użytkownika.
Z zrazu nie oznacza to, że programista ma
być więźniem użytkownika końcowego. Ponieważ - to druga rzecz - trzeba pamiętać
o prawie Murphy'ego: nie ma programów/algorytmów idioto odpornych. Część
"błędów" programów i urządzeń wynika z błędu użytkownika. Dla
przykładu: formatów zapisania daty jest kilkadziesiąt. Podobnie jak na
kilkanaście sposobów da sie zapisać "Spółka z ograniczoną
odpowiedzialnością". Znaczna większość z nich... jest błędna. I to z winy
użytkownika. Ludzie mają problemy z zapisaniem kodu pocztowego... a przecież tu
jest tylko jeden format, maksymalnie dwa. Programista jednak musi zawsze
pamiętać: nie każdy użytkownik jest idiotą. Użytkownika trzeba traktować jak
pięcioletnie dziecko, a wtedy wielu "idiotów" umiałoby by dane
urządzenie/program obsłużyć poprawnie, gdyby zostało napisane z myślą o nich.
Powyższe można streścić parafrazą pewnego
powiedzenia. Programy, w mojej opinii, są głupie ponieważ programowanie jest jak
ustrój socjalistyczny. Dzielnie walczy z problemami nieznanymi w innych
ustrojach. O ile część programistycznych problemów to po prostu walka z
mnogością opcji do oprogramowania, uczynienia programu/algorytmu jak
najbardziej idiotoodpornym oraz zgrywanie tego co się da zrobić z tym co
chciałby użytkownik, to znaczną część tej walki zgotowali oni sobie sami. I to
nie tylko pod postacią opisanych wyżej zachowań. Po prostu... wadliwa jest
również metodologia.
Rozmawiałam z kilkoma programistami i niejednokrotnie
pytałam się, a czemu nie zrobią tego inaczej, tzn. prościej. Nie mogą, ponieważ
logika języka programowania im nie pozwala. Ludzie, którzy wymyślali języki
programowania wymyślali je najwyraźniej takim samym sposobem jak się układa
listę lektur: my wiemy jak to działa, a że każdy inny, włącznie z użytkownikiem
końcowym ma już z tym problem... Powiem więcej: sami programiści mają problemy
z tym, jak języki funkcjonują. Wchodząc w programowanie trzeba bowiem zrozumieć
logikę języka, a ta jest inna od logiki "prawdziwej", zdroworozsądkowej.
Prosty przykład: W kuchni znajduje się
kalendarz (tzn. przechowywana jest data). Jeśli wchodzisz do niej i widzisz
komunikat sprawdź datę i ustaw na dzisiejszą, to po ustawieniu daty nie ulega
ona zmianie aż innego dnia nie wejdziesz do kuchni ponownie i znowu jej nie poprawisz.
Gdyby odnieść to do programu komputerowego: po wyjściu z kuchni data ulega
skasowaniu (ustawiona zostaje taka, jak przed wejściem), chyba że kalendarz
znajduje się i/lub w pokoju pomieszczeniu prowadzącym do kuchni. Innymi słowy:
data musi być przechowywana nie tylko w samej kuchni, ale i poza nią. Wchodząc
doń, data musi być znana. Po co? Nie
wiadomo.
Gdybym trzeba było to wszystko
podsumować, to trzeba powiedzieć tylko jedno. W Internecie krąży "Evil
Overlord List". I jest tam taki punkt 12. "One of my advisors will be an average five-year-old child. Any
flaws in my plan that he is able to spot will be corrected before
implementation.". Summa summarum: jeśli kiedykolwiek zastanawiałeś się
czemu jakieś urządzenie, maszyna czy program jest "głupi" to
odpowiadam: ponieważ ludzie, którzy stworzyli narzędzia do programowania nie
wykonali beta testów tenże na pięciolatkach. W związku z tym stworzyli sobie
ułomne narzędzie i ułomną logikę tenże. A po zastosowaniu obu dziwią się, że
"pięcioletnie dziecko" nie rozumie.Tą zasadę można zastosować do wszystkiego. Jeśli "Święta nie działają", to znaczy, że albo masz dziurę w planie albo coś jest nie tak ze Świętami. Z tymi konkretnymi, a nie w ogóle.Innymi słowy: Wesołych Świąt Bożego Narodzenia. Nie pozwól by ktokolwiek Ci zepsuł Święta próbując albo być ekspertem od twoich Świąt lub próbując Ci sprzedać swoje Święta. Święta są każdego, a każdy jest inny, więc nie ma jednych Świąt.
メリークリスマス!
メリークリスマス!
*Nie jest. Albo przynajmniej, ja nie
jestem wstanie zrozumieć czemu miałaby być i dlaczego katuje się nią uczniów.
Postać Kitsune Copyright by me (Konrad Włodarczyk) 2015, all rights reserved.
Chyba zapomnieliśmy, że excel to dość specjalistyczny program i wymaga nauki obsługi (że trafił pod strzechy to inna sprawa, ale to własnie powoduje, że wszyscy uważają, że się na nim znają). Na tej zasadzie można przyjąć (odnośnie formatowania domyślnego w excelu) dlaczego samochody pedał gazu mają z prawej strony, wiele osób wolało by z lewej albo w kierownicy itp. (w sumie niektóre samochody tak mają dla inwalidów). Po prostu wymaga nauki obsługi. Nie wspomniałeś o sztucznej inteligencji wprawdzie w pakiecie office może tego nie widać, ale w innych dziedzinach dość ładnie sobie radzi i wiele programów nie jest już tak głupich jak 20 lat temu.
OdpowiedzUsuńDlatego napisaliśmy "jeśli się nie da to należy wybrać opcję minimalną". Inaczej "jeśli się da i to działa, to programować/robić". Dlatego programy stają się coraz mniej głupie, ponieważ coraz więcej się da. Co nie zmienia faktu, że im mniej tym lepiej, naszym zdaniem.
UsuńA Excela wybraliśmy specjalnie, jako wyjątkowo perfidny program. Powyższe przemyślenia były pisane na podstawie doświadczeń naszych oraz kilku specjalistów, którzy swoje już na nim zjedli i to od różnych stron. I każdy z nich narzeka na to, że Excel "nie działa". Nie znamy nikogo, kto by nie, ale to akurat nie jest argument - "grupa badawcza" jest bowiem dość specyficzna. Niemniej jednak, naszym zdaniem podstawowa jego funkcja nie działa poprawnie właśnie przez niezbyt trafny dobór domyślnej opcji formatowania
Pomijając nawet ten fakt i samego Excela. Jeśli jakikolwiek program, procedura, cokolwiek jest przygotowane pod ekspertów i ich wiedzę (np. lista lektur), to nie dziwne, że Ci którzy faktycznie z tego korzystają, mają problemy. Szerzej mówiąc: wielu użytkowników ma problem z Photoshopem, ale to faktycznie jest program dla specjalistów i nie powinno nas dziwić, że jest przygotowany pod nich czyli faktycznego użytkownika końcowego. Office od wielu lat jest podstawowym programem biurowym, służącym do pracy "nie ekspertom" i nadal - chyba - się Microsoft nie skapnął, że pewne opcje trzeba poprawić pod nich.
Niestety, z pewnych względów prawnych, więcej szczegółów podać nie możemy.
A już ogólniej: niezależnie co programujesz/robisz (choćbyś pisał książkę czy bloga) i dla kogo, to zrób sobie test pięciolatka w celu wykrycia głupich błędów (co znaczy również, że jesteśmy otwarci na wszelakie uwagi i komentarze), ale też bądź z tym ostrożny. To jest test pięciolatka, a pięciolatek ma... cóż... pięć lat.