Wenn ich unter einer besonders strengen Programmierfrist (wie einer Stunde) in Panik gerate, tendiere ich dazu, ohne einen wirklichen Plan in die Programmierung einzusteigen, und hoffe, dass ich es im Laufe der Zeit herausfinde. Bei genügend Zeit kann dies funktionieren, aber in einem Interview war es ziemlich erfolglos, wenn nicht sogar ausgesprochen kontraproduktiv. Ich sitze nicht immer gerne da und denke nach, während die Uhr tickt.
Gibt es eine Checkliste oder gibt es Techniken, um zu erkennen, wann Sie das Problem gut genug verstehen, um mit dem Codieren zu beginnen? Wann ist es am produktivsten, bei einigen Experimenten mehr über das Denken und Entwerfen im Vergleich zum Code nachzudenken und das Gesamtdesign später herauszufinden?
Hier finden Sie eine Liste der Techniken, mit denen Sie eine Mathematikprüfung und eine mündliche Prüfung ablegen können . Gibt es eine ähnliche Liste von Techniken zur Behandlung eines unter Druck stehenden Programmierproblems?
ANTWORTEN: Ich denke, dies ist eine gültige Antwort: Wie man es löst . Ich fand diesen Link als Antwort auf Schritte zum Lösen oder Herangehen an eine Lösung . Es gab auch einige wirklich gute Tipps bei Ist lautes Nachdenken während eines Interviews wirklich die beste Strategie? . Ein gutes und prägnantes Argument für TDD ist die erste Antwort auf TDD. Code schreiben oder die Antwort auf ein Problem herausfinden?.
quelle
Antworten:
Ich erinnere mich, eine Studie darüber gelesen zu haben, wie Feuersäulen einen Aktionsplan bilden, wenn sie am Ort eines Feuers ankommen. In der Studie wurde festgestellt (und verurteilt), dass sie eine Idee hatten und diese erste Idee sofort verfolgten. Aufgrund des Zeitdrucks war es so ziemlich "das könnte funktionieren", gefolgt von "ok, lass uns das machen". Die Studie stellte fest, dass bessere, schnellere und sicherere Optionen zur Verfügung standen, die jedoch nicht befolgt wurden, weil die Marshalls nicht zuerst an sie dachten.
Wenn Sie eine strukturierte Herangehensweise an den Umgang mit "Bränden" wünschen, nehmen Sie vielleicht ein Blatt aus ihrem (neuen) Buch, das mehrere Phasen vorschreibt:
RRAPID
oder allgemeiner:
quelle
Ich beginne immer damit, die Anforderungen zu verstehen und nach Lücken zu suchen, die beantwortet werden müssen.
Dann skizziere ich (sehr grob und auf Papier oder einem Whiteboard) zwei oder drei mögliche Lösungen. Dann frage ich mich: "Gibt es noch etwas, das ich wissen muss, um eines davon zu implementieren?"
Sobald ich meine ersten Fragen habe (es gibt zu 100% Fragen, wenn Sie keine haben, haben Sie die Anforderungen nicht wirklich eingehend geprüft.), Gehe ich zurück zu den Stakeholdern, um meine Antworten zu erhalten.
Während ich über ihre Antworten nachdenke, überlege ich, ob meine Lösungen besser sind als die anderen oder besser, wenn ich die Antworten auf die Fragen bekomme. Wenn zum Beispiel die Frage, wie schnell Sie sie brauchen, sofort beantwortet wird, greife ich möglicherweise zu der mit der schnellsten Entwicklung, lasse aber einen Weg offen, um das Design später zu verbessern. Wenn sie mir sagen, dass die Leistung kritisch ist, dann schaue ich mir die Lösungen an und bestimme, welche mit größerer Wahrscheinlichkeit die bessere Leistung erbringen (dies sind Vermutungen zu diesem Zeitpunkt, aber allgemein informierte). Wenn es sich um eine grafische Benutzeroberfläche handelt, kann ich einen Papierprototyp mit verschiedenen Designs erstellen und die Beteiligten dazu bringen, sich diese anzuschauen, bevor ich etwas codiere Design!)
Sobald ich meine Antworten erhalte, wähle ich ein grobes Design und erstelle eine Liste aller Dinge, die ich tun muss, um es umzusetzen. Dann fange ich an zu codieren.
quelle
Das habe ich an der Uni gemacht. Dies wurde zu einem echten Problem und führte in der Regel dazu, dass der Code neu geschrieben wurde. Ich fing an, dies zu beheben, indem ich keinen Code schrieb. Ich legte Wert darauf, über das Problem nachzudenken. Mit genügend Übung greife ich instinktiv nach meinen Gedanken und nicht nach einer Tastatur.
Innerhalb eines Interviews muss es eine durchdachte Implementierung einer Lösung geben, und das ist nicht immer einfach. Was Sie nicht tun möchten, ist Antworten herausplatzen, ohne darüber nachzudenken. Wenn Sie die Antwort kennen, geben Sie sie schnell. Wenn Sie dies nicht tun, verlassen Sie sich auf Ihre Gedanken, um eine Lösung zu finden. Geben Sie immer an, wenn Sie nicht wissen, wie Sie eine Lösung finden würden.
Ich würde davon abraten, weil Sie sich streng darauf verlassen können. Fragen Sie sich lieber, ob Sie das Problem gut genug verstehen, um mit dem Codieren zu beginnen. Wie würdest du wissen? Denn wenn Sie Ihre Herangehensweise begründen und sie dann unter Berücksichtigung Ihrer derzeitigen Sprachkenntnisse prüfen, ist dies sinnvoll. Haben Sie immer einen Plan und eine Vorgehensweise. Denken Sie auch daran, dass Code niemals fertig ist und sich nicht weiterentwickelt hat. Erwarten Sie daher, dass Sie häufig zu Ihrem Code zurückkehren.
Sie werden das Gesamtdesign kennenlernen und darüber nachdenken wollen. Dann beginnen Sie mit der Erstellung der Klassenstruktur und der Stubs. Dann überprüfe es noch einmal. Macht das Sinn? Codierungsexperimente sind eine großartige Möglichkeit, um zu demonstrieren, dass etwas gut funktioniert, und sollten verwendet werden, aber nicht, um den von Ihnen geschriebenen Code zu gestalten oder zu formen.
quelle