Na czym polega praca programisty?

Czy wiesz kim była Ada Lovelace? Oprócz tego, że brytyjską hrabiną żyjącą w XIX wieku, była też matematyczką oraz poetką, która dość powszechnie jest uznawana za pierwszą programistkę. W trakcie tworzenia publikacji odnośnie maszyny analitycznej, opublikowała algorytm, który został napisany z zamiarem wykonania na tej maszynie. Pomimo iż od tego czasu minęło blisko 200 lat, programistą wciąż nazywamy twórcę, który zajmuje się tworzeniem i rozwojem oprogramowania. Idealny programista podobnie jak hrabina Ada łączy wyobraźnie, kreatywne myślenie ze zdolnościami matematycznymi.


Branża IT to w znacznej części tworzenie oprogramowania, a za nią, od strony informatycznej odpowiedzialni są developerzy. Nie wnikając bezpośrednio w subtelne różnice między developerem, a programistą postaram się odpowiedzieć na pytanie na czym tak właściwie polega praca programisty.

Rola programisty

Tak jak każda inna dziedzina, tak i programowanie dzieli się na specjalizacje. Wytwarzać można przeróżne systemy informatyczne, wspierające pracę dużych firm czy jakieś konkretne procesy, ale postaram się omówić to, co robi typowy web developer, czyli twórca witryn internetowych.

Taki programista może być odpowiedzialny za całość działań zmierzających do wytworzenia działającego oprogramowania – wówczas jest nazywany Full Stack Developerem. Zazwyczaj są to doświadczeni specjaliści po wielu latach pracy. Jednak większość programistów jest odpowiedzialna tylko za jakąś część rozwiązania, aktywnie współdziałając ze specjalistami z innych dziedzin. Najczęściej spotykany podział rozróżnia role odpowiedzialne za różne części typowej aplikacji.

I tak Front End Developer zajmuje się warstwą wierzchnią rozwiązania, inaczej „widokami”, tj. ogółem elementów, które w działającym programie widzimy i na które mamy wpływ. Składają się na nie różne przełączniki, pola wyboru czy formularze lub nawet zwykła treść wpisana w dany styl graficzny. Efektem jego pracy jest więc to, jaki wygląd przybierze witryna i jak będzie się zmieniać wraz ze zmianą warunków, np. podczas zmniejszenia okna przeglądarki, czy otwarcia na telefonie czy tablecie. Wierzcie lub nie, ale wymaga to sporo konfigurowania i „zabawy” z poszczególnymi elementami strony. Dlatego właśnie Front endowiec musi bardzo dobrze znać minimum HTML, CSS oraz przynajmniej mocne podstawy JavaScript, a już na pewno jQuery.

 
Back End Developer zajmuje się wszystkim co dzieje się w tle i nie jest bezpośrednio widoczne dla użytkownika. Najczęściej są to kwestie związane z samym serwerem, aplikacjami działającymi po stronie serwera i bazami danych. Java Developer to chyba najbardziej znamienity przykład, ale backend można tworzyć także w innych językach programowania, m.in. PHP, Ruby, C#. Back end dev dba o komunikację z dowolnym oprogramowaniem próbującym wymieniać dane z aplikacją (np. poprzez API). Jest to więc całość działań składających się na niewidoczny, ale odpowiednio szybki i niezawodny proces przetwarzania i przekazywania danych, stanowiący „mózg” każdej aplikacji.

 
Tak jak wcześniej wspomnieliśmy, praktycznie każdy nowoczesny język programowania oferuje frameworki, które są pewnym szkieletem, gotowym zestawem komponentów. W efekcie ich użycie przy budowie aplikacji znacznie skraca czas programowania. Zanim jednak zaczniemy używać frameworków, dobrze jest opanować SOLIDne podstawy języka programowania, żeby dokładnie wiedzieć co i jak się dzieje.

Rozwój i zarobki

Miejskie legendy mówią tylko o mitycznych programistach zarabiających po kilkanaście tysięcy miesięcznie. Faktycznie jest to poziom do osiągnięcia, ale rzeczywistość bywa często mniej różowa, szczególnie dla początkujących. W praktyce to doświadczenie projektowe jest najważniejsze. Im więcej go zbierzesz, tym masz szanse na lepsze warunki pracy. Jednak pamiętaj – nie od razu Rzym zbudowano. W nauce ważny jest samorozwój, a szczególnie środowisko pracy, więc powinieneś cieszyć się, jeżeli masz doświadczonych kolegów, którzy chętnie dzielą się wiedzą. Większe pieniądze przyjdą z czasem.

Poziom zaawansowania

Polskie agencje i firmy outsourcingowe wyspecjalizowały się w reklamowaniu juniorów jako mega wymiataczy, natomiast na zachodzie i w dużych korporacjach normalne jest, że każdy programista musi przepracować komercyjnie te 3-5 lat, żeby awansować na regulara.

Młodzi ułatwiają takie nierzetelne podejście, bo mają to do siebie, że są przekonani o własnych zdolnościach i szerokiej wiedzy. Zadania wykonują często szybko i niedbale, ważne, żeby jak najszybciej dotrzeć do finału. Takie podejście nie zawsze pozwala zobaczyć szerszy obraz i przewidzieć wszystkie następstwa. Zatem mimo ogromnego zapału do pracy, łatwo jest wpaść w pułapkę. Błąd może kosztować, często nawet kilka godzin odkręcania.

 
Senior to z kolei człowiek z bagażem doświadczeń i często kilkunastoletnim doświadczeniem. Wie co może się wydarzyć, jeżeli wykona swoją pracę źle lub niedbale. Dlatego to właśnie seniorzy najbardziej szanują standardy i dobre praktyki, choć też doceniają niekonwencjonalne podejście, nierzadko ostrzegają przed konsekwencjami, najczęściej mówią „nie”. Oczywiście nie ma co generalizować, bo wszędzie zdarzają się jednostki wybitne, ale nie bez powodu najbardziej doświadczeni są tak cenieni i poszukiwani na rynku.
Nigdzie nie jest powiedziane, że każdy musi zostać kiedyś seniorem. Jeżeli programowanie sprawia ci przyjemność i sam czujesz potrzebę rozwoju, to z pewnością nim zastaniesz. Ale jeżeli nie czujesz tego czegoś i tylko odtwórczo klepiesz kod, to możesz na długo pozostać na poziomie po prostu średnim.

Typowe obowiązki

Praca IT to nie tylko samo pisanie kodu. Mimo że kodowanie najczęściej zajmuje ponad połowę czasu pracownika, to znaczna jej część jest poświęcana na innego rodzaju obowiązki. Najbardziej doświadczeni programiści samodzielnie projektują systemy, stając się architektami aplikacji.

Cenna jest umiejętność konfiguracji środowiska developerskiego, którą w pewnym zakresie developer musi posiąść. W nowoczesnych metodach wytwarzania równie istotne staje się testowanie swojego kodu poprzez różne rodzaje testów (jednostkowe, integracyjne, czy akceptacyjne).

Większość developerów z pewnością powie też, że dużo czasu poświęcają na zapoznanie się z dokumentacją, czy zrozumienie koncepcji i sposobu w jaki ma funkcjonować dana aplikacja. Dopiero odpowiednie wgłębienie się w projektowane rozwiązania pozwala ułożyć sobie pracę w optymalny sposób i we właściwej kolejności. Niemało czasu członkowie zespołów developerskich poświęcają na spotkania i rozmowy z testerami, project managerami czy product ownerami. Dobre zrozumienie wizji systemu i jego poszczególnych elementów jest najważniejsze, aby osiągnąć sukces.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *