Na 
4Developers odbył się Panel dyskusyjny nt. architektury, architektów i architekcenia:). Trudno powiedzieć, żebyśmy udzielili odpowiedzi na jakieś konkretne pytania, ale było miło. Chociaż padało pytanie o rolę/stanowisko architekta i jego miejsce w procesie, to wydaje mi się, że byłem odosobniony w zdaniu, że bez tradycyjnego architekta można się obejść. Podłapałem tę myśl od 
Scotta Amblera i po moich doświadczeniach z różnymi zespołami jestem przekonany, że to ma sens.
Ankietowałem kiedyś obsesyjnie, architektów (różne stanowiska różnie się się w firmach nazywają i mimo istniejących jakichś tam typologii, każdy nazywa je sobie po swojemu), aby namierzyć, co konkretnie robi osoba określana jako "architekt". Zbiorcze zestawienie przedstawiam poniżej.
| Jaki jest Twój zakres obowiązków jako Architekta? | 
| 
 Odpowiadanie na pytania dotyczące struktury systemuDefiniowanie interfejsów do/z systemów powiązanychDecydowanie o wykorzystywanej technologii na poziomie systemuProjektowanie deploymentu systemuDecydowanie o organizacji i rozmieszczeniu komponentów? Który kod umieszczany jest w bibliotekach, programach, gdzie są zewnętrzne biblioteki, co jest ładowane statycznie co dynamicznie?Utrzymywanie dokumentacji dotyczącej architektury system Zdefiniowanie struktury dokumentacjiOkreślenie, które domeny biorą udział w danej funkcjonalności (co zapisują, co trzeba odczytać), jakie nowe interfejsy trzeba udostępnić, a jakie zmienićProwadzenie prac R&D
 | 
| Z jakimi pytaniami należy zwracać się do Architekta? | 
| 
 Ja ma odbywać się interakcja pomiędzy modułami/częściami systemu?Jakiej technologii najlepiej jest użyć do dostępu do bazy danych? Jak zabezpieczać pliki konfiguracyjne w systemie/aplikacji?Jaki model konfiguracji serwerów (np. Tomcat) przyjąć dla produktów/aplikacji webowych?Jak należy definiować zewnętrzne interfejsy systemu? Jakie elementy systemu i według jakich kryteriów mają podlegać walidacji? Jakie są główne komponenty systemu? Czy wymiana danej technologii mogłaby wspomóc działanie systemu?
Jakich zmian wymagać będzie wprowadzenie danej funkcjonalności?
Jak wygląda flow w danym komponencie (np. przetworzenie wiadomości w kolejce)?Jakie są wymagania funkcjonalne dla danego produktuJak konkretny proces biznesowy realizowany jest w architekturze?Jak wygląda zużycie zasobów sprzętowych i programowych w danym okresie czasu? Jakie narzędzia i skrypty należy wdrożyć, aby usprawnić proces wytwarzania oprogramowania?Jak zorganizowana jest infrastruktura sprzętowa (jakie hosty? jak są powiązane?) i programowa (jakie wersje? gdzie?) systemu?
 | 
| Z jakimi pytaniami NIE należy zwracać się do architekta? | 
| 
 Czy ta funkcjonalność działa poprawnie?Jakie projekty idą na najbliższy realese?Jaki będzie koszt projektu X?Jak działa ta funkcjonalność? Jak z korzystać z tego pakietu/biblioteki?Do jakich zadań planowany jest Pan X?Kiedy wypada deadline testów systemowychJaki algorytm wykorzystać do…?Czy następujące zachowanie systemu jest poprawne?
 | 
Jeśli popatrzeć na wymienione obowiązki, to trudno oprzeć się wrażeniu, że z niemal wszystkimi z nich może sobie poradzić zespół jako taki i nie potrzeba do tego wydzielonego architekta. Jedyna różnica między w/w architektem a "zwykłym" programistą jest taka, że ma on architekt większe doświadczenie (ale nie to mierzone w latach) i większą wiedzę o systemie. 
Wydaje się, że potrzeba powołania osoby w randze architekta wynika z potrzeby rozwiązania następujących problemów:
Można odnosić wrażenie, że tego typu architekt został wymyślony po to, aby wyousourcować w/w problemy. Sęk w tym, że staje się on wąskim gardłem procesu. Po prostu nie nadąża z pracą. Wtedy trzeba powołać kolejnego i kolejnego i kolejnego. Po pewnym czasie okazuje się, że architekci zajmują się głównie sprawami organizacyjno-konfiguracyjno-spotkaniowymi, a programiści przestają czuć się odpowiedzialni za architekturę, gdyż ta "należy" do architektów. I wtedy koder zaczyna kodzić, architekt zaczyna architekcić, a architektura zaczyna dryfować.
Pierwszy punkt dlaczego potrzebujemy architekta: Żeby komunikował jaka jest architektura.
ReplyDeleteFajnie to brzmi :)
Przynajmniej w kontekście, może źle pojmuję tezę, że architekta nie potrzeba.
Może by uporządkować dyskusję na blogu zrezygnujesz po prostu z pojęcia architektury, bo to się jednoznacznie kojarzy z architektem. Taki problem z wykorzystywaniem ogólnie znanych słów.
Ten sam problem mają testy. Było tego nie nazywać testem a specyfikacją miast dziwić się teraz, że każdy myśli o weryfikacji a nie projektowaniu korzystając z jakiegoś Xunita.
100% zgody - plus pojawiają się problemy z outsourcingiem do konsultantów. Jeśli wybierani są na podstawie wiedzy i doświadczenia to w pewnym momencie pojawia się konflikt architekt w korporacji macierzystej vs. specjaliści w firmie consultingowej.
ReplyDeleteDobry post. (y)
ReplyDelete