czwartek, 31 stycznia 2013

Programista języka polskiego

"Years of experience working with programmers have taught me that programmers who can communicate their ideas clearly are going to be far, far more effective than programmers who can only really communicate well with the compiler." J. Spolsky
(tu pełna wypowiedź,                                                                       polecana rekruterom IT).

W poprzednim wpisie nadmieniłem o istotnych korzyściach dobrego, komunikatywnego pisania. W tym, zgodnie z obietnicą, o możliwych korelacjach pomiędzy dobrym wypowiadaniem się na piśmie w swym ojczystym języku a dobrym programowaniem. Przez dobre pismo rozumiem przede wszystkim pismo zrozumiałe i klarowne. Zrozumiałość i klarowność przekazu od zawsze były dla mnie podstawowym wyznacznikiem dobrego tekstu - czy to prasie, czy w literaturze, czy w biznesie.

Dlaczego można przypuszczać, że źle piszący po polsku programista może tworzyć również słabszej jakości kod? Gdyż:

1) Niedbałość, nieprecyzyjność, nieuważność - jako raczej centralne i stałe składowe czyjegoś umysłu - będą prawdopodobnie ujawniać się w różnych formach komunikacji, tak w komunikacji z człowiekiem, jak i komputerem. Brak przecinka w wypowiedzi może zmienić sens zdania. Brak nawiasu w kodzie może zmienić "sens" danego fragmentu kodu.

2) Języki ludzi (np. angielski, polski itd.) i języki komputerów (C++, Java itd.) w swej istocie są podobne. Te i te mają swą specyficzną składnię, logikę, reguły i ograniczone środki wyrazu. Służą też do tego samego - do komunikacji. Jak trafnie zapytał ktoś w komentarzu do poprzedniego wpisu: "Czy programista, który ma problemy ze sprecyzowaniem i wyjaśnieniem o co mu chodzi, mając do dyspozycji swój bardzo obszerny język ojczysty, może być dobrym programistą w języku nieporównywalnie bardziej ubogim?"

3) Bycie dobrym programistą to nie tylko pisanie kodu, ale i często dokumentowanie i komentowanie go - często pisane "zwykłą prozą".

4) Programiści rzadko pracują w pełni samodzielnie, często aplikacje są dzieckiem więcej niż "jednego ojca". Stąd to, jak czytelny kod piszą dla siebie nawzajem, ma kluczowe znaczenie dla efektywności wspólnej pracy. Piszący nieczytelny i niechlujny kod programista spowolni pracę reszty zespołu.

5) Programiści coraz częściej pracują oddaleni przestrzennie od siebie, komunikując się mailowo czy przez tzw. instant messagery, a w takich środowiskach, jak zauważył inny znakomity czytelnik, "umiejętność precyzyjnego konstruowania zdań staje się kluczowa".

Owszem, można pewnie podać przykłady programistów dobrych i bardzo dobrych, a nie najlepiej komunikujących się pisemnie. Zaryzykowałbym jednak, że to wyjątki (praca z nimi to "obsługa wyjątków"). 

_______

4 komentarze:

  1. Żeby potwierdzić, że sprawność w posługiwaniu się językiem przekłada się na zdolność do rozwiązywania problemów programistycznych, należałoby chyba zbadać i porównać, które obszary mózgu są aktywne przy pisaniu notki na blog, a które przy kodowaniu jakiegoś algorytmu. Druga rzecz, spisywanie kodu jest zazwyczaj poprzedzone rozwiązaniem jakiegoś problemu w głowie, a tu już bliżej do rozwiązywania zadań z matematyki. To tak tylko odnośnie punktu drugiego.

    OdpowiedzUsuń
  2. Z mojej ponad 10 letniej praktyki w 8 firmach, w tym 4 korporacjach i kontaktów z programistami wynika coś dokładnie przeciwnego. Im trudniejsza z nimi komunikacja (hermetyczna, niepoprawna gramatycznie, uboga treściowo), tym lepsze rezultaty ich pracy. Nie wiem, może zamiast "zaśmiecać" głowę jednym poświęcają "zasoby" na coś innego? Trzeba by to zbadać. Raczej spotkałem się z kiepskimi programistami "krasomówcami", skażonych "wodolejstwem".

    OdpowiedzUsuń
  3. Anonimowy, twoje lata doświadczenia nie nauczyły Cię rozumienia czytanego tekstu. Autor nie wychwala nigdzie wodolejstwa czy krasnej mowy, a jedynie sprawny proces komunikacji przy użyciu precyzyjnego języka.
    Druga rzecz, że możemy się rozbiegać w naszych opiniach, bo dla mnie Twój komentarz nie jest klarowny, część musiałem przeczytać dwukrotnie a przecinkiem posługujesz się, wg mnie oczywiście, nieprawidłowo. Nie uzurpuję sobie jedynie słusznej prawdy, być może to ja jestem tym złym, po prostu poszukuję przyczyny naszego niezrozumienia.

    Pozdrawiam, Sebastian

    OdpowiedzUsuń
  4. Dzięki za komentarze.

    @Anonimowy:
    "krasomówstwo" i "wodolejstwo" nie mają nic wspólnego z prostą, klarowną i czytelną komunikacją. To przecież jej przeciwieństwa, więc chyba ktoś tu myli pojęcia.

    @michaJIS:
    Pewnie masz sporo racji, w łamigłówkach matematycznych prawodopodobnie uaktywniamy inne obszary mózgu niż w łamigłówkach językowych. Ale nie powiedziałbym, że dobre funkcjonowanie czyjegoś mózgu w jednym obszarze musi oznaczać słabsze "osiągi" w drugim. Dobrze pamiętam ze szkół i uczelni, że ludzie naprawdę inteligentni dobrze radzili sobie i z matematyką z polskim.

    Pozdrawiam

    OdpowiedzUsuń