Wiele osób, które nigdy nie programowały, nie potrafi zrozumieć cóż tak niesamowicie fascynującego jest w siedzeniu nad edytorem i wklepywaniu tych wszystkich "dziwacznych znaczków". A przecież fakt, że programowanie jest fascynujące nie ulega żadnej wątpliwości. Jeśli byłoby inaczej, nikt normalny nie ślęczałby tyle czasu przed monitorem i klawiaturą (i proszę mi tu nie mówić, że programiści są nienormalni!).
Zostań (s)twórcą
Któż by nie chciał mieć zaczarowanego ołówka? Możliwości tworzenia rzeczy na zawołanie? A programowanie właśnie taką możliwość daje. W jednej chwili jest tylko pomysł, a kilkadziesiąt/kilkaset linii kodu później już coś jest. Coś działąjącego. Jeśli jeszcze nie w pełni funkcjonalnego to przynajmniej zalążek, prototyp narzędzia, aplikacji, serwisu. I już można zakrzyknąć jak szalony naukowiec (w zasadzie to jak szalony inżynier): "IT'S ALIVE!" i wybuchnąć diabolicznym śmiechem.
Tak! To my powołujemy byty, idee do życia, systematyzujemy i hierarchizujemy, nazywamy, nadajemy nowe znaczenia i ustalamy reguły. Zamykamy fragment świata w naszym kodzie, przejmując nad nim kontrolę. Całkowita wolność w kreowaniu, ograniczona jedynie naszą wyobraźnią (oraz czasem, wiedzą, umiejętnościami, użytym językiem i bibliotekami, mocą procesora...).
Baw się i ucz jak dziecko
Programowanie pozwala poczuć się znowu jak dziecko. Pamiętacie jak bawiliście się klockami, rysowaliście? Widzicie jak się bawią wasze dzieci? Ten stan zaaferowania, pełnego pochłonięcia w zabawie. Ciągłe eksperymentowanie i sprawdzanie nowych rozwiązań. Bez stresu, poczucia presji, że musi się udać, bez uczucia strachu przed pomyłką, bez poczucia winy, czy wstydu. Bez tych wszystkich negatywnych uczuć jakie powstrzymują dorosłych przed działaniem.
Programowanie pozwala zanurzyć się bez reszty w pracy nad kodem. Wszystko inne przestaje być ważne i człowiek zaczyna myśleć kodem, algorytmami, strukturami danych i wzorcami projektowymi. A w snach pojawiają się diagramy UML pokazujące jak zaprojektować najtrudniejsze elementy. Jak mistrz Zen pochłonięty do reszty w medytacji.
W programowaniu błąd jest czymś całkowicie normalnym i powszechnym. Nie ma praktycznie możliwości napisania czegoś bardziej skomplikowanego od Hello World bezbłędnie. Zawsze pojawi się jakiś błąd. Literówka, błąd logiczny, błąd w założeniu lub projekcie, nieprzewidziane początkowo zdarzenia lub warunki, czy zachowanie użytkownika. Ale nie trzeba się przejmować. Jesteśmy tylko my, nasz kod, kompilator, debugger i logi. Możemy do woli zmieniać i poprawiać kod aż będzie poprawny (lub przynajmniej akceptowalny).
Powiem więcej, część technik tworzenia oprogramowania (patrz TDD) wręcz zachęca do tego by całe pisanie kodu rozpoczynać od popełniania błędów. A przecież bez błędów nie ma efektywnej nauki. Każdy popełniony błąd zbliża nas do rozwiązania problemu. Każdy popełniony błąd to weryfikacja nowej hipotezy. Każdy popełniony błąd to nowa, zweryfikowana empirycznie wiedza pozwalająca pisać jeszcze lepszy kod.
Gonienie króliczka
Programowanie ma w sobie coś z filozofii wschodu. To ciągły rozwój i doskonalenie siebie oraz kodu. To ciągłe dążenie do celu, bez możliwości dotarcia do niego. To ciągłe dążenie do doskonałości, której osiągnąć się nie da. Zawsze jest jakiś błąd do poprawienia, jakaś funkcja do dodania, fragment kodu do zoptymalizowania, czy zrefaktoryzowania. Zawsze może być lepiej, szybciej, czytelniej, bardziej przenośnie, bezpieczniej.
I właśnie to jest niesamowicie pociągające. Ciągłe wyzwania, nieustający impuls do rozwijania się by móc jeszcze sprawniej wyrazić swoje myśli w kodzie.
Szarady
Jeśli ktoś nadal nie jest przekonany, dlaczego programowanie daje tyle radości, niech pomyśli o rozwiązywaniu krzyżówek, sudoku, zagadek, szarad. W końcu nic nie daje większej satysfakcji niż wygrana - znalezienie rozwiązania problemu, trudnego problemu. A programowanie to właśnie taka ciągła gra w tworzenie i rozwiązywanie problemów, coraz trudniejszych i bardziej skomplikowanych.
Poszukiwanie piękna
Na koniec coś, co dla osób nie mających styku z programowaniem, może być trudne do zrozumienia. Kod może być piękny. Tak samo jak piękny może być wiersz, książka, obraz, rzeźba czy muzyka. Piękne może być rozwiązanie skomplikowanego problemu w kilku linijkach zwięzłego kodu. Piękny może być sposób podejścia do całej klasy problemów. Piękne bywają algorytmy, wzorce projektowe. Trzeba tylko chcieć to piękno zauważyć.


