Coraz więcej osób widzi swoją przyszłość w zawodzie programisty. Rewolucja informatyczna która dzieje się na naszych oczach spowodowała, że zawód “informatyka” stał się coraz bardziej rozpoznawalny i doceniany. Mimo, że nasze najmłodsze pociechy pytane o zawód nadal wybierają strażaka, policjanta, nauczyciela czy sportowca, to ich starsi koledzy zaczynają traktować zawód programisty na równi z lekarzem, prawnikiem czy ekonomistą. Widać to choćby coraz mocniej na w rankingach najpopularniejszych kierunków studiów. Pomimo różnych stereotypów powielanych latami, programowanie wydaje się stawać społecznie coraz ciekawszym zajęciem na przyszłość. Przyczyniają się do tego oczywiście życiorysy znanych osób takich jak Bill Gates, założyciel firmy Microsoft i jeden z najbogatszych ludzi świata; Steve Jobs i Steve Wozniak, założyciele firmy Apple; Larry Page i Sergey Brin, założyciele firmy Google; Elon Musk, założyciel firm takich jak PayPal, SpaceX oraz Tesla; Mark Zuckerberg, założyciel portalu Facebook czy Kevin Mitnick, jeden z najbardziej znanych włamywaczy komputerowych. Są to ludzie którzy odnieśli niebywały sukces i ich nazwiska są rozpoznawalne na całym świecie, nawet przez osoby nie związane w żaden sposób z informatyką. Programiści oraz ludzie z wykształceniem technicznym coraz częściej stają się także bohaterami filmów i seriali, jak choćby znane Dolina Krzemowa, Technicy magicy czy Teoria wielkiego podrywu.
Historia
Za pierwszego programistę (a właściwie programistkę) w historii uważa się Adę Lovelace, która w październiku 1842 roku opublikowała algorytm przeznaczony do wykonania na maszynie Charlesa Babbage. Niektórzy jednak za pierwszego programistę uważają znacznie starszego Joseph’a Marie Jacquard’a, który stworzył maszynę Jacquarda, którą można było sterować za pomocą kart perforowanych. Początkowo przez dłuższy czas, właśnie na podobnych kartach programowało się komputery. Osobą, która jako pierwsza uruchomiła program na komputerze w 1941 roku był Konrad Zuse.
Za pierwszy wysokopoziomowy język programowania uważany jest język Fortran stworzony w roku 1954. Pięć lat później narodził się język COBOL który powstał dla systemów bankowych. W dwudziestym wieku praktycznie każda transakcja bankowa była przetwarzana przez systemy napisane w tym właśnie języku i jest on używany do dzisiaj. W 1964 roku powstał kolejny znany język programowania zwany BASIC. W 1969 roku narodził się jeden z najpopularniejszych języków programowania, czyli język C, który stopniowo ewaluował w język C++ (1983 rok). W 1994 roku w Holandii wydano pierwszą wersję języka Python który zyskał nazwę od Latającego Cyrku Monty Pythona. W 1993 roku, w Japonii, narodził się język Ruby, który miał czerpać to co najlepsze z języków takich jak Python, Perl i Smalltalk. W 1995 roku narodził się język PHP (Personal Home Page) oraz język Java. Rok później została wydana pierwsza wersja języka JavaScript, będącego najpopularniejszym językiem programowania używanym przy tworzeniu stron internetowych. Ostatni z najpopularniejszych języków programowania narodził się w 2000 roku, kiedy to firma Microsoft opracowała język C#. Oczywiście języków programowania jest znacznie więcej, tutaj tylko historia kilku najpopularniejszych. Jak widać, Java jest jednym z młodszych z obecnie używanych języków programowania.
Kim są programiści?
Informatyka to dyscyplina naukowa wchodząca zarówno w skład obszaru nauk ścisłych w dziedzinie nauk matematycznych, jak i w obszar nauk technicznych w dziedzinę nauk technicznych. Więcej o obszarach, dziedzinach i dyscyplinach naukowych można przeczytać w rozporządzeniu Ministra Nauki i Szkolnictwa Wyższego. Pomijając klasyfikację, informatyka to bardzo szeroka gałąź nauki, mająca swoje podłoże zarówno w matematyce jak i technice. Dlatego pojęcie “informatyk” bywa bardzo mylące i nie wiele mówiące o zawodzie danej osoby. Dlatego programista, czyli osoba tworząca oprogramowanie, zajmuje się informatyką, jednak jest to dużo szersze pojęcie i nie zawsze związane z programowaniem.
O programistach mówi się żartobliwie jako o osobach “przetwarzających filiżanki kawy na kod”. W przypadku języka Java, którego nazwa pochodzi od ziaren kawy z wyspy Java, nabiera to jeszcze większego sensu.
Tak naprawdę programowanie zawodowo odbiega od tego jak możemy sobie ten zawód wyobrażać na początku naszej przygody z programowaniem. Nie zamierzam tutaj w żadnym wypadku nikogo straszyć, a jedynie pokazać pracę programisty z dużo szerszej perspektywy, bowiem okazuje się, że sama umiejętność programowania w wybranym języku, to zaledwie kropla w morzu potrzeb, niczym kropla w filiżance kawy.
Czego się uczyć by zostać zawodowym programistą?
Rzeczą oczywistą jest, że programista powinien znać przynajmniej jeden język programowania. Przynajmniej, bo dzisiaj coraz więcej mówi się o podejściu zwanym Polyglot Programming. Uczenie się wielu języków programowania ma wiele zalet. Możemy zawsze wybierać najwłaściwszy język do konkretnego zastosowania, zwiększając zarazem swoje kompetencje i możliwości. Takie podejście do programowania rozwija nas, bo możemy patrzeć na języki programowania z perspektywy wielu różnych pomysłów i rozwiązań zastosowanych przez ich twórców. Tak naprawdę bardzo często zdarza się, że twórcy jednego języka inspirują się w nowych wersjach pomysłami z innych języków programowania.
Skoro informatyka, a tym samym programowanie, bazuje na matematyce i innych naukach technicznych, okazuje się, że często bywa przydatne posiadanie gruntownej wiedzy teoretycznej. O ile przy tworzeniu prostych aplikacji ta wiedza nie jest nam aż tak potrzebna, to coraz więcej programistów pracuje w projektach związanych z zaawansowanym przetwarzaniem danych, uczeniem maszynowym, sztuczną inteligencją czy obliczeniami rozproszonymi, gdzie taka wiedza jest wręcz niezbędna. Nietrudno znaleźć w internecie oferty pracy firmy Google gdzie oprócz znajomości języka Java, wymagane jest posiadanie stopnia doktora informatyki. Nie każdy oczywiście, chce poświęcić kilka lat by napisać doktorat, nie każdy też będzie pracować przy analizowaniu danych, jednak wiedza na temat tak zwanych algorytmów i struktur danych to minimum, które każdy programista powinien znać i często możemy spotkać się z pytaniami z tego zakresu na rozmowach kwalifikacyjnych.
Programując będziemy musieli poznać także teoretyczne podstawy stojące za ideą programowania obiektowego i funkcyjnego, poznać czym to jest i jak prawidłowo tego używać.
Znajomość jednego czy nawet wielu języków programowania na poziomie wręcz mistrzowskim, wcale nie gwarantuje, że będziemy potrafili pisać dobre programy. Dlatego niezbędna staje się wiedza także z takich tematów jak wzorce projektowe, dobre praktyki programowania czy czystość kodu. W swojej pracy będziemy także mogli spotkać się z takimi terminami jak Domain Driven Design lub Behaviour-Driven Development. Nie raz też usłyszymy o dobrej architekturze naszych aplikacji. Jest to wiedza, której przyswojenie zajmuje sporo czasu i wymaga doświadczenia, ale zwraca się z nawiązką czyniąc z nas dużo lepszych specjalistów.
Kolejnym niezwykle ważnym zagadnieniem podczas programowania jest umiejętność testowania naszego kodu. Musimy tutaj poznać wiele różnych narzędzi i bibliotek jak choćby JUnit, Mockito, AssertJ oraz czym są testy jednostkowe, jak pisać dobre testy jednostkowe, czym jest Test Driven Development oraz przyswoić inne pojęcia z tego zakresu.
Nie da się programować bez poznania odpowiednich narzędzi, począwszy od IDE (Zintegrowane środowisko programistyczne) przechodząc przez bazy danych, narzędzia do budowania jak np. Maven, środowiska Continuous Integration i Continuous Delivery.
Programując nigdy nie piszemy wszystkiego sami, bardzo często korzystamy z kodu napisanego przez innych programistów, dlatego w naszej pracy będziemy używać wielu bibliotek i frameworków do tego służących. Do najpopularniejszych bibliotek i frameworków stosowanych przez programistów Java należą np. Spring i Hibernate.
Jeśli chcemy programować aplikacje internetowe, będziemy także musieli poznać narzędzia takie jak serwery aplikacyjne (np. Tomcat, JBoss), biblioteki JavaScript do tworzenia stron internetowych jak Angular, React czy Vue.jd, język HTML oraz CSS. Jeśli znowu chcemy tworzyć aplikacje mobilne musimy poznać np. środowisko Androida, zaś do pisania aplikacji okienkowych biblioteki takie jak Swing, SWT lub JavaFX.
Współpracując z innymi programistami nad wspólnym projektem, nie sposób obejść się bez narzędzia, które pozwoli nam wymieniać się kodem oraz przechowywać jego historię zmian. Takie narzędzie nazywamy systemami kontroli wersji. Najpopularniejszym systemem kontroli wersji jest Git, z którego możemy bezpłatnie skorzystać na popularnym portalu GitHub.
Pracując w zespole, będziemy też musieli poznać różne techniki prowadzenia projektów pozwalające nam organizować naszę pracę, dlatego nie obce powinny być nam takie zwroty jak Agile, Scrum, Kanban i inne.
Podsumowanie
Jak widać, zostanie programistą wymaga naprawdę sporo pracy. Jeśli marzy się Wam kariera w świecie IT potraktujcie powyższy spis jako listę rzeczy których musicie się nauczyć by osiągnąć sukces. Jednak nie martwcie się, nie jest to wszystko takie trudne jak może na początku się wydawać! Nie wszystko też musicie od razu umieć by dostać swoją pierwszą pracę jako tak zwany młodszy programista lub junior developer, pewne rzeczy będziecie poznawać stopniowo pracując z bardziej doświadczonymi programistami.