Czy można oczekiwać, że starszy programista wie, jakie są wzorce projektowe OOP? [Zamknięte]

26

Przygotowuję pytania na rozmowy kwalifikacyjne na wyższe stanowisko rozwojowe. Praca obejmowałaby projektowanie obiektowe, a istniejące oprogramowanie wykorzystuje wzorce projektowe, dlatego chciałbym poprosić kandydatów o wyjaśnienie kilku wzorców projektowych, które znają, wykorzystali, jak je wykorzystali, dlaczego użyłem ich i tak dalej. Jednak w poprzednich wywiadach, kiedy pytałem starszych programistów z co najmniej 5-10-letnim doświadczeniem na temat wzorców projektowych, prawie nikt nigdy o nich nie słyszał. Myślę, że dwóch z dwudziestu programistów mogłoby wymienić jeden wzorzec projektowy (odpowiednio Singleton i MVC).

Moje pytanie brzmi więc: czy warto zadawać te pytania? A może jest to tak niejasny temat, że nie można oczekiwać, że nowi pracownicy już go znają?

Czy starszy programista powinien mieć wcześniejsze doświadczenie z wzorami projektowymi, czy może powiedziałbyś, że wzorce projektowe są tak prostym tematem, że każdy porządny programista może je zdobyć podczas szkolenia? Jeśli tak, jakie pytania zadałbyś zamiast tego, aby ocenić ich umiejętności projektowe?

Dodaj Po przeczytaniu dotychczasowych odpowiedzi powinienem podać kilka wyjaśnień:

  • Zadanie jest dla programisty .NET z doświadczeniem w OOP / OOD
  • Istniejący kod używa nazw klas, takich jak IParameterGraphVisitori IStorageFactoryw wielu miejscach
  • Jak pytasz ludzi o ich wcześniejsze doświadczenia z projektami OO, które stworzyli, jeśli nie mają słownictwa, aby wyjaśnić swoje projekty? To właśnie chcę zrobić i wszystko, co mogę wymyślić, to „proszę narysować hierarchię projektu / obiektu swojego ostatniego projektu na tablicy”.
nikie
źródło
27
Wzory są przejściowym artefaktem; oznacza to, że pojawiają się dzięki dobrej konstrukcji. Nie są „używane”. Jest powód, dla którego nazwa to „wzorzec”, a nie „ograniczenie” lub „wymaganie”. Czy chcesz kogoś, kto ma doświadczenie w projektowaniu OO, czy kogoś, kto ma doświadczenie w projektowaniu wzorów? Ten pierwszy prawdopodobnie wie więcej niż modne słowa.
Michael K
6
@Michael: Zgadzam się. Istnieje różnica między znajomością nazw a możliwością używania wzorca. Wychowałem się na OO, ale gdybyś poprosił mnie, żebym wymienił niektóre wzory i opisał je, nie zrobiłbym tego dobrze. Nie dbam szczególnie o to, jak przemysł zdecydował się to nazwać, ale założę się, że faktycznie wdrożyłem większość wzorców, których spodziewałeś się znaleźć na liście.
unholysampler
15
@Michael: Zawsze widziałem wzorce projektowe jako pomoc w komunikacji. O wiele skuteczniej jest powiedzieć „to gość drzewa” zamiast „jest to abstrakcyjny interfejs, który zostanie przekazany do funkcji, która będzie spacerować po drzewie i wywoływać metodę przez ten interfejs, dzięki czemu mogę oddzielić drzewo idące od kodu, który wykonuje rzeczywistą pracę ". Ale jeśli znasz lepsze sposoby oceny umiejętności projektowych w wywiadzie, odpowiedz na pytanie! Właśnie tego szukam.
nikie
3
Być może lepszym rozwiązaniem byłoby zapytanie ich, jak rozwiązać konkretny problem. Po pierwsze, nie pamiętam nazw wszystkich wzorców projektowych, ale wiem, jak je stosować i używać. jak mówi @Michael, posiadanie doświadczenia i znajomość modnych słów to dwie różne rzeczy.
Tyanna
4
Znajomość wzorców projektowych może w rzeczywistości być negatywna. Niektórzy astronauci z architektury będą mówić tylko o wzorach projektowych i będą je energicznie stosować, bez względu na to, czy mają jakiś sens.
William Pietri

Odpowiedzi:

67

Szanse są oni zrobić je znać. Mogą po prostu nie znać ich jako „wzorców projektowych”; tzn. mogą nie znać akademickiej terminologii dotyczącej takich rzeczy. To, co postrzegasz jako „maszynę stanową”, może być po prostu rozsądnym podejściem do problemu dla starszego, bardziej doświadczonego programisty. Na przykład nigdy nie zwracałem uwagi na „wzorce projektowe”, ale kiedy dowiedziałem się, co to jest maszyna państwowa, musiałem się śmiać, ponieważ robiłem to od lat. Kto wiedział, że jestem takim akademikiem? Zawsze uważałem to za podstawową umiejętność kodowania, a nie „wzorzec projektowy”.

Chodzi o to, że doświadczeni programiści nie znają terminów z podręcznika; zamiast tego zapytaj ich, jak ustrukturyzują klasy lub jak podejdą do zadania.

GrandmasterB
źródło
2
+1 Używałem tych struktur przez jakiś czas, zanim ukazał się Gang of Four, więc zawsze mam problem z zapamiętaniem imion, które im nadano.
dietbuddha
10
Wydaje mi się, że literatura na temat wzorców jest bardzo wyraźna na temat tego rodzaju rzeczy - wzorce nie mają zastępować projektowania, lecz mają na celu pomoc w komunikowaniu się na temat projektowania. (Powiedziałbym, że pomaganie w komunikowaniu się na temat projektu pomaga również samemu projektowi, ale myślę, że to inna sprawa.)
Aidan Cully
5
+1. To mi się ciągle zdarza. Jakiś czas temu przeczytałem artykuł na wiki „Wstrzykiwanie zależności”, aby dowiedzieć się, dlaczego wydaje się tak popularny, ale tylko po to, by dowiedzieć się, że jest to technika, którą stosuję od lat, ale nigdy nie nadałem jej nazwy. To samo z „maszyną stanu”.
whatsisname
4
Czy nie jest rozsądnym oczekiwaniem, że starszy programista podąży za tym, co dzieje się w terenie i zastosuje powszechnie używaną terminologię? Wzory istnieją już od ponad 15 lat, więc ledwo można nawet nazwać je „nowymi” ...
Péter Török
2
Celem wzorców projektowych było zapewnienie wspólnego języka dla programistów, aby rozmawiali ze sobą na temat rozwiązań powtarzających się problemów. Właśnie o to chodzi w nauce wzorców projektowych. IMO pokazuje wyraźny brak poświęcenia dla tego zawodu, aby nawet nie zawracali sobie głowy nauką czegoś, co było w czołówce rozwoju oprogramowania OO od 17 lat. Z pewnością miałbym zastrzeżenia do każdego, kto nie potrafi wymienić i zrozumieć podstawowych wzorców. Czy nie obchodziło ich, że nie byli w stanie zrozumieć rozmów ludzi, ponieważ nie znają imion?
Dunk
25

Twoje oczekiwania są dość rozsądne dla starszego programisty OO. Każdy, kto nazywa siebie, że bez znajomości wzorców projektowych, po prostu pokazuje, że doświadczenie nie jest przenoszone automatycznie przez lata :-( Pewnie, że jest wielu programistów, którzy spędzili lata lub nawet dekady w terenie, nigdy nie słysząc o projektowaniu wzorce - to tylko pokazuje, że nie byli zainteresowani poznawaniem nowych pomysłów, doskonaleniem się i wdrażaniem najlepszych praktyk.

Czy starszy programista powinien mieć wcześniejsze doświadczenie z wzorami projektowymi, czy może powiedziałbyś, że wzorce projektowe są tak prostym tematem, że każdy porządny programista może je zdobyć podczas szkolenia?

Doświadczenie IMO się liczy. Teoretycznie przyzwoity programista może przeczytać wzorce projektowe w książce lub nawet na Wikipedii i zrozumieć podstawową koncepcję w 15 minut. Jednak prawidłowe stosowanie tych koncepcji wymaga ciężko zdobytych doświadczeń. Łatwo jest zauroczyć się wzorami, próbując wcisnąć je w każdy możliwy fragment kodu, l'art pour l'art. Łatwo je również odrzucić, mówiąc: „Wzory nie są srebrną kulą, wystarczy użyć najprostszej rzeczy, która może działać”. Znalezienie środka między dwiema skrajnościami poprzez nauczenie się, kiedy i jak używać wzorców do rozwiązywania prawdziwych problemów, a kiedy ich nie używać, wymaga wieloletniego doświadczenia .

jakie pytania zadałbyś zamiast tego, aby ocenić ich umiejętności projektowe?

W zgodzie z powyższym dodam tylko te pytania do twojej listy:

  • Jakie są wady wzorów projektowych (ogólnie i tych, o których wyraźnie wspominają)?
  • Kiedy ich nie używać i dlaczego?

Aktualizacja

@GrandmasterB ma dobrą rację, ponieważ niektórzy programiści mogą używać określonych wzorców projektowych, nie znając ich nazwy. W pewnym sensie ma rację, ponieważ jest to pytanie terminologiczne / komunikacyjne. Jednak drugą stroną medalu jest to, że jest to rzeczywiście pytanie terminologiczne / komunikacyjne :-) Oznacza to, że jedną z głównych zalet wzorców projektowych jest zapewnienie wspólnego słownictwa programistom, co znacznie poprawia komunikację . (Spróbuj wyjaśnić podstawową ideę adaptera bez użycia samego słowa lub jego synonimów „wrapper” i inni!) Tak więc, jakkolwiek utalentowany i kompetentny może być kandydat, nie znając powszechnie akceptowanej terminologii, wprowadzi problem z komunikacją w twoim zespole.

Péter Török
źródło
2
Nie wiem, jak ogólnie jest to prawda, ale powiedziałbym również, że stosowanie wzorców projektowych może powodować problemy z komunikacją. Na przykład, gdy coś, co robisz, jest podobne do dobrze znanego wzorca, ale nie dokładnie tak, to znajomość istniejącego wzorca może przesłaniać lokalne różnice. Lub gdy programiści w twoim zespole nie rozumieją w pełni wzorca, mogą użyć nazwy wzorca w idiosynkratyczny sposób.
Aidan Cully
1
@Aidan, dobra racja, ale dla mnie to niewłaściwe wzorce. Jest to jeszcze jeden sposób, w jaki doświadczenie i praktyka są niezbędne, tj. W odróżnianiu wariantów tego samego wzoru od dwóch różnych wzorów.
Péter Török
1
+1, każdy, kto nazywa siebie starszym deweloperem .NET, powinien mieć możliwość podania co najmniej kilku jawnych nazw wzorców i ich użycia. To kwestia komunikacji i zestawu narzędzi, jeśli nic więcej.
techphoria414
Przeczytałem go 3 razy i nadal nie mogę powiedzieć, czy pierwszy akapit to sarkazm, czy nie
briddums
@briddums, co sprawia, że ​​myślisz, że to sarkazm?
Péter Török
10

Starszy programista? Zdecydowanie. Junior powinien. Mam 15 lat, nie mam formalnego wykształcenia na ten temat i nawet je rozumiem. Nie tylko uzasadnione jest oczekiwanie, że je znają, ale niedopuszczalne byłoby, gdyby tego nie wiedzieli. Zakładając, że wiedzą coś o programowaniu obiektowym, co najprawdopodobniej robią.

Anto
źródło
14
Aby być uczciwym. OO stała się jedną z dominujących metodologii w ciągu twojego życia. Istnieje wiele osób, które dostali stopni przed Java była język używany w college'u. Jest wiele osób, które nie żyją w świecie OO.
unholysampler
2
@unholysampler: oczywiście, ale myślę, że jest to pozycja OOP, o której się mówi
Anto
1
@unholysampler: Chciałbym żyć w tym czasie .. Nie mogę znieść nic poza Java na uni <_ <
poke
10

W rozmowie kwalifikacyjnej powinieneś zapytać, co jest ważne, aby kandydat wiedział o wykonywanej pracy.

Jeśli muszą znać nazwy wzorców z Gang of Four, jest to ważny wymóg.

Z drugiej strony, jeśli chcesz, aby wyświetlały odpowiednią wiedzę praktyczną na temat architektury programu, myślę, że lepiej jest dać im problem i zapytać, jak ustrukturyzuje kod. Jeśli podadzą ci odpowiednie rozwiązanie wzorcowe, to masz dowód, że je znają, niezależnie od użytej nazwy.

Ilekroć przeprowadzam wywiad na wyższe stanowiska, są one bardziej „praktyczne” niż pytania i odpowiedzi. Chcę wyraźnego wykazania umiejętności i komfortu programowania. Chcę również solidnego fundamentu w koncepcjach CS, co oznacza bardziej ogólne umiejętności stosowania takich koncepcji, jak enkapsulacja, algorytmy, sprzężenie / spójność itp. Doświadczenie i znajomość wielu języków i paradygmatów.

dietbuddha
źródło
4

Zależy od obszaru ich wiedzy specjalistycznej. Nie spodziewałbym się, że wbudowany programista C będzie wiedział dużo o wzorcach projektowych. Jeśli mówimy o programistach Java lub .NET, powinni oni znać wzorce projektowe, a zwłaszcza, jak nie dać się ponieść emocjom.

Nemanja Trifunovic
źródło
2
+1 za niezbyt
Zaky German
Słuszna uwaga. Dodano wyjaśnienie do pytania. Jest przeznaczony dla programistów .NET, z doświadczeniem projektowym przynajmniej w języku programowania OO.
nikie
4

Zakładając, że szukasz starszeństwa w OOP, odpowiedź brzmi zdecydowanie tak. Wzorce projektowe są leksykonem języka OOP.

Ponadto obecnie nieuzasadnione jest, aby przyzwoity programista OOP z 10-letnim doświadczeniem nie mógł nazwać wzorca projektowego, ponieważ jest wzorcem projektowym szeroko stosowanym w standardowych interfejsach API, bibliotekach i platformach programistycznych.

Od lat zadaję to pytanie podczas wywiadów i jest to showstopper, gdy kandydat nie udziela satysfakcjonujących odpowiedzi na ten temat.

Paolo Bozzola
źródło
3

Tak, ale prawdopodobnie powinieneś uzyskać ich zrozumienie, zadając pytania projektowe, a nie prosząc ludzi o wyliczenie wzorców projektowych, o których słyszeli. Nie mam nic przeciwko wzorom opisanym w PoEAA, GoF, a nawet niektórym wzorcom programowania funkcjonalnego i nadal nie sądzę, że dowiesz się więcej o moim podejściu do rozwiązywania problemów, prosząc mnie o podanie kilku wzorców.

Biorąc pod uwagę pytanie typu „zaprojektuj mi edytor tekstu” z następującymi pytaniami: „Jak zamierzasz obsługiwać osadzone obiekty, takie jak obrazy? Pogrubienie i kursywa? Prawdopodobnie w końcu usłyszysz wystarczająco dużo, aby rozpoznać wzór polecenia, wzór złożony, wzór pamiątkowy i kilka innych nawet przy krótkiej rozmowie.

Wzorce projektowe zostały odkryte, a następnie opisane, abyśmy mieli wspólny język do komunikowania decyzji projektowych.

Niestety pracowałem dla kogoś, dla kogo każde użycie wzorca projektowego musiało zostać wyjaśnione i uzasadnione, nie z powodu należytej staranności, ale dlatego, że po prostu ich nie znał. To nie jest zabawne. Ale najpoważniejsi programiści, przypadkowo lub projektowo, nauczyli się nazw najczęściej używanych wzorców OO, jeśli nic więcej, a większość programistów aplikacji korporacyjnych warta swojej soli przynajmniej wie coś o najczęstszych wzorcach PoEAA.

JasonTrue
źródło
3

Rozsądny. Zdecydowanie Niezbędny. Nie

Pytam potencjalnych kandydatów, czy znają wzorce projektowe. To tylko jedno z kilku kryteriów ważenia jako całości. Nie pomijaj całego obrazu.

Tak, wielu programistów nieświadomie stosuje pewne wzorce projektowe, bez wątpienia.

Nie dlatego zadaję to pytanie.

Ważne jest, aby wiedzieć, że mogę szybko i skutecznie komunikować się z innym programistą. Nie chcę spędzać 20 minut na tablicy, wyjaśniając maszynę stanu, tylko po to, by dowiedzieć się, że „używali jej wcześniej, ale nigdy nie wiedzieli, jak to nazwać”. To nie jest produktywne.

Pomagają również w procesie refaktoryzacji. Przeglądając kod, można przypadkowo wdrożyć jakąś formę wzorca fabrycznego, ale wzorzec fabryczny GoF przetrwał próbę czasu. Dlatego jest to wzór fabryczny, a NIE JESZCZE fp (wynalezienie koła nie jest lepsze, Joel w oprogramowaniu ma wiele wad tego działania).

Zespół, który wykorzystuje i rozpoznaje znaczenie wzorców projektowych, poprawia komunikację i wydajność. Jeśli twój zespół, jako jednostka, nie używa dp, wówczas traci znaczenie.

P.Brian.Mackey
źródło
2

Mówiąc z własnego doświadczenia, przez pewien czas ignorowałem wzorce projektowe. Wiedziałem, że istnieją, po prostu nigdy o nich nie czytałem. Kiedy w końcu ugryzłem kulę, zdałem sobie sprawę, że cały czas używałem wzoru projektowego i po prostu nie zdawałem sobie z tego sprawy lub nie wiedziałem, że moje rozwiązania projektowe faktycznie mają wspólną nazwę.

Byłbym bardziej skłonny wymyślić zestaw problemów, w których konkretny wzór projektowy dobrze pasuje do rozwiązania, i zobaczyć, jak programista wymyślił coś podobnego do wzoru. Jeśli tak, to świetnie. Mogę być jeszcze bardziej skłonny zatrudnić programistę, który nieświadomie używał wzorców projektowych, ponieważ widzę wielu programistów, którzy mają wiedzę na temat wzorców projektowych, próbując dopasować rozwiązanie do wzorca, gdy nie jest to właściwe, zamiast uświadomić sobie, że konkretny wzorzec rozwiązuje problem. problem dobrze.

Pemda
źródło
2

Myślę, że lepszym pytaniem byłoby: biorąc pod uwagę nazwę wzoru i opis wzoru, na przykład wzór fabryczny z książki Gang of Four, kandydat powinien być w stanie wymyślić scenariusz, w którym wzór byłby rozsądne podejście.

Jaka jest nazwa?
źródło
1

Są programiści z 5-10-letnim doświadczeniem i są starsi programiści. To wcale nie są to samo. Tak, jeśli zatrudniasz na wyższym szczeblu i oczekujesz, że ludzie będą znali i stosowali wzorce projektowe, nie zatrudniłbym osoby starszej, która ich nie znała. To byłoby jak zatrudnienie specjalisty ds. Baz danych, który nie rozumiał pozostawionych połączeń. To dość podstawowe rzeczy dla prawdziwego starszego programisty. Prawdopodobnie jednak zatrudniłbym młodszą osobę.

HLGEM
źródło
1

Tak, rzeczywiście powinni znać ten termin, a nawet umieć wymienić kilka wzorców - ale nie popełnij błędu, myląc wiedzę teoretyczną z doświadczeniem.

Jest wiele osób, które przed rozmową wyszczerbiają wzorce projektowe i mogą je zepsuć krótkim opisem - ale to tylko teoria. Jest to prawdziwy starszy programista, który potrafi dostrzec, kiedy go użyć, lub bez znajomości formalnego wzorca rozwiązałby problem w klasyczny sposób.

Najlepszym sposobem, aby to sprawdzić, jest zaprojektowanie czegoś przed sobą i zadawanie pytań. Starszy programista to ktoś, kto potrafi myśleć naturalnie na poziomie abstrakcji. To ludzie, którzy „tworzą” wzorce projektowe.

Podobnie jak klasa Peopleware, która mówi o zatrudnianiu żonglera bez proszenia go o żonglowanie - tylko dlatego, że twierdzą, że nie mogą wiele znaczyć… wypróbuj je.

Stephen Bailey
źródło
Czy możesz podać przykładowy problem? Wszystkie przykłady projektowania, które mogę wymyślić, są tak proste, że nie są potrzebne żadne interesujące projekty, lub tak skonstruowane, że trudno jest zrozumieć, dlaczego jedno rozwiązanie byłoby lepsze od drugiego, lub tak złożone, że nie można ich rozwiązać w wywiadzie.
nikie
Nie ma znaczenia, co to jest, może to być coś tak prostego, jak „Zaprojektuj mi grę w rzut monetą”. Poczekaj, aby zobaczyć, co z tym zrobią. Następnie dodaj wymaganie, aby sprawdzić, co Cię interesuje, np .: Jak możesz to zmienić, aby: testable | przenośny | używany jako usługa | użyteczny dla różnych interfejsów użytkownika | uruchomić w sieci ... itd.
Stephen Bailey
0

Jak już wspomniano, uważam również, że jest OK, jeśli nie pamiętają modnych słów na pamięć. Ale ponieważ jest to najwyższe stanowisko, powinni wiedzieć, kiedy zastosować schemat optymalnego rozwiązania problemu zamiast stosować najgorsze rozwiązania. Daj im więc problem, który powinien zostać rozwiązany za pomocą wzorca (na przykład, jak stworzyć obiekt bez twardego kodowania swojej klasy, jak uzyskać dostęp do elementów obiektu bez szczegółów dotyczących jego implementacji itp.) I zobacz, jak to zrobić zaatakują to.

sakisk
źródło
0

Zdecydowanie powinni znać wzorce, ale niekoniecznie modne słowa.

Na przykład MVC ma wiele bardzo podobnych alternatyw, takich jak PAC, 3-poziomowy. Kilka lat temu innym popularnym hasłem dla MVC było „Model 2”. Właściwie znam bardzo dobrych programistów, którzy doskonale znają ten wzorzec, ale nie wiedziałem, że obecne hasło to MVC.

vartec
źródło
0

Bardzo prosto: jeśli ich używasz, musisz zapytać kandydatów. Jeśli znają wzorce, powinno dodać kilka dodatkowych punktów; ale nieświadomość niekoniecznie powinna je rozwiązywać, szczególnie jeśli wykazują dobre umiejętności OOD. Deweloperzy, którzy zajmowali się projektami konserwacyjnymi, raczej nie wiedzą dużo o wzorcach projektowych w porównaniu z tymi, którzy je projektowali. zależy to również od tego, czy uczono ich wzorców projektowych na studiach. Z mojego doświadczenia wynika, że ​​raczej nie będą. Większość uniwersytetów i prywatnych kursów uczy Cię OOP, ale nie OOD. Szanse, że będą studiować DP są jeszcze mniejsze.

Osobiście nie studiowałem DP, dopóki mój projekt mnie nie wymagał. Nawet wtedy odkryłem, że użyłem kilku wzorów, przynajmniej w podobny sposób, jeśli nie dokładnie w sposób opisany w książce. Zaskoczyło mnie, że zostały skodyfikowane. Więc szukaj dobrych umiejętności projektowych, jeśli nie znają DP. Jeśli znają DP, jest prawdopodobne, że mają dobrą konstrukcję, ale nadal je testują. Być może po prostu wygłosili jakieś bzyczące słowo o DP lub dowiedzieli się od kogoś z wewnątrz i po prostu przestudiowali kilka wzorów bez ich zastosowania.

DPD
źródło
0

Rozsądne jest oczekiwanie od osób, które ubiegają się o pracę z tobą, aby wiedzieć (lub nauczyć się) rzeczy, które są potrzebne na danym stanowisku pracy, niezależnie od tego, czy są one standardem branżowym, czy nie. W przeciwnym razie skazujesz się na mierność. Ale uważaj, aby uczynić pewną wiedzę (lub umiejętności) wymaganiem zawodowym, jeśli tak naprawdę nie jest potrzebne.

Załóżmy, że masz dwóch kandydatów o zbliżonym pochodzeniu, a jeden jest w stanie opowiedzieć o wzorach projektowych, a drugi nie. Co ci to powie o tym, jak będą wykonywać pracę?

Mówisz, że istniejące oprogramowanie wykorzystuje wzorce projektowe. Czy to zaleta? Jeśli tak to jak? Czy Twoim celem jest, aby napisane nowe oprogramowanie było zgodne z istniejącymi wzorcami, czy też wprowadzono nowe wzorce? Czemu?

Walter Mitty
źródło
0

Mogę wymyślić starszego programistę, który nie zna wzorców projektowych w następującej sytuacji:

  1. Jest tylko jedna książka o wzorach projektowych. To książka, która sprawiła, że ​​stały się popularne. Jeśli dana osoba nie przeczytała tej jednej książki, możliwe, że nie wie o wzorach projektowych lub mogła o nich słyszeć, ale nie wie właściwie, po co jest
  2. Zamiast tego musieliby wiedzieć coś w rodzaju uml ....
  3. Znalezienie dobrych informacji o wzorcach projektowych z Internetu nie jest łatwe. Masz szczęście, że trafiłeś na odpowiednią stronę internetową, która ma dobrą znajomość wzorców projektowych. Samo przyjście do oprogramowania po 1995 roku może sprawić, że osoba nie będzie wiedziała o wzorcach projektowych, ponieważ książka jest stara.
tp1
źródło
-2

Dlaczego każdy programista w środowisku innym niż OO powinien wiedzieć o wzorcach projektowych OO? Pracowałem w sklepach, robiąc tylko Cobol, tylko PL / SQL, tylko Progress 4GL, itp. Zasady projektowania OO są tam nieistotne, oczekiwałbym, że seniorzy w tych środowiskach będą mieli odpowiednią wiedzę na temat tych środowisk, a nie projektowania OO wzory.

Zdolność bezmyślnego cytowania z katalogu wzorców również nie czyni z ciebie dobrego programisty (w rzeczywistości z mojego doświadczenia wynika, że ​​tworzy on niektóre z najgorszych fragmentów kodu, jakie kiedykolwiek widziałem). Jednak tego oczekujesz od „starszego programisty”. Pracuję w branży od 15 lat, ale nie proś mnie o narysowanie schematu wzorcowego. Nigdy nie poświęcałem mu dużo czasu, nie muszę. Zdobyłem wystarczające doświadczenie, aby znaleźć to, co działa, bez nadawania mu konkretnej nazwy, a jeśli potrzebuję formalnej definicji, wiem, gdzie to sprawdzić (i tak, mam podręczniki w mojej osobistej bibliotece). To znak doświadczonego programisty, a nie rutynowa wiedza zdobyta podczas wkuwania podręczników szkolnych.

jwenting
źródło
2
Nie widzę znaczenia dla pytania. Nie przeprowadzam wywiadu na stanowisko programisty Cobola i zdecydowanie nie zamierzam prosić ludzi o „bezmyślne cytowanie wiedzy rote”. Twoim jedynym celem jest to , że nie znasz wzorców projektowych.
nikie
unix / linux jest napisany w „C”, jest pełen Wzorów OO i wiele innych niż w książce gof.
ctrl-alt-delor
2
„Zdobyłem wystarczające doświadczenie, aby znaleźć to, co działa, bez nadawania mu konkretnej nazwy”. Częścią wartości wzorców projektowych jest nazwa. Możesz więc powiedzieć „użyjmy wzoru fabrycznego”, a twój kolega natychmiast wie, co masz na myśli. Jeśli oboje wiesz, jak to zrobić, ale żadne z was nie ma na to nazwy, musicie poświęcić dużo więcej czasu na wyjaśnianie, zanim druga osoba powie „och, TO”. I znowu, jeśli kod zawiera WidgetFactory, ktoś, kto zna wzorzec Factory, rozumie, po co to jest.
Nathan Long
Zgadzam się z Nathanem. Celem wzorców projektowych jest nadanie nazwy popularnemu rozwiązaniu. Istnieje bardzo niewiele wzorów, o których ludzie nie pomyśleliby samodzielnie. Korzyścią jest przypisanie powszechnie akceptowanej nazwy, dzięki czemu możesz komunikować się z innymi programistami bez wchodzenia w szczegóły. Twoja opinia, że ​​nie musisz nadawać nazwy wzorowi, ponieważ już go używasz, jest podobna do powiedzenia, że ​​komunikacja nie jest ważna. Spróbuj pójść na rozmowę kwalifikacyjną i spraw, aby oświadczenie „komunikacja nie była ważna” i sprawdź, ile ofert pracy otrzymujesz.
Dunk