Ist zu erwarten, dass ein leitender Entwickler die OOP-Entwurfsmuster kennt? [geschlossen]

26

Ich bereite Fragen für Vorstellungsgespräche für eine leitende Entwicklungsposition vor. Der Job würde objektorientiertes Design beinhalten, und die vorhandene Software verwendet Designmuster. Daher möchte ich die Kandidaten bitten, ein paar Designmuster zu erklären, die sie kennen, die sie verwendet haben, wie sie sie verwendet haben und warum sie sie verwendet haben benutzte sie und so weiter. In früheren Interviews, in denen ich leitende Entwickler mit mindestens 5 bis 10 Jahren Erfahrung zu Entwurfsmustern befragt habe, hat jedoch fast niemand von ihnen gehört. Ich denke, zwei von zwanzig Entwicklern könnten ein einziges Entwurfsmuster nennen (Singleton bzw. MVC).

Meine Frage lautet also: Ist es sinnvoll, diese Fragen zu stellen? Oder ist dies ein so dunkles Thema, dass Sie nicht erwarten können, dass Neueinstellungen diese bereits kennen?

Sollte ein leitender Entwickler Erfahrung mit Entwurfsmustern haben, oder würden Sie sagen, dass Entwurfsmuster ein so einfaches Thema sind, dass jeder anständige Entwickler sie während des Trainings aufgreifen kann? Wenn ja, welche Fragen würden Sie stattdessen stellen, um ihre Entwurfsfähigkeiten einzuschätzen?

Hinzufügen Nach dem Lesen der bisherigen Antworten sollte ich einige Erläuterungen geben:

  • Der Job ist für einen .NET-Entwickler mit Erfahrung in OOP / OOD
  • Der vorhandene Code verwendet Klassennamen wie IParameterGraphVisitorund IStorageFactoryan vielen Stellen
  • Wie befragt man Menschen nach ihren Erfahrungen mit OO-Designs, die sie erstellt haben, wenn sie nicht über das Vokabular verfügen, um ihre Designs zu erklären? Das ist, was ich tun möchte, und alles, was ich mir einfallen lassen kann, ist "Bitte zeichnen Sie die Design- / Objekthierarchie Ihres letzten Projekts auf das Whiteboard".
nikie
quelle
27
Muster sind ein vorübergehendes Artefakt. das heißt, sie erscheinen durch ein gutes Design. Sie werden nicht "verwendet". Es gibt einen Grund, warum der Name "Muster" und nicht "Einschränkung" oder "Anforderung" ist. Wünschen Sie sich jemanden mit OO-Designerfahrung oder jemanden mit Designmustererfahrung? Ersterer kennt eher mehr als Schlagworte.
Michael K
6
@ Michael: Ich stimme zu. Es besteht ein Unterschied zwischen der Kenntnis der Namen und der Fähigkeit, das Muster zu verwenden. Ich bin auf OO aufgewachsen, aber wenn Sie mich bitten würden, einige Muster zu nennen und sie zu beschreiben, würde ich es nicht gut machen. Es ist mir egal, was die Industrie beschlossen hat, es zu nennen, aber ich wette, ich habe tatsächlich die meisten Muster implementiert, die Sie erwartet hatten, aufgeführt zu werden.
Unholysampler
15
@Michael: Ich habe Designmuster immer als Kommunikationshilfe gesehen. Es ist viel effizienter zu sagen, "das ist ein Baumbesucher", als "das ist eine abstrakte Schnittstelle, die an eine Funktion übergeben wird, die einen Baum durchläuft und eine Methode über diese Schnittstelle aufruft, damit ich den gehenden Baum vom Code trennen kann erledigt die eigentliche Arbeit ". Wenn Sie jedoch bessere Methoden kennen, um die Designfähigkeiten in einem Interview einzuschätzen, beantworten Sie bitte die Frage! Das ist was ich suche.
Nikie
3
Ein besserer Ansatz wäre es, sie zu fragen, wie sie ein bestimmtes Problem lösen können. Ich für meinen Teil erinnere mich nicht an die Namen aller Entwurfsmuster, aber ich weiß, wie man sie anwendet und verwendet. Wie @Michael sagt, sind Erfahrung und das Wissen um Schlagworte zwei verschiedene Dinge.
Tyanna
4
Das gute Wissen über die Entwurfsmuster könnte in der Tat negativ sein. Einige Architekturastronauten sprechen nur über Entwurfsmuster und wenden sie energisch an, unabhängig davon, ob sie einen Sinn ergeben oder nicht.
William Pietri

Antworten:

67

Die Chancen stehen gut sie tun sie kennen. Sie kennen sie möglicherweise nicht als "Entwurfsmuster". Das heißt, sie sind möglicherweise nicht mit der akademischen Terminologie für solche Dinge vertraut. Was Sie als "Zustandsmaschine" betrachten, ist für einen älteren, erfahreneren Programmierer möglicherweise nur eine vernünftige Herangehensweise an ein Problem. Ich habe zum Beispiel nie viel auf „Design Patterns“ geachtet, aber als ich lernte, was eine State Machine ist, musste ich lachen, weil ich das schon seit Jahren tue. Wer hätte gedacht, dass ich so ein Akademiker bin? Ich habe es immer nur als grundlegende Codierfertigkeit betrachtet und nicht als 'Designmuster'.

Es geht nicht darum, dass Ihre erfahrenen Entwickler die Fachbegriffe für Dinge kennen. Fragen Sie sie stattdessen, wie sie Klassen strukturieren oder wie sie sich einer Aufgabe nähern würden.

GrandmasterB
quelle
2
+1 Ich habe diese Strukturen schon vor der Veröffentlichung von Gang of Four benutzt, daher habe ich immer Probleme, mich an die Namen zu erinnern, die ihnen gegeben wurden.
Dietbuddha
10
Die Musterliteratur ist, denke ich, ziemlich explizit über diese Art von Dingen - Muster sind nicht dazu gedacht, Design zu ersetzen, sondern sollen dazu beitragen, über Design zu kommunizieren. (Ich würde sagen, dass das Helfen, über Design zu kommunizieren, auch dem Design selbst hilft, aber ich denke, das ist ein anderer Punkt.)
Aidan Cully
5
+1. Das passiert mir die ganze Zeit. Vor einiger Zeit las ich den Wiki-Artikel über "Dependency Injection", um herauszufinden, warum es so populär erscheint. Nur um herauszufinden, dass es eine Technik ist, die ich seit Jahren verwende, die ich aber nie benannt habe. Gleiches gilt für "state machine".
Whatsisname
4
Ist es nicht eine vernünftige Erwartung, dass ein leitender Entwickler die aktuellen Entwicklungen verfolgt und die weit verbreitete Terminologie anwendet? Muster gibt es schon seit mehr als 15 Jahren, daher kann man sie kaum noch als "neu" bezeichnen ...
Péter Török
2
Ziel der Entwurfsmuster war es, Softwareentwicklern eine gemeinsame Sprache zur Verfügung zu stellen, in der sie sich über Lösungen für wiederkehrende Probleme unterhalten können. Darum geht es beim Lernen von Entwurfsmustern. IMO zeigt, dass es ihnen definitiv an Engagement für den Beruf mangelt, sich nicht einmal die Mühe zu machen, etwas zu lernen, das in den letzten 17 Jahren an der Spitze der OO-Softwareentwicklung gestanden hat. Ich hätte sicherlich Vorbehalte gegen jeden, der einige grundlegende Muster nicht benennen und verstehen kann. Interessierte es sie nicht, dass sie die Gespräche der Leute nicht verstehen konnten, weil sie die Namen nicht kannten?
Dunk
25

Ihre Erwartung ist für einen erfahrenen OO-Entwickler durchaus vernünftig. Jeder, der sich selbst so nennt, ohne Design Patterns zu kennen, zeigt nur, dass Erfahrung nicht automatisch in den vergangenen Jahren einfließt :-( Sicher, es gibt viele Entwickler, die Jahre oder sogar Jahrzehnte auf dem Gebiet verbracht haben, ohne jemals etwas über Design gehört zu haben Muster - das zeigt nur, dass sie nicht daran interessiert waren, neue Ideen zu lernen, sich selbst zu verbessern und bewährte Verfahren anzuwenden.

Sollte ein leitender Entwickler Erfahrung mit Entwurfsmustern haben, oder würden Sie sagen, dass Entwurfsmuster ein so einfaches Thema sind, dass jeder anständige Entwickler sie während des Trainings aufgreifen kann?

IMO Erfahrung zählt viel. Theoretisch kann ein anständiger Entwickler Design Patterns in einem Buch oder sogar auf Wikipedia nachlesen und das Grundkonzept in 15 Minuten verstehen. Die richtige Anwendung der Konzepte erfordert jedoch viel Erfahrung. Es ist leicht, sich in Patterns zu verlieben und sie in jeden möglichen Code zu packen, l'art pour l'art. Es ist auch einfach, sie zu entlassen und zu sagen: "Muster sind keine Wundermittel, verwenden Sie einfach das Einfachste, was möglicherweise funktionieren könnte." Es erfordert jahrelange Erfahrung, den Mittelweg zwischen den beiden Extremen zu finden, indem man lernt, wann und wie man Muster verwendet, um echte Probleme zu lösen, und wann man sie nicht verwendet .

Welche Fragen würden Sie stattdessen stellen, um ihre Designfähigkeiten zu beurteilen?

In Übereinstimmung mit den obigen Ausführungen würde ich Ihrer Liste nur die folgenden Fragen hinzufügen:

  • Was sind die Nachteile von Designmustern (im Allgemeinen und von denen, die sie ausdrücklich erwähnen)?
  • Wann sollte man sie nicht benutzen und warum?

Aktualisieren

@GrandmasterB hat den Vorteil, dass einige Entwickler möglicherweise bestimmte Entwurfsmuster verwenden, ohne ihren Namen zu kennen. In gewisser Weise hat er Recht damit, dass dies eine Terminologie- / Kommunikationsfrage ist. Die Kehrseite der Medaille ist jedoch, dass es sich in der Tat um eine Terminologie- / Kommunikationsfrage handelt :-) Das heißt, einer der Hauptvorteile von Design Patterns besteht darin, Entwicklern ein gemeinsames Vokabular zu vermitteln, wodurch die Kommunikation enorm verbessert wird . (Versuchen Sie, die Grundidee des Adapters zu erklären, ohne das Wort selbst oder die Synonyme "Wrapper" usw. zu verwenden!) So talentiert und sachkundig ein Kandidat auch sein mag, ohne die allgemein akzeptierten Begriffe zu kennen, wird er ein Kommunikationsproblem einführen in deinem Team.

Péter Török
quelle
2
Ich weiß nicht , wie allgemein wahr das ist, aber ich würde auch sagen , dass Entwurfsmuster verwenden , kann einführen Kommunikationsprobleme. Wenn etwas, das Sie tun , beispielsweise einem bekannten Muster ähnelt , aber nicht genau diesem Muster entspricht, kann die Kenntnis des vorhandenen Musters Ihre lokalen Unterschiede verdecken. Wenn die Entwickler in Ihrem Team das Muster nicht vollständig verstehen, verwenden sie den Musternamen möglicherweise auf eigenwillige Weise.
Aidan Cully
1
@Aidan, guter Punkt da, obwohl das für mich ein Missbrauch von Mustern ist. Das ist eine weitere Möglichkeit, in der Erfahrung und Übung unabdingbar sind, dh zwischen Varianten desselben Musters und zwei unterschiedlichen Mustern zu unterscheiden.
Péter Török
1
+1, jeder, der sich selbst als Senior-.NET-Entwickler bezeichnet, sollte in der Lage sein, mindestens ein paar explizite Musternamen und deren Verwendung zu nennen. Es ist eine Frage der Kommunikation und des Werkzeugkastens, wenn nichts anderes.
Techphoria414
Ich habe es dreimal gelesen und kann immer noch nicht sagen, ob der erste Absatz Sarkasmus ist oder nicht
Briddums
@briddums, warum denkst du, es ist Sarkasmus?
Péter Török
10

Ein leitender Entwickler? Bestimmt. Ein Junior sollte. Ich bin 15 Jahre alt, habe keine formale Ausbildung zu diesem Thema und verstehe sie sogar. Es ist nicht nur vernünftig zu erwarten, dass sie sie kennen, es wäre inakzeptabel, wenn sie es nicht tun würden. Vorausgesetzt, sie wissen etwas über objektorientierte Programmierung, was sie höchstwahrscheinlich tun.

Anto
quelle
14
Um fair zu sein. OO wurde nur eine der vorherrschenden Methoden während Ihrer Lebenszeit. Es gibt eine Reihe von Leuten, die ihren Abschluss gemacht haben, bevor Java die am College verwendete Sprache war. Es gibt viele Menschen, die nicht in der OO-Welt leben.
Unholysampler
2
@unholysampler: natürlich, aber ich denke, es ist eine OOP-Position, über die gesprochen wird
Anto
1
@unholysampler: Ich wünsche , ich in dieser Zeit gelebt .. ich nicht ausstehen kann an der Uni nichts anderes als Java sehen <_ <
stochern
10

In einem Interview sollten Sie fragen, was für den Kandidaten wichtig ist, um die Arbeit zu erledigen.

Wenn sie die Namen der Muster von Gang of Four kennen müssen, ist dies eine gültige Voraussetzung.

Wenn Sie andererseits möchten, dass sie angemessene Kenntnisse der Programmarchitektur aufweisen, sollten Sie ein Problem angeben und sie fragen, wie der Code strukturiert werden soll. Wenn sie Ihnen die passende Musterlösung geben, haben Sie den Beweis, dass sie es wissen, unabhängig vom verwendeten Namen.

Wenn ich für leitende Positionen interviewe, sind sie in der Regel "praktischer" als Fragen und Antworten. Ich möchte eine klare Demonstration des Könnens und des Komforts beim Programmieren. Ich möchte auch eine solide Grundlage für CS-Konzepte, dh allgemeinere Kenntnisse in der Anwendung von Konzepten wie Kapselung, Algorithmen, Kopplung / Kohäsion usw. Erfahrung und Vertrautheit in mehreren Sprachen und Paradigmen.

dietbuddha
quelle
4

Hängt vom Fachgebiet ab. Ich würde nicht erwarten, dass ein Embedded C-Entwickler viel über Entwurfsmuster weiß. Wenn es sich um einen Java- oder .NET-Entwickler handelt, sollten sie mit Entwurfsmustern vertraut sein und insbesondere wissen, wie sie nicht allzu mitgerissen werden können.

Nemanja Trifunovic
quelle
2
+1 für nicht allzu mit Design-Muster hinreißen lassen :)
Zaky Deutsch
Guter Punkt. Der Frage wurde eine Klarstellung hinzugefügt. Es ist für .NET-Entwickler mit Projekterfahrung in mindestens OO-Programmiersprache.
Nikie
4

Angenommen, Sie streben in OOP nach einem höheren Dienstalter, lautet die Antwort auf jeden Fall Ja. Entwurfsmuster sind ein Lexikon der OOP-Sprache.

Darüber hinaus ist es heutzutage unvernünftig, dass ein anständiger OOP-Programmierer mit zehnjähriger Erfahrung kein Entwurfsmuster benennen kann, da dies in Standard-APIs, -Bibliotheken und -Entwicklungsframeworks weit verbreitet ist.

Es ist Jahre her, dass ich diese Frage in Interviews gestellt habe und es ist ein Showstopper, wenn der Kandidat keine befriedigenden Antworten zu dem Thema liefert.

Paolo Bozzola
quelle
3

Ja, aber Sie sollten wahrscheinlich ihr Verständnis herausfordern, indem Sie nach dem Design fragen stellen, anstatt die Leute zu bitten, die Designmuster aufzulisten, von denen sie gehört haben. Ich mag Muster, die in PoEAA, GoF und sogar in einigen funktionalen Programmiermustern beschrieben sind, und ich glaube immer noch nicht, dass Sie mehr über meinen Lösungsansatz erfahren würden, wenn Sie mich bitten, einige Muster zu nennen.

Wenn Sie eine Frage wie "Gestalten Sie mir einen Texteditor" mit Folgemaßnahmen wie "Wie werden Sie eingebettete Objekte wie Bilder unterstützen? Fett und kursiv? Rückgängig machen?" Sie würden wahrscheinlich irgendwann genug hören, um das Befehlsmuster, das zusammengesetzte Muster, das Erinnerungsmuster und einige andere zu erkennen, auch wenn Sie sich nur kurz unterhalten.

Entwurfsmuster wurden entdeckt und dann beschrieben, damit wir eine gemeinsame Sprache haben, mit der wir Entwurfsentscheidungen kommunizieren können.

Ich habe leider für jemanden gearbeitet, für den jede Verwendung eines Entwurfsmusters erklärt und begründet werden musste, nicht wegen der Sorgfalt, sondern weil er sie einfach nicht kannte. Das ist nicht lustig. Aber die meisten ernsthaften Entwickler haben aus Versehen oder aus Versehen die Namen der am häufigsten verwendeten OO-Muster gelernt, und die meisten Entwickler von Unternehmensanwendungen wissen zumindest etwas über die am häufigsten verwendeten PoEAA-Muster.

JasonTrue
quelle
3

Angemessen. Auf jeden Fall. Notwendig. Nein

Ich frage potenzielle Kandidaten, ob sie Designmuster kennen. Es ist nur eines von mehreren Kriterien, die als Ganzes abgewogen werden müssen. Übersehen Sie nicht das Gesamtbild.

Ja, ohne Zweifel verwenden viele Entwickler unwissentlich einige Entwurfsmuster.

Deshalb stelle ich die Frage nicht.

Es ist wichtig zu wissen, dass ich schnell und effektiv mit einem anderen Entwickler kommunizieren kann. Ich möchte nicht 20 Minuten auf einem Whiteboard verbringen, um einen Zustandsautomaten zu erklären, nur um festzustellen, dass er "vorher verwendet wurde, aber nie wusste, wie man ihn nennt". Das ist nicht produktiv.

Sie helfen auch beim Refactoring-Prozess. Wenn man durch den Code blickt, kann man zufällig eine Form eines Factory-Musters implementieren, aber das GoF-Factory-Muster hat den Test der Zeit überstanden. Das ist der Grund, warum es das Werksmuster ist und nicht NOCH EINMAL (das Rad neu zu erfinden ist nicht zu bevorzugen, Joel bei der Software hat viele Nachteile).

Ein Team, das die Bedeutung von Entwurfsmustern nutzt und erkennt, erhöht die Kommunikation und Produktivität. Wenn Ihr Team als Einheit keine DPs einsetzt, verlieren diese ihre Relevanz.

P. Brian Mackey
quelle
2

Aus eigener Erfahrung habe ich Designmuster eine ganze Weile ignoriert. Ich wusste, dass es sie gibt, ich habe nur nie darüber gelesen. Als ich mich endlich an die Kugel biss, stellte ich fest, dass ich die ganze Zeit über Designmuster verwendet hatte und ich wusste einfach nicht, dass meine Designlösungen tatsächlich einen gemeinsamen Namen hatten.

Ich wäre eher geneigt, eine Reihe von Problemen zu finden, bei denen ein bestimmtes Entwurfsmuster gut zur Lösung passt, und zu sehen, dass der Entwickler etwas Ähnliches wie das Muster findet. Wenn doch, großartig. Vielleicht bin ich sogar eher geneigt, einen Entwickler einzustellen, der unwissentlich Entwurfsmuster verwendet, da ich sehe, dass viele Entwickler mit Entwurfsmusterkenntnissen versuchen, eine Lösung für ein Muster zu finden, wenn es nicht angemessen ist, anstatt zu erkennen, dass ein bestimmtes Muster das Problem löst Problem gut.

Pemdas
quelle
2

Ich denke, eine bessere Frage wäre: Wenn der Kandidat einen Namen für ein Muster und eine Beschreibung des Musters hat, zum Beispiel ein Fabrikmuster aus dem Buch der Viererbande, sollte er in der Lage sein, ein Szenario zu entwickeln, in dem das Muster vorkommt ein vernünftiger Ansatz.

Whatsisname
quelle
1

Es gibt Entwickler mit einer Erfahrung von 5 bis 10 Jahren und es gibt erfahrene Entwickler. Sie sind überhaupt nicht dasselbe. Ja, wenn Sie auf Senior-Ebene einstellen und von den Mitarbeitern erwarten, dass sie Designmuster kennen und anwenden, würde ich keine Senior-Person einstellen, die mit ihnen nicht vertraut ist. Das wäre so, als würde man einen Datenbankspezialisten einstellen, der die Linksverknüpfungen nicht versteht. Das ist ziemlich grundlegend für einen echten Senior-Entwickler. Ich würde aber wahrscheinlich einen Junior einstellen.

HLGEM
quelle
1

Ja, sie sollten mit dem Begriff vertraut sein und sogar einige der Muster benennen können - aber machen Sie nicht den Fehler, theoretisches Wissen mit Erfahrung zu verwechseln.

Es gibt viele Leute, die vor einem Interview Designmuster auffrischen und sie mit einer kurzen Beschreibung abrütteln können - aber das ist nur die Theorie. Es ist ein echter Senior-Entwickler, der erkennen kann, wann er eines verwenden soll, oder ohne Kenntnis eines formalen Musters das Problem auf klassische Art und Weise lösen würde.

Der beste Weg, dies zu überprüfen, ist, sie etwas vor sich entwerfen zu lassen und Fragen zu stellen. Ein leitender Entwickler ist jemand, der auf der Abstraktionsebene natürlich denken kann. Dies sind die Leute, die die Designmuster "kreieren".

Wie die Klasse Peopleware, in der es darum geht , einen Jongleur einzustellen, ohne ihn zum Jonglieren aufzufordern - nur weil er sagt, er könne nicht viel bedeuten, probieren Sie ihn aus.

Stephen Bailey
quelle
Könnten Sie ein Beispielproblem geben? Alle Designbeispiele, die ich finden kann, sind entweder so einfach, dass kein interessantes Design erforderlich ist, oder so ausgelegt, dass es schwer zu erkennen ist, warum eine Lösung besser ist als eine andere, oder so komplex, dass sie in einem Interview nicht gelöst werden können.
Nikie
Es spielt keine Rolle, was es ist, es könnte etwas so Einfaches sein wie "Gestalte mir ein Münzwurfspiel". Warten Sie, um zu sehen, was sie damit machen. Fügen Sie dann eine Anforderung hinzu, um herauszufinden, woran Sie interessiert sind, z. B .: Wie können Sie dies ändern, um Folgendes zu erreichen: testable | tragbar | als Dienstleistung genutzt verwendbar für verschiedene UIs | Laufen im Web ... usw.
Stephen Bailey
0

Wie bereits erwähnt, halte ich es auch für in Ordnung, wenn sie sich nicht auswendig an Schlagworte erinnern. Da dies jedoch eine Führungsposition ist, sollten sie wissen, wann ein Muster zur optimalen Lösung eines Problems anzuwenden ist, anstatt schlechteste Lösungen zu verwenden. Geben Sie ihnen daher ein Problem, das mithilfe eines Musters gelöst werden sollte (z. B. wie Sie ein Objekt erstellen, ohne seine Klasse fest zu codieren, wie Sie auf die Elemente eines Objekts zugreifen, ohne Details zu seiner Implementierung zu haben, usw.) und sehen Sie, wie sie werden es angreifen.

Sakisk
quelle
0

Auf jeden Fall sollten sie die Muster kennen, aber nicht unbedingt die Schlagworte.

Zum Beispiel hat MVC viele sehr ähnliche Alternativen wie PAC, 3-Tier. Vor ein paar Jahren war "Model 2" ein weiteres beliebtes Schlagwort für MVC. Ich kenne sehr gute Entwickler, die dieses Muster perfekt kennen, aber das aktuelle Schlagwort dafür war MVC.

vartec
quelle
0

Ganz einfach: Wenn Sie sie verwenden, müssen Sie Ihre Kandidaten fragen. Wenn sie Muster kennen, sollten ein paar Pluspunkte hinzugefügt werden. Aber nicht zu wissen, sollte sie nicht unbedingt entkräften, besonders wenn sie gute OOD-Fähigkeiten zeigen. Entwickler, die an Instandhaltungsprojekten teilgenommen haben, wissen wahrscheinlich nicht viel über Entwurfsmuster im Vergleich zu denen, die sie entworfen haben. es hängt auch davon ab, ob ihnen im College Designmuster beigebracht wurden. Nach meiner Erfahrung ist es unwahrscheinlich, dass sie es tun werden. Die meisten Universitäten und Privatkurse unterrichten Sie OOP, aber nicht OOD. Die Chancen, dass sie DP studiert haben, sind noch geringer.

Persönlich hatte ich DP nicht studiert, bis mein Projekt mich auch verlangte. Schon damals stellte ich fest, dass ich einige der Muster verwendet hatte, zumindest in ähnlicher Weise, wenn auch nicht in der im Buch beschriebenen Weise. Ich war überrascht zu wissen, dass sie kodifiziert waren. Suchen Sie nach guten Designfähigkeiten, wenn Sie DP nicht kennen. Wenn sie DP kennen, ist es wahrscheinlich, dass sie gut im Design sind und sie dennoch testen. Sie haben vielleicht nur ein paar Schlagworte über DP gelesen oder von einem Insider erfahren und ein paar Muster studiert, ohne sie angewendet zu haben.

DPD
quelle
0

Sie können davon ausgehen, dass Personen, die sich bei Ihnen bewerben, wissen (oder lernen), was in Ihrem Job-Slot benötigt wird, unabhängig davon, ob es sich um Branchenstandards handelt oder nicht. Ansonsten verurteilen Sie sich zur Mittelmäßigkeit. Achten Sie jedoch darauf, dass Sie Kenntnisse (oder Fertigkeiten) zu einer Arbeitsanforderung machen, wenn dies nicht wirklich erforderlich ist.

Nehmen wir an, Sie haben zwei Kandidaten mit ungefähr ähnlichen Hintergründen, und einer kann Ihnen von Designmustern erzählen, der andere nicht. Was sagt Ihnen das darüber, wie sie bei der Arbeit abschneiden werden?

Sie sagen, die vorhandene Software verwendet Entwurfsmuster. Ist das ein vorteil Wenn das so ist, wie? Ist es Ihr Ziel, dass neue Software in Übereinstimmung mit vorhandenen Mustern geschrieben wird oder dass neue Muster eingeführt werden? Warum?

Walter Mitty
quelle
0

Ich kann mir einen leitenden Entwickler vorstellen, der in der folgenden Situation keine Kenntnisse über Entwurfsmuster hat:

  1. Es gibt nur ein Buch über Designmuster. Es ist das Buch, das sie in erster Linie populär gemacht hat. Wenn die Person dieses eine Buch nicht gelesen hat, ist es möglich, dass sie nicht über Designmuster Bescheid weiß oder davon gehört hat, aber nicht genau weiß, wofür sie da sind
  2. Stattdessen müssten sie sowas wie uml wissen ....
  3. Gute Informationen über Entwurfsmuster aus dem Internet zu finden, ist nicht einfach. Sie haben großes Glück, wenn Sie auf die richtige Webseite gelangen, die über gute Kenntnisse in Bezug auf Entwurfsmuster verfügt. Wenn Sie nach 1995 zu Software wechseln, wissen Sie vielleicht nichts über Design Patterns, weil das Buch alt ist.
tp1
quelle
-2

Warum sollte jeder Entwickler in einer Nicht-OO-Umgebung über OO-Entwurfsmuster Bescheid wissen? Ich habe in Geschäften nur mit Cobol, nur mit PL / SQL, nur mit Progress 4GL usw. gearbeitet. OO-Designprinzipien sind dort irrelevant. Ich würde erwarten, dass die Senioren in diesen Umgebungen relevante Kenntnisse in diesen Umgebungen haben, nicht in OO-Design Muster.

Aus einem Musterkatalog sinnlos zitieren zu können, macht Sie auch nicht zu einem guten Entwickler (meiner Erfahrung nach produziert es tatsächlich einige der schlimmsten Codestücke, die ich je gesehen habe). Aber das ist es, was Sie erwarten, um das Zeichen eines "Senior-Entwicklers" zu sein. Ich arbeite seit 15 Jahren in der Industrie, bitte mich jedoch nicht, ein Musterdiagramm zu zeichnen. Ich habe es nie viel Zeit gegeben, ich brauche nicht. Ich habe genug Erfahrung gesammelt, um herauszufinden, was funktioniert, ohne einen bestimmten Namen zu vergeben, und wenn ich die formale Definition benötige, weiß ich, wo ich sie nachschlagen kann (und ja, ich habe die Nachschlagewerke in meiner persönlichen Bibliothek). Das ist das Markenzeichen des erfahrenen Entwicklers, nicht das Wissen, das er durch das Überfüllen einiger Schulbücher gewonnen hat.

jwenting
quelle
2
Ich sehe keine Relevanz für die Frage. Ich interviewe nicht für eine Cobol-Entwicklerposition und ich werde die Leute definitiv nicht bitten, "gedankenlos rotes Wissen zu zitieren". Ihr einziger Punkt scheint zu sein, dass Sie keine Entwurfsmuster kennen.
Nikie
unix / linux ist in 'C' geschrieben, es steckt voller OO-Patterns und vielem mehr als im gof-Buch.
Strg-Alt-Delor
2
"Ich habe genug Erfahrung gesammelt, um herauszufinden, was funktioniert, ohne einen bestimmten Namen zu vergeben." Ein Teil des Werts von Entwurfsmustern ist der Name. Sie können also "Verwenden wir ein Factory-Muster" sagen und Ihr Kollege weiß sofort, was Sie meinen. Wenn Sie beide wissen, wie man so etwas macht, aber keiner von Ihnen einen Namen dafür hat, müssen Sie viel mehr Zeit damit verbringen, zu erklären, bevor die andere Person sagt: "Oh, DAS." Und wenn der Code eine WidgetFactory enthält, versteht jemand, der das Factory-Muster kennt, wofür das ist.
Nathan Long
Ich stimme Nathan zu. Bei Entwurfsmustern geht es darum, einer gemeinsamen Lösung einen Namen zu geben. Es gibt nur sehr wenige Designmuster, an die die Menschen nicht selbst gedacht hätten. Der Vorteil ist, dass Sie einen allgemein akzeptierten Namen vergeben, damit Sie mit anderen Entwicklern kommunizieren können, ohne auf die Details einzugehen. Ihre Meinung, dass Sie einem Muster keinen Namen geben müssen, weil Sie es bereits verwenden, entspricht Ihrer Aussage, dass Kommunikation nicht wichtig ist. Nehmen Sie an einem Vorstellungsgespräch teil und machen Sie die Aussage "Kommunikation ist nicht wichtig" und sehen Sie, wie viele Stellenangebote Sie erhalten.
Dunk