Idea pracy informatyków jest bardzo prosta – tworzymy systemy, które mają jakieś zastosowanie. Możemy za ich pomocą zarezerwować hotel, stworzyć listę zadań w telefonie, założyć lokatę w banku, wymieniać informacje ze znajomymi, wyszukiwać produkty o najniższych cenach, szukać drogi w obcym mieście i robić wiele, wiele różnych rzeczy.
Ale pod powierzchni ą interfejsu systemu kryje się chaos. Kryje się cała masa kodu, danych, założeń, dokumentacji, interfejsów, usług, komunikacji, standardów…
Możemy tworzyć oprogramowanie na milion różnych sposób. Z reguły do tworzenia używamy zestawu gotowych komponentów. Składamy aplikację z klocków – podobnie jak dziecko składa z różnych klocków Lego samochodzik lub domek.
Mamy bardzo różne klocki do wyboru. Mamy klocki reprezentujące sposób naszej pracy – czy używamy jakiejś metodyki zwinnej, czy mamy klasyczny waterfall, czy używamy jakieś naszej własnej metodyki, czy nasz proces jest ściśle określony i przestrzegany, czy też może dopuszczamy radosną improwizację. Mamy klocki składające się na stos technologiczny naszej aplikacji – język, frameworki, biblioteki, moduły… Mamy klocki, które potrafią sprawić że nasze dane nie znikają – jakąś bazę danych która może być relacyjna, postrelacyjna, hybrydowa, komercyjna, rozproszona… Mamy klocki, które służą nam za narzędzia – edytor kodu, narzędzie do budowania aplikacji, narzędzie do przechowywania informacji o naszej aplikacji, narzędzie do zarządzania wydaniami.
Sztuka rozwoju oprogramowania staje się coraz mniej sztuką tworzenia klocków, a coraz bardziej staje się sztuką wyboru odpowiednich klocków. Ale daleko nam jeszcze do prostoty składania klocków Lego, które to składanie może być wykonane przez kilkuletnie dziecko. Cały czas łącznie klocków nie jest proste – po drodze pojawiają się niespodzianki, które muszą być ręcznie poprawianie. Cały czas trzeba zrozumieć ograniczenia i filozofię poszczególnych klocków – co często nie jest proste. Cały czas po złożeniu systemu razem występują problemy, które zmuszają nas do zaglądania do wnętrza klocków. Cały czas zdarza się, że pomiędzy klockami musimy umieścić własny, szczególny i niepowtarzalny klocek.
Na GeeCONie mówimy o filozofii poszczególnych klocków – wyszukujemy ich dobre i złe strony. Porównujemy różne klocki ze sobą – jak działają w praktyce. Czasami opowiadamy o pojedynczym klocku, o tym jakie mamy doświadczenia z wdrożenia lub używania go. Czasami opowiadamy o tym, jak połączyliśmy różne klocki, aby uzyskać działający system.
Tak naprawdę te prezentacje nie mają większego użytku jeżeli nie odniesiemy ich do naszych praktycznych doświadczeń. Wartość konferencji tworzy się pomiędzy prowadzącym, który opowiada o swoich odkryciach, a uczestnikami, którzy mogą te odkrycia porównać z własnymi doświadczeniami.
Ale największą wartością takich wydarzeń jak GeeCON jest dla mnie zobaczenie, jak wielu klocków jeszcze nie znam i jak wiele jest interesujących tematów poza ekosystemem, w którym się obracam na co dzień.