Czy zastanawiałeś się kiedyś, jakie możliwości rozwoju kariery ma deweloper? Jakie kierunki kryją się za którym horyzontem? A co najważniejsze, gdzie są programiści po 45 roku życia? Czy wśród Twoich znajomych znajdzie się programista, który ma ponad 45 lat? Osobiście znam kilku programistów wykraczających poza ten wiek, a wielu z nich to hardkorowi programiści, którzy pamiętają jeszcze karty perforowane.
Istnieje kilka ścieżek kariery, którymi może pójść programista:
W ciągu ostatnich 8 lat pracowałem z Java EE, następnie przeniosłem się na iOS i zostałem kierownikiem zespołu. Zarządzałem różnymi zespołami programistów, w tym Androida i Weba. Stworzyłem architekturę warstwy sieciowej dla kilku usług opracowanych przez firmę, z socketami i REST API. Zapoznałem się z rolą menedżera i perspektywą rozwoju w tym kierunku, będąc na stanowisku lidera zespołu przez ponad dwa lata. Jednak w mojej obecnej roli celem jest rozwój jako architekt oprogramowania.
Dla większości programistów funkcja architekta w projekcie jest często niejasna, więc w tym artykule postaram się znaleźć odpowiedzi na różne pytania, które dotyczą tego tematu. Kto jest architektem, jaki jest zakres obowiązków i jak rozwijać się w tym kierunku oraz podam przykładowy zarys i plan działania dla początkujących, którzy chcą podążać tą ścieżką.
Ten artykuł pomoże Ci, jeśli należysz do jednej z następujących kategorii:
Zanim przejdziemy do bardziej szczegółowych pytań, należy zdefiniować rolę architekta oprogramowania i jego obowiązki.
Architekt oprogramowania jest ekspertem w dziedzinie oprogramowania, który dokonuje wysokopoziomowych wyborów dotyczących projektu i dyktuje standardy techniczne, w tym standard kodowania, narzędzia i platformy. Wiodący ekspert jest nazywany głównym architektem.
(źródło: Wikipedia)
Podobnie jak na większości wysokich stanowisk, nie ma jasnych kryteriów definiujących tę rolę. Jednak istnieje szereg obowiązków i cech, które przyczyniają się do rozwoju kariery architekta.
Po rozmowach z wieloma architektami oprogramowania słyszałem, że jest to jedna z najważniejszych cech tego specjalisty. W ciągu dnia pracy muszą rozmawiać z klientami w języku biznesowym, menedżerami wszystkich szczebli, analitykami biznesowymi i programistami. Jeśli masz naturalną charyzmę i wiesz, jak przekonać ludzi, będzie to ogromny plus, ponieważ bardzo ważne jest prawidłowe wyjaśnienie swoich działań. Architekci są lakonicznymi, elokwentnymi i kompetentnymi mówcami. Architekci oprogramowania, z którymi rozmawiałem, mają wysoko rozwinięte umiejętności w zakresie komunikacji i perswazji. Powodem, dla którego ta cecha jest najważniejsza, jest to, że architekt w tej roli uczestniczy w większości ważnych dyskusji, a często osiągalne muszą być kompromisy, które są akceptowalne i korzystne dla wszystkich zaangażowanych stron.
Powinno to być oczywiste, ponieważ nie można zostać architektem oprogramowania z wykształceniem medycznym. Ponadto architekt zazwyczaj ma wiedzę w kilku stosach technologicznych na przyzwoitym poziomie i powinien dobrze rozumieć jeszcze kilka innych. Architekt oprogramowania powinien być również przygotowany na skomponowanie dużej liczby dokumentacji technicznej, raportów i diagramów.
Powinieneś zrozumieć, że decyzje architekta są zwykle najdroższe. Dlatego osoba na tym stanowisku powinna przyjąć najbardziej odpowiedzialne podejście do swojej pracy i podjętych decyzji. Jeśli błąd dewelopera kosztuje kilka dni pracy jednej osoby, błąd architekta może kosztować ludzi i lata spędzone nad skomplikowanymi projektami!
Będziesz zmuszony podejmować ciężkie decyzje. Będziesz pracować z różnymi ludźmi, z różnych obszarów, będziesz musiał radzić sobie z szybko zmieniającymi się wymaganiami lub nawet ze zmieniającymi się otoczeniami biznesowymi. Dlatego konieczne jest, abyś był gotowy na stres i żebyś stale szukał sposobów na uniknięcie negatywnych emocji. Praca jest zawsze efektywniejsza i ma sens, gdy przynosi przyjemność. Jeśli wybierzesz tę rolę tylko dla pieniędzy - pomyśl jeszcze raz.
Obejmuje to zarówno umiejętności organizacyjne, jak i przywódcze. Niezbędna jest sprawność kierowania zespołem, który może być rozproszony i składać się z bardzo różnych specjalistów.
Nawet jeśli specjalista ma szeroką erudycję w dziedzinie technologii, wypróbował wiele rzeczy samodzielnie lub uczestniczył w projektach różnych typów, nie gwarantuje to, że może łatwo przestawić się na styl myślenia architekta. Jednym z najważniejszych zadań jest zdolność do reprezentowania abstrakcyjnego problemu w postaci pewnego dobrze zdefiniowanego, rzeczywistego obiektu w systemie, który deweloperzy już oceniają, projektują i rozwijają. Doskonałe umiejętności komunikacyjne są niezbędne do wyraźnego przedstawienia abstrakcji w postaci ostatecznego systemu dla członków zespołu i klienta. Konieczne będzie wyraźne komunikowanie się zarówno z biznesem, jak i zespołem odpowiedzialnym za rozwój, co jest jeszcze do zrobienia.
Jeśli mówimy o obowiązkach architekta, oto doskonały przykład z XIX wieku na temat budowy mostów. W tym czasie testy nowo zbudowanego mostu były następujące: kluczowa grupa inżynierów, architektów i pracowników stała pod mostem, podczas gdy pierwsze pojazdy były na nim. Byli gotowi postawić własne życie na rzecz konstrukcji i siły struktury. Jeśli więc pojawia się pytanie - za co odpowiada architekt oprogramowania w projekcie? Odpowiedź brzmi: on jest odpowiedzialny za wszystko.
Jeśli zrezygnujesz z głośnych i pięknych fraz, praca architekta obejmuje:
To tylko podzbiór obowiązków architekta oprogramowania. Najważniejszą odpowiedzialnością jest pełne wsparcie techniczne projektu od momentu jego powstania, przez wydanie produktu, po rozwój ulepszeń i wspieranie kolejnych wydań. Konieczne będzie przełączanie się między wieloma różnymi zadaniami w ciągu dnia pracy.
Przede wszystkim ważne jest określenie kluczowych celów, które prowadzą do osiągnięcia strategicznego celu, jakim jest zostanie architektem oprogramowania. Dla mnie takie zamierzenie na najbliższe sześć miesięcy to:
Zrozum i wypróbuj kilku stosów technologicznych
Moja aktualna wiedza koncentruje się na dziedzinie iOS. Konieczne jest wypróbowanie systemu Android, kilku języków serwerowych, aby zacząć z Pythonem i odświeżyć umiejętności Java EE. Architekt jest twórcą pełnego stosu, dlatego ważne jest posiadanie szerokiej wiedzy technicznej.
Ważne jest, aby określić najcenniejsze książki i artykuły, które pomogą rozwijać się w tym kierunku. Zazwyczaj najskuteczniejszym sposobem znalezienia takiej literatury jest poproszenie innych specjalistów w tej dziedzinie o zalecenia.Znajdź mentora
Pożądane jest znalezienie architekta oprogramowania w Twoim obecnym miejscu zatrudnienia. Zawsze łatwiej jest zdobyć doświadczenie od wyszkolonego specjalisty niż zacząć rozważać dany obszar od zera. Ważne jest, aby być przygotowanym na zadawanie dobrych pytań swojemu mentorowi.
Dostępnych jest wiele kursów i certyfikatów, ale tylko kilka jest wartych swojej ceny, a te na wyższym poziomie kosztują naprawdę dużo pieniędzy. Osobiście uczestniczyłem w kursach architektonicznych Luxoft, które okazały się godną inwestycją. Niezwykle ważne jest, aby wykładowca kursu był profesjonalistą w tej dziedzinie i potrafił odpowiadać na pytania.
Jeśli chodzi o certyfikaty, przed rozpoczęciem najlepiej jest zrozumieć, czy istnieją autorytatywne systemy certyfikacji dla architektów i czy warto uzyskać certyfikację. Ten punkt omówię w przyszłym artykule z tej serii.
Jedną z najważniejszych części jest jasne i stałe ocenianie planu. Trzeba ocenić, co zostało zrobione, co powinno zostać poddane dalszej ocenie, gdzie przyspieszyć lub jaki cel usunąć jako bezużyteczny.
Jeśli zastanawiasz się nad wypróbowaniem tej ścieżki, warto upewnić się, że naprawdę tego chcesz.
Po pierwsze, ludzie boją się wszystkiego, co nowe. Nowa pozycja, nowy rodzaj stresu, w przeciwieństwie do wygodnego status quo. Oczywiście wybór nie zawsze jest jednoznaczny i zależy od tego, ile chcesz zmienić coś w swoim życiu. Jednocześnie może to zależeć nie tylko od Ciebie, ale także od rodziny, Twoich zobowiązań finansowych, rodziców i innych czynników.
Po drugie, ta ścieżka trwa kilka lat. Proces stawania się architektem oprogramowania nie następuje z dnia na dzień. Jako lider zespołu zdałem sobie sprawę z tego, co robić i jak radzić sobie ze stresem zaledwie rok po tym, jak zostałem powołany na oficjalne stanowisko. W tym samym czasie sześć miesięcy wcześniej, wykonałem to nieoficjalnie.
Jeden z architektów oprogramowania, którego znam, powiedział, że rozumie, jakie są jego obowiązki po 18 miesiącach od awansu do tej roli. Takie odstępy czasu są normalne i musisz zrozumieć, czy jesteś gotowy, aby iść w tym kierunku. Nawet jeśli nie masz gotowego, dobrze zaplanowanego planu, lepiej zacząć robić małe kroki, które posuwają Cię do przodu, zamiast pozostawać w tym samym miejscu.
Stanie w miejscu w IT to synonim stagnacji i zaciągniętego życiowego hamulca.