Jak zostać Software Architektem?
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:
- Pierwsza i oczywista to rozwój w obszarze, w którym pracuje. Jeśli jesteś młodszym programistą, po prostu rozwijaj się w stronę middle, potem senior, kończąc na lead.
- Przejście do innej niszy technologicznej. W rzeczywistości duża liczba programistów przeniosła się do obszaru mobilnego, gdy systemy iOS i Android OS zyskały na popularności.
- Stań się menedżerem. Jako programista, największym problemem kadrowym, jaki widziałem, był brak kompetentnych menedżerów. Sprytni menedżerowie kosztują, dlatego są rzadcy. Jeśli menedżer ma zaplecze techniczne, to pozwoli mu nadawać na tych samych falach co deweloperzy.
- Zostań architektem oprogramowania.
- Wyjdź z IT. Czasami tak trzeba. Nigdy nie jest za późno, by zająć się tym, co lubisz.
Tak, taka właśnie była moja ścieżka
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ą.
Czy to dla mnie przydatne?
Ten artykuł pomoże Ci, jeśli należysz do jednej z następujących kategorii:
- Programista IT lub inżynier. Nadal rozwijasz się jako programista, ale patrzysz w przyszłość i planujesz swoją karierę. Nawet jeśli cele są początkowo niejasne, osoba, która świadomie wyznacza cele strategiczne, dotrze do nich znacznie szybciej niż osoba, która nie planuje, dokąd zmierza.
- Kierownik zespołu, główny inżynier oprogramowania. Jesteś na najwyższym etapie dyscypliny rozwoju oprogramowania. Aby dalej rosnąć, musisz podjąć wybór, czy chcesz nauczyć się jeszcze jednego stosu technologii, kontynuować karierę poza inżynierią oprogramowania, czy zostać architektem oprogramowania.
- Architekt oprogramowania. Objąłeś to stanowisko niedawno, a może pracujesz w tej dziedzinie od dłuższego czasu. Być może jedną z głównych cech takiego specjalisty jest zrozumienie, że zawsze istnieją obszary, których można nie znać i że proces uczenia się jest ciągły.
- Menedżer IT. Chociaż jesteś menedżerem, doskonale rozumiesz, że powinieneś przynajmniej w przybliżeniu zrozumieć, co robią Twoi podwładni lub współpracownicy. Ostry problem zarządzania to techniczna niekompetencja menedżera w dziedzinie, w której on / ona zarządza.
Kim jest architekt?
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.
Cechy architekta
Komunikatywność
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.
Szeroka i głęboka wiedza techniczna
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.
Odpowiedzialność
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!
Odporność na stres
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.
Umiejętności zarządzania
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.
Umiejętności analityczne
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.
Obowiązki architekta
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:
- Identyfikację interesariuszy projektu.
- Identyfikację wymagań biznesowych i wymagań dla interesariuszy.
- Projektowanie całego systemu w oparciu o otrzymane wymagania.
- Wybór architektury systemu i każdego pojedynczego składnika tego systemu z wysokopoziomowego punktu widzenia.
- Wybór technologii do wdrożenia każdego komponentu i połączeń między komponentami.
- Review architektury. Tak, tak, istnieje.
- Code review.
- Pisanie dokumentacji projektowej i jej wsparcie.
- Tworzenie jednolitych standardów deweloperskich w firmie.
- Sterowanie architekturą podczas następnej iteracji wydania systemu.
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.
Jak zostać architektem oprogramowania?
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.
Czytanie literatury
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.
Studiuj kursy i uzyskuj certyfikaty
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.
Sprawdź swój poziom gotowości
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.