Wszyscy dobrze wiemy, że boom na bycie programistą pojawił się jakiś czas temu i nadal mocno się trzyma. I mimo że w chwili, gdy to piszę, mówi się o lekkim kryzysie zatrudnienia w branży IT, to nadal ten zawód ma przyszłość. Ale nie musimy patrzeć na to tylko z biznesowego punktu widzenia - samo programowanie bywa po prostu przyjemne i rzeczywiście może pomóc w wykonywaniu pewnych czynności na komputerze. I nie myślmy tutaj o poważnych aplikacjach czy nawet stworzeniu domowej strony internetowej - przecież można pisać skrypty pomagające np. w czyszczeniu dysku, przenoszeniu plików lub ich zliczaniu. Te czynności mogą wydawać się proste, ale są uciążliwe czasowo, więc ich przyspieszenie za pomocą krótkiego programu może być zbawienne, a przy okazji pozwolić poczuć dumę z czegoś, co zrobiło się samemu.
Idąc dalej, co jakiś czas pojawia się stwierdzenie, że programowanie niedługo będzie tak samo powszechną umiejętnością, jak choćby używanie młotka. Ba - już jest i niektórzy wręcz nawołują, iż każdy inteligentny i idący z duchem czasem człowiek powinien umieć programować. Stwierdzenie wydające się dość kontrowersyjnie i odważnie, które brzmi jak idealny nagłówek dla zbierającego kliknięcia wywiadu z ekspertem ds. rekrutacji. Zastanówmy się, na ile jest bliskie prawdy.
W czym programowanie pomaga w życiu?
Zanim na dobre zaczniemy, powiedzmy sobie jedną oczywistą rzecz - nie będziemy tutaj rozprawiać o nauce programowania w celu pracy w IT, choć pod koniec tekstu do tego nawiążę. Zajmiemy się raczej tym, czy kodowanie może być użyteczne w codziennych obowiązkach w zupełnie innych branżach lub w swoich domowych potrzebach.
Przede wszystkim warto też zwrócić uwagę, iż nie tylko programowanie, ale sam proces nauki programowania może być kształcący, gdyż siłą rzeczy rozwiązywanie kolejnych problemów pomaga w rozwijaniu zdolności algorytmicznych, logicznego myślenia i pozwala nabrać wiedzy o działaniu programów oraz środowisk, w których działają. Nie trzeba być mistrzem programowania, aby pomagało ono w rozwoju osobistym lub innych dziedzinach, wymagających tych samych lub podobnych umiejętności - wystarczy staranie się o bycie tym mistrzem.
Ale mimo to uczenie się programowania dla samego uczenia nie ma sensu, jeśli nie idzie za tym zdobycie zdolności do zrobienia czegoś konkretnego. Popatrzmy na kilka przykładów:
- porządkowanie dużej liczby zdjęć i poukładanie ich w folderach,
- zbiorowa zmiana nazwy plików lub folderów według konkretnego wzorca,
- przeszukiwanie lub analiza dużego pliku tekstowego,
- pobranie informacji o cenach wielu produktów z różnych sklepów, aby znaleźć najtańszy,
- wykonanie często powtarzanych sekwencji kilku operacji,
- stworzenie prostego interfejsu do bazy danych posiadanych płyt CD z muzyką.
Takich pozycji mogłoby być o wiele, wiele więcej. W większości punktów widzimy określenia typu "duża liczba", "wiele", "zbiorowa" itd. i to istota problemów, w których programowanie bardzo może nam pomóc - operowanie na dużym wolumenie danych, których ręczne przeglądanie lub modyfikacje byłyby możliwe, ale bardzo czasochłonne. Do pewnego momentu pisanie programu, który ułatwiłby nam takie zadanie, nie ma sensu - o wiele szybciej pozmieniamy nazwę 10 plików ręcznie niż napiszemy odpowiedni kod. Ale jeśli tych plików byłyby tysiące, to lepiej zdać się na automat.
W różnych rozwiązaniach bardzo często podkreśla się pomoc różnych skryptów przy powtarzalnych akcjach - zresztą, w samej informatyce nie bez powodu istnieją np. testy automatyczne, które mają tę przewagę nad testami manualnymi, że można je uruchamiać bardzo często i to stosunkowo niskim kosztem. Programowanie może nam tutaj szczególnie pomóc, zresztą tak samo, jak w pisaniu aplikacji, nawet bardzo prostych, które pozwolą wygodniej składować pewne dane.
Wiemy już, że programowanie się przydaje, nawet na poziomie bardzo amatorskim i w przypadku normalnego użytkownika komputera. Ale inna sprawa, czy jest potrzebne. I tutaj nawiążemy np. do wymienionego na liście porównywania cen z różnych sklepów.
Na wszystko jest już rozwiązanie
Niestety lub stety, w Internecie dostępna jest tak ogromna liczba aplikacji i nawet rozwiązań dostępnych bezpośrednio z przeglądarki, że właściwie wszystkie problemy zostały już "pokryte". Dociekliwy użytkownik, natrafiając na problem, który wymaga automatyzacji, znajdzie w odmętach Internetu coś, co mu pomoże. Z dużą dozą prawdopodobieństwia doszuka się także odpowiednich opcji w popularnych programach, które przynajmniej częściowo rozwiążą jego problem. Wracając do przykładu porównywania cen - większość z nas kojarzy takie serwisy jak Ceneo czy choćby Świat Czytników.
Krótko mówiąc, mamy tutaj do czynienia z dylematem - czy warto poświęcać czas na nauczenie się czegoś i osiągnięcie satysfakcji, ale jednak wyważać otwarte drzwi, czy zamiast tego szukamy gotowego narzędzia, uczymy się go i dostosowujemy do niego. Programowanie nie jest potrzebne do tego, aby ułatwić sobie pracę - może być przydatne i pozwolić stworzyć dokładnie to, co chcemy, ale nie jest to warunek konieczny do tego, aby poradzić sobie ze skomplikowanymi zadaniami przy pracy na komputerze. Do tego dochodzi częstotliwość występowania takich sytuacji oraz ich specyfika.
W każdym mieszkaniu wisi coś na ścianie, bywają zapchane rury w łazience czy przepalona żarówka. Do tego wszystkiego można wynająć fachowców, ale umówmy się - w tych i podobnych przypadkach warto choć z częścią rzeczy umieć poradzić sobie samemu. Nawet, jeśli ktoś jest taką lebiegą w pracach domowych jak ja (tak, przyznaję się bez bicia - osoby, które mnie znają, pewnie jeszcze dołożyłyby coś od siebie), to różne sytuacje są na tyle częste, że choćby z czystej oszczędności czasu i pieniędzy warto umieć coś wymienić, załatać lub przykleić. I teraz wchodzi programowanie, które pozwoli nam na to samo, ale w przypadku problemów spotykanych podczas operowania na komputerze - czy są to na tyle częste i - co ważne - poważne kłopoty, że powinniśmy sami umieć na nie zareagować, a nie tylko wiedzieć, gdzie (lub u kogo) szukać pomocy? Oczywiście, pewnie znajdą się takie scenariusze, natomiast nie zawsze wysiłek przeznaczony na naukę programowania opłaci się, aby poradzić sobie z pojedynczą sprawą.
Należy jeszcze pamiętać o tym, że tak, jak nie każdy nadaje się do prac manualnych czy zaawansowanej matematyki, tak nie każdy w lot pojmie zasady rządzące programowaniem, budowaniem i uruchamianiem napisanych przez siebie programów. I nie jest to nic złego - każdy z nas ma talent do czegoś innego, charakter pozwalający na łatwiejsze poruszanie się w jednym terenie, ale wymagający więcej pracy w innych obszarach. Podkreślam "wymagający więcej pracy", a nie "uniemożliwiający" - programowania może nauczyć się każdy. Natomiast nie należy być złym na siebie, jeśli ta dziedzina okaże się dla kogoś za trudna lub po prostu nieinteresująca.
W żadnym wypadku nie chcę zniechęcać do nauki programowania, a już na pewno nie dlatego, że sam jestem programistą i nie chcę wychowywać sobie konkurencji. Przeciwnie - bardzo rekomenduję tę zabawę, gdyż może być to fajne, pożyteczne hobby, a w dodatku dające sporo satysfakcji (gdy coś wychodzi) oraz faktycznie dające umiejętności, które na pewno się nie zmarnują i mogą zaowocować nawet czymś poważniejszym. Poczucie bycia "lepszym" użytkownikiem (a na pewno bardziej świadomym) jest bardzo cenne. Ale w życiu nie powiedziałbym, że programowanie to umiejętność, bez której człowiek jest bezwartościowy na rynku pracy - to bzdura i ktoś, kto tak twierdzi, raczej chce się popisać aniżeli realnie doradzić. Nawet w IT i w software house'ach pracują osoby, które nie umieją programować i bardzo dobrze sobie radzą - pełnią po prostu inne role, w których się realizują. Czasem słyszę od początkujących project managerów lub product ownerów prośby o wskazanie, gdzie zacząć uczyć się programować, bo "chcą zrozumieć programistów". I to jak najbardziej jest cenne, ale nie jest warunkiem koniecznym do tego, aby poradzić sobie w pracy. Nawet w związanej z technologią. Warto przypatrzeć się narzędziom sztucznej inteligencji, gdyż one dużo szerzej wchodzą do wielu popularnych branż, choć nadal jako pomoc, a nie istota pracy.
Pozdrawiam i dziękuję - Jakub Rojek.