Branża IT to nie tylko programiści — aby projekt mógł zostać zrealizowany z sukcesem potrzeba wielu ludzi o różnych kompetencjach. Ten post ma na celu przedstawić w kilku słowach poszczególne role — być może któraś z nich wyda Ci się bardziej interesująca niż programowanie. A jeśli nie, warto wiedzieć do kogo zwrócić się z jakim problemem.
Wpis ten traktuj jako wstęp do serii wywiadów #KulisyBranżyIT, w których zbieramy historie ludzi z branży.
Analityk biznesowy
Analityk biznesowy zajmuje się ‘tłumaczeniem’ wymagań klienta na język techniczny, tj. na specyfikację. Do jego obowiązków należy dbanie o to, aby dokumentacja odzwierciedlała stan faktyczny i była spójna.
Analityk najczęściej rozwiązuje dwa rodzaje problemów — wyjaśnia i doprecyzowuje pewne sformułowania czy kwestie z dokumentacji oraz reaguje i wprowadza zmiany, gdy zmieniają sie wymagania, harmonogram czy priorytety.
Analitykiem biznesowym najłatwiej zostać poprzez zmianę roli z programisty w kierunku analityka, natomiast można też samodzielnie się tego nauczyć. Kluczowymi kompetencjami analityka biznesowego są kompetencje miękkie (konieczne do współpracy z klientem), obycie z dokumentacją techniczną, bardzo dobra znajomość formalnych języków zapisu dokumentacji (np. UML, BPML). Bardzo pomocne jest, gdy analityk zna co najmniej w stopniu dobrym technologię z którą pracuje firma.
Programista / developer
Programista w dużym uproszczeniu pisze aplikacje na podstawie dokumentacji. Obowiązki na tym stanowisku są jednak szersze, opisaliśmy je bliżej w osobnym artykule.
Przeczytaj więcej o roli programisty, czym się zajmuje i co musi wiedzieć.
W pracy programisty najważniejsza jest znajomość technologii oraz doświadczenie w projektach.
Jak wygląda praca programisty w praktyce? O tym opowiedzieli nam Diogo, Tomek, Kuba, Ania.
Architekt
Architekt to rola ściśle techniczna, jest on odpowiedzialny za tworzenie architektury (nie ma jednej, zwięzłej definicji czym jest architektura — na tą chwilę przyjmijmy bardzo uproszczoną i nie do końca prawdziwą definicję, że architektura to zbiór zasad i reguł, wg których tworzone jest oprogramownie i wg których różne aplikacje (lub różne moduły tej samej aplikacji) komunikują się ze sobą) i wdrażanie jej w realizowanych projektach. Najczęściej nadzoruje projektowanie oprogramowania lub sam uczestniczy w tym procesie.
Osoba na tym stanowisku musi być ekspertem nie tylko w danej technologii, powinna mieć także świadomość aleternatyw oraz znać ich wady i zalety. Formalne języki opisu (UML, BPML) są absolutną podstawą. Istotna jest także znajomość metodyk tworzenia i rozwijania architektury (np. TOGAF czy z prostszych SAF, Siatka Zachmana). Architekt jest też mentorem dla reszty zespołu, dlatego zdolności interpersonalne nie są bez znaczenia. Odpowiada za rozwiazywanie problemów technologicznych, prewidywanie ich i eliminowanie zanim się zmaterializują.
Project manager
Najmniej ‘techniczna’ z wymienionych ról, niemniej bardzo ważna w projekcie. Project Manager dba o to, żeby terminy zostały dotrzymane, budżet nie został przekroczony a plan wykonany. Reaguje na sytuacje wyjątkowe (np. znaczne uszczuplenie zasobów ludzkich, zmiana zakresu projektu, problemy z realizacją planu itp). Bezpośrednio odpowiada za sukces lub porażkę projektu. Stanowisko to jest bardzo odpowiedzialne i stresujące, często wymaga poświęcania dodakowego czasu.
Stanowisko to stricte nie wymaga eksperckiej wiedzy technicznej, jednak jest ona przydatna aby rozmawiać z innymi członkami zespołu czy weryfikować efekty ich pracy. Niezwykle ważne są tutaj umiejętności miękkie, zdolności przywódcze oraz znajomość metodyk zarządzania projektami które porządkują cały proces i narzucają pewne ramy na określone role. Osoba na tym stanowisku musi być dobrym słuchaczem i być w stanie zwięźle przekazywać istotne informacje do przełożonych.
O pracy PM opowiedziała nam Karolina, przeczytaj wywiad z serii #kulisyBranżyIT.
Webmaster / Frontend developer / programista frontend
Programista frontend zajmuje się ‘widoczną’ częścią aplikacji, czyli tym co użytkownik końcowy widzi jako np. stronę internetową. Kompetencje techniczne w danej technologii są mniej kluczowe, ważna jest znajomość bieżących trendów w zakresie UX/UI (usability i projektowanie interfejsów), przydatny jest zmysł estetyczny (choć nie wymagany).
Do obowiązków osoby na tym stanowisku należy łaczenie tego, co zwraca kod tworzony przez programistów (np. obiekty, listy, jakieś dane) z interfejsem użytkownika i sprawienie, że kliknięcie np. w przycisk na stronie internetowej wywoła odpowiednią akcję.
Ponieważ większość aplikacji tworzonych obecnie ma interfejs w postaci strony internetowej (tzw. aplikacje webowe), najczęściej na tym stanowisku pożądana jest znajomość technologii HTML5, JavaScript (oraz bibliotek, np. jQuery, YUI), Angular.JS itp.
Jak taka praca wygląda w praktyce? O tym opowiedziała nam Karolina.
Tester
Tester to druga z ról, która nie wymaga ścisłej wiedzy eksperckiej związanej z technologią w której działa aplikacja. Zadaniem testera jest upewnienie się, że aplikacja działa zgodnie z założeniami i dokumentacją, że realizuje cele nakreślone przez klienta oraz że jest prawidłowo zabezpieczona przed niewłaściwym użyciem (np. wpisaniem liter w polu, w którym powinna być liczba itp). Często testerzy odpowiedzialni są także za tworzenie automatycznych scenariuszy testowych umożliwiających szybkie sprawdzenie wielu przypadków.
Tester powinien sprawnie posługiwac się komputerem, dobrze, jesli zna i potrafi korzystać z narzędzi do wspierających testy (Selenium, SoapUI, Fitnesse itp). Powinien mieć przynajmniej podstawowe obycie z aplikacjami webowymi, aby móc precyzyjnie opisywać znalezione problemy (używając właściwej terminologii i podając wystarczającą ilość szczegółów i detali).
Przeczytaj co o pracy testera opowiedziała nam Alicja.
CTO / CIO
Oba stanowiska są rolami menedżerskimi, stanowisko to jest osiągalne właściwie tylko poprzez awans z roli Architekta / Project Managera / Analityka biznesowego lub poprzez przejście z innej firmy. Stanowiska te łączą aspekty techniczne i biznesowe, przy czym zakres obowiązków i istotność każdego ze stanowisk zależą od profilu konkretnej firmy.
CTO jest rolą bardziej techniczną — osoba na tym stanowisku decyduje o tym, jakie technologie będą używane i rozwijane w organizacji, wybiera dostawców sprzętu i rozwiązań ‘niskopoziomowych’ (infrastrukturalnych, platformy itp). Rola ta zyskuje na znaczeniu, gdy organizacja dostarcza technologie (np. firmy dostarczające oprogramowanie na zamówienie), a ma mniejsze znaczenie w przypadku firm świadczących usługi.
CIO jest rolą ściślej biznesową — osoby na tym stanowisku odpowiadają za to, co się dzieje z informacjami w firmie, tzn. w jaki sposób sa one przetwarzane, przechowywane, zabezpieczane itp. Decydują np. o wyborze konkretnego oprogramowania używanego w organizacji, zarządza rozwojem wewnętrznego oprogramowania itp.
Powyższy podział jest raczej umowny i bardzo zależny od konkrentej organizacji. To, co się nie zmienia to fakt, że rola CTO jest bardziej techniczna od roli CIO, obie są związane z zarządzaniem i łączą wiele różnych obszarów wiedzy i kompetencji.
Powyżej opisane stanowiska pokazują różne ścieżki rozwoju w IT. Wpis ten traktuj proszę jako wstęp do serii wywiadów z ludźmi z branży, nad którymi obecnie pracujemy. Wierzę, że po zapoznaniu się również z nimi będziesz mieć pełen obraz tego, jak różne ścieżki rozwoju można obrać. Na razie pomyśl co może być dla Ciebie i śledź naszego bloga na bieżąco by poznać dokładnie specyfikę poszczególnych pozycji.