Przyznaję się bez bicia, że dałem ciała w sprawie integracji Vaadin i Guice. Da się zrobić tak jak na wiki piszą trzeba tylko umieć czytać i wiedzieć jak działa webowe rozszerzenie Guice…

No właśnie. Trzeba wiedzieć jak działa A by móc korzystać z B. W epoce szybkich kobiet i łatwych API spodziewamy się, że integracja jakiś dwóch rozwiązań będzie prosta. Teoretycznie powinniśmy umieć wykonać ją na podstawie manuali, ale jak się okazuje nie zawsze jest to możliwe. Rzecz w tym, że im prostsze i bardziej intuicyjne API, technologia, framework tym więcej w nim konwencji i umowności, a tym samym więcej wiedzy do zdobycia. Z jednej strony to bardzo dobrze, ponieważ im więcej nauki tym lepiej. Z drugiej niesie to z sobą poważne ryzyko „zabrania funu”.

O co chodzi?

Jeżeli mamy jakąś technologię to jej naukę można podzielić zazwyczaj na kilka etapów. W pierwszym poznajemy podstawy. Piszemy „Hello World” i staramy się ogarnąć do czego służą różne elementy. W kolejnym zaczynamy zagłębiać się w pewne wspólne dla różnych rozwiązań elementy takie jak komunikacja, przetwarzanie zdarzeń czy utrwalanie danych. Dopiero w kolejnym etapie ilość teorii zaczyna przeważać nad praktyką ponieważ poznajemy logikę działania pewnych rozwiązań oraz bardziej zaawansowane elementy API.
Niestety coraz częściej jest tak, że wyjście poza pierwszy etap oznacza skok do etapu numer trzy. Ruszenie z bardziej zaawansowanymi elementami, ale nadal będącymi w kręgu podstaw, musi być poprzedzone długim zmaganiem się z teorią. Jest to o tyle niedobra praktyka, że zawęża ona krąg odbiorców i wymusza na nich podobną ścieżkę. To znowuż ogranicza innowacyjność i tym samym zabija „ducha kombinatorstwa”, na którym opiera się informatyka.

Czym jest próg wejścia

Chyba najłatwiej powiedzieć, że jest to minimalna wymagana wiedza by móc zrozumieć podwaliny danej technologii oraz swobodnie i samodzielnie wyjść poza „hello world”.
Można to też zdefiniować jako konieczne przygotowanie teoretyczne wymagane do świadomego posługiwania się daną technologią.

W każdym z tych przypadków mówimy tak naprawdę o już posiadanej wiedzy. Im technologia jest prostsza tym próg wejścia jest tak naprawę wyższy. Przykładowo by zrozumieć jak działa Vaadin + Guice należy znać Vaadin, Guice oraz teorię DI. By zrozumieć Vaadin wystarczy znajomość javy i HTTP. By poznać javę wystarczy wiedzieć co to jest „twój ulubiony edytor tekstu” i dlaczego nie jest to word. Przy czym jeżeli spojrzymy na poziom komplikacji to Java jest zdecydowanie najtrudniejsza.

Kiedyś dawno temu pewien znajomy native speaker zadał mi pytanie „jaka jest najtrudniejsza rzecz której uczysz się w życiu?”. Odpowiedź brzmi „jest to umiejętność posługiwania się pismem”. Każda kolejna umiejętność jest prostsza właśnie dzięki opanowaniu pisania i czytania. Nie ma więc nic dziwnego w tym, że próg wejścia w każdą prostszą czynność jest coraz wyższy ponieważ musimy opanować czynności bardziej skomplikowane.

Dlaczego tak się dzieje w IT

Choć nie powinno. Płacą nam za rozwiązywanie problemów i dostarczanie coraz prostszych narzędzi. Jednocześnie narzędzia komplikują się i stają coraz bardziej nieprzewidywalne.
Powiem szczerze, że nie wiem. Może jest to kwesta deptania w miejscu przez wszystkich programistów? Stawiane są przed nami coraz to nowe problemy, ale tak naprawdę są to tylko kopie problemów już rozwiązanych. My staramy się „rozwiązać je prościej”. Przez co tracimy czas, energię i siły na wymyślanie koła od nowa.
Może jest to kwesta podejścia „pierdolę nie komentuję, było trudne w napisaniu będzie trudne w zrozumieniu”. Choć nie posądzam nikogo o takie podejście to może jest to jakaś odpowiedź?
Może w końcu dbamy o pewną aurę mistyczną wokół zawodu programisty. Swoistą aurę kapłana technologii. W końcu każdy może wziąć zaparzyć miętę i podać człowiekowi ze sraczką, ale dlaczego jak zrobi to baba-zielarka mrucząc zaklęcia to tylko wtedy działa? Staramy się chronić swoje miejsca pracy pokazując użytkownikom, że bez informatyków sobie nie poradą…