Co mi daje programowanie?
Czy zastanawiałeś się kiedykolwiek jak odpowiedziałbyś na pytanie zadane w tytule? Co zyskujesz programując? Pewnie część z Was jako odpowiedź podała by jedynie pieniądze. Niby nie jest ona całkiem zła, ale za chwilę powiem dlaczego też, moim zdaniem, nie do końca jest dobra. Podobne pytanie przewija się czasami przez programistyczne fora i inne blogi. W tym poście powiem jaka jest moja odpowiedź. Dzisiaj bardziej życiowo, nietechnicznie i opisowo, ale takie posty też są potrzebne :) Post jest w 100% subiektywny, oparty na moich doświadczeniach, przemyśleniach i obserwacjach.
Wśród programistów, tych początkujących ale i starszych stażem, występuje często potrzeba znalezienia motywacji do dalszej pracy. Przez większość czasu, przynajmniej ja tak to odczuwam, motywacja przychodzi bezwiednie, po prostu jest. Ale są momenty zwątpienia, dylematów, natrafienia na przeszkody kiedy pojęcie motywacji pojawia się w świadomości. No bo jeśli jest ciężko, mam z czymś ogromny problem, zawaliłem termin itp. to dlaczego mam robić to dalej? Czemu mimo, że praca idzie wolno, albo wcale, i mimo, że siedzi się czasami do późna żeby zdążyć zrobić zadanie to robimy to dalej? Przecież można rzucić to w cholerę i chociażby zacząć uprawiać cebulę za miastem. Jednak jako programiści nie rzucamy tego i dalej pływamy w kodzie, przynajmniej jest tak w przypadku programistów, którzy poza klepaniem przysłanych przez szefa tasków jednak starają się robić też coś samodzielnie, po godzinach pracy. Nawet nie chodzi o fanatyków siedzących 24 godziny na dobę przy klawiaturze, ale ogólnie o osoby przynajmniej od czasu do czasu robiące coś bez zlecenia, dla siebie. Dlaczego to robimy? Nie będę tutaj próbował odpowiadać głosem wszystkich, powiem tylko co mi osobiście daje programowanie.
A daje sporo. Kiedy się zaczynam świadomie nad tym zastanawiać to dochodzę to wniosku, że programowanie to do pewnego stopnia dające przyjemność uzależnienie. Napisanie jednej linijki kodu powoduje, że chce się dopisać drugą żeby spróbować osiągnąć jeszcze więcej itd. Pisząc kod (który czasami nawet od razu działa :P ) i widząc efekty jakie daje, nawet jeśli są niewielkie jak wyświetlenie elementu na ekranie, czuję się trochę jak swoistego rodzaju stwórca. To ode mnie zależy jak będzie się zachowywać moje dzieło. Pomijając kwestię braków wiedzy jestem ograniczony w większości jedynie przez swoją wyobraźnię. Najmocniej to uczucie zabawy w boga można poczuć zabierając się za własny projekt gry kiedy wirtualne postacie czy elementy zachowują się tak jak my chcemy. Ale nawet przy takich banałach jak miniprogramy wspomagające czy automatyzujące codzienną pracę czuje się, że robi się coś nowego (nawet jeśli jest to odkrywanie koła na nowo), a jednocześnie przydatnego mi, albo komuś innemu. Programowanie jest też moim sposobem na zaspokojenie dużego głodu wiedzy. Nauka nowych technologii, języków, rozwiązań pozwala poczuć się trochę jak dziecko, które poznaje świat :) Miałeś kiedykolwiek taki moment, że cieszyłeś się jak zauważyłeś postęp w tym co robisz? Że kod, który piszesz jest coraz ładniejszy, zwięźlejszy, działa lepiej? Ta satysfakcja z robienia postępów w tym czego się uczysz jest silnym motorem napędowym do dalszego brnięcia w temat ale też przydaje się kiedy masz zrobić ponownie coś czym się w przeszłości zajmowałeś i masz świadomość, że teraz potrafisz zrobić to lepiej i szybciej. Tą satysfakcję również daje zajmowanie się pisaniem programów. Tak więc odpowiadając w skrócie, programowanie, jeśli tak jak np. dla mnie jest pasją, daje swojego rodzaju satysfakcję i radość z poznawania ciągle czegoś nowego i z rozwiązywania problemów, z którymi na początku miało się trudności. Dodatkowo jako zajęcie mimo wszystko kreatywne daje przyjemność z tworzenia czegoś nowego, próbowania, rozwijania własnych pomysłów. Kiedy pojawia się problem, który zajmuje mi dużo czasu, albo nawet wydaje się nie do rozwiązania to traktuję go jako wyzwanie nie przeszkodę, chociaż czasami jest trudno tak go traktować, a wtedy przydaje się trochę upartości w działaniu.
A co w takim razie z osobami, które uważają, że przede wszystkim programowanie jest dla nich źródłem dochodu i jak będzie mniej pieniędzy z tego to zaczną się zastanawiać nad zmianą branży? Takie osoby też mają rację bytu. Nikt nie mówi, że osoba programująca jedynie dla pieniędzy od razu musi być beznadziejna w tym co robi. Oni po prostu motywują się tym, że przyjdą do pracy, wykonają tą rzemieślniczą robotę i na koniec miesiąca dostaną zadowalającą ich zapłatę. Takie myślenie może też przyjść dopiero po jakimś czasie, kiedy się sporo już osiągnęło. Co prawda jeszcze daleko mi do tego, ale ktoś kto programuje już naście lat też może w końcu stwierdzić, że teraz programowanie daje mu już tylko przypływ gotówki, w dodatku pewnie nie najgorszej. Ale taka osoba, żeby dojść do tego momentu również z dużym prawdopodobieństwem przechodziła przez okres intensywnego budowania doświadczenia i wiedzy kiedy motywowało ją coś więcej niż chęć zarobku. Jednak moim zdaniem tak jak ciężko trwać w tym zawodzie kiedy jest on tylko źródłem dochodu tak samo trudno trwać w nim jeśli jedyne co z tego mamy to satysfakcja. Nie ukrywajmy, programowanie jest na tyle zabierającą czas dziedziną, że bez utrzymywania się z niego ciężko przetrwać dłuższy czas, no chyba że ma się bogatą żonę/męża :D Dlatego uważam, że programowanie powinno dawać i daje mi zarówno radość z poznawania i satysfakcję z tworzenia nowych rzeczy jak również zarobek. Priorytet każdej ze stron jest sprawą indywidualną, jednak dobrze żeby żadnej z nich nie zabrakło.
Powyższy tekst jest moim osobistym punktem widzenia. Może delikatnie wzbogaciłem opis dla lepszego przekazu bo oczywiście na co dzień nie są to takie filozoficzne rozważania, ale zawiera sens i istotę tego co chciałem przekazać. Mam świadomość, że niektóre zagadnienia uprościłem inne może nawet pominąłem, ale sądzę, że to co jest jest wystarczające i spójne. Jeśli masz na ten temat inne zdanie, albo chcesz coś więcej dodać do tego co powiedziałem to śmiało pisz w komentarzu, czekam również na twój punkt widzenia :)
„Niby nie jest ona całkiem zła, ale za chwilę powiem dlaczego też, moim zdaniem, nie do końca jest dobra.” To jest zalezne od osoby. Bo w pytaniu jest co MI daje programowanie. Raczej nie powinno sie mowic „Twoja odpowiedz nie jest do konca dobra ze programowanie daje Ci pieniadze”.
Jezeli chodzi o mnie to zaczelo sie calkiem standardowo. Chcialem zrobic gre. Zaczalem sie uczyc, a ze uwielbiam poznawac nowe rzeczy to ucze sie dalej ;) a wiem ze jeszcze przede mna BARDZO duzo. Lubie wyzwania. I nie chodzi tutaj o kase czy forme (ze to programowanie) lubie ogolnie wyzwania. Jezeli dalbys mi siekere i kazal zrobic cos z ta siekiera co dla mnie bedzie wyzwaniem (i przy okazji zaplacil, bo musze za cos zyc) to moge siedziec i siedziec :D (dlatego strasznie lubie serie gier Souls [Demon’s Souls, Dark Souls, Dark Souls II])
No tak faktycznie nie pomyślałem, że to zdanie nie ma sensu w stosunku do całokształtu :D
Też tak jak Ty lubię wszelkie wyzwania, może nie w tak szerokim zakresie, ale jednak nie ograniczam się do programowania czy nawet informatyki, stawianie sobie wyzwań pozwala iść naprzód :)
Kiedyś dawało mi dużo, tę radość twórczą, to poczucie bycia kreatorem. A teraz?
Ciężko powiedzieć. Raczej znielubiłem programowanie, i gdyby nie to, że to mój zawód (a więc i obowiązek), pewnie bym się czymś innym zajął.
Dobija mnie jednak to, że na dobrą sprawę nic nie osiągnąłem w programowaniu. Nie napisałem biblioteki open-source, z której korzystają miliony innych programistów. Nie napisałem gry, w którą gra cały świat. Nie stworzyłem programu, na którym zarobiłbym krocie… Nawet nie mam na tyle doświadczenia, żeby robić za eksperta i pisać książki na temat programowania. I nie wiem czy to się zmieni, nie wiem czy chce mi się w to bawić. Programowanie obecnie to dla mnie głównie sposób na kasę, i raczej z tego względu nie zamierzam „przestawać być programistą”, ale raczej nie czerpię z tego satysfakcji, no może poza jedną sytuacją.
Zauważyłem mianowicie, że o ile kiedyś lubiłem programistyczne wyzwania, teraz lubię łatwe i rutynowe niemal zadania do zakodowania. Nie chce mi się myśleć, a pewne rzeczy z programowania są banalnie proste, szczególnie jak się je wykonywało setki razy (np. dzisiaj po raz kolejny zaimplementowałem wzorzec obserwatora w JavaScripcie i cieszę się, że zrobiłem to prościej niż twórcy NodeJS ;)
A co do nauki nowych technologii, też już nie jest to dla mnie specjalna zabawa. Nowe technologie powstają co miesiąc. I weź tu się ucz kolejnego frameworka z kolejnymi swoimi osobliwościami. Jeśli mam się uczyć czegoś nowego, to i tak wolę, żeby było to podobne do tego, co już znam, albo po prostu dość intuicyjne w użyciu. Ew. było na tyle dziwne, że aż fascynujące, a więc dające jakąś pożywkę intelektualną dla mojego znużonego umysłu.
Tym niemniej i tak warto programować, bo póki co ktoś musi to robić. Nie mówię nawet o kwestiach zarobkowych, ale nawet masę projektów open source leży i kwiczy, nie ma ludzi, którzy by nareperowali bugi, dorobili potrzebne funkcjonalności. Myślę, że programowanie jest jak pielęgnowanie ogrodu. Nie mam ogrodu, ale myślę, że metafora jako metafora może być trafna. Jest jakiś kod/kwiaty, ktoś je musi podlewać/kodzić, żeby rosły. Ktoś musi je przycinać (wywalać niepotrzebny kod), wyrywać chwasty (debugować). A na koniec dnia nie liczy się twoja mglista satysfakcja z bycia ogrodnikiem, a raczej to, że kwiatki urosły, trafią do kwiaciarni, i ktoś je kupi dla wybranki serca. Albo na pogrzeb. Albo nawet zje, jak ma taką wyobraźnię.