Prostota ma dwa znaczenia

Kategoria: Przemyślenia Data publikacji:

Zdarzyło ci się kiedyś powiedzieć o jakiejś aplikacji bądź urządzeniu, że jest proste? Co miałeś wtedy na myśli? Czy jesteś autorem tej rzeczy, czy umiałbyś stworzyć takową? Prostota ma bowiem dwa znaczenia. Inaczej rozumiesz to pojęcie w zależności od tego, po której stronie barykady jesteś…

To, o czym tutaj napiszę, dotyczyć będzie stron internetowych, aplikacji mobilnych, programów komputerowych i urządzeń elektronicznych. Można jednak przełożyć tę analogię na inne sprawy i twory.

Wyobraź sobie taką sytuację. Jest sobie program komputerowy, który z jakichś oczywistych względów potrzebuje uzyskać twoją datę urodzenia. W jaki sposób autor tego programu może cię o to zapytać?

Jedna z możliwości jest taka, że okno aplikacji będzie zawierać pole tekstowe, takie zwyczajne pole do wpisywania liter z klawiatury. W pobliżu tego pola autor doda adnotację w stylu „wpisz datę urodzenia w formacie RRRR-MM-DD” (R – rok, M – miesiąc, D – dzień), co oznaczałoby, że jeśli urodziłeś się 1 października 1993 roku, musisz wpisać po prostu „1993-10-01”.

Czy wykonana w taki sposób aplikacja byłaby prosta?

  • Nie, nie byłaby prosta, byłaby skomplikowana,  gdyż użytkownik musiałby w sposób niegraficzny wprowadzić ciąg jakichś znaków niekonieczne dla każdego zrozumiały. Łatwo w nim o pomyłkę. Zrozumienie takie sposobu wprowadzania daty wymaga większego skupienia i nie jest intuicyjne dla kogoś niezajmującego się programowaniem aplikacji komputerowych.
  • Tak, byłaby bardzo prosta, ponieważ do jej stworzenia wystarczy tylko umieścić na ekranie zwykłe pole tekstowe do wpisywania. Dodanie takie pola z perspektywy kodu programistycznego jest bardzo proste. To na użytkowniku spoczywa wtedy odpowiedzialność za wpisanie tekstu w poprawny sposób. Jeśli użytkownik pominie zero wiodące (wpisze „1993-10-1” zamiast „1993-10-01”) lub poda niepoprawną datę („1993-02-31”) po prostu wyświetlamy prosty programistycznie komunikat błędu.

Jest też inna możliwość. Autor aplikacji, chcąc uzyskać od użytkownika jego datę urodzenia, może umieścić na ekranie przycisk, po którego kliknięciu pojawia się kalendarz w formie wyskakującego okienka. W nim znalazłyby się małe przyciski, każdy z nich oznaczałby konkretny dzień miesiąca; byłyby też przyciski do przełączania miesiąca i roku.

Czy wykonany w ten sposób program byłby prosty?

  • Nie, nie byłby prosty, byłby skomplikowany,  gdyż autor tego programu musiałby zaprogramować całą logikę programistyczną, która zajęła by się wyliczeniem poszczególnych dni poszczególnych miesięcy, a także dość skomplikowany kod programistyczny odpowiedzialny za wyświetlenie takiego ładnego kalendarzyka na ekranie i obsłużenie kliknięcia konkretnego dnia przez użytkownika.
  • Tak, byłby bardzo prosty, ponieważ w celu wskazania wybranej daty użytkownik mógłby bardzo prosto, w pełni graficznie i intuicyjnie wskazać wybrany rok i miesiąc, a następnie kliknąć w konkretny dzień tegoż miesiąca. Unikamy wtedy potrzeby analizowania formatu daty (magicznych literek „RRRR-MM-DD”), a także ryzyka wprowadzenia niepoprawnej daty (na przykład 30 lutego zamiast 30 marca).

Prostota ma bowiem dwa znaczenia.

  • Prostota konstrukcji, czyli tego jak dana rzecz jest zbudowana wewnętrznie.
  • Prostota obsługi, czyli to, jak wygodnie jest się tą rzeczą posługiwać i jak niewiele trzeba potrafić, by móc to zrobić poprawnie.

Obydwie prostoty są ważne i potrzebne. Konsument oprogramowania, osoba niezajmująca się tworzeniem urządzeń elektronicznych czy na przykład programowaniem prawdopodobnie bez wahania wskaże prostotę obsługi jako tę ważniejszą, tę dominującą, wobec której należy się dopasować.
Ktoś zajmujący się projektowaniem aplikacji bądź technologii — zapewne będzie miał szerszy kontekst. Choć i nam, twórcom oprogramowania, zdarza się zagalopować, zapomnieć, że po tej drugiej stronie jest użytkownik, który nie rozumie i nie musi rozumieć, jak to wszytko we środeczku tam działa.

Wydaje mi się, że prostotę należy dobierać do kontekstu. Dobrym przykładem mogą tu być systemy operacyjne Microsoft Windows i Arch Linux.
Znany każdemu system Windows jest prosty w obsłudze — posiada wiele wbudowanych funkcji (program graficzny, obsługa wydruku i bluetooth, przeglądarka internetowa i mnóstwo innych), będąc jednocześnie skomplikowanym w konstrukcji.
Oparty na jądrze Linux system operacyjny Arch Linux jest zaś jak puste pudełko, pusty w środku. Jest prosty w konstrukcji, ale nie zawiera za wiele, toteż każdą najdrobniejszą pierdołę, każdą ikonę na pulpicie, każdy sterownik, obsługę WiFi czy nawet myszki poruszającej się po ekranie trzeba skonfigurować samodzielnie — przez co jest skomplikowany w obsłudze.

Ja osobiście preferuję, wręcz uwielbiam, Arch Linuksa — mam ochotę poświęcać czas na to, by każdą drobnostkę sobie skonfigurować, zainstalować. Jednakże jestem pewien, że taka forma sprawdzi się tylko w nielicznych sytuacjach.

Pamiętajmy o tej, nomen omen, prostej sprawie. Zastanawiajmy się dobrze, co mamy na myśli mówiąc o prostocie. Sam bowiem mogę bić się w pierś — ile razy wmawiałem komuś, że coś jest proste, widząc tylko wnętrze programistyczne jakiegoś oprogramowania…

Dodaj komentarz