Wie wichtig ist ein guter Codierungsstil für die Entscheidung, einen Programmierer einzustellen? [geschlossen]

15

Schon als Student werde ich gebeten, den Code von Programmierern zu überprüfen, die einen Test (nicht) bestanden haben (eine Liste von Fibonacci-Zahlen auf Android erstellen).

Während ich den Codierungsstil sehr streng halte, habe ich nur etwas über den "Block" -Stil gelesen, den jemand verwendet hat (siehe Kommentare!) .

In meiner Position würde ich empfehlen, keinen Mann einzustellen, der diese Art von Stil verwendet. Der Code ist das Gegenteil des in meiner Firma verwendeten Codierungsstils.

Bei der Suche nach Coding-Stil und wie man mit einem Mangel umgeht, bin ich neugierig auf eine Sache: Soll ich einen Typ einstellen, der ihn haben wird?ernsthafte Schwierigkeiten Anpassen des in der Firma verwendeten Codierungsstils?

Bitte: Dies sollte keine Diskussion über den Codierungsstil im Allgemeinen sein und welcher ist besser. Es geht um die Bedeutung des Codierungsstils für die Entscheidung, jemanden einzustellen!

Mehr Informationen:

Ich bin nicht der Typ, der die Entscheidung trifft, ich gebe nur meine Meinung basierend auf Code. Der Typ muss ein Interview bestehen, in dem unser Leiter die Soft Skills überprüft. Wenn er das bestanden hat, muss er unsere kleine Fähigkeitsprüfung bestehen und hier werde ich manchmal gebeten, den geschriebenen Code zu überprüfen. Ich bin nicht in der Lage, Ja oder Nein zu sagen. Ich möchte nur wissen, wie wichtig der Codierungsstil für meine Überprüfung sein sollte ...

WarrenFaith
quelle
9
Klug. Anstatt die "schwerwiegenden Anpassungsprobleme" (die von den Fakten nicht unterstützt werden) zu beseitigen, setzen Sie eine Linie durch. Als ob dies tatsächlich die unbegründete Behauptung über die Haltung eines anderen ändert.
S.Lott
2
Der Codierungsstil ist das Wichtigste, mit dem Sie sich befassen sollten. Immerhin ist es nur ein Code.
SK-logic
7
Ich habe versucht, Ihre Frage zu lesen, fand es jedoch schwierig, Ihre Formatierung zu befolgen. Könnten Sie Ihren Absätzen einen Starteinzug hinzufügen? 'K THX BAI
Dietbuddha
2
Codekonsistenz (oder deren Fehlen) ist ein Indikator. Wenn zum Beispiel jemand keine Zeit hat, seinen Code zu organisieren, hat er wahrscheinlich auch keine Zeit, den richtigen Ort zu finden, um ein neues Projekt in Subversion zu übernehmen. Sie haben wahrscheinlich keine Zeit, um umzugestalten. Die Liste geht weiter.
Kevin
10
Der Codierungsstil lässt sich auf lächerliche Weise leicht anpassen. Das ist so, als würde man fragen: "Diese Person trägt schwarze Anzüge, aber in unserem Unternehmen ziehen wir es vor, dass Mitarbeiter dunkelgraue Anzüge tragen. Soll ich sie einstellen?" Sagen Sie ihnen einfach die Stilregeln, die Sie in Ihrem Unternehmen haben. Problem gelöst.
Saftige Lucy

Antworten:

41

Woher weißt du, dass er Schwierigkeiten haben wird, sich anzupassen? Nur weil sie einen anderen Codierungsstil verwenden? Das ist ziemlich anmaßend. Ich bin seit langer Zeit ein Auftragnehmer, und egal, welcher Codierungsstil verwendet wird, passen Sie sich an. Es kann einige Zeit dauern, aber die Gewohnheiten bilden sich ziemlich schnell.

Ich hoffe, dass Sie mit Codierungsstil nicht nur Einrückung und Layout des Codes meinen. Mit einem Code-Formatierer lässt sich das leicht erledigen und in Ihr Versionskontrollsystem integrieren.

Unter Codierungsstil versteht man Dinge wie Benennung, allgemeine Reihenfolge, Einheitentrennung und alles andere, was mit Lesbarkeit und Wartbarkeit zu tun hat. Das Wichtigste am Codierungsstil ist, dass Sie einen haben. Nicht welches. Kein Codierungsstil ist eine eindeutige rote Fahne.

Das zweitwichtigste an jedem verwendeten Codierungsstil ist, dass er konsequent verwendet wird. Wenn jemand einen Codierungsstil zu verwenden scheint, aber häufig dagegen "sündigt", ist dies eine weitere eindeutige rote Flagge.

Marjan Venema
quelle
5
+1, die man nicht hat oder die man nicht konsequent benutzt, sind 'rote Fahnen', die einen anderen Stil haben, sind es nicht.
Jv42
1
Ich bin völlig einverstanden, dass "es zumindest konsequent verwendet wird". Das ist das Wichtigste, wenn ich den Code überprüfe. Aber Sie müssen zugeben, dass der
Codestil
3
@WarrenFaith: So beurteilen Sie ein Buch nach seinem Cover? :-) Im Ernst, es gibt zwar einen ersten Eindruck, aber ich würde davon ausgehen, dass Sie beim Interview darauf achten würden, darüber hinaus zu schauen und nicht auf einen tadellosen Entwickler zu verzichten, nur weil sein aktueller Stil nicht zu Ihrem passt.
Marjan Venema
+1 für Konsistenz: Das Fehlen von Stil deutet im Allgemeinen darauf hin, dass sie nicht viel geschrieben haben. Wenn Sie schreiben, wählen Sie Gewohnheiten.
Matthieu M.
1
Ich hasse automatische Code-Formatierer, aber ich kann die Notwendigkeit für sie akzeptieren. Sie scheinen nur an den falschen Stellen Zeilenumbrüche hervorzurufen. Ja, ich spreche von Sonnenfinsternis.
Kevin
27

Lassen Sie mich einen Punkt hervorheben, der bei Hunderten von verschiedenen Projekten für fast hundert verschiedene Kunden programmiert wurde.

Der Codierungsstil (und das Streiten über den Codierungsstil) ist reine Zeitverschwendung.

Komm darüber hinweg.

Ich habe viel Code von vielen verschiedenen Programmierern gelesen. (Nehmen Sie eine mittlere Teamgröße von 5 und 100 verschiedenen Teams an. Das sind 500 Mitarbeiter.) Der Stil spielt keine Rolle.

Ich habe hübschen, aber pathologisch falschen Code gesehen.

[Es gibt eine Grenze. Vorsätzliche Verschleierung ist Kündigungsgrund. Kurz gesagt, Stil ist Zeitverschwendung.]

Coding Style ist die "letzte Grenze"

Wenn Sie alle Probleme der Softwareentwicklung gelöst haben; wenn Sie mehr oder weniger sofort fehlerfreien Code erstellen können; Wenn Ihr Qualitätsniveau so hoch ist, haben Sie keine Fehlerbehebungswarteschlange mehr. Wenn Ihre Benutzerfreundlichkeit so fabelhaft ist, haben Sie keinen Helpdesk mehr. Wenn Sie in der Lage sind, rücksichtslos zu optimieren, bis Sie keine Serverfarm mehr haben, sondern das Unternehmen von einem iPad aus betreiben ...

Wenn nichts mehr zu beheben ist, können Sie sich endlich auf den Codierungsstil konzentrieren.

Bis dahin gibt es zahlreiche Themen, die größer und wertvoller sind als der Stil.

S.Lott
quelle
2
@WarrenFaith: Ich kann das nicht stark genug sagen. Das ist egal. Ich werde meinen Punkt wiederholen. Ich habe Code von Hunderten und Hunderten von Programmierern gelesen (professionell, für bezahlte, abrechnungsfähige Stunden). Das ist egal. Es ist nicht der erste Eindruck: Korrektheit und Klarheit sind die ersten Eindrücke.
S.Lott
2
@WarrenFaith: Absichtliche Dunkelheit ist selten. "Wenn Sie den Code einfach nicht lesen können" ist etwas, das für den Leser genauso problematisch sein kann wie für den Schreiber. Ich werde meinen Punkt wiederholen. Ich habe Code von Hunderten und Hunderten von Programmierern gelesen (professionell, für bezahlte, abrechnungsfähige Stunden). "Kann einfach nicht lesen" ist noch nie passiert. Stil spielt keine Rolle.
S.Lott
2
Der Codierungsstil (und das Streiten über den Codierungsstil) ist reine Zeitverschwendung. - Ich stimme in Bezug auf den zweiten Punkt zu 100% und in Bezug auf den ersten Punkt zu 40% zu. Der Codierungsstil spielt eine Rolle - wenn Ihre Codierung überhaupt keinen Stil enthält. Wenn ja, spielt es keine Rolle, wie es aussieht.
Treb
4
@WarrenFaith: Ich habe mir die Probe angesehen und sehe dort nichts, was nicht klar ist. Es ist nicht formatiert, wie ich es formatieren könnte, aber es gibt keine Hinweise darauf, dass der Code nicht funktioniert. Es ist nichts Unklares daran. Nichts deutet darauf hin, dass die Person, die geschrieben hat, nicht in der Lage oder nicht gewillt ist, einem Teamstandard zu entsprechen. @ S.lott ist richtig. Es spielt keine Rolle.
Joel Etherton
4
Und //Importantin jeder Zeile verwenden. Hm. Jede Codezeile ist wichtig oder sollte gelöscht werden.
S.Lott
7

Die Beurteilung von Programmierern anhand des Codierungsstils ist zu 50% snobistisch und zu 50% unsicher.

Ich möchte, dass mein Code ordentlich und sauber aussieht, und es klingt so, als ob der Typ, auf den der OP im Link zerlumpt ist, es auch tut. Unser Code sieht nicht gleich aus, aber wir verwenden beide einen Stil, der uns hilft, den Code zu verstehen, wenn wir darauf zurückkommen. Ich hatte überhaupt keine Probleme, seinen Code zu verstehen, und ich bezweifle, dass das OP es auch tat. Der Codierungsstil "Beratung" ist nichts anderes als eine einfache, billige Aufnahme, in der Sie Ihre immense Weisheit darüber vermitteln können, warum geschweifte Klammern in der nächsten Zeile stehen sollten. Es spielt überhaupt keine Rolle. Was das Lesen von Code erschwert, ist:

  • Wahnsinnige Namenskonventionen (oder deren Fehlen), die nicht beschreiben, was sie darstellen.
  • verrückter Programmfluss, der es schwierig macht zu sagen, was gerade passiert (gehe, versuche / fange mit Geschäftslogik, etc.).
  • Wahnsinnig lange Funktionen, die mehr bewirken, als das Gehirn nachverfolgen kann.

Ich habe Probleme, mir Code vorzustellen, der keine der oben aufgelisteten Funktionen ausführte, aber dennoch schwer zu lesen war, insbesondere mit einem Tool wie Style Cop.

Morgan Herlocker
quelle
7

Es ist lächerlich , dass das Code-Format eine Rolle bei der Entscheidung spielt, jemanden einzustellen.

  1. Es gibt viele weitere wichtige Faktoren zu berücksichtigen.
  2. Die meisten Entwickler können ihren Stil anpassen.
  3. Wenn das Format so wichtig ist, verwenden Sie einen Code-Reformatierer und einen Flusenprüfer.

Einen guten Entwickler nicht einstellen, weil er kein Leerzeichen nach einem Komma einfügt, ist albern.

dietbuddha
quelle
4

Ich nehme an, Sie haben einen offiziellen Formatierungsstil in der Firma.

Anschließend können Sie jede Quelle ganz einfach auf den offiziellen Stil umformatieren. Dies geschieht vorzugsweise automatisch, sobald die Quelldatei gespeichert wird.

Jeder Programmierer, der sein Salz wert ist, wird es lieben, weil es eine höhere Qualität durch Minimierung der Unterschiede für Commits gewährleistet.


quelle
Ich habe die Commit-Probleme vergessen ... und ja, wir haben einen offiziellen Formatierungsstil und auch eine automatische Formatierung vor dem Speichern.
WarrenFaith
@Warren, naja, dann sag es im Interview und sorge dafür, dass der Programmierer versteht, dass dies wichtig ist. Dann ist es an ihm, sein Versprechen zu halten, wenn er den Job behalten will.
4

Verwenden Sie StyleCop

Wenn Sie Visual Studio verwenden, können Sie bei der Kompilierung immer StyleCop-Regeln erzwingen, um sicherzustellen, dass Ihr Code mindestens lesbar ist.

Ich lehne unlesbaren Code ab, der möglicherweise nicht dem Standard entspricht , da er in Zukunft sehr schwer zu pflegen sein wird - auch von den Autoren selbst. Dies ist in der Vergangenheit vielfach bewiesen worden.

CVS-integrierte Code-Formatierung = optimale Lösung

Es wäre wirklich großartig, wenn einer der CVS die automatische Code-Formatierung beim Einchecken unterstützen würde. Sie haben nur Ihre Stilprioritäten festgelegt, der Code wurde vor dem Speichern formatiert. Das würde den Entwicklerspezifischen Stil in Bezug auf die Code-Formatierung überflüssig machen. Ich kann das Problem erkennen, wenn einige Entwickler unterschiedliche Einrückungszeichen verwenden. Es ist für mich nicht so problematisch, anderen Code zu betrachten (und ich kann ihn einfach und schnell neu formatieren), aber DIFF ist schwieriger zu handhaben. Viele False Positives im DIFF-Tool.

Robert Koritnik
quelle
Also ... wenn ein Unternehmen seine eigenen C # -Codierungsstandards erfinden würde, wäre das eine rote Fahne?
Job
1
@Job: Nicht unbedingt, da StyleCop das Hinzufügen zusätzlicher Regeln ermöglicht. Ich weiß, dass ich zwei von ihnen geschrieben habe, die TABs über SPACEs erzwangen, die es überhaupt nicht gab. Die Idee ist jedoch, dass der Codierungsstil erzwungen werden kann, wodurch es viel einfacher wird, einheitlichen Code zu haben.
Robert Koritnik
Was wäre, wenn ihr Stil wieder dem von StyleCop entsprechen würde und wenn sie StyleCop überhaupt nicht nutzen würden - wäre es dann?
Job
@Job. Es sei denn, jemand schreibt C # -Code nicht so, als wäre es ein alter Fortran (jemand mit 80 Spalten festem Layout?), Dann denke ich immer noch, dass der Codierungsstil eingehalten werden kann. Wenn jemand ein großartiger Entwickler ist, können Sie ihn an die Verbesserung seines Stils erinnern (oder ihn seinen Stil gegenüber unserem rechtfertigen lassen ). Dafür ist die Codeüberprüfung gedacht. Jeder Code kann schnell neu formatiert werden, es sollten jedoch zumindest Namenskonventionen eingehalten werden. Aber es ist keineswegs eine rote Fahne zum Mieten. Sollte nicht sein.
Robert Koritnik
3

Weit unter den folgenden viel wichtigeren Details:

  • Team Fit
  • Fähigkeiten zur Problemlösung
  • Kommunikation

Codierungsstile können von den meisten Personen erlernt werden, bei denen die letzten beiden oben aufgeführt sind.

Im Allgemeinen sehe ich jedoch vor dem letzten Interview ein Codebeispiel, und wenn der Codierungsstil weit von dem entfernt ist, was wir verwenden, werde ich mich auf Fragen konzentrieren, die ihre Anpassungsfähigkeit offenbaren.

pdr
quelle
In meinem Fall ist es oft das einzige, was ich von dem Kerl sehe ...
WarrenFaith
@WarrenFaith - Okay, aber Sie werden nie eine Entscheidung im Alleingang treffen, jemanden einzustellen, der auf so wenigen Informationen basiert, oder? Sie werden nur nach einer Meinung gefragt.
pdr
Wahr. Ich gebe meine Meinung aus technischer Sicht und die Soft Skills sind ebenfalls wichtig. Und wir testen nur Leute, die im Interview mindestens den Soft Skill "Test" bestanden haben. Aber ich bin gespannt,
welchen
@WarrenFaith - in Ihrer Position würde ich es erwähnen, aber eher als Nebenbemerkung als als etwas von massiver Bedeutung.
pdr
Ich erstelle im Grunde genommen nur eine Liste von Pro und Contra und erkläre und begründe dies für unseren CTO. Die endgültige Entscheidung liegt bei ihm ...
WarrenFaith
3

Solange der Stil konsistent ist und diese Person sich an einen anderen Stil anpassen (ändern) kann, sehe ich keine Probleme.

Wenn sich der aktuelle Stil von dem unterscheidet, was Sie verwenden, bedeutet dies nicht, dass er schlecht ist. Für den Kandidaten mag es durchaus Sinn machen.

Genau wie andere gesagt haben, könnte es das einzige Problem sein, Probleme beim Anpassen zu haben.

Victor Hurdugaci
quelle
0

Ich würde nicht sagen, dass dies definitiv keine Einstellung ist, aber es ist ein starkes Argument gegen diese Person.

Ich würde mich eigentlich nicht um den Codierungsstil kümmern, sondern darum, dass diese Unfähigkeit, sich anzupassen, ein Symptom eines allgemeinen Problems ist. Ich hätte Angst, dass der Kandidat Schwierigkeiten haben könnte, sich auch auf andere Aspekte der Teamkultur einzustellen.

Wenn Sie sich nicht mit Pascal anstelle von Kamelhüllen beschäftigen können, haben Sie möglicherweise Probleme, sich daran zu erinnern, eine neue Charge Kaffee zu trinken, wenn Sie die letzte Tasse nehmen würden. So etwas kann dem Team wirklich schaden.

(Und ja, ich bin koffeinsüchtig.)

Treb
quelle
Das Problem, das mit einem "schlechten Codierungsstil" einhergeht, ist häufig die Unerfahrenheit. Wenn ich die meisten Anfänger sehe, fehlt ihnen oft etwas, das man als Codierungsstil bezeichnen könnte.
WarrenFaith
?? "starkes Argument gegen diese Person" ... "eigentlich keine Sorge um den Codierungsstil". Welches ist es? Ist es wichtig oder nicht? Aus der Antwort ist schwer zu ersehen, was Ihr Rat ist. Könnten Sie bitte klarstellen?
S.Lott
@S.Lott: Was ist das? - Natürlich beides. Schlechter Codierungsstil ist eine schlechte Angewohnheit, die meisten Menschen können lernen, ihn zu verwerfen. Es ist, wenn sie nicht lernen können (oder wollen), dass Sie ein Problem haben.
Treb
0

Meiner Meinung nach ist ein guter Codestil für die Arbeit mit einem Programmierer unerlässlich.

Einen guten Code-Stil zu haben, ist eine Frage der persönlichen Entwicklung. Es ist ein Indikator, welches Level dieser Programmierer bereits erreicht hat.

Die Frage ist, ob Ihr Unternehmen "High Professionals" oder "High Potentials" will. Wenn Sie "High Professionals" benötigen und keinen Raum zum Lernen und Entwickeln haben, ist der Code-Stil ein ausschlaggebendes Kriterium.

Wenn es Raum für Weiterentwicklung und die Entwicklung von Programmierern gibt, sollten Sie auf seine Fähigkeit achten, schnell zu lernen oder kreativ zu denken.

florianb
quelle