-
Jakie szkoły musiałeś skończyć aby zastać programistą?
Na rozmowach kwalifikacyjnych pracodawcy nie raz mi mówili, że wykształcenie nie jest tu najważniejsze. Liczą się umiejętności. Być może mówili tak dlatego, że i tak miałem dobre studia (Informatyka na Politechnice Poznańskiej).
-
Czy ciężko było ci znaleźć posadę na polskim rynku pracy?
Nie. Jakąkolwiek w miarę przyzwoitą -- bardzo łatwo. Taką super pracę jest trudniej, ale i tak łatwo.
-
W jakim języku programujesz w pracy, a jakie znasz?
Teraz pracuję w branży webowej, a więc: HTML/CSS/JavaScript (dużo zaawansowanego JavaScriptu) z tzw. języków frontendowych, a do tego PHP i Java (niekoniecznie webowa).
Oprócz wymienionych, znam C, C++, C#, sporo kodowałem w Pascalu/Delphi (ale od paru ładnych lat wcale), oczywiście SQL i parę innych języków.
-
Czy nie żałujesz tego, że wybrałeś zawód programista?
Nie. Jak na razie, nie. Ale ten zawód wymaga ciągłej nauki. Wiedzy i doświadczenia wciąż jest mało. Na półce mam jakieś 30 książek informatycznych. Oprócz nich, czytam mnóstwo artykułów (i specyfikacji!) w Internecie. Płace są w tym zawodzie OK jeśli jesteś dobry, ale jestem przekonany, że istnieje wiele zawodów, gdzie wiedzy trzeba mieć mniej, a zarabia się więcej.
-
Ile zarabia przeciętny polski programista (chodzi o przedział np: 1000-2000zł)?
No, więcej niż 1000-2000 zł ;). Jeśli się jest dobrym, to już na ostatnich latach studiów można zarabiać 3000 zł netto nawet w stosunkowo słabo opłacanej branży webowej. Krótko po studiach 4000 netto nie są dużym problemem. Ale pytasz o średnią. Najlepiej to sprawdzić w Internecie, np. w tym raporcie na rok 2009.
-
Co najbardziej denerwuje cię na obecnym stanowisku?
Tak bardzo to mnie nic nie denerwuje. Może moja wciąż za mała wiedza i umiejętności. Denerwuje mnie tzw. rozkład kodu. Gdy projekt się rozrasta, wszystkie złe decyzje projektowe i brak czasu na ich poprawienie zaczynają odbijać swoje piętno. Kod projektu na początku wygląda dobrze i łatwo dodaje się do niego nowe funkcje. Po jakimś czasie jednak przychodzi to coraz trudniej. Coraz więcej czasu trzeba poświęcać na tzw. utrzymywanie. Czyli stanie w miejscu i podejmowanie rozpaczliwych prób, by to wszystko zaczęło działać i by można było bezpiecznie dodać nową funkcjonalność.
Ostatnio mnóstwo czasu poświęcam ostatnio opanowanie sztuki pisania kodu maksymalnie wysokiej jakości. Niestety, jeszcze nie osiągnąłem zadowalającego mnie poziomu. Może dlatego, że bardzo trudno taki poziom osiągnąć. Niewielu osobom się to udaje.
Co jeszcze mi się nie podoba? Nie lubię, gdy trzeba coś zrobić na szybko i mało optymalnie. Raz na jakiś czas naprawdę trzeba coś takiego przepchnąć, choćby z braku czasu. Wiem jednak, że to zawsze do mnie wróci i będę musiał to poprawić. A jeśli również na poprawę nie znajdę czasu, to zaowocuje to wspomnianym rozkładem kodu.
- Jak wygląda twoja praca (czy to jest tak, ze powiedzą Ci zrób kalkulator i masz tyle i tyle czasu) ?
Z czasem to nie jest do końca tak. W dobrych firmach ufają, że programista robi wszystko najszybciej jak może. Programista bezpośrednio nie odczuwa więc aż takiej presji czasowej. Nie naciska się na niego, gdy już robi to co niby ma robić. Przez to jednak nieraz nie pozwala mu się na poprawienie istniejącego kodu, bo nową funkcjonalność trzeba dodać już! Teraz! Natychmiast! Słabsi managerowie nie wiedzą, że tak naprawdę zwykle opłaca się najpierw poprawić istniejący kod, a dopiero potem dodać nowy. Bazując na schludnej części systemu.
Przyznam jednak, że wewnętrznie programista zawsze czuje, że dobrze by było, gdyby to już naprawdę niedługo było gotowe. Deadline'y są. Często. Ale jeszcze mi się nie zdarzyło, żeby ktoś mnie ochrzanił, że się nie wyrobiłem. Choć może to dlatego, że się wyrabiam ;).
Planowanie to zgadywanie. Nie da się superdokładnie wszystkiego przewidzieć i zaplanować idealnego harmonogramu. Programowanie to nie budowanie ściany z cegieł. To nie tak, że pomnoży się czas kładzenia jednej cegły przez całkowita liczbę cegieł do ułożenia i otrzyma się czas ukończenia projektu.
Generalnie jednak presja czasowa na programistę jest odczuwana w ten sposób, że w pracy się nie obijasz. Tu nie ma tak, że pół dnia spędza się na kawce i dyskusjach z kolegami o niczym. Programiści pracują intensywnie. Czasem managerowie chcą się wykazać i przeszkadzają nam, organizując spotkania i temu podobne rzeczy, które w większości przypadków są zupełnie niepotrzebne.
Praca rzeczywiście wygląda tak, że dostaje się opis jakiejś funkcjonalności, która ma się znaleźć w projekcie. Opis bywa ogólny. Programista powinien wtedy zadać tyle niezbędnych pytań, by wiedział dokładnie, co ma zrobić. Generalnie chodzi o to, by maszyna potrafiła zrobić to, co chce człowiek. Przy czym człowiek wyraża swoje intencje przeważnie niezbyt precyzyjnie. Programista wyraża je formalnie i bardzo precyzyjnie -- tak, by maszyna zrozumiała.
Można powiedzieć, że nasza praca polega na rozwiązywaniu problemów. Pisząc programy wyrażamy, co chcemy zrobić, ale również jak to zrobić. Krok po kroku. I każdy z tych kroków składa się z jeszcze mniejszych kroków. I tak dalej.
Sporo uwagi -- szczególnie w przypadku kodowaniu dużych systemów -- poświęca się na ich utrzymanie i jakość. Często też piszemy kod, który sam w sobie niby nic nie robi, ale w przyszłości bardzo ułatwi nam pisanie innego kodu.
Każdy programista pracuje jednak trochę inaczej. Taki frontend-webdeveloper dostaje layout strony internetowej w postaci obrazka. I ma to przerobić na "żywy" HTML i CSS. Programiści tworzący algorytmy dbają z kolei o to, by działały one możliwie najoptymalniej. Programiści piszący aplikacje desktopowe często w dużej części sami projektują swoje interfejsy.
- Czy programista jest zawodem przyszłościowym?
Zdecydowanie tak. Jak ludzie żyjący np. 50 lat temu wyobrażali sobie początek XXI wieku? Latające samochody? Kontrolowanie pogody? Loty na Marsa, lub -- komercyjnie -- na orbitę ziemską? Niczego takiego nie mamy. Na tej linii zawiedliśmy.
Ale ludzie 50 lat temu nie spodziewali się takiego rozwoju informatyki. Nie przewidywali Internetu. Nie wyobrażali sobie, że dostęp do informacji będzie tak powszechny i tak szybki.
Tym wszystkim tak naprawdę sterują programiści. I tak będzie jeszcze przez wiele lat.
- Dlaczego zostałeś programistą?
Bo to ciekawe. Bo się nie nudzi. Programista nigdy nie powinien pisać dwa razy tego samego kodu. Jeśli już raz napisałem kod rozwiązujący dany problem, to gdy drugi raz spotkam ten problem, powinienem użyć gotowego kodu. Więc każdy dzień w pracy programisty powinien być inny.
Zresztą, czy nie jest fajne mówienie komputerowi co ma zrobić, a potem obserwowanie jak dokładnie to robi i jak użytkownicy z tego korzystają? Oczywiście, komputer zawsze zrobi dokładnie to, o co go poprosimy. Ale nie zawsze poprosimy go o to, o co tak naprawdę chcieliśmy go poprosić. Cóż, znajdowanie i naprawianie błędów w kodzie to też chleb powszedni w życiu programisty. I tym optymistycznym akcentem...