Architekt IT o pracy w firmie technologicznej Pentacomp
Na czym polega projekt / Wasza praca?
W Pentacompie realizujemy potrzeby klienta, aby ten mógł płynniej i łatwiej prowadzić biznes. Najchętniej, kiedy wytwarzamy oprogramowanie, pracujemy z klientem nad wymaganiami i funkcjonalnościami, by finalny produkt spełnił oczekiwania.
Działalność Pentacompu to między innymi realizacje dużych, złożonych systemów informatycznych dla urzędów centralnych. Zespół, w którym pracuję, realizuje działania IT dla obszaru celno-podatkowego i transportowego. Jedną z takich realizacji jest Program e-Cło, w ramach którego od lat współpracujemy z Ministerstwem Finansów. Projekt, w którym uczestniczę, czyli wykonanie Systemu SATOS jest częścią projektu „Platforma Usług Elektronicznych Skarbowo – Celnych" (PUESC).
Głównym zadaniem systemu jest wcześniejsze informowanie organów celno-skarbowych o planowanym przybyciu osoby/towaru na przejścia graniczne drogowe i morskie w zakresie ruchu osób i towarów oraz na przejścia lotnicze i kolejowe w zakresie ruchu towarów.
Innym ważnym projektem realizowanym przez mój zespół jest System Kontroli Importu (ICS2). System ma za zadanie gromadzenie danych o wszystkich towarach przeznaczonych do wprowadzenia lub tranzytu przez Unię Europejską.
To tylko niewielka część realizacji Pentacompu. Na co dzień blisko 400-osobowy zespół pracuje w różnych obszarach dla klientów z różnych branż.
Stos technologiczny
Używamy narzędzi, które uznajemy za najbardziej odpowiednie przy realizacji danego projektu. Często jest to .NET z React lub Angular. Czasem stosujemy bardziej specjalizowane biblioteki do konkretnych zastosowań lub zależnie od potrzeb biznesowych oraz baz danych PostgreSQL, MS SQL lub Oracle.
W którą stronę technicznie idziecie?
Myślę, że globalnie w stronę ułatwienia pracy programistom. Staramy się, aby było łatwiej wytworzyć nużące fragmenty oprogramowania, czy to przy użyciu gotowych komponentów/bibliotek, czy korzystając z frameworków, które zapewniają jak najlepszą bazę odpowiadającą potrzebom projektu.
Wszystko po to, aby zająć się zadaniami wymagającymi faktycznej kreatywności lub trudniejszymi pod względem technicznym czy algorytmicznym. Jednocześnie zespoły, pod nadzorem architektów, mają dość dużą swobodę w wyborze kierunku technologicznego, uwzględniając referencje naszych specjalistów i preferencje pracowników.
Oczywiście obserwujemy rynek, zmieniające się trendy, badamy je i weryfikujemy, czy sprawdzą się w realizowanych przez nas projektach. Na przykład obecnie część zespołów projektowych sprawdza w praktyce realizację projektu zgodnie z DDD, a inni wprowadzają do swoich rozwiązań elementy blockchain i nierelacyjnych baz danych. Całość z umiarem i zgodnie z faktycznymi potrzebami.
Pamiętamy o tym, że nie wszystkie krzykliwe, promowane przez media branżowe technologie, są użyteczne w codziennych zastosowaniach naszych klientów. Jedną z ważniejszych cech oprogramowania powinna być łatwość jego długofalowego utrzymywania i rozwoju.
Co jest dla Ciebie ważne w oprogramowaniu, które tworzysz?
Jego użyteczność. Nic nie denerwuje i demotywuje bardziej niż oprogramowanie, które jest nieużywane i nieużyteczne dla klienta. Z aspektów technicznych ważna jest dla mnie czytelność kodu i projektu na takim poziomie, który umożliwia szybkie i skuteczne utrzymanie i rozwój.
Na co zwracasz uwagę u członków zespołu?
Na sumienność i szczerość deklaracji. Chcę wiedzieć, że mogę na nich polegać. Również, jeśli mają z czymś problem, chcę być na bieżąco, by móc im pomóc.
Oczywiście niezbędne są także umiejętności twarde, które najchętniej sprawdzam w praktyce podczas realizacji zleconych zadań. Programista powinien być biegły co najmniej w jednej konkretnej technologii jak np. frontend lub backend .NET, Web API, Web Serwisy (REST/SOAP), React czy Angular. Ważne jest również posiadanie umiejętności korzystania z narzędzi do wersjonowania kodu (np. TFS) i praktyka w dbaniu o jakość kodu.
Dobry programista potrafi w trakcie tworzenia oprogramowania analizować, które części będą mogły być wykorzystane w innych miejscach systemu lub w kolejnych projektach. Ma na uwadze możliwość ponownego jego użycia, by w przyszłości ułatwić tym pracę nie tylko sobie, ale także swoim kolegom. Dobry programista wkłada wiele wysiłku, aby ostatecznie stworzyć prosty i funkcjonalny system, myśli zarówno o procesie utrzymania, jak i ewolucji każdej linii kodu.
Jakie masz hobby?
Wiele różnych. Jednak niezmiennie od kilku lat jest to majsterkowanie i praca z drewnem. Tworzenie rzeczy użytkowych, a niekoniecznie ich kupowanie. Lubię gry planszowe. Nie chińczyk czy warcaby, ale te współczesne, najlepiej wymagające planowania i miło drażniące zwoje mózgowe ilością możliwości w następnym ruchu.
Jakie masz marzenie?
Móc nie przejmować się decyzjami osób rządzących.
Z czego jesteś najbardziej dumny w swoim życiu?
Rodziny, która jest dla mnie radością i wsparciem.