Jeder, der R # oder CodeRush verwendet hat, weiß, wie schnell Sie einfache Konstrukte (und komplexe Konstrukte) mit einer einfachen Tastenkombination zusammensetzen können. Allerdings tun , um diese Produktivität Plugins Ursache einer falschen Bewertung der Fähigkeit während der Interviews?
Ein Teil davon, ein produktiver Code-Schreiber zu sein (und einen guten ersten Eindruck in einem Interview zu hinterlassen), ist das schnelle Schreiben von gutem Code.
Wenn ich zwei Kandidaten hätte:
Verwendet keine Plugins. Sie denkt über das Problem nach, setzt sich an eine Standard-IDE am Interview-PC, die genau wie ihre aussieht, und tippt den Code wie üblich in ein oder zwei Minuten ein. Getan. Bestehen.
Verwendet Plugins. Er denkt über das Problem nach, setzt sich an eine Standard-IDE am Interview-PC und merkt, dass "fe + tab" nicht mehr automatisch eine foreach-Schleife schreibt und alle Verknüpfungen weg sind. Dann stolpert er über die Tastatur, drückt seine normalen Hotkeys, öffnet seltsame Fenster und wird nervös. Er braucht 3 Minuten, um zu schreiben, was normalerweise 30 Sekunden dauert. Getan. Es sah so aus, als ob sie sich zeitweise nicht mit der IDE auskannten. Muss neu in dieser IDE sein und hatte daher nicht viel Erfahrung damit oder vielleicht die Sprache. Bestehen Sie, aber ein "meh" Zeichen neben ihrem Namen.
Wie gehen Sie Ihrer Erfahrung nach mit Plugins während eines Interviews als Interviewer oder Befragter um? Was sind die besten Methoden, um das zu erreichen, was der Kandidat wirklich weiß? Es kann Kandidaten geben, die den Code nicht verstehen und R # als Krücke verwenden. Es kann auch Kandidaten geben, die den Code kennen und R # verwenden, weil es einfach schneller ist als die eingebauten VS- oder Eclipse-Vorlagen. Ist es am besten, überhaupt keine IDE zu verwenden? Lassen Sie sie ihren eigenen PC mitbringen? Andere?
quelle
:w
überall mit zufälligen Markierungen gefüllt .Antworten:
Ich war vor kurzem Kandidat 2 in einem Interview . Ich erhielt eine Vanille-Installation der IDE auf einem PC mit einer nicht standardmäßigen Tastatur und einem ungewohnten Test-Framework und wurde gebeten, eine einfache Fizz-Buzz-App mit Komponententests zu schreiben. Ich habe es geschüttelt. Ich muss wie ein absoluter Noob ausgesehen haben, der im Dunkeln herumstolperte und versuchte, Code herauszuholen. Natürlich wurde mir die Stelle nicht angeboten.
Was ich gelernt habe ist, dass ich mich sehr stark auf meine Plugins verlasse. Sie lassen den Code nicht nur schneller tippen, sondern prägen auch die Art und Weise, wie ich über Code denke und wie ich mich mit dem Codieren befasse. Ich habe zum Beispiel sehr sorgfältig über Variablennamen nachgedacht, weil es schwierig sein könnte, sie nachträglich zu ändern. Im Gegensatz dazu rate ich nur halbherzig, wie ich die Variable verwenden werde, hacke Code heraus, lasse mir von der Variablen sagen, wofür sie ist, und drücke dann Refactor-> Rename, um sie als etwas passenderes zu bezeichnen .
Macht mich das zum weniger fähigen Kandidaten? In gewisser Hinsicht denke ich, dass es so ist . Jemand, der Code in Notepad schreiben und korrekt kompilieren und ausführen kann, hat bestimmte Vorteile gegenüber jemandem wie mir, der alle IDE-Güte benötigt, die er bekommen kann. Unter diesem Gesichtspunkt verstehe ich vollkommen, warum sich ein Unternehmen dafür entscheiden würde, keinen Werkzeugkopf wie mich einzustellen.
Andererseits bin ich immer noch ein talentierter und fähiger Senior Developer. Ich habe gelernt, was für mich funktioniert, und ich übe die Art von Faulheit, die mich angesichts meiner eigenen Schwächen und Einschränkungen produktiv macht. Kurz gesagt, ich bin ein Programmierer, von dem ein Unternehmen wie das, das mich abgewiesen hat, wirklich profitieren könnte .
Interessanterweise hatte ich vor ein paar Wochen ein weiteres Interview. Nach meinen bisherigen Erfahrungen habe ich mich nach zusätzlichen Tools oder dem Budget für den Kauf erkundigt. Die Entdeckung , dass es für Umklappen auf das (eher großzügig) Angebot , dass weder gab mir einen Grund mehr , war sie gemacht zu mir .
Um Groucho zu paraphrasieren: " Ich würde keinem Unternehmen beitreten, das jemanden wie mich als Mitarbeiter hätte. "
Jedenfalls nicht, wenn ich nicht ReSharper verwenden darf.
quelle
Lassen Sie sie ( Kandidaten ) verwenden, was sie wollen. Der alte Wal-Mart, den man mit einem Schweizer Taschenmesser bauen kann , ist so alt. Sie werden in ihrer täglichen Arbeit alles verwenden, was sie brauchen (naja, das hoffe ich mit Sicherheit), also lassen Sie sie in einem Interview alles verwenden, was sie wollen. Das Endergebnis ist alles, was zählt. Gerne stelle ich einen Kandidaten ein, der weiß, welche Tools auf dem Markt verfügbar sind und wie man sie effizient einsetzt, und dann denjenigen, der alles manuell erledigt. Dies ist eine Killerindustrie.
ps Denken Sie beispielsweise an Vim (oder Emacs) - möchten Sie es ohne benutzerdefinierte Einstellungen, Plugins usw. verwenden?
quelle
Ich würde argumentieren, dass Tools wie ReSharper Sie tatsächlich zu einem besseren Kandidaten machen.
Zum einen wird Ihnen ReSharper etwas über Sprachkonstrukte beibringen, von denen Sie vielleicht noch nichts gewusst haben, und Sie können Ihren Code besser so organisieren, dass Sie über ein Problem nachdenken oder es zur besseren Lesbarkeit strukturieren. In gewisser Weise hält ReSharper Sie mit den besten Methoden für das Schleudern von Code auf dem Laufenden, anstatt Sie auf schlechte oder veraltete Gewohnheiten oder, noch schlimmer, auf die schlechte Art von Faulheit zurückgreifen zu lassen.
Ein guter Programmierer muss grundlegende Konstrukte verstehen, sie jedoch nicht manuell eingeben. Durch die gute Art der Faulheit erledigen die Werkzeuge das morgendliche Grunzen, und die eingesparte zusätzliche Zeit wird dafür aufgewendet, über das Problem nachzudenken. Dies macht einen insgesamt zu einem besseren Entwickler.
Ich vervollständige die Argumentation, indem ich erkläre, dass der Interviewprozess, wenn er Stöcke und Steinmesser bevorzugt, grundlegend kaputt ist.
quelle
Das ist einer der Gründe, warum ich die Leute auffordere, am Whiteboard und nicht in der IDE zu programmieren. Es gleicht das Spielfeld aus. Und die Leute sagen: "Oh je, Resharper erledigt das normalerweise für mich." Heck, die eingebauten Snippets behandeln Schleifen und dergleichen, die das Whiteboard Ihnen nicht geben kann. In diesem Fall reicht es wahrscheinlich aus, etwas wie "Ich hoffe, die Zeichensetzung stimmt, ich bin ein R # -Typ" zu sagen, um mich von Syntaxproblemen abzuhalten.
Ich muss in der Lage sein, verständlichen Code auf das Whiteboard zu schreiben, damit wir ein Meeting abhalten können, in dem wir herausfinden, wie wir die Dinge angehen werden. Und natürlich möchte ich sehen, ob Sie jemals tatsächlich Code in Ihrem Leben geschrieben haben oder nicht. Ihre Interviews können variieren.
quelle
Tolle Frage, übrigens - ich habe oft darüber nachgedacht.
Die Beherrschung von Werkzeugen ist eine Fähigkeit, die für einen guten Entwickler von zentraler Bedeutung ist. Ich habe immer gespürt, dass Alarmglocken läuten, wenn ein Entwickler behauptet, dass er das Codieren im Editor der Verwendung einer IDE vorzieht . Es deutet darauf hin, dass er sich mehr für den Prozess interessiert als für das Produkt.
Es ist, als würde man lieber mit einer Hacke gegen einen Traktor den Boden bestellen - gut, wenn man ein Hobbygärtner ist, aber als Industriebauer in einer wettbewerbsorientierten Wirtschaft nicht zu ertragen ist.
Wir werden jedoch von unseren Werkzeugen abhängig. Die Leute scheinen auszuflippen, wie wir mit der hypothetischen Situation umgehen würden, in der unsere Werkzeuge plötzlich weggenommen wurden. Es gab das gleiche Argument, Taschenrechner in Prüfungen zuzulassen.
Die Realität ist, dass Tools von Jahr zu Jahr besser und billiger und billiger werden, und es gibt keinen Grund, warum Sie jemals davon ausgehen sollten, dass Sie ohne sie auskommen werden. Und Werkzeuge eignen sich hervorragend für sich wiederholende Aufgaben mit einem hohen Maß an Qualität - das heißt, wir können die ganze Kraft unseres unglaublichen Homo-Sapien-Intellekts auf die schwierigen (und interessanten) Teile konzentrieren.
ReSharper ist eine großartige Ergänzung zu Visual Studio. Meine aktuelle Firma hatte zum Zeitpunkt des Interviews keinen ReSharper - aber ich war in meinem Interview so evangelisch, dass sie mir eine Kopie kauften, als ich die Stelle annahm, sowie eine für den Entwickler, der mich interviewte. Es wird jetzt im gesamten Unternehmen eingeführt. Gute Werkzeuge machen sich in kürzester Zeit bezahlt.
Zur Beantwortung der Frage: Ihre Abhängigkeit von Tools kann zu einer falschen Einschätzung Ihrer Fähigkeiten in einem Interview führen, sie geben jedoch immer eine korrekte Einschätzung der Fähigkeiten des Interviewers. Wenn ein Unternehmen den Wert der Werkzeugunterstützung in Ihrem Interview nicht erkennt, müssen Sie ihnen das Licht zeigen. Und wenn sie es immer noch nicht sehen, wäre ich sehr besorgt, eine Position dort anzunehmen.
quelle