2008-10-17 9 views
5

Czy umiarkowane lub duże projekty nigdy nie wymagają pracy architekta? Pracowałem przy wielu projektach, w których firma deweloperska zdecydowała się nie przydzielać architekta aplikacji. Oprogramowanie jest zbudowane w sposób organiczny i nie ma dużego znaczenia dla projektu, a odpowiedzialność za projekt spoczywa na starszych programistach.Kiedy projekt nie wymaga architekta aplikacji?

Motywacje do tego, by nie mieć architekta od rozważań kosztowych do wierzenia, że ​​metodologia rozwoju sprawia, że ​​ta rola architektoniczna jest niepotrzebna (można by argumentować za zwinnym rozwojem). Niektóre projekty open source działają na zasadzie zbiorowego wkładu, a nie rozwoju z przywództwem architektury.

Odpowiedz

2

Będę musiał użyć analogii tutaj, wykorzystując domy. Nie tak dawno temu (relatywnie) ludzie mogli budować domy bez architekta lub aranżowanych planów. Wycinali trochę drewna, używali wyuczonych umiejętności do cięcia i płaskich desek oraz budowali swoje domy. Katedry, zamki, itp. ... pewnie mieli architektów i inżynierów. Ale przez większość czasu ludzie używali umiejętności, aby budować dom.

Te domy wykonały zadanie, ale nie trwały tak długo. Mogą być nieco nieszczelne, mogą być trudne do poprawy itp. Ale łatwo jest użyć wody do wyrównania fundamentu, a następnie dodać drewno.

Współczesne domy mają infrastrukturę do podłączenia, kody, które muszą być spełnione, itp. Potrzebujemy naszych projektów obudów stworzonych lub zatwierdzonych przez architekta, zanim zostaną one zbudowane. Architekt upewnia się, że wszystko jest w porządku, a dom będzie stał i nadaje się do zamieszkania.


Aplikacje nie różnią się. Nie żyjemy w świecie, w którym złożone struktury mogą uciec bez bycia architektami. Oczywiście mogę napisać bazę danych dla mojej biblioteki jako trywialne ćwiczenie; Mogę również tworzyć regały do ​​biblioteki bez angażowania architekta. Ale gdy przejdziemy poza proste struktury, powinniśmy absolutnie upewnić się, że ktoś zwraca uwagę na szerszy obraz - czy twoja struktura (dom lub aplikacja) ma zamiar zrobić to, co trzeba, czy gra dobrze z innymi, i czy spełnia zasady określone przy jego konstrukcji.

+0

Inżynier. Inżynierowie to ludzie, którzy zarządzają wymaganiami kodeksu budowlanego w projektach. Architekci tego nie robią. –

4

Jeśli masz już wzorzec architektury/systemu, który pozwoli Ci zbudować projekt, w ogóle nie będziesz potrzebować architekta.

Uczę Architekturę oprogramowania na uniwersytecie, a główną umiejętnością, którą wierzymy, że architekci wnoszą do stołu, jest systematyczny, dokładny proces projektowania, który spełnia potrzeby wszystkich interesariuszy, mając na względzie konkurencyjne interesy. Istnieje wiedza techniczna, którą muszą mieć architekci, ale nie jest rzadkością, że programiści mają tę samą wiedzę (a nawet więcej).

Kluczową sprawą jest wychwytywanie scenariuszy jakościowych i umiejętność stosowania technik/wzorców projektowych, które spełniają te cechy. Lub wymyślić coś w locie, jeśli musisz.

Ponowne wykorzystanie architektury w branży jest wysokie, często do tego stopnia, że ​​architekt jest niepotrzebny.

Skoro mówię dużo o tych rzeczach, mógłbym naprawdę pójść dalej i dalej i dalej ...

UPDATE: ja myślałem, że zestawianie niektóre myśli wyrażonych w innych odpowiedzi.

  • Architekci są centralnym punktem komunikacyjnym.
  • Architekci komunikują projekt - dobrzy robią to sprawnie.
  • Architekci wnoszą istotne doświadczenie do produktu/projektu.
  • Większe konstrukcje wymagają większych projektów, więcej planowania, prototypowania itp. I potrzebują kogoś, kto zapewni "odpowiedni system jest zbudowany prawidłowo".
  • W przeciwieństwie do deweloperów, architekci uważają deweloperów za interesariuszy i wdrażają taktykę postępowania w zakresie pożądanych parametrów innych niż runtime (skalowalność, łatwość konserwacji, testowalność, możliwość ponownego użycia, konfigurowalność (MeTRiCS)).
+0

Czy zachęcasz architektów oprogramowania do bycia programistami? Twoja odpowiedź sugeruje, że architektura i kodowanie, choć powiązane, niekoniecznie pokrywają się. –

+0

Zdecydowanie. Wczesne tworzenie prototypów jest często potrzebne, aby poczuć kluczowe scenariusze. Chociaż widziałem projekt na wysokim poziomie bez programowania dla większych projektów. Powiedziałbym, że zależy to od wielkości i złożoności. – CVertex

1

Definiuj "Wymagaj."

Z pewnością możesz zbudować duży produkt bez centralnej wizji lub przywództwa. To zajmie więcej czasu, więcej błędów, będzie trudniejsze w utrzymaniu i będzie wymagało więcej godzin pracy.

Korzyści wynikające z posiadania przeze mnie Architekta Aplikacji, z mojego doświadczenia, są znacznie większe i przewyższają wady, a im większy projekt, tym większy efekt.

Teraz są rzeczy, które możesz zrobić, aby złagodzić efekt, takie jak posiadanie silnej i kompletnej dokumentacji dotyczącej zamierzonego projektu aplikacji, które są wiernie przestrzegane przez deweloperów - ale to po prostu posiadanie dokumentu zajmuje miejsce Architekt aplikacji, to naprawdę nie jest inne podejście.

Agile Development może odnieść sukces, ale jego sukces polega na posiadaniu dobrze naoliwionej maszyny zespołu programistycznego, z których każdy zgadza się z podstawowymi koncepcjami projektu programu i jest wystarczająco wygodny, aby zwrócić uwagę na siebie nawzajem, gdy mają podejmowali złe decyzje i poprawiali sobie nawzajem błędy.

Ponownie, tak naprawdę nie zastępujesz roli architekta aplikacji, tylko rozdzielasz odpowiedzialność na grupę ludzi.

Prostym faktem jest, że rola [i] jest [/ i] czymś, co chciałbyś usiąść. Sposób, w jaki to siedzisz, zależy od ciebie, ale najbardziej sprawdzoną i najskuteczniejszą metodą jest wykonanie tej czynności przez osobę.

+0

Wymaganie w tym kontekście oznacza, że ​​projekt byłby gorszy bez architekta. Na przykład można argumentować, że małe projekty nie wymagają architekta, ponieważ można je pomyślnie zrealizować bez uwzględnienia projektu. –

+0

Myślę, że wymieniłeś tylko wyjątkowe przypadki - małe projekty. –

0

W miejscu, w którym pracuję, mamy architektów do dużego projektu. Architekci są, jeśli lubisz "głos rozsądku" i wypełniają lukę pomiędzy rolą analityka biznesowego ("To jest to, jak sądzimy, wymaga branża") i starszymi programistami ("tak to może działać"). Zapewniają spójny obraz tego, jak oprogramowanie powinno się rozwijać - większy obraz, jeśli chcesz.

Deweloperzy poruszają się - zwłaszcza ci dobrzy - i moim zdaniem uzyskanie spójności projektu jest kluczowe. Architekci specjalizują się w obszarze projektu (duży projekt, pamiętajcie) i nie poruszajcie się, więc rozwijają zrozumienie tego, co ma zostać osiągnięte i jak powinniśmy się tam dostać.

Zapewniają również "wygładzanie krzywej" do sytuacji typu "flip-flop" w zmieniających się potrzebach biznesowych i naturalnej odporności programistów na zmianę już upieczonych procesów.

Nawet projekty open-source mają to, co bym nazywała architektem - główni ludzie w projekcie zwykle mają wizję tego, co jest budowane i jak powinno być. Współpracownicy dostarczają pomysłów i przesuwają granice, ale jest ktoś, kto zawetuje zmianę, jeśli nie pasuje.

0

Zależy od tego, co rozumiesz przez "architekta". Jeśli masz na myśli to, co oznacza CVertex, to rzeczywiście tak jest.Jeśli masz na myśli "grubą * osobę, która nie koduje, ale bardzo lubi UML, i całuje zarządzanie za" wtedy głównym ryzykiem jest to, że projekt będzie działał i nie będzie wspierany przez kierownictwo, a nie na odwrót.

* Z mojego doświadczenia wynika, że ​​wiele osób bez kodu ma jeszcze więcej nadwagi niż ja. Widzę wielu chudych programistów.

0

W przypadku drobnych prac konserwacyjnych, które nie wymagają przeróbek ani analiz architektonicznych.

0

Moje doświadczenie jest takie, że czasami architekt nie jest tak nazywany. Zwykle jest ktoś, lub jakaś grupa, która jest odpowiedzialna za ogólny projekt kodu. Miałem to być przewodnikiem technicznym, kierownikiem zespołu lub kierownikiem projektu. Jest także deweloperem, który ma dodatkową odpowiedzialność w prowadzeniu projektu na dużą skalę. Być może pracowałem tylko w mniejszych sklepach deweloperskich, ale nigdy nie widziałem sensu posiadania kogoś, kto tylko wykonuje pracę architekta, po prostu nie wystarczy zrobić żadnego projektu!

Powiązane problemy