Ale o co chodzi?
Jeżeli przeczytałeś pierwszy wpis na blogu i poświęciłeś trochę czasu, aby samemu zgłębić temat programowania to zapewne masz w głowie jakiś obraz z czym to się je. Jeżeli pogrzebiemy trochę po definicjach w internecie, możemy dowiedzieć się, że “programowanie to proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów komputerowych”. Jakie to proste i zrozumiałe 🙂 Skręcając bardziej w stronę analogii, możemy się dowiedzieć, że “Programowanie to rozwiązywanie zagadek”. Co również jest jak najbardziej zgodne z prawdą. Tego rodzaju definicje i porównania można wymyślać godzinami. Tylko czy takie informacje pomogą Ci w jakikolwiek sposób zdecydować, czy chcesz i powinieneś zająć się programowaniem?
– Rozwiązywanie zagadek? Lubię rozwiązywać zagadki! Często na imprezie u znajomych gramy w taką grę z zagadkami
…Uhm.
– Utrzymywanie kodu źródłowego? Marzyłem o tym od dziecka…!
Nie powiedział nigdy nikt.
A więc jak można w prosty i jasny sposób wytłumaczyć na czym polega programowanie? Nie jest to takie trudne. Wystarczy, że zamienimy wszystkie elementy techniczne, których nasz rozmówca nie zna, na coś co jest dla niego kompletnie zrozumiałe. Jeżeli użyjemy bardzo prostych i obrazowych analogii, np. w formie historyjki, jesteśmy w stanie przedstawić naprawdę skomplikowane zagadnienia każdemu odbiorcy. Biorąc pod uwagę, że samo programowanie, jeżeli odrzeć je czysto z technicznych aspektów i potraktować jako cały proces, nie jest znowu takie skomplikowane. Na pewno nie tak jak chcieliby tego i jak opowiadają o nim sami programiści 🙂
Zapraszam więc na wycieczkę 😉
Podróż w czasie
Wyobraź sobie, że z jakiegoś zupełnie nieistotnego powodu zdobyłeś wehikuł czasu. W wyniku serii niefortunnych zdarzeń przeniosłeś się o 1500 lat wstecz i wylądowałeś w Chinach. Nie możesz wrócić, więc musisz sobie poradzić w nowym środowisku i żeby mieć w ogóle co zjeść, podejmujesz się pracy. Na dworze cesarza. Jako mistrz ceremonii. Może brzmi dosyć zabawnie, ale przeanalizujmy sytuację, w której się znalazłeś.
Czego potrzebujesz przede wszystkim, żeby sprostać zadaniu które przed Tobą stoi? Co stanowi główną barierę? Oczywiście język. Musisz nauczyć się chińskiego żeby w ogóle się z kimś porozumieć i móc zrobić COKOLWIEK. Tak samo jak musisz nauczyć się języka programowania, aby programować. Wylądowałeś w Chinach około roku 500 n.e.. Trzeba by nauczyć się zwyczajów i zasad jakie tam panują, żeby w ogóle przeżyć, nie mówiąc o prowadzeniu normalnego życia. Więcej – masz pracować na dworze cesarza, więc dotyczy Cię również znajomość dworskiej etykiety. Podobnych zasad będziesz musiał nauczyć się, aby poruszać się w świecie programowania.
Język jest jedynie narzędziem do komunikowania się w danym środowisku. Niezależnie czy będą to ulice Pekinu, czy wirtualny świat komputerów, serwerów i internetu. Nie da się tworzyć aplikacji internetowych, nie wiedząc jak działa sam internet. Nie jesteś w stanie stworzyć sensownej aplikacji na telefon, nie wiedząc nawet jak telefon wygląda. Tak więc, jeżeli komputera używałeś do tej pory jedynie do oglądania śmiesznych kotków, to może być z pozoru ciężko. Dlaczego z pozoru? Ponieważ żeby się tego wszystkiego nauczyć wcale nie musisz mieć jakichś specjalnych predyspozycji, a jedynie trochę wyobraźni. To wszystko może wydawać się bardzo abstrakcyjne. Jednak równie abstrakcyjne mogą być zwyczaje panujące w niektórych odległych krajach. Ale raczej zgodziłbyś się ze mną, że każdy z nas takowych jest w stanie się nauczyć, jeżeli tylko będzie chciał.
Lego, kolego
Jak z kolei wygląda sam proces tworzenia aplikacji? Tutaj zdecydowanie bardziej pasuje porównanie do składania klocków lego niż budowania statku z zapałek. Dlaczego takie analogie?
Budując coś z zapałek, dysponujesz bardzo małymi elementami, których nie da się podzielić na mniejsze. Z tych malutkich kawałeczków musisz budować coraz większe i większe, aż może kiedyś zbudujesz całość. Niestety nie kupisz do swojego statku gotowego kadłuba z zapałek. Każdy większy element musisz zbudować sam, z tych najmniejszych.
Magiczne klocki
Programując, prawie nigdy nie będziesz zmuszony tworzyć czegoś zupełnie od zera. O ile nie jest to jakiś mega ambitny, innowacyjny i fascynujący projekt, który wymaga bardzo indywidualnego podejścia. W większości przypadków tworzenie oprogramowania polega na łączeniu ze sobą gotowych elementów, wykorzystywaniu istniejących rozwiązań i opracowywaniu systemu, który zepnie to wszystko w jedną całość.
Zacznijmy od małych elementów w samym kodzie. Mamy biblioteki, za pomocą których wykonujemy bardziej złożone operacje. Z wielu bibliotek natomiast zbudowane są frameworki, które ułatwiają nam tworzenie bardziej jednolitych i ustandaryzowanych systemów. Gdy budujemy naprawdę złożoną aplikację, często jej części będą zupełnie osobnymi aplikacjami, stworzonymi przez kogoś innego, z którymi my tylko się komunikujemy. Weźmy np. sklepy internetowe. Każdy z nich obsługuje płatności online. Czy programiści pracujący nad nimi musieli implementować własny system do płatności? Oczywiście, że nie. Jest to zupełnie bezsensowne i nieopłacalne, ponieważ wystarczy użyć jednego z wielu takich systemów dostępnych na rynku. Czy każdy z tych systemów został napisany od zera przez inny zespół programistów? Również nie! Wykorzystywali oni wiele innych, mniejszych, gotowych rozwiązań.
Jeżeli mówimy o tworzeniu aplikacji komercyjnych, trzeba sobie uświadomić, że taka aplikacja ma za zadanie zarabianie pieniędzy. Mało kogo interesuje jak coś takiego działa “od środka”, o ile działa i jest zbudowane na odpowiedniej jakości klockach. Dlatego też nikt nie będzie poświęcał bez sensu czasu na wymyślanie kolejny raz koła. I tutaj mamy kolejny przykład, dlaczego tak ważne jest ciągłe aktualizowanie swojej wiedzy w świecie programowania. Ciągle powstają nowe, lepsze klocki, którymi możemy zastąpić nasze stare, wysłużone. Jednak musimy wiedzieć jak te nowe możemy dopasować do tych, które już mamy 🙂
Podsumowanie
Podobnych przykładów można stworzyć naprawdę mnóstwo. Uważam, że to świetny sposób na wprowadzenie do tematu dla kogoś z kompletnie innej bajki. Przed napisaniem tego artykułu, sprzedałem takie “definicje” programowania kilku swoim znajomym, którzy o programowaniu wiedzieli tylko tyle, że dobrze się na tym zarabia. No i teraz wiedzą zdecydowanie więcej 🙂 A już tak na poważnie. Odzierając programowanie z aspektów technicznych, właśnie w taki sposób, widzimy, że jest to złożony proces polegający na planowaniu, projektowaniu i przede wszystkim myśleniu.
Gorąco zachęcam, abyście podesłali ten wpis swoim znajomym którzy o programowaniu wiedzą niewiele, lub nic. Pewnie niektórzy z nich pytali Was wiele razy o to, czym się właściwie zajmujecie w pracy, ale mimo Waszych najszczerszych chęci, nie potrafiliście im tego zrozumiale wytłumaczyć 🙂 Dajcie znać czy po przeczytaniu tego coś się zmieniło 🙂
Brak komentarzy