Jaka jest różnica między głównym architektem a architektem technicznym / rozwiązania?

Najlepsza odpowiedź

Nie ma formalnych definicji tych ról, które są powszechnie przyjęte jako standard przez organizacji, więc będzie wiele odmian i kontekstu zlokalizowanego.

Jako ogólny przewodnik używam następujących definicji:

  • Architekt techniczny – specjalista w obszarach infrastruktury, sieci i bezpieczeństwa.
  • Architekt rozwiązań – osoba zajmująca się ogólnymi sprawami odpowiedzialna za rozwiązania oparte na projektach, które uwzględniają wszystkie aspekty rozwiązania (np. wpływ na biznes, zmiany w aplikacjach, dane i informacje oraz technologia, leży u podstaw tego wszystkiego) i, miejmy nadzieję, również względy klientów.
  • Główny architekt – osoba z szerszym zakresem obowiązków niż powyższe role. Może to dotyczyć domeny biznesowej, większego programu pracy lub całego przedsiębiorstwa. Jest również często używany przez firmy konsultingowe, aby zasugerować poziom wyższości (doświadczenia) nad innymi architektami w zespole. Zwykle mają ogólne obawy, a nie koncentrują się na pojedynczej domenie architektury, takiej jak infrastruktura, ale nie zawsze tak jest.

Mam nadzieję, że to pomoże. Należy pamiętać, że istnieją brak akceptowanych standardów, więc same terminy są specyficzne dla środowiska, w którym są używane.

Odpowiedź

Po pierwsze, ważne jest, aby odróżnić architekturę oprogramowania od po prostu najlepszych praktyk. Dobry inżynier oprogramowania może być znakomity w kodowaniu, doskonały i szczegółowy w swoim podejściu oraz mieć duży wgląd w problem, ale nadal może nie być dobrym architektem.

Co najmniej dobry Architekt powinien mieć następujące umiejętności:

Architekt doskonale radzi sobie z rozkładaniem problemów . Rozkład problemów to umiejętność niezbędna do zobaczenia problemu na praktycznie dowolnym poziomie i rozbicia go na kroki i części niezbędne do jego wdrożenia. Dobry architekt oprogramowania może przyjąć takie stwierdzenie, jak „Nasze systemy kontroli ruchu lotniczego są nieodpowiednie i potrzebujemy lepszego projektu” i zna pytania, które należy zadać, aby rozpocząć rozkładanie problemu na możliwe do osiągnięcia komponenty, aby rozłożyć te cele komponentów na możliwe do osiągnięcia podprojekty i rozłożyć te podprojekty na możliwe do osiągnięcia zadania programistyczne. Dobry architekt może zrobić to na każdym poziomie i w dowolnej skali, od wyobrażenia sobie projektu oprogramowania o wartości miliarda linii po zrozumienie najlepszego sposobu implementacji algorytmu radzenia sobie z zawodnymi linkami. Skala nie ma znaczenia, ponieważ proces jest zawsze taki sam.

Architekt rozumie interfejsy . Interfejsy, czy to w postaci protokołów, bibliotek funkcji, interfejsów klas czy schematów, są podstawowym narzędziem potrzebnym do zarządzania złożonością projektów, gdy istnieją niezależni wykonawcy i realizatorzy. Znając proces definiowania wyraźnych, jednoznacznych i logicznie kompletnych interfejsów, architekt może umożliwić wielu osobom budowanie elementów systemów, które łatwo się łączą, aby osiągnąć większy cel.

Architekt rozumie, że wrogiem jest złożoność , i ma biegłość w zakresie narzędzi programistycznych i paradygmatów niezbędnych do zmniejszenia złożoności wszystkich komponentów, zmniejszenia złożoności interfejsów i zapewnienia minimalnej lub zerowej nadmiarowości implementacji funkcji. Potrafią szybko rozpoznać algorytmy i implementacje, które są zbyt szczegółowe lub zbyt ogólne, i poprowadzić programistów do stworzenia komponentów, które spełniają właściwą funkcję. Często narzędziami do zarządzania złożonością są takie rzeczy, jak ukrywanie danych, programowanie obiektowe, systemy samokontroli i kompleksowe plany testowania standardowych interfejsów. Ale dobry architekt nie jest dogmatyczny w stosunku do narzędzi i technologii, ponieważ ma wszechstronne naukowe zrozumienie podstaw i powodów, dla których ukrywanie danych działa i dlaczego niektóre języki obsługują dobre zasady projektowania, a inne nie.

architekt jest dobrym komunikatorem, dobrym i płodnym pisarzem i dokumentatorem i dobrze posługuje się językiem programowania oraz wspólnym językiem tych, którzy są interesariuszami w projekcie systemu. Oprócz dobrej komunikacji, dobry architekt może podawać konkretne powody do praktyki programistycznej, a nie opinie, i zapewnia wgląd zespołowi, a nie argumenty. Zdecydowanie faworyzuje i poszukuje opinii użytkownika na temat przydatności do własnymi lub programistami zaangażowanymi w projekt.

Dobry architekt jest dobrym liderem i doskonale zdobywa szacunek wszystkich techników z którymi pracują .Zwykle oznacza to, że mają wysoki poziom umiejętności, pracowali w wielu językach i byli wcześniej architektami lub wykazali się umiejętnością tworzenia projektów systemów, które pozostały elastyczne w obliczu zmian.

Wiele definicji zawiera szereg modnych fraz, kładących nacisk na metodologie, takie jak projektowanie oparte na danych, programowanie zwinne, określone języki, platformy i zestawy narzędzi. Są to aktualne etykiety dla różnych technik, których podstawa musi być dobrze zrozumiana, a nie zaakceptowana, ponieważ są obecnie w modzie. Tak więc pod wieloma względami głównymi umiejętnościami architekta są doświadczenie, inteligencja, gotowość do ciężkiej pracy i podjęcia praktycznej roli, dobra intuicja i umiejętność rozwiązywania problemów za pomocą logiki, aby w miarę pojawiania się i odchodzenia modnych słów branżowych, ich projekty pozostają użyteczne i istotne.

Moja definicja powyżej celowo nie obejmuje zarządzania projektami, planowania i umiejętności zarządzania. Rolą architekta jest tworzenie dobrych systemów, a nie rozwiązywanie problemów zespołowych lub budżetów. W rzeczywistości najlepiej jest, jeśli ci, którzy mają budżety i problemy zespołowe, są po prostu interesariuszami, którzy pomagają zdefiniować jedno z ograniczeń, z którymi architekt musi się uporać, tak jak gdyby to była część ich problemu projektowego.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *