Pojawiło się wiele pytań z dobrymi odpowiedziami na temat roli architekta oprogramowania (SA) w StackOverflow i Programmers SE . Staram się zadać nieco bardziej ukierunkowane pytanie niż te. Sama definicja SA jest szeroka, dlatego na potrzeby tego pytania zdefiniujmy SA w następujący sposób:
Architekt oprogramowania kieruje ogólnym projektem projektu, angażuje się w kodowanie, przeprowadza przeglądy kodu i wybiera technologie, które zostaną zastosowane.
Innymi słowy, nie mówię o odpoczynku kierowniczej i kamizelka na grzbiecie (dalej rymowanych słów pomijana) rodzaje skojarzeń. Gdybym miał realizować dowolny typ pozycji AF nie chcę być z dala od kodowania. Mogę poświęcić trochę czasu na komunikację z klientami i analitykami biznesowymi itp., Ale nadal jestem technicznie zaangażowany i nie jestem tylko świadomy tego, co dzieje się podczas spotkań.
Z tych punktów na uwadze, co powinno SA wnieść na stół? Powinni przyjść z mentalnością „ustanawiające prawa” (że tak powiem) i egzekwowania korzystanie z niektórych narzędzi, aby dopasować „swoją drogę”, czyli wytycznych, kontroli źródła, wzorów dokumentacji UML itp kodowania? Czy powinny one określić początkowy kierunek i strategię następnie być wyluzowana i skok w miarę potrzeby skorygować kierunek statku?
W zależności od organizacji może to nie działać. SA, która polega na TFS w egzekwowaniu wszystkiego, może mieć trudności z wdrożeniem swojego planu u pracodawcy, który używa tylko StarTeam. Podobnie SA musi być elastyczna w zależności od etapu projektu. Jeśli jest to nowy projekt, mają większy wybór, podczas gdy mogą mieć mniej w przypadku istniejących projektów.
Oto kilka historii SA, których doświadczyłem jako sposób na podzielenie się pewnym doświadczeniem w nadziei, że odpowiedzi na moje pytania mogą rzucić nieco światła na te kwestie:
Pracowałem już z SA, którzy dosłownie każdy kod przeglądowi jednej linii kodu zespołu. SA byłoby to zrobić nie tylko dla naszego projektu, ale także w innych projektach w organizacji (wyobrazić sobie czas spędzony na ten temat). Początkowo było to użyteczne wymusić pewne standardy, ale później okazało się kalectwo. FxCop było jak SA znajdzie problemy. Nie zrozumcie mnie źle, to był dobry sposób, aby nauczyć młodszych programistów i zmusić ich do myślenia o konsekwencjach wybranego przez nich podejścia, ale dla starszych programistów było to postrzegane jako nieco drakońskie.
Jedna szczególna SA był przeciwko stosowaniu pewnej biblioteki, twierdząc, że była powolna. To zmusiło nas do pisania ton kodu do osiągnięcia rzeczy inaczej, podczas gdy druga biblioteka będzie już nam zaoszczędzić sporo czasu. Szybki skok do ostatniego miesiąca projektu i klientów narzekają wydajności. Jedynym rozwiązaniem była zmiana pewnych funkcji użyć pierwotnie ignorowane podejście mimo wczesnych ostrzeżeń ze strony deweloperów. W tym momencie dużo kodu został wyrzucony, a nie wielokrotnego użytku, co prowadzi do pracy w godzinach nadliczbowych i stresu. Niestety szacunki wykorzystywane na potrzeby projektu oparto na starym podejściu, które mój projekt został zakazany z użyciem więc to nie był odpowiedni wskaźnik dla oszacowania. Chciałbym usłyszeć PM powiedzenia „zrobiliśmy tego wcześniej”
SA, który wymusi użycie DTOs, DOS, BOS, warstw obsługa i tak dalej dla wszystkich projektów. Nowe deweloperów musiał nauczyć się tej architektury i AF stanowczo egzekwowane wytyczne użycia. Wyjątki wytycznych użytkowania zostały wykonane, kiedy to było absolutnie trudne do wskazówek. SA został uziemiony w swoim podejściu. Klasy dla DTO i wszystkie operacje CRUD zostały wygenerowane przez CodeSmith, a schematy bazy danych były kolejną podobną kulą wosku. Jednakże mając stosować tę konfigurację wszędzie SA nie była otwarta na nowe technologie, takie jak LINQ to SQL lub Entity Framework.
Nie używam tego posta jako platforma do odpowietrzania. Były pozytywne i negatywne aspekty moich doświadczeniach z opowiadań SA wymienionych powyżej. Moje pytania sprowadzają się do:
- Co powinno skojarzenie wnieść na stół?
- Jak mogą zachować równowagę w swoim procesie decyzyjnym?
- Czy należy podejść do zadania SA (jak zdefiniowano wcześniej) ze świadomością, że muszą one egzekwować określone podstawowe zasady?
- Masz jeszcze coś do rozważenia?
Dzięki! Jestem pewien, że te zadania pracy są łatwo rozszerzyć do ludzi, którzy są starsi deweloperów lub przewody technicznych, więc nie krępuj się odpowiedzieć w tym charakterze, jak również.