Kim jest Architekt?
Słysząc słowo „Architekt” pierwsze co przychodzi nam do głowy to specjalista, który działa w dziedzinie projektowania i wznoszenia budowli. Zastanawialiście się może nad pracą Architekta, który nie wznosi ogromnych wieżowców, a jego dziedziną jest branża IT? A może widziałeś ogłoszenia o pracę, gdzie szukano „Architekta Systemów”? W tym wpisie postaram się wyjaśnić czym zajmuje się Architekt i kim dokładnie jest.
Mówiąc bardzo krótko Architekt Systemów to osoba odpowiedzialna za przygotowanie projektu systemu oraz nadzorowanie, aby został on zaimplementowany zgodnie z planami projektowymi.
Na czym polega praca Architekta?
Do zaprojektowania architektury systemu, niezależnie od stopnia jego złożoności, konieczna jest dobra znajomość wymagań funkcjonalnych oraz niefunkcjonalnych. Architekt musi bardzo dobrze znać oczekiwania stawiane przed systemem, aby adekwatnie do nich zaproponować optymalną architekturę.
W zależności od organizacji oraz specyfiki danego projektu architekt może operować na różnych poziomach:
- od skali makro, w której skupia się na wysokopoziomowych komponentach systemu (aplikacjach, usługach, podsystemach) oraz ich integracji poprzez udostępniane interfejsy,
- po skalę mikro, w której projektuje strukturę zależności klas, modele danych oraz algorytmy logiki biznesowej w oparciu o powszechnie przyjęte wzorce projektowe.
Wynikiem pracy architekta najczęściej są dokumenty opisujące projektowany fragment systemu, w tym m.in:
- dokumentacja techniczna opisująca szczegóły architektury (tj. występujące w systemie komponenty: moduły, aplikacje, serwery, usługi oraz sposób ich integracji i zachodzące interakcje),
- diagramy UML (diagramy klas, komponentów, sekwencji, aktywności, itp.).
Bardzo często zdarza się, że architekt planując użycie danego rozwiązania przygotowuje dla niego tzw. „Proof of Concept”, czyli uproszczoną implementację mającą na celu pokazać koncepcję działania danego mechanizmu oraz zweryfikować jego wykonalność.
Z kim Architekt ściśle współpracuje w projekcie?
Jak zostało wcześniej wspomniane, znajomość funkcjonalnych i niefunkcjonalnych wymagań jest kluczowa w celu przygotowania optymalnej architektury, dlatego też architekt często współpracuje z analitykami biznesowymi, a w mniejszych projektach bezpośrednio z klientem. Po uwzględnieniu wymagań i przygotowaniu projektu systemu, architekt przekazuje go zespołowi developerskiemu do implementacji. Architekt ściśle współpracuje z developerami, szczególnie w projektach prowadzonych w metodykach zwinnych (np. Scrum), jest to praca iteracyjna, w trakcie której architekt projektuje kolejne fragmenty systemu, a zespół developerski je implementuje.
Na jakich obszarach wiedzy należy się skupić, aby zostać w przyszłości Architektem?
Jest kilka obszarów szczególnie istotnych dla architekta:
- biegłość w programowaniu (architekci często specjalizują się w wybranych technologiach np. .NET/Java),
- znajomość wzorców projektowych i dobrych praktyk programistycznych,
- znajomość wzorców architektonicznych,
- znajomość interfejsów komunikacyjnych (REST API, SOAP, gRPC, GraphQL, etc.),
- znajomość podstawowych sposobów integracji pomiędzy systemami (kolejki, szyny komunikacyjne).
Od Stażysty do Architekta – ścieżka rozwoju.
Najczęstszą (choć nie jedyną możliwą) ścieżką rozwoju dla architekta jest ścieżka związana z programowaniem. Często po osiągnięciu odpowiedniej biegłości w zakresie implementowania systemów starsi programiści, chcąc mieć większy wpływ na ich kształt, zaczynają patrzeć na nie z szerszej perspektywy i skupiać swoją uwagę nie tylko na sposobie implementowania, ale również koncepcji działania, integracji oraz projektowaniu rozwiązań dla całego systemu. To właśnie wtedy najczęściej obejmują rolę architekta w projekcie.
Plusy i minusy pracy na tym stanowisku.
Praca architekta przynosi niebywałą satysfakcję, gdyż jest bardzo twórcza – każdy projekt jest inny, a zatem pojawiające się problemy i wyzwania także są różne. Architekt poszukuje optymalnych rozwiązań tych problemów w oparciu o wymagania i ograniczenia projektowe. Obserwowanie jak pomysły i koncepcje przeobrażają się w działający system daje wiele radości.
Podejmowanie decyzji dot. architektury systemu wiąże się jednak z dużą odpowiedzialnością – źle zaprojektowana architektura może spowodować, że cały system lub jego fragment nie będzie działał zgodnie z oczekiwaniami.
Gdybym mógł cofnąć czas, czy dalej zostałbym Architektem?
Zdecydowanie tak – to niezwykle pasjonująca praca.
Piotr Molski, https://inetum.pl/pl/