Portal Finanse Firma Klastry Instytucje Promocja Polityka
Newsy
2016/01/18 09:59:09
Programiści – demiurdzy współczesności

Każdy z nas korzysta z komputerów i programów komputerowych, ale mało kto zdaje sobie sprawę, jak złożone jest ich powstawanie. Najważniejszym ogniwem w tym procesie są programiści, którzy odpowiadają za napisanie kodu źródłowego. Czy każdy z nas może nim zostać? Jak swoją pracę oceniają najsłynniejsi programiści w historii?

 Programisci 1

W procesie ewolucji maszyn liczących komputery są na razie najdoskonalszą formą, podobnie jak homo sapiens dla gatunku ludzkiego. Niemniej z czysto technicznego punktu widzenia komputer różni od kalkulatora tylko (wielokrotnie) większa moc obliczeniowa. Komputery w przeciwieństwie do innych, prostszych maszyn, mogą być programowane, czyli możliwe jest wprowadzanie do ich pamięci instrukcji pozwalających na przyspieszenie procesu obliczania poprzez zastosowanie odpowiedniego algorytmu. Właśnie do tego – napisania odpowiedniego algorytmu – potrzebujemy programistów. Algorytmy – zapisywane w różnych językach, np. Pascal, Python, C – określają zasady, kiedy dane frazy będą odpowiadały poleceniu realizacji. Etap ten można przyrównać do wydawania rozkazów przez generała – aby zostały one wykonane, dowódca musi się posługiwać tym samym językiem, co żołnierze. Zapisany algorytm jest tak zwanym kodem źródłowym, określającym zasady działania programu komputerowego. Dlatego, najogólniej mówiąc, programowanie to proces tworzenia, testowania i utrzymywania kodów źródłowych programów komputerowych.

Komputery na scenie dziejowej

Przyjmuje się, że pierwszą programistką w historii była Brytyjka Ada Lovelace, która w 1842 r. zapisała algorytm w formie instrukcji przeznaczonej dla maszyny analitycznej, konstruowanej przez Charlesa Babbage’a. Ta jednak nigdy nie powstała i choć prace nad zaawansowanymi maszynami obliczeniowymi wciąż trwały, idea komputera jako urządzenia mogącego obliczyć wszystko, co obliczalne, została wprowadzona w 1936 r. przez Alana Turinga w artykule „On computable numbers” („O liczbach obliczalnych”). Druga wojna światowa i zintensyfikowane prace nad maszynami obliczeniowymi zaowocowały stworzeniem w 1941 r. pierwszego komputera Z-3. Nie był on jednak dziełem Turinga, a niemieckiego inżyniera Konrada Zuse. Następnie historia przyspieszyła – komputery stawały się coraz szybsze i mniejsze, znalazły zastosowanie w większości dziedzin życia, a także doprowadziły do wyodrębnienia się nowej dziedziny nauki – informatyki.

Mimo szybkiego postępu technologicznego, jeszcze w latach 90. XX w. programowanie ograniczało się jednak do tworzenia oprogramowania w firmie konstruowania baz danych, a także prostych gier komputerowych. Dzisiaj, wraz z rozwojem internetu, wzrosło zapotrzebowanie na złożone strony internetowe, a popularność smartfonów sprawiła, że rozwinął się również rynek aplikacji dedykowanych na urządzenia mobilne. Obecnie jesteśmy otoczeni przez programy komputerowe – począwszy od telefonów, przez komputery osobiste, systemy komunikacji i zarządzania w firmach, aż po komputery samochodowe. Według amerykańskiego Biura ds. Statystyk Pracy, zajmującego się monitoringiem rynku pracy, w 2020 r. gospodarka USA będzie w dalszym ciągu potrzebowała około miliona programistów.

Artysta czy rzemieślnik?

Od momentu powstania zawodu programisty toczy się dyskusja, czy taka osoba jest rzemieślnikiem, czy też raczej artystą. Z jednej strony umiejętność programowania predysponuje osoby o umysłach ścisłych, a sam program jest zapisem algorytmu, czyli można powiedzieć, że ma więcej wspólnego z matematyką niż ze sztuką. Z drugiej strony, aby stworzyć funkcjonalny, intuicyjny program niezbędne jest myślenie abstrakcyjne, a sam proces programowania jest niczym innym, jak przełożeniem idei na frazy w odpowiednim języku programowania.

Programisci 2

Angielski programista i eseista Paul Graham w artykule „Knuth: Computer Programming as an Art” („Knuth: Programowanie komputerowe jako sztuka”) zebrał wypowiedzi słynnych programistów i sprawdził, jak oni sami siebie określali. Emma Lehmer, amerykańska matematyczka rosyjskiego pochodzenia, opisywała kodowanie jako „ekscytującą naukę, a zarazem intrygująca sztukę”. Z kolei brytyjski matematyk Donald Coxeter wspominał, że zajmując się programowaniem, czuł się „bardziej artystą niżeli naukowcem”. Nieco bardziej powściągliwy jest Yukihirio Matsumodo, twórca języka Ruby, który uważa, że „kod jest piękny, ale jego głównym zadaniem jest pomoc programiście, tak aby ten był szczęśliwy i produktywny”. Sztuka takiego zadania nie ma.

O ile można mieć wątpliwości, czy programowanie jest sztuką, bez wątpienia cały proces powstawania aplikacji – od pomysłu, przez jej zaprojektowanie, sprawne zrealizowanie, wykonanie atrakcyjnej szaty graficznej, aż po rozwój – wymaga dużej kreatywności. Dlatego coraz bardziej pożądane są osoby, które oprócz talentu i wiedzy związanej z tworzeniem programów komputerowych, posiadają również określone umiejętności miękkie. John Rampton, właściciel start-upu Hostt.com, w swoim artykule „15 Characteristics of a Good Programmer” („15 cech dobrego programisty”), opublikowanym na łamach magazynu „Entrepreneur”, wskazuje, że najbardziej pożądaną cechą u programisty jest chęć do nauki. Związane jest to z szybko zmieniającymi się trendami w programowaniu, a także powstawaniem nowych języków. Równie ważna jest umiejętność znajdowania błędów (debugowania), kiedy program nie działa tak, jak powinien. Ponadto pracodawcy zwracają uwagę na umiejętność współpracy w zespole. Szczególnie cenne jest to w przypadku prac nad dużymi projektami, angażującymi wielu programistów i grafików na różnych etapach.

Rich Hein z prestiżowego magazynu technologicznego „CIO” w artykule „Top 10 Programming Skills That Will Get You Hired” („Top 10 umiejętności programistycznych, które sprawią, że zostaniesz zatrudniony”) wskazuje, że największe obecnie zapotrzebowanie jest na programistów specjalizujących się w bazach danych (SQL) – prawie 100 tys. miejsc pracy w USA ze średnimi zarobkami w wysokości 90 tys. dolarów rocznie. Drugą najbardziej poszukiwaną umiejętnością jest programowanie w języku Java – ponad 65 tys. miejsc pracy ze średnimi zarobkami około 95 tys. dolarów. Trzeci pod względem popularności jest HTML z niespełna 50 tys. miejsc pracy i średnimi zarobkami na poziomie 81 tys. dolarów rocznie. Kolejne miejsca zajęły technologie: JavaScript, C++, C#, XML, C, Perl, a także Python. Średnie zarobki wahały się tu w granicach 80-95 tys. dolarów.

Na pytanie, co charakteryzuje dobrego programistę, Larry Wall, twórca jednego z najpopularniejszych języków programowania Perl, odpowiedział przewrotnie, że są to: lenistwo, brak cierpliwości i pycha. Pierwsze wiąże się z automatyzacją – leniwy programista potrafi stworzyć program, który sprawi, że on sam będzie miał mniej pracy. Druga cecha przejawia się w nerwowej reakcji na powolne działanie komputera – niecierpliwy programista napisze program, który będzie odpowiednio zoptymalizowany i tym samym nie przysporzy mu frustracji. Z kolei pycha przekłada się na dbałość w wykonaniu i rozwijaniu programu, tak aby żaden jego użytkownik nie narzekał. Ken Thompson, twórca systemu operacyjnego Unix, również zwrócił uwagę, że pracy programistów nie można mierzyć taką samą miarą, jaką przykłada się do innych pracowników. Zapytany o swoją efektywność, stwierdził, że: „Jednym z moich najbardziej produktywnych dni był ten, w którym wyrzuciłem 1000 linijek kodu”.

Wszyscy wybitni programiści zgodnie podkreślają, że programowanie jest czymś więcej niż tylko pracą. Niezależenie od tego, na jakim etapie zainteresowali się komputerami, pochłaniały ich one bez reszty. Dennis Ritchie (twórca języka C) po raz pierwszy usłyszał o komputerach w wieku 20 lat, a niewiele po przekroczeniu czterdziestki odbierał nagrodę Turinga, określaną mianem informatycznej Nagrody Nobla. O ile początkowo Ritchie spędzał większość czasu na pisaniu kodu i kładzeniu kolejnych kamieni milowych pod rozwój informatyki, o tyle z czasem wszedł w rolę menedżera, zajmując się głównie technologią HTML. Podobną drogę – od kodowania do monitorowania pracy innych – przeszedł fiński programista Linus Torvalds, twórca Linuksa. W wywiadzie dla Bloomberg Business wyjaśnia: „Rzadko angażuję się w prace na tym najniższym poziomie. Najpierw nad pisaniem kodu pracują dziesiątki programistów, a dopiero później przekazują go mnie”. Niemniej wciąż, od czasu do czasu, zamyka się w pokoju na tydzień, wytrwale nad czymś pracując.

Wśród programistów nie brakuje również idealistów, takich jak Richard Stallman, jeden z prekursorów ruchu wolnego oprogramowania. Związany ze środowiskiem hackerskim był rozczarowany wyławianiem najzdolniejszych z nich przez firmy programistyczne, które dążyły w ten sposób do zapewnienia sobie monopolu w latach 80. XX w. Stallman pozostał wierny swoim przekonaniom, a jego system operacyjny GNU posłużył do stworzenia Linuxa, który z kolei stał się podstawą dla Androida, jednego z najpopularniejszych obecnie systemów operacyjnych na świecie. Zdaniem Stallmana komercyjne programy naruszają prywatność użytkowników, a w konsekwencji ograniczają ich wolność, dlatego sam nie posiada nawet telefonu komórkowego.

Równolegle do sporu o istotę programowania toczy się dyskusja, czy można i warto uczyć się tego na uniwersytecie. Wątpliwości nie ma Donald Knuth, jeden z kreatorów współczesnego programowania, a zarazem profesor Uniwersytetu Stanforda: „Kiedy zauważasz, że spędzasz cały swój czas na rozważaniach teoretycznych, poświęć trochę uwagi rzeczom praktycznym – to ulepszy twoje teorie. Kiedy zauważasz, że spędzasz cały swój czas na praktyce, poświęć trochę uwagi rzeczom teoretycznym – to usprawni twoją praktykę”.

Globalne trendy

Peter Wayner w artykule „12 predictions for the future of programming” („12 przewidywań dla przyszłości programowania”) opublikowanym na łamach magazynu „InfoWorld” wskazuje, że najważniejszym technicznym trendem będzie coraz większe wykorzystanie jednostek GPU (kart graficznych) kosztem CPU (procesorów). zwraca też uwagę na rosnący udział w rynku systemu operacyjnego Android, który jest instalowany już nie tylko na smartfonach i tabletach, ale np. w aparatach fotograficznych. Potwierdzeniem jego spostrzeżeń jest badanie przeprowadzone przez brytyjski portal Developer Economics, według którego w pierwszym kwartale 2015 r. dla 40% developerów oprogramowania dominującą platformą był właśnie Android, wyprzedzając iOS (37%). Analitycy przewidują dalszy wzrost jego przewagi w związku z prężnym rozwojem sektora IT w Azji, gdzie ten system operacyjny jest priorytetowy już dla 48% developerów, a dla 74% pozostaje najważniejszą (ta druga grupa rozwija produkty również na inne platformy). Prognozowany jest także spadek zainteresowania aplikacjami natywnymi (dedykowanych poszczególnym platformom), kosztem responsywnych stron internetowych wykonanych w technologii HTML5.

Obok trendów technicznych postępująca komputeryzacja różnych sfer życia spowoduje również zmiany na rynku pracy. W związku z rosnącym znaczeniem tzw. Big Data pojawia się zapotrzebowanie na pracowników specjalizujących się w zbieraniu dostępnych informacji i przekształcaniu ich w wiedzę dającą firmie przewagę konkurencyjną, a następnie w umiejętny sposób przedstawianie jej osobom decyzyjnym. Telewizyjna korporacja CNBC przewiduje, że najbardziej pożądanym zawodem w XXI wieku będzie właśnie osoba specjalizująca się w analizie danych.

Warto również zwrócić uwagę na „internet rzeczy”. Otaczające nas urządzenia są coraz bardziej skomputeryzowane, a aplikacje analogiczne do tych przygotowanych na smartfony będą wkrótce obsługiwały nasze kuchnie czy samochody. W 2014 r. Google wraz z Hyundaiem zaprezentowali pierwszy samochodu wyposażony w dedykowany system Android Auto – Hyundai Sonata. Z kolei programiści z Apple’a ogłosili, że pracują nad oprogramowaniem CarPlay. Według statystyk podawanych przez Developer Economics rośnie też liczba programistów, którzy zajmują się przygotowaniem aplikacji na inne urządzenia niż mobilne – aż 37% tworzyło systemy dla inteligentnych domów, a 35% aplikacje dedykowane odzieży i akcesoriom (por. infografika).

Programisci

Warto przy tym dodać, że w 1999 r. Ken Thompson, jeden z twórców systemu operacyjnego Unix, stwierdził, że o ile informatyka jest niezwykle interesującą dziedziną, przyszłość należy do innej: „Gdybym miał doradzać swojemu synowi, czyli kolejnej generacji, powiedziałbym, żeby wszedł w biologię. (...) Nie w klasyczną biologię, ale w terapię genową i tym podobne. (...) Myślę, że komputerologia już się kończy, osiąga właśnie szczyt i zacznie się staczać. Przykro mi to mówić, ale tak czuję. Kiedy patrzysz na informatykę – na to, co jest obecnie nauczane, na tematy prac doktorskich, na publikacje – zdajesz sobie sprawę, że różne elementy informatyki stają się coraz bardziej wyspecjalizowane”. Czas pokazał, że słowa Thompsona nie były pustą przepowiednią. Potwierdza to nie tylko pojawienie się „internetu rzeczy”, ale i włączenie do prac nad sieciami neuronowymi Jeff’a Deana, najwybitniejszego programistę Google’a. Tradycyjna informatyka, jaką zajmowali się naukowcy jeszcze dwie, trzy dekady temu, doszła do punktu, w którym dalszy jej rozwój jest ściśle powiązany z innymi dziedzinami, np. motoryzacją, biologią czy energetyką. Programy komputerowe mają rozwiązywać coraz bardziej zaawansowane problemy, dlatego dzisiejsi naukowcy muszą łączyć wiedzę z różnych obszarów.

Powszechność komputerów sprawia, że coraz ważniejsza staje się odpowiednia edukacja. W 2013 r. bracia Hadi i Ali Partovi uruchomili projekt non Code.org, którego głównym celem jest nauczanie programowania przedszkolaków i uczniów szkół w wieku od 4 do 18 lat. W platformę zainwestowali m.in. Bill Gates i Zuckerberg, a obecnie z jej możliwości korzysta ponad 6 mln użytkowników z całego świata. Udostępniane materiały powstawały we współpracy z inżynierami z wiodących amerykańskich firm (m.in. Google, Microsoft, Facebook, Twitter). Portal jest dostępny w kilkudziesięciu wersjach językowych, w tym po polsku. Kevin Maney z amerykańskiej edycji „Newsweeka” w swoim artykule „Computer Programming Is a Dying Art” („Programowanie komputerowe jest wymierającą sztuką”) wieszczy, że w 2030 r. dla dzieci, które rozpoczynają naukę dzięki Code.org, umiejętność programowania będzie równie ważna, jak pisanie ręką. Jednocześnie wskazuje, że komputery w niedalekiej przyszłości ewoluują z maszyn wymagających programowania do urządzeń, które będą się uczyć od ich właścicieli, czyli będą potrafiły wyprzedzać myślenie użytkownika, posługując się charakterystycznymi dla niego rozwiązaniami. Jednak, aby do tego doszło, niezbędne będzie ich wcześniejsze zaprogramowanie.

Przyszłość niewątpliwie należy do programistów, ale oprócz wiedzy stricte komputerowej coraz większe znaczenie będzie odgrywała znajomość innych dziedzin nauki, przede wszystkim biologii i psychologii, niezbędnych do prac nad sztuczną inteligencją. Gwałtowny rozwój technologii, jakiego doświadczamy, otwiera nowe możliwości, których pierwsza programistka, Ada Lovelace, nie mogła przewidzieć. W ciągu zaledwie 150 lat komputery i dedykowane programy zdominowały niemal wszystkie obszary naszego życia, dlatego warto wiedzieć, kto za nimi stoi – programiści.

Bibliografia

  1. Graham P., Knuth: Computer Programming as an Art, CACM, 1974
  2. Hein R., Top 10 Programming Skills That Will Get You Hired, “CIO”, 2013
  3. Maney K., Computer Programming Is a Dying Art, “Newsweek”, 2014
  4. Rampton J., 15 Characteristics of a Good Programmer, “Entrepreneur”, 2014
  5. Turing A., On Computable Numbers, 1936
  6. Wayner P., 12 predictions for the future of programming, “InfoWorld”, 2014
  7. Vance A., The of Linux on the Future Without Him, “Bloomberg Business”, 2015
:Małgorzata Remisiewicz 


powrót | do góry | strona główna | kalendarium | regulamin serwisu | pliki cookies | kontakt
Portal jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego.

© 2005-2016 Polska Agencja Rozwoju Przedsiębiorczości