Programista

Programista komputerowy, programista, deweloper, potocznie koder (ang. computer programmer, programmer, software developer, coder) – osoba pisząca programy komputerowe w języku programowania. Większość programistów zna co najmniej kilka języków programowania (np. C, C++, C#, Java, Python), lecz specjalizuje się tylko w jednym z nich. Programiści często specjalizują się w rodzaju pisanych przez siebie aplikacji (np. webowe, mobilne). Nazwa głównego języka jest często dodawana do nazwy stanowiska, np. programista C++, aby podkreślić specjalizację. Programista jest jednym z zawodów informatycznych.

Mianem programistów potocznie określa się projektantów oprogramowania, inżynierów oprogramowania, analityków systemów, czy też projektantów stron internetowych (webmasterów). Jest to jednak pewne uproszczenie, ponieważ zawody te wymagają wielu innych umiejętności, oprócz samego programowania. O ile podział ten jest dobrze zarysowany za granicą, w Polsce panuje większa swoboda w wyborze nazw zawodu.

Międzynarodowy Dzień Programisty jest obchodzony 13 września, a w roku przestępnym 12 września.

Historia 

Za pierwszą programistkę w historii wielu uważa Adę Lovelace. W październiku 1842 roku jako pierwsza opublikowała ona algorytm w formie instrukcji przeznaczonych do wykonania na komputerze, którym miała być maszyna analityczna budowana w tym czasie przez jej przyjaciela, Charlesa Babbage’a. Ponieważ projekt nie został ukończony, nigdy nie zweryfikowano działania programu.

Pierwszą osobą, która stworzyła i uruchomiła program na komputerze był Konrad Zuse w 1941 roku. Z kolei Kay McNulty, Betty Jennings, Betty Snyder, Marlyn Wescoff, Fran Bilas oraz Ruth Lichterman pracujące przy projekcie ENIAC były pierwszymi etatowymi programistkami świata.

Metody pracy programistów ewoluowały wraz z rozwojem techniki. Programowanie pierwszego amerykańskiego elektronicznego komputera ENIAC wiązało się z przełączaniem setek styków i obwodów elektrycznych między poszczególnymi modułami, co było czasochłonne i prowadziło do dużej liczby błędów. Niemiecki konstruktor Konrad Zuse w swoich pierwszych komputerach Z1 oraz Z3 z 1937 i 1941 roku zastosował z kolei wczytywanie kolejnych instrukcji programu z ośmiokanałowej taśmy perforowanej, którą należało wcześniej odpowiednio przygotować. Do lat 80. XX w. powszechnie stosowano karty dziurkowane, na które wprowadzano partie kodu programu, a następnie ładowano do pamięci komputera w specjalizowanym czytniku.

Dziurkowania kart perforowanych dokonywać mógł programista lub operator dziurkarki kart, co zależało od organizacji pracy w ośrodku obliczeniowym.

Początkowo programiści tworzyli programy bezpośrednio w kodzie maszynowym danego komputera operując sekwencjami liczb. Poszczególne polecenia zaczęto wyrażać w językach asemblerowych, w których zamiast liczbowego kodu rozkazu można było stosować ich symboliczną, czytelną dla człowieka nazwę łatwiejszą do zapamiętania, tzw. mnemonik (np. ADD). Przed uruchomieniem takiego programu należało przetłumaczyć nazwy poszczególnych rozkazów na ich reprezentację liczbową i w takiej postaci wprowadzić do pamięci maszyny.

Projekt pierwszego tzw. języka wysokiego poziomu, Plankalkül przedstawił Konrad Zuse w swojej publikacji z 1948 roku wydrukowanej w czasopiśmie Archiv der Mathematik. Zaproponował on, aby zrezygnować ze stosowania rozkazów maszynowych na rzecz bardziej naturalnego zapisu, np. a + b, lecz jego koncepcja przeszła bez echa. W 1956 roku opublikowany został podręcznik języka FORTRAN, pierwszego języka wysokopoziomowego, który odniósł sukces i jest stosowany do dnia dzisiejszego. Pierwszy kompilator FORTRANu powstał rok później.

Na lata 60., 70. i 80. XX w. przypada rozwój zarówno sprzętu komputerowego, jak i języków programowania. W 1977 firma Apple wypuściła na rynek pierwszy kompletny komputer osobisty, który mieścił się na jednym biurku. W tamtych czasach oprogramowanie komputerowe nie było przystosowane do prostoty użytkowania, dlatego praca z komputerem bardzo często rodziła potrzebę samodzielnego tworzenia programów.

Wraz ze wzrostem stopnia złożoności programów nad projektem musiało pracować coraz więcej programistów, a jednocześnie musieli oni rozumieć dużo większą ilość kodu. Kolejna rewolucja nadeszła wraz z upowszechnieniem się sieci komputerowych, które umożliwiły łatwiejsze dzielenie się swoimi poprawkami oraz pracę grupową.

Aspekty pracy

Praca programisty obecnie 
Współcześni programiści pracują najczęściej w dobrze wyposażonych biurach lub laboratoriach komputerowych ze sprzętem niezbędnym do testowania aplikacji. Inżynierowie oprogramowania często podróżują, aby spotykać się z klientami. W powszechnym użyciu są telekonferencje oraz praca zdalna, ponieważ postęp technologiczny umożliwia wykonywanie coraz większej ilości zadań bez konieczności przebywania w biurze.

W zależności od obszaru specjalizacji programistów można podzielić na dwie główne grupy:

 programiści aplikacji – zajmują się tworzeniem aplikacji komputerowych realizujących określone zadanie, np. wspomaganie zarządzania przedsiębiorstwem,
 programiści systemowi – rozwijają aplikacje oraz systemy nadzorujące pracę sprzętu komputerowego, np. systemy operacyjne, sterowniki, czy systemy zarządzania bazami danych.

Wraz z rozwojem sieci WWW pojawiło się także zapotrzebowanie na programistów specjalizujących się w tworzeniu aplikacji działających w środowisku WWW.

Testowanie i debugowanie 
Osobnym aspektem pracy programisty jest zapewnienie odpowiedniej niezawodności tworzonego oprogramowania. W trakcie tworzenia popełnianie błędów jest nieuniknione – mogą być one wynikiem zarówno braku niezbędnych umiejętności, jak i pomyłek podczas pisania. Proces wyszukiwania i usuwania błędów w oprogramowaniu nazywa się debugowaniem. Usuwanie błędów nie jest czynnością wykonywaną jeden raz, lecz procesem trwającym przez cały okres życia programu w miarę, jak jest on rozwijany, a jego kod porządkowany.

Jedną z technik znajdowania błędów jest systematyczne testowanie oprogramowania, zarówno w sytuacjach rzeczywistych, jak i przy pomocy zestawów syntetycznych testów weryfikujących poszczególne komponenty. Dzięki automatycznym środowiskom testowym, mogą być one wykonywane bezpośrednio przez komputer posiadający opis czynności do wykonania i znający oczekiwany rezultat każdego testu. Wszelkie niezgodności są raportowane programistom jako miejsca potencjalnych błędów.

Organizacja procesu testowania może leżeć poza kompetencjami zespołu tworzącego oprogramowanie. Przedsiębiorstwa powierzają to zadanie pracownikom zwanym testerami, którzy kontrolują jakość tworzonego oprogramowania już od etapu definiowania wymagań, a także zajmują się projektowaniem, wykonaniem i raportowaniem wyników testów.

Narzędzia 
Programista tworzy oprogramowanie w środowisku komputerowym umożliwiającym jego uruchamianie i testowanie. Podstawową jego częścią jest edytor kodu źródłowego oraz interpreter lub kompilator odpowiedniego języka programowania. Do wykrywania błędów używane są debugery pozwalające śledzić działanie programu linijka po linijce oraz stan pamięci. Część tworzonych programów wyposażana jest w dodatkowe funkcje umożliwiające łatwiejszą diagnozę pojawiających się problemów. Wszystkie narzędzia mogą być od siebie niezależne lub być częścią zintegrowanego środowiska programistycznego.

Przy pracy grupowej powszechnie stosowane są systemy kontroli wersji. Przechowują one kod aplikacji w wydzielonym miejscu, do którego programiści wysyłają z własnych kopii roboczych nowe poprawki. Systemy dbają o automatyczne połączenie ich z już istniejącym kodem czy wykrywanie konfliktów edycji. Ponadto pozwalają cofnąć się do dowolnego momentu w przeszłości i przeglądać archiwalne zmiany.

Narzędzia programistyczne nie są związane jedynie z edycją kodu aplikacji, ale także z koordynacją pracy zespołu oraz nadzorem nad przebiegiem projektu. Do takich narzędzi należą bugtrackery służące do zgłaszania znalezionych w programie błędów oraz monitorowania postępu prac nad ich usunięciem. Systemy tworzenia dokumentacji umożliwiają wygenerowanie dokumentacji bezpośrednio z kodu źródłowego. Do projektowania aplikacji wykorzystywane są narzędzia CASE.

Rynek pracy w Polsce 
Rynek IT w Polsce dynamicznie się rozwija, dlatego firmy borykają się z problemem braku wykwalifikowanych specjalistów w tej dziedzinie. Ministerstwo Nauki i Szkolnictwa Wyższego przewiduje, że w latach 2010–2025 będą oni najbardziej poszukiwaną grupą spośród zawodów technicznych. W roku 2016, Ministerstwo Edukacji Narodowej, Ministerstwo Cyfryzacji oraz Ministerstwo Nauki i Szkolnictwa Wyższego, zapowiedziały uruchomienie pilotażowego nauczania programowania dzieci. W tym samym roku liczbę brakujących na rynku pracy specjalistów z branży IT szacowano na ok. 50 tys. osób, w tym programistów, administratorów systemów oraz bezpieczeństwa. Specjaliści IT należą do najlepiej zarabiających grup zawodowych w kraju, lecz wysokość zarobków jest mocno uzależniona od wybranej specjalizacji.

W Polsce nie trzeba posiadać żadnego certyfikatu, aby być programistą. Braki w ilości wykwalifikowanych programistów na rynku doprowadziły do znacznego zaktywizowania podmiotów organizujących szkolenia w tym zakresie, w tym również tzw. bootcampów.

Zobacz też 

 programowanie
 język programowania

Przypisy

Bibliografia 
 , United States Department of Labor
 

 
 
Zawody informatyczne