Czym zajmuje się programista?

Na pytanie „Czym zajmuje się programista?” przyszło mi odpowiedzieć w życiu co najmniej kilkanaście razy w rozmowach z rodziną i znajomymi, za każdym razem odpowiedź na to pytanie była nieco inna, w zależności od poziomu znajomości świata IT mojego rozmówcy.

Najogólniej mówiąc, programowanie polega na pisaniu programów komputerowych w specjalnym języku zrozumiałym dla komputerów.


Niezależnie czy pojęcia takie jak “Web-development” lub “backend” są ci znane, czy może brzmią dla ciebie jak nazwy magicznych wywarów, ten artykuł jest dla ciebie. Jeśli słyszałeś kiedyś rozmowę dwóch programistów lub czytałeś co programiści piszą w internecie (również na tym blogu) i stwierdziłeś że nie masz pojęcia o co w tym wszystkim chodzi, a chciałbyś to zrozumieć przynajmniej w stopniu podstawowym, zachęcam do lektury niniejszego tekstu.

Przedstawię kilka dialogów z różnymi osobami, podczas których starałem się wyjaśnić, czym zajmuję się zawodowo. Na końcu artykułu przedstawię czym się zajmuję moimi słowami, bez odniesienia do konkretnego poziomu wiedzy czytelnika.

Pokolenie 70+

Najtrudniejsze rozmowy to te, w których rozmówca nie zna specyfiki internetu czy w ogóle komputerów, jest to głównie najstarsze pokolenie. Rozmowa z osobą 70+ wymaga wielu uogólnień i wyglądała u mnie mniej-więcej tak:

Rozmówca: A czym Ty się w swojej pracy zajmujesz?

Ja: Robię takie jakby kawałki internetu

Rozmówca: I komuś to potrzebne?

Ja: Tak, ludzie dzięki temu komunikują się, wykonują swoją pracę, zarabiają pieniądze

Rozmówca: Ja tych rzeczy w ogóle nie znam

Ja: Dlatego tym trudniej wytłumaczyć czym konkretnie się zajmuję

Rozmówca: A ty nie jesteś tym “hakerem”? Bo w telewizji mówili…

Ja: Nie, ale moja praca jest często podobna do tego co robi haker, my programiści używamy tych samych narzędzi, wykorzystujemy podobną wiedzę, tylko używamy jej w inny sposób, nie chcemy nikomu zaszkodzić, tylko pomóc.

Zdaję sobie sprawę, że zgodzenie się, że moja praca jest podobna do “zawodu” hakera może powodować obawy u osób starszych, ale z drugiej strony mamy tutaj jakiś punkt zaczepienia, rozmówca kojarzy jakieś odniesienie do tematu z telewizji, warto pokazać że cały ten internet to nie jest tylko zło i jednocześnie uspokoić, że to co robię ja to nie to co robią hakerzy. W dużym uproszczeniu przeważnie wystarczy powiedzieć, że jestem “ekspertem od internetu” i nikomu tym krzywdy nie robię.

Osoby posiadające podstawową wiedzę

Istnieje spora grupa ludzi używających komputera i internetu sporadycznie lub/i w bardzo ograniczonym zakresie, osoby te wiedzą jak uruchomić interesujące ich narzędzia, niekoniecznie wiedząc jak one działają. Moim zdaniem jest to grupa ludzi najbardziej podatna na socjotechnikę i warto takim osobom pomagać zrozumieć świat komputerów. 

Podejście do wyjaśnienia zawodu programisty musi być tutaj dostosowanie indywidualne do danej osoby, często jest ono dość proste, tylko trzeba znaleźć odpowiednią analogię.

Jak działa internet

Tutaj mała anegdota, która pokazuje ak przebiegały próby wyjaśnienia zagadnień związanych z internetem osobie dysponującej jedynie pewnymi fragmentami wiedzy informatycznej.Rozmowa odbywa się z osobą, która używa komputera i internetu sporadycznie, do takich czynności jak email, gry online czy oglądanie filmów, wiek osoby to około 50 lat.

Rozmówca: Ty robisz strony internetowe to mi odpowiesz na pytanie

Ja: Słucham

Rozmówca: Dlaczego na stronie na której gram w karty wyświetlają się reklamy?

Ja: Bo osoba, która stworzyła tą stronę i być może również tą grę zarabia w ten sposób pieniądze za wykonaną pracę

Rozmówca: Ale ja płacę za internet, więc czemu jeszcze dodatkowo musi zarabiać za reklamy

Ja: Płacisz za dostęp do internetu, właściciele stron internetowych nie dostają pieniędzy z Twoich rachunków za internet

Rozmówca: W telewizji jak płacę za jakiś kanał to go mam, a jak nie płacę to nie mam.

Tutaj do mnie dociera, że problemem w zrozumieniu uzasadnienia wyświetlania reklam jest błędna analogia internetu do telewizji satelitarnej. Skuteczne okazało się wyjaśnienie od podstaw takich zagadnień jak:

  1. do kogo należą strony internetowe
  2. kto publikuje reklamy
  3. kto zarabia na reklamach
  4. czym różni się internet od innych mediów
  5. czym różni się produkt wirtualny od produktu namacalnego

Jako przykład można podać to że oglądanie reklamy jest sposobem płacenia za usługę i wcale nie jest to sposób nowy dla produktów informatycznych, reklamy wyświetlają się np. w postaci banerów sponsorów na imprezach masowych, które są dla uczestnika darmowe, a w rzeczywistości płaci za nie reklamodawca. To jest ten sam schemat, tyle że internet rządzi się nieco innymi prawami i sposób dostarczania reklam i rozliczania przychodów z nich jest nieco bardziej złożony.

Analogie

W powyższej rozmowie porównanie płatności za internet z płatnością za telewizję satelitarną okazało się źródłem niezrozumienia, z kolei analogia strony internetowej do imprezy masowej pomogła w wyjaśnieniu problemu. Jak widać analogie mogą zarówno zaszkodzić jak i pomóc, trzeba ich używać rozważnie.

W tym przypadku wyjaśnienie pracy programisty można zacząć w podobny sposób jak w przypadku osób starszych, jednak z pewnością pojawi się tutaj dużo więcej pytań i drążenia tematu, warto dyskutować oscylując możliwie najbliżej aktualnego poziomu zrozumienia zagadnień przez rozmówcę.

Osoby aktywnie korzystające z internetu

W przypadku osób, które używają internetu na co dzień również pojawiają się pytania, ale innego typu, osoby takie mają bowiem pewną wiedzę, często zakres wiedzy jest dość szeroki, ale niekoniecznie zgłębiony w każdym aspekcie.

Rozmówca: Czyli ty robisz stronki internetowe, tak?

Ja: Niedokładnie, robię różne systemy które wyglądają jak strony internetowe.

Rozmówca: To czym się różnią od stron?

Ja: Mają bardziej złożone funkcjonalności, dostosowane do konkretnego klienta i użytkownika. Używasz aplikacji swojego banku, sprzedajesz na portalach aukcyjnych albo prowadzisz profil na portalu społecznościowym? To są takie “strony” w których robi się coś więcej niż tylko czyta czy ogląda, prawda?

Rozmówca: Prawda

Ja: No to mniej-więcej o to chodzi. Dochodzą też do tego aplikacje mobile i czasami desktopowe, czyli takie jak instalujesz na komputerze.

Tutaj poszło dużo łatwiej, ponieważ zamiast analogii mogłem się posłużyć przykładami. Gdzieś w dalszym toku takie rozmowy pojawiają się pytania typu:

  1. Pamiętam ze szkoły HTML, to w tym piszesz?
  2. Też chciałbym tego spróbować, jak mogę zostać programistą?
  3. Od czego trzeba zacząć żeby napisać jakiś program albo stronę?

Przykładów takich pytań jest wiele, przytoczyłem tylko trzy bez podawania jakich odpowiedzi udzieliłem (odpowiedzią na pytanie nr. 2 może być artykuł: Jak zostać programistą), przeważnie odpowiedź nie jest jednym zdaniem, a początkiem dalszej dyskusji. I takie dyskusje są fajne, bo często widzę że ludzie uświadamiają sobie, że to o co pytali w zasadzie już wiedzieli, musieli tylko porównać swoje przypuszczenia ze stanem faktycznym.

Dzieci

Dzieci to jest ta grupa ludzi, którym najfajniej opowiada się o nowych dla nich rzeczach, bo wykazują duże zainteresowanie i zadają masę pytań, których często się nie spodziewamy. Od dzieci sami możemy nauczyć się innego patrzenia na różne sprawy.

O tym jak ja pokazywałem dziecku czym jest programowanie pisałem w artykule Uczę dziecko programować, często też tłumaczę proste algorytmy (nie używając słowa “algorytm”) pokazując jakieś gry czy animacje. Nawet na popularnych grach typu warcaby, makao czy szachy można “przemycić” trochę algorytmiki.

Przykład z makao

W makao mamy cały zestaw reguł, w poniższym dialogu mamy do czynienia z kilkoma z nich:

  1. Damę można położyć na dowolną kartę i dowolną kartę można położyć na damę
  2. Kładąc waleta mamy przywilej zażądania od przeciwnika konkretnej figury
  3. Żądanie można “przebić” innym waletem, czyli zamiast kłaść żądaną kartę, możemy położyć innego waleta i sami zgłosić żądanie
  4. Jeśli nie mamy karty pasującej do karty na stole lub karty której żądano, dobieramy jedną kartę

Gramy tylko jedną talią.

Ja: jeśli położysz teraz tą damę, to ja będę mógł rzucić dowolną kartę, a mam tylko jedną więc na pewno wygram

Dziecko: To muszę położyć taką, żebyś nie położył swojej, ale nie wiem jaką masz kartę

Ja: To musisz położyć taką, która zmusi mnie do dobrania kart lub położenia jakiejś konkretnej. Nie masz pewności, czy to się uda (mogę przebić), ale zwiększysz swoje szanse.

W przypadku gier można fajnie pokazać czym są operacje warunkowe, np. były już położone wszystkie dziewiątki i trzy walety, więc jeśli masz czwartego waleta i zażądasz ode mnie położenia dziewiątki, będę musiał dobrać kartę. W ten sposób dziecko widzi zależności: jeśli zrobię coś, stanie się coś innego, ale w skrajnym przypadku może się stać coś jeszcze innego.

Przenoszenie podobnych warunków ze świata rzeczywistego do kodu to podstawa programowania.

Inni programiści

W rozmowie z innymi programistami odpada nam tłumaczenie czym jest programowanie, rozmowy odbywają się już wokół konkretnych języków programowania czy technologii. Ludzie nie będący w temacie często słysząc takie rozmowy mówią, że nie zrozumieli ani słowa i nie ma się czym martwić. Ja sam byłem kiedyś świadkiem fragmentu rozmowy kilku księgowych, jedyne co wyniosłem z ich rozmowy, to fakt, że słowo “procent” jest w tej branży używane nad wyraz często – mam przypuszczenia że oni używają procenta nawet zamiast wulgaryzmów 😉 Każda grupa zawodowa czy jakakolwiek inna społeczność ma swój własny język ułatwiający wewnętrzną komunikację i często niezrozumiały dla świata zewnętrznego, my programiści nie jesteśmy pod tym względem wyjątkowi.

Czym programowanie nie jest

Zdarzało się, że osoby o pewnej znajomości oprogramowania komputerowego słysząc że jestem programistą zgłaszały się do mnie, żebym pokazał mi jak się obsługuje jakiś program, którego nigdy wcześniej nie widziałem, prawdopodobnie osoba taka przez programistę rozumie „eksperta od (wszelakich) programów”.

Były i bardziej skrajne przypadki, na przykład zostałem poproszony o zaprogramowanie telewizora 🙂

Także pamiętajcie, programista PISZE programy komputerowe, „pisze” oznacza tutaj „tworzy”. Słowo „komputerowe” też ma tutaj duże znaczenie, nie piszemy programów dla partii politycznych, a słyszałem że i takie zapytanie otrzymał jeden z programistów.

Czym się faktycznie zajmuję

Podsumowując, już bez kontekstu konkretnego rozmówcy napiszę, czym się aktualnie zajmuję. Słowo “aktualnie” jest nieprzypadkowe, ponieważ ważną cechą zawodu programisty jest ciągły rozwój, więc za jakiś czas mój zakres obowiązków zapewne się zaktualizuje. 

W mojej pracy zajmuję się tworzeniem aplikacji, głównie są to aplikacje webowe, czasem mobilne, zdarza się też napisać aplikację desktopową. Piszę głównie w PHP i JS, ponieważ w tych językach mam największe doświadczenie i umiejętności, niemniej nie obce są mi inne języki jak Python, Java czy C++. 

Poza samym programowaniem robię wiele innych rzeczy, między innymi:

  1. Analiza pomysłów klientów
  2. Wycena czasu potrzebnego do stworzenia aplikacji
  3. Ustalanie architektury systemów
  4. Naprawa błędów w istniejących aplikacjach
  5. Instalacja aplikacji na serwerach
  6. Utrzymanie aplikacji (aktualizacja bibliotek, obserwowanie zdarzeń)
  7. Ocena kodu innych programistów
  8. Pomoc techniczna przy rekrutacji pracowników
  9. Ocena rozwiązań zadań rekrutacyjnych
  10. Szkolenia własne
  11. Szkolenia innych programistów
  12. Rozmowy z klientami, managerami i innymi programistami
  13. Planowanie prac
  14. Kierowanie zespołem
  15. Pisanie artykułów na firmowego bloga

Na koniec dodam, że to co widzi użytkownik aplikacji jest przeważnie małą częścią tego nad czym pracują programiści, oprócz tego istnieje cała masa rzeczy, które dzieją się za kulisami. Czasami instalujemy aktualizację, która “waży” kilkaset megabajtów, a w rezultacie widzimy tylko zmianę koloru tła aplikacji – to dlatego, że pozostała część kodu robi dla nas rzeczy których nie jesteśmy świadomi, a robią one dla nas kawał dobrej roboty (abstrahując od złośliwego oprogramowania).

 

Udostępnij

Skomentuj