Zgodzicie się, że pracownicy branży IT to chyba jedna z najbardziej uprzywilejowanych grup zawodowych. Zarobki całkiem niezłe, firmy prześcigające się w benefitach. Ogólnie rynek pracownika. Może nie mamy tak jak górnicy czternastek, no ale nikt nie zamieni chyba swojego biura wyposażonego w ekspres parzący piętnaście rodzajów kawy, na ciasny korytarz kilometr pod ziemią nie?
Nic zatem dziwnego, że do naszego programistycznego świata nowi kandydaci walą drzwiami i oknami. Na rynku wysyp szkół programowania oraz kursów online uczących chyba każdej możliwej technologii. Za moich czasów istniało przeświadczenie, że trzeba odbębnić pięć lat polibudy. Teraz wystarczy trzymiesięczny bootcamp i już można załapać się na junior developera.
I w zasadzie nic w tym złego. Skoro rynek potrzebuje tylu specjalistów, to trzeba mu ich zapewnić.
Jako że paręnaście lat już przepracowałem i trochę widziałem, to postanowiłem i ja również podzielić się kilkoma radami dla młodszych kolegów po fachu. Postaram się jednak, żeby moje rady były trochę inne niż te, które do tej pory czytałeś.
1. Poznaj domenę biznesową projektu
Istnieje takie przekonanie, że programista nie musi wcale rozumieć biznesu, który korzysta z softu wychodzącego spod jego palców. W niektórych przypadkach jest to prawda i da się tak pracować. Jednak moje zdanie jest takie, że rozumienie domeny biznesowej jest kluczowe, aby tworzyć optymalne rozwiązania. W przypadku analizy problemów produkcyjnych taka wiedza jest nieczęsto wymagana. Podbijające obecnie naszą branżę podejście Domain Driven Design wymusza wręcz konieczność rozumienia domeny i odzwierciedlanie jej w kodzie aplikacji. Jeśli będziesz nie tylko pisał dobry kod, ale także będziesz rozumiał biznes to …
… Twoja wartość jako specjalisty IT wzrośnie.
2. Zrozum technologie jakich używasz
Załóżmy, że zaczynasz jako Java developer przy projekcie backend’owym. Wyjaśnili Ci już, że używacie Spring boota, tworzysz klasę z adnotacją @RestController, pare linii kodu i proszę, przeglądarka wyświetla Ci pięknego JSONa. Easy isn’t it? Z takim poziomem wiedzy o framework’u można całkiem długo pociągnąć. Jednak nie o to chodzi. Obecne framework’i robią kosmiczną robotę za nas ale powodują, że nie znamy podstaw. Moja rada jest taka: zrozum te podstawy. Jeśli to możliwe popatrz na kod bibliotek, których używasz. Zrozum jak działają i w jakim otoczeniu pracują. Poucz się o serwerach aplikacyjnych, na których jest zainstalowane oprogramowanie, które tworzysz. Jeśli jesteś programistą aplikacji webowych w języku Java, to czy umiałbyś napisać i zdeployować servlet? Pamiętaj, jeśli będziesz znał fundamenty to …
… Twoja wartość jako specjalisty IT wzrośnie.
3. Nie wynajduj koła na nowo
Znaczna część problemów, z którymi przyjdzie Ci się mierzyć, została już sklasyfikowana. Być może jest już spisana w postaci standardu albo istnieje gotowy wzorzec projektowy. Nie wynajduj koła na nowo. To jest prawdopodobieństwo graniczące z pewnością, że Twój case nie jest wyjątkowy. Nie porywaj się też na implementowanie custom’owych rozwiązań, gdy istnieją gotowe biblioteki. Jeśli nauczysz się dobierać wzorce projektowe i gotowe biblioteki do konkretnych zagadnień to…
… Twoja wartość jakoś specjalisty IT wzrośnie.
4. Nie rzucaj papierami, kiedy okaże się że masz robić przy utrzymaniu
Wiem, że pisząc ten punkt pozbawiam dalszą cześć artykułu wielu czytelników, ale taka jest właśnie moja rada dla Ciebie. Nie każę Ci pokochać utrzymania. Nie będę Cię przekonywał, że to nie jest brodzenie po kolana w gównie, bo często tak właśnie jest. Nie będę Cię też przekonywał, że powinieneś pracować w utrzymaniu całe życie, bo zdecydowanie nie powinieneś. Jednak doświadczenie jakie zdobędziesz obcując z aplikacjami działającymi produkcyjnie jest nieocenione. Będziesz miał styczność z całym wachlarzem problemów, które nigdy nie wystąpią gdy po aplikacji klikają jedynie testerzy i automaty. Wszystko czego doświadczysz spowoduje, że będziesz pisał lepszy kod i …
… Twoja wartość jakoś specjalisty IT wzrośnie.
Poświęciłem temu też osobny post, który znajdziesz tutaj.
5. Naucz się nie brzmieć jak kosmita
Prędzej czy później ktoś wpadnie na pomysł, żeby zabrać Cię na spotkanie z tak zwanym biznesem. Z biznesem, czyli z ludźmi, którzy nie są programistami lecz są na przykład przedstawicielem klienta, analitykiem biznesowym lub przysłowiową Panią Krysią, która będzie klikać w aplikacji, którą właśnie tworzysz. Naucz się dostosowywać język jakim się posługujesz na takich spotkaniach. O ile klient jest w stanie ogarnąć jeszcze co to jest Web Service, to pojęcia WSDL czy JSON będą dla niego kompletną abstrakcją. W momencie, gdy z Twoich ust pada słowo kompilacja, automatycznie przestają Cię słuchać tylko kiwają głowami. Argumenty w stylu „potrzebujemy tygodnia na refactoring bo kod jest brzydki” sprawiają, że robią szybką kalkulację w pamięci i chowają portfel głęboko do kieszeni.
Rozmawianie z ludźmi nietechnicznymi o projekcie, a przede wszystkim uzasadnianie im swoich racji jest mega trudne. Jednak gdy/jeśli posiądziesz taką umiejętność to …
… Twoja wartość jako specjalisty IT wzrośnie.
6. Szlifuj język angielski
W niektórych ofertach pracy przeczytasz: „język angielski w stopniu umożliwiającym czytanie dokumentacji technicznej”. Z tym większość programistów nie ma problemu. Jednak moim zdaniem to zdecydowanie za mało. Obecnie znaczna część firm współpracuje z klientami z zagranicy. Ba, niektóre firmy świadomie obierają strategię, aby nie współpracować z klientami z Polski. Kontrahenci z zagranicy bardzo często chcą mieć wpływ na kształt zespołu. Oznacza to z reguły, że będą chcieli przeprowadzić rozmowę z każdym kandydatem na programistę w projekcie. Jeśli Twój angielski nie jest na poziomie wystarczającym do przeprowadzenia takiej rozmowy, to możesz zamknąć sobie drogę do wielu ciekawych projektów. Jeśli jesteś w stanie swobodnie rozmawiać w języku angielskim to …
… Twoja wartość jako specjalisty IT wzrośnie.
7. Zrozum, że projekt ma zarabiać pieniądze
Projekty w których pracujesz nie powstają po to, żeby zapewniać Ci możliwości ciągłego rozwoju. One są po to, żeby firma zarabiała na nich pieniądze, a klienci firmy zarabiali na powstałym sofcie. Zaskakujące nie? Przepraszam, że pozwoliłem sobie na odrobinę sarkazmu, ale odnosiłem niekiedy wrażenie, że ludzie tego nie rozumieją. Spróbuj czasem spojrzeć na swoją pracę z perspektywy prezesa firmy lub klienta. Zrozumiesz wtedy skąd biorą się niektóre decyzje. Sam zaczniesz zauważać, że może nie wszystkie Twoje pomysły mają uzasadnienie. Nauczysz się, że wytwarzanie oprogramowania to sztuka kompromisów. Jeśli poza kodem będziesz rozumiał też finanse to …
… Twoja wartość jako specjalisty IT wzrośnie.