Programista, zwany też potocznie koderem to osoba, która tworzy programy komputerowe w pewnym języku programowania. Termin ten może odnosić się także do specjalisty w jednej dziedzinie programowania. Przeważajaca ilość programistów zna przynajmniej parę języków programowania (np. C, C++, Java), lecz specjalizuje się tylko w wybranych z nich. Nazwa głównego języka jest wielokrotnie dodawana do nazwy stanowiska, np. programista C++, aby podkreślić specjalizację.
Mianem programistów wyznacza się czasami projektantów oprogramowania, inżynierów oprogramowania czy analityków systemowych. Jest to jednak pewne uproszczenie, albowiem zawody te wymagają wielu innych umiejętności, oprócz samego programowania. O ile podział ten jest dobrze zarysowany za granicą[1][2][3], w Polsce panuje większa swoboda w wyborze nazw zawodupotrzebne źródło.
Powszechnie uważa się, że pierwszym programistą w historii była Ada Lovelace. W październiku 1842 roku jako pierwsza wyraziła ona algorytm w formie instrukcji przeznaczonych do wykonania na komputerze, którym miała być maszyna analityczna budowana w XIX wieku przez Charlesa Babbage[4]. Gdyż projekt wcale nie stał się ukończony, nie mogła ona zweryfikować działania swojego programu. Pierwszą osobą, która stworzyła oraz 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[5].
Międzynarodowy Dzień Programisty jest obchodzony 13 września każdego roku[6].
Aspekty pracy programisty
Historia
Programowanie komputera
ENIAC w latach 40. XX wieku.
Metody pracy programistów ewoluują wraz z rozwojem techniki. Programowanie pierwszego amerykańskiego elektronicznego komputera ENIAC wiązało się z przełączaniem setek styków oraz obwodów elektrycznych pomiędzy poszczególnymi modułami, co było czasochłonne oraz prowadziło do dużej liczby błędów. Niemiecki konstruktor Konrad Zuse w swoich pierwszych komputerach Z1 oraz Z3 z 1937 oraz 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ć. Aż do lat 80. w powszechnym użyciu były karty dziurkowane, na które programista wprowadzał kolejne partie kodu programu, a następnie ładował do pamięci komputera poprzez specjalny czytnik.
Oryginalnie programiści tworzyli programy bezpośrednio w kodzie maszynowym danego komputera, operując sekwencjami liczb. Poszczególne komendy zaczęto szybko wyrażać w językach asemblerowych, w których zamiast liczbowego kodu rozkazu da się było stosować ich symboliczną, czytelną nazwę (np. ADD). Przed uruchomieniem takiego programu należało przetłumaczyć nazwy poszczególnych rozkazów na ich reprezentację liczbową oraz w takiej postaci przeistoczenie 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. Proponował 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 stał się podręcznik języka Fortran, pierwszego języka wysokopoziomowego, który odniósł sukces oraz jest stosowany do dnia dzisiejszego. Pierwszy kompilator Fortranu powstał rok później.
Na lata 60., 70. oraz 80. przypada rozwój zarówno sprzętu komputerowego, jak oraz 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, otwierając tym samym drogę do przemysłu informatycznego rzeszom nowych ludzi. W tamtych czasach oprogramowanie komputerowe nie było przystosowane do prostoty użytkowania, dlatego praca z komputerem bardzo wielokrotnie rodziła potrzebę samodzielnego tworzenia programów. Co więcej, wiele programów w tamtych czasach było dziełem jednej bądź dwóch osób, zatem praktycznie każdy, kto miał odpowiednie zdolności oraz ciekawy pomysł, mógł stworzyć coś rewolucyjnego.
Wraz ze wzrostem stopnia złożoności programów nad projektem musiało pracować coraz więcej programistów, a równocześ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ą.
Praca programisty obecnie
Współcześni programiści pracują najczęściej w dobrze wyposażonych biurach albo laboratoriach komputerowych ze sprzętem niezbędnym do testowania aplikacji. Inżynierowie oprogramowania wielokrotnie podróżują, aby spotykać się z klientami. W powszechnym użyciu są telekonferencje oraz praca zdalna, albowiem postęp technologiczny dopuszcza wykonywanie coraz większej ilości zadań bez konieczności przebywania w biurze.
W zależności od obszaru specjalizacji programistów da się 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 ukazało się także zapotrzebowanie na programistów specjalizujących się w tworzeniu aplikacji działających w środowisku WWW.
Testowanie oraz debugowanie
Osobnym aspektem pracy programisty jest zapewnienie odpowiedniej niezawodności tworzonego oprogramowania. W trakcie tworzenia popełnianie błędów jest nieuniknione - bywają one wynikiem zarówno braku niezbędnych umiejętności, jak oraz pomyłek podczas pisania. Proces wyszukiwania oraz 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 oraz przy pomocy zestawów syntetycznych testów weryfikujących poszczególne komponenty. Dzięki automatycznym środowiskom testowym, bywają one wykonywane bezpośrednio przez komputer posiadający opis czynności do wykonania oraz 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. Firmy powierzają to zadanie pracownikom zwanym testerami, którzy kontrolują na bieżąco jakość tworzonego oprogramowania już od etapu projektowania, a także zajmują się tworzeniem testów[7].
Narzędzia
Programista tworzy oprogramowanie w środowisku komputerowym umożliwiającym jego uruchamianie oraz testowanie. Podstawową jego częścią jest Edytor kodu źródłowego oraz interpreter albo 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 bywają od siebie niezależne albo 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ż występującym kodem czy wykrywanie konfliktów edycji. Ponadto pozwalają cofnąć się do dowolnego momentu w przeszłości oraz przeglądać archiwalne zmiany.
Narzędzia programistyczne nie są związane zaledwie 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 dopuszczają wygenerowanie dokumentacji bezpośrednio z kodu źródłowego. Do projektowania aplikacji wykorzystywane są narzędzia CASE.
Rynek pracy IT w Polsce
Rynek IT w Polsce systematycznie się rozwija, dlatego mimo dużego nasycenia, firmy wciąż borykają się z problemem braku wykwalifikowanych specjalistów w tej dziedzinie. Ministerstwo Nauki oraz Szkolnictwa Wyższego przewiduje, że w latach 2010-2025 będą oni najbardziej poszukiwaną grupą spośród zawodów technicznych[8]. Specjaliści IT należą do najlepiej zarabiających grup zawodowych w kraju, lecz wysokość zarobków jest mocno uzależniona od wybranej specjalizacji[8].
W Polsce nie trzeba posiadać żadnego certyfikatu, aby być programistą. Choć na ważniejsze stanowiska techniczne takie, jak inżynier oprogramowania, pracodawcy wielokrotnie wymagają posiadania wykształcenia wyższego, istotne jest posiadane doświadczenie w stosowaniu wymaganych technologii. Ponadto wykonywanie aplikacji dla wielu sektorów (np. bankowego) wymaga znajomości konkretnej branży oraz uwarunkowań prawnych.
Sprawdź też
Przypisy
Bibliografia